Professional Documents
Culture Documents
MODULE I
Software is a program or set of programs containing instructions which provide desired functionality . And Engineering is the
processes of designing and building something that serves a particular purpose and find a cost effective solution to problems.
Software Engineering is a systematic approach to the design, development, operation, and maintenance of a software system.
SOFTWARE DEVELOPMENT LIFECYCLE (SDLC) is a systematic process for building software that ensures the quality and
correctness of the software built. SDLC process aims to produce high-quality software that meets customer expectations. The
system development should be complete in the pre-defined time frame and cost. SDLC consists of a detailed plan which explains
how to plan, build, and maintain specific software. Every phase of the SDLC life cycle has its own process and deliverables that
feed into the next phase. SDLC stands for Software Development Lifecycle.
Why SDLC?
Here, are prime reasons why SDLC is important for developing a software system.
o It offers a basis for project planning, scheduling, and estimating
o Provides a framework for a standard set of activities and deliverables
o It is a mechanism for project tracking and control
o Increases visibility of project planning to all involved stakeholders of the development process
o Increased and enhance development speed
o Improved client relations
o Helps you to decrease project risk and project management plan overhead
SDLC Phases
The entire SDLC process divided into the following stages:
Software Processes
The term software specifies to the set of computer programs, procedures and associated documents (Flowcharts, manuals, etc.)
that describe the program and how they are to be used.
A software process is the set of activities and associated outcome that produce a software product. Software engineers mostly
carry out these activities. These are four key process activities, which are common to all software processes. These activities are:
1. Software specifications: The functionality of the software and constraints on its operation must be defined.
2. Software development: The software to meet the requirement must be produced.
3. Software validation: The software must be validated to ensure that it does what the customer wants.
4. Software evolution: The software must evolve to meet changing client needs.
These activities are complex activities in themselves, and they include subactivities such as requirements validation, architectural
design, and unit testing. Processes also include other activities, such as software configuration management and project planning
that support production activities
However, when describing processes, it is also important to describe who is involved, what is produced, and conditions that
influence the sequence of activities:
1. Products or deliverables are the outcomes of a process activity. For example, the outcome of the activity of architectural
design may be a model of the software architecture.
2. Roles reflect the responsibilities of the people involved in the process. Examples of roles are project manager, configuration
manager, and programmer.
3. Pre- and postconditions are conditions that must hold before and after a process activity has been enacted or a product
produced. For example, before architectural design begins, a precondition may be that the consumer has approved all
requirements; after this activity is finished, a postcondition might be that the UML models describing the architecture have
been reviewed.
Many factors can affect the chosen project development method of an organization or project team. When evaluating which
approach to take, consider whether the project is familiar territory with a predictable path, or a new frontier with uncertain
outcomes.
Known projects can usually rely upon a predictive method of planning. Predictive planning provides a linear, specific
development plan structured around producing a pre-determined end result within a specific timeframe.
Evolving projects that face changing conditions are best suited for adaptive planning. Adaptive planning involves breaking a
project into small components over an undetermined timeline to allow ultimate flexibility in directing the course of the
project.
Whereas the outputs from predictive planning are expected and knowable, adaptive planning may yield surprising outcomes.
Due to the incremental nature of adaptive planning, the overall result of a project may differ substantially from the original
intent. The challenge associated with adaptive planning is to remain flexible and open to change, while not becoming
irresolute.
The planning approach selected by an organization will lend itself to a specific project development methodology. Whereas
an organization with a predictive mindset might choose to utilize a “waterfall” approach, adaptive teams may choose “agile”
techniques.
It is used only when the product is It is used when the project is not understood
When to use understood appropriately. appropriately, rapidly changing environments.
Waterfall Model
The Waterfall Model was the first Process Model to be introduced. It is also referred to as a linear-sequential life cycle model. It is
very simple to understand and use. In a waterfall model, each phase must be completed before the next phase can begin and
there is no overlapping in the phases.
1. Requirements analysis and definition The system’s services, constraints, and goals are established by consultation with
system users. They are then defined in detail and serve as a system specification.
2. System and software design The systems design process allocates the requirements to either hardware or software
systems. It establishes an overall system architecture. Software design involves identifying and describing the fundamental
software system abstractions and their relationships.
3. Implementation and unit testing During this stage, the software design is realized as a set of programs or program units.
Unit testing involves verifying that each unit meets its specification.
4. Integration and system testing The individual program units or programs are integrated and tested as a complete system
to ensure that the software requirements have been met. After testing, the software system is delivered to the customer.
5. Operation and maintenance Normally, this is the longest life-cycle phase. The system is installed and put into practical use.
Maintenance involves correcting errors that were not discovered in earlier stages of the life cycle, improving the
implementation of system units, and enhancing the system’s services as new requirements are discovered.
Waterfall Model - Application
Some situations where the use of Waterfall model is most appropriate are −
• Requirements are very well documented, clear and fixed.
• Product definition is stable.
• Technology is understood and is not dynamic.
• There are no ambiguous requirements.
• Ample resources with required expertise are available to support the product.
• The project is short.
Advantages of the Waterfall Method
• Simple and easy to understand and use
• Easy to manage due to the rigidity of the model. Each phase has specific deliverables and a review process.
• Phases are processed and completed one at a time.
• Works well for smaller projects where requirements are very well understood.
• Clearly defined stages.
• Well understood milestones.
• Easy to arrange tasks.
• Process and results are well documented.
Disadvantages of Waterfall method
• No working software is produced until late during the life cycle.
• High amounts of risk and uncertainty.
• Not a good model for complex and object-oriented projects.
• Poor model for long and ongoing projects.
• Not suitable for the projects where requirements are at a moderate to high risk of changing. So, risk and uncertainty is high
with this process model.
• It is difficult to measure progress within stages.
• Cannot accommodate changing requirements.
• Adjusting scope during the life cycle can end a project.
• Integration is done as a "big-bang. at the very end, which doesn't allow identifying any technological or business bottleneck or
challenges early.
Iterative Model
An iterative life cycle model does not start with a full specification of requirements. In this model, the development begins by
specifying and implementing just part of the software, which is then reviewed in order to identify further requirements. Moreover,
in iterative model, the iterative process starts with a simple implementation of a small set of the software requirements, which
iteratively enhances the evolving versions until the complete system is implemented and ready to be deployed. Each release of
Iterative Model is developed in a specific and fixed time period, which is called iteration.
Furthermore, this iteration focuses on a certain set of requirements. Each cycle ends with a usable system i.e., a particular
iteration results in an executable release. Iterative Model allows accessing previous phases, in which the changes are made
accordingly. The final output of the product is revived at the end of the Software Development Life Cycle (SDLC). Typically
iterative development is used in conjunction with incremental development, in which a longer software development cycle is split
into smaller segments that are built upon each other.
The various phases of Iterative model are as follows:
1. Requirement gathering & analysis: In this phase, requirements are gathered from customers and check by an analyst
whether requirements will fulfil or not. Analyst checks that need will achieve within budget or not. After all of this, the
software team skips to the next phase.
2. Design: In the design phase, team design the software by the different diagrams like Data Flow diagram, activity diagram,
class diagram, state transition diagram, etc.
3. Implementation: In the implementation, requirements are written in the coding language and transformed into computer
programmes which are called Software.
4. Testing: After completing the coding phase, software testing starts using different test methods. There are many test
methods, but the most common are white box, black box, and grey box test methods.
5. Deployment: After completing all the phases, software is deployed to its work environment.
6. Review: In this phase, after the product deployment, review phase is performed to check the behaviour and validity of the
developed product. And if there are any error found then the process starts again from the requirement gathering.
7. Maintenance: In the maintenance phase, after deployment of the software in the working environment there may be some
bugs, some errors or new updates are required. Maintenance involves debugging and new addition options.
Iterative Model - Application
• Requirements of the complete system are clearly defined and understood.
• Major requirements must be defined; however, some functionalities or requested enhancements may evolve with time.
• There is a time to the market constraint.
• A new technology is being used and is being learnt by the development team while working on the project.
• Resources with needed skill sets are not available and are planned to be used on contract basis for specific iterations.
• There are some high-risk features and goals which may change in the future.
Iterative Model - Pros and Cons
The advantages of the Iterative and Incremental SDLC Model are as follows −
• Some working functionality can be developed quickly and early in the life cycle.
• Results are obtained early and periodically.
• Parallel development can be planned.
• Progress can be measured.
• Less costly to change the scope/requirements.
• Testing and debugging during smaller iteration is easy.
• Risks are identified and resolved during iteration; and each iteration is an easily managed milestone.
• Easier to manage risk - High risk part is done first.
• With every increment, operational product is delivered.
• Issues, challenges and risks identified from each increment can be utilized/applied to the next increment.
• Risk analysis is better.
• It supports changing requirements.
• Initial Operating time is less.
• Better suited for large and mission-critical projects.
• During the life cycle, software is produced early which facilitates customer evaluation and feedback.
The disadvantages of the Iterative and Incremental SDLC Model are as follows −
• More resources may be required.
• Although cost of change is lesser, but it is not very suitable for changing requirements.
• More management attention is required.
• System architecture or design issues may arise because not all requirements are gathered in the beginning of the entire life
cycle.
• Defining increments may require definition of the complete system.
• Not suitable for smaller projects.
• Management complexity is more.
• End of project may not be known which is a risk.
• Highly skilled resources are required for risk analysis.
• Projects progress is highly dependent upon the risk analysis phase.
Incremental Model
Incremental Model is a process of software development where requirements divided into multiple standalone modules of the
software development cycle. In this model, each module goes through the requirements, design, implementation and testing
phases. Every subsequent release of the module adds function to the previous release. The process continues until the complete
system achieved.
The various phases of incremental model are as follows:
1. Requirement analysis: In the first phase of the incremental model, the product analysis expertise identifies the
requirements. And the system functional requirements are understood by the requirement analysis team. To develop the
software under the incremental model, this phase performs a crucial role.
2. Design & Development: In this phase of the Incremental model of SDLC, the design of the system functionality and the
development method are finished with success. When software develops new practicality, the incremental model uses style
and development phase.
3. Testing: In the incremental model, the testing phase checks the performance of each existing function as well as additional
functionality. In the testing phase, the various methods are used to test the behavior of each task.
4. Implementation: Implementation phase enables the coding phase of the development system. It involves the final coding
that design in the designing and development phase and tests the functionality in the testing phase. After completion of this
phase, the number of the product working is enhanced and upgraded up to the final system product
Types of Incremental model –
1. Staged Delivery Model – Construction of only one part of the project at a time.
2. Parallel Development Model – Different subsystems are developed at the same time. It can decrease the calendar time
needed for the development, i.e. TTM (Time to Market), if enough Resources are available.
Staged Parallel
RAD Model
Rapid application development came as a response to problems when applying the waterfall model to software development.
Software is uniquely different than other types of engineering because changes can be made almost immediately and even very
late in the development process.
RAD is based on four core concepts:
• Reusable code in an accessible repository
• Quick prototyping
• Constant client feedback
• Building usable software as quickly as possible
The client and developer work together to create an end product that functions exactly as the client wants.
RAD model is Rapid Application Development model. It is a type of incremental model. In RAD model the components or
functions are developed in parallel as if they were mini projects. The developments are time boxed, delivered and then assembled
into a working prototype.
This can quickly give the customer something to see and use and to provide feedback regarding the delivery and their
requirements.
Diagram of RAD-Model:
1. Test-Driven Development:Is it possible to write a clear code quickly? The answer is yes, according to XP practitioners. The
quality of software derives from short development cycles that, in turn, allow for receiving frequent feedback. And valuable
feedback comes from good testing. XP teams practice test-driven development technique (TTD) that entails writing an
automated unit test before the code itself. According to this approach, every piece of code must pass the test to be released.
So, software engineers thereby focus on writing code able to accomplish the needed function. That’s the way TDD allows
programmers to use immediate feedback to produce reliable software. You can learn more about improving software
testing in our dedicated article.
2. The Planning Game:This is a meeting that occurs at the beginning of an iteration cycle. The development team and the
customer get together to discuss and approve a product’s features. At the end of the planning game, developers plan for the
upcoming iteration and release, assigning tasks for each of them.
3. On-site Customer:According to XP, the end customer should fully participate in development. The customer should be
present all the time to answer team questions, set priorities, and resolve disputes, if necessary.
4. Pair Programming:This practice requires two programmers to work jointly on the same code. While the first developer
focuses on writing, the other one reviews code, suggests improvements, and fixes mistakes along the way. Such teamwork
results in high-quality software, faster knowledge sharing but takes 15 to 60 percent more time. In this regard, it’s more
reasonable trying pair programming for long-term projects.
5. Code Refactoring:To deliver business value with well-designed software in every short iteration, XP teams also use
refactoring. The goal of this technique is to continuously improve code. Refactoring is about removing redundancy,
eliminating unnecessary functions, increasing code coherency, and at the same time decoupling elements. Keep your code
clean and simple, so you can easily understand and modify it when required would be the advice of any XP team member.
6. Continuous Integration:Developers always keep the system fully integrated. XP teams take iterative development to
another level because they commit code multiple times a day, which is also called continuous delivery. XP practitioners
understand the importance of communication. Programmers discuss which parts of the code can be re-used or shared. This
way, they know exactly what functionality they need to develop. The policy of shared code helps eliminate integration
problems. In addition, automated testing allows developers to detect and fix errors early, before deployment.
7. Small Releases:This practice suggests releasing the first version quickly and further developing the product by making small
and incremental updates. Small releases allow developers to frequently receive feedback, detect bugs early, and monitor
how the product works in production. One of the methods of doing so is the continuous integration practice (CI) we
mentioned before.
8. Simple Design:The best design for software is the simplest one that works. If any complexity is found, it should be removed.
The right design should pass all tests, have no duplicate code, and contain the fewest possible methods and classes. It should
also clearly reflect the programmer’s intent.
XP practitioners highlight that chances to simplify design are higher after the product has been in production for
some time. Don Wells advises writing code for those features you plan to implement right away rather than writing
it in advance for other future features: “The best approach is to create code only for the features you are
implementing while you search for enough knowledge to reveal the simplest design. Then refactor incrementally to
implement your new understanding and design.”
9. Coding Standards:A team must have common sets of coding practices, using the same formats and styles for code writing.
Application of standards allows all team members to read, share, and refactor code with ease, track who worked on certain
pieces of code, as well as make the learning faster for other programmers. Code written according to the same rules
encourages collective ownership.
10. Collective Code Ownership:This practice declares a whole team’s responsibility for the design of a system. Each team
member can review and update code. Developers that have access to code won’t get into a situation in which they don’t
know the right place to add a new feature. The practice helps avoid code duplication. The implementation of collective code
ownership encourages the team to cooperate more and feel free to bring new ideas.
11. System Metaphor:System metaphor stands for a simple design that has a set of certain qualities. First, a design and its
structure must be understandable to new people. They should be able to start working on it without spending too much time
examining specifications. Second, the naming of classes and methods should be coherent. Developers should aim at naming
an object as if it already existed, which makes the overall system design understandable.
12. Programmer’s work conditions:40-Hour Week. XP projects require developers to work fast, be efficient, and sustain the
product’s quality. To adhere to these requirements, they should feel well and rested. Keeping the work-life balance prevents
professionals from burnout. In XP, the optimal number of work hours must not exceed 45 hours a week. One overtime a week
is possible only if there will be none the week after.
Roles
Although Extreme Programming specifies particular practices for your team to follow, it does not really establish specific roles for
the people on your team. Depending on which source you read, there is either no guidance, or there is a description of how roles
typically found in more traditional projects behave on Extreme Programming projects. Here are four most common roles
associated with Extreme Programming:
The Customer:The Customer role is responsible for making all of the business decisions regarding the project including:
What should the system do (What features are included and what do they accomplish)?
• How do we know when the system is done (what are our acceptance criteria)?
• How much do we have to spend (what is the available funding, what is the business case)?
• What should we do next (in what order do we deliver these features)?
The XP Customer is expected to be actively engaged on the project and ideally becomes part of the team.
The XP Customer is assumed to be a single person, however experience has shown that one person cannot adequately provide all
of the business related information about a project. Your team needs to make sure that you get a complete picture of the business
perspective, but have some means of dealing with conflicts in that information so that you can get clear direction.
The Developer:Because XP does not have much need for role definition, everyone on the team (with the exception of the
customer and a couple of secondary roles listed below) is labeled a developer. Developers are responsible for realizing the stories
identified by the Customer. Because different projects require a different mix of skills, and because the XP method relies on a
cross functional team providing the appropriate mix of skills, the creators of XP felt no need for further role definition.
The Tracker:Some teams may have a tracker as part of their team. This is often one of the developers who spends part of their
time each week filling this extra role. The main purpose of this role is to keep track of relevant metrics that the team feels
necessary to track their progress and to identify areas for improvement. Key metrics that your team may track include velocity,
reasons for changes to velocity, amount of overtime worked, and passing and failing tests.
This is not a required role for your team, and is generally only established if your team determines a true need for keeping track of
several metrics.
The Coach:If your team is just getting started applying XP, you may find it helpful to include a Coach on your team. This is usually
an outside consultant or someone from elsewhere in your organization who has used XP before and is included in your team to
help mentor the other team members on the XP Practices and to help your team maintain your self discipline.The main value of
the coach is that they have gone through it before and can help your team avoid mistakes that most new teams make.
When to use XP
It’s important to make sure a company’s size, structure, and expertise, as well as the staff’s knowledge base allow for applying XP
practices. These are the factors to consider.
Highly-adaptive development. XP was designed to help development teams adapt to fast-changing requirements.
Risky projects. Teams applying XP practices are more likely to avoid problems connected with working on a new system,
especially when a product owner sets strict deadlines for a project.
Small teams. XP practices are efficient for teams that don’t exceed 12 people.
Automated testing. Another factor that can influence the choice of XP is the developers’ ability to create and run unit tests.
Available customer participation. As XP requires customers, developers and managers work side-by-side, make sure your client
can spend time in the office until a project ends.
Applications of Extreme Programming (XP)
• Small projects: XP model is very useful in small projects consisting of small teams as face to face meeting is easier to achieve.
• Projects involving new technology or Research projects: This type of projects face changing of requirements rapidly and
technical problems. So XP model is used to complete this type of projects.
Conclusion
Extreme Programming is a software development approach based on values of simplicity, communication, feedback, and courage.
Companies that build their workflow on XP principles and values create a competitive yet motivational atmosphere within and
between teams. Programmers appreciate each other’s project input, deliver software quickly because they can distinguish relevant
tasks from unnecessary ones. They react quickly to feedback realizing it’s a reasonable criticism aimed at making a product better.
XP teams don’t consider each technical challenge as a problem but think of it as a way to develop skills.
Feasibility study
In this phase the problem is defined and the technical feasibility of the desired application is verified. Apart from these routine
tasks, it is also checked whether the application is suitable for Rapid Application Development (RAD) approach or not. Only if the
RAD is found as a justified approach for the desired system, the development continues.
Business study
In this phase the overall business study of the desired system is done. The business requirements are specified at a high level and
the information requirements out of the system are identified. Once this is done, the basic architectural framework of the desired
system is prepared.
The systems designed using Rapid Application Development (RAD) should be highly maintainable, as they are based on the
incremental development process. The maintainability level of the system is also identified here so as to set the standards for
quality control activities throughout the development process.
Functional Model Iteration
This is one of the two iterative phases of the life cycle. The main focus in this phase is on building the prototype iteratively and
getting it reviewed from the users to bring out the requirements of the desired system. The prototype is improved through
demonstration to the user, taking the feedback and incorporating the changes. This cycle is repeated generally twice or thrice
until a part of functional model is agreed upon. The end product of this phase is a functional model consisting of analysis model
and some software components containing the major functionality
Design and Build Iteration
This phase stresses upon ensuring that the prototypes are satisfactorily and properly engineered to suit their operational
environment. The software components designed during the functional modeling are further refined till they achieve a
satisfactory standard. The product of this phase is a tested system ready for implementation.
There is no clear line between these two phases and there may be cases where while some component has flown from the
functional modeling to the design and build modeling while the other component has not yet been started. The two phases, as a
result, may simultaneously continue.
Implementation
Implementation is the last and final development stage in this methodology. In this phase the users are trained and the system is
actually put into the operational environment. At the end of this phase, there are four possibilities, as depicted by figure :
• Everything was delivered as per the user demand, so no further development required.
• A new functional area was discovered, so return to business study phase and repeat the whole process
• A less essential part of the project was missed out due to time constraint and so development returns to the functional model
iteration.
• Some non-functional requirement was not satisfied, so development returns to the design and build iterations phase.
Dynamic System Development Method (DSDM) assumes that all previous steps may be revisited as part of its iterative approach.
Therefore, the current step need be completed only enough to move to the next step, since it can be finished in a later iteration.
This premise is that the business requirements will probably change anyway as understanding increases, so any further work
would have been wasted.
According to this approach, the time is taken as a constraint i.e. the time is fixed, resources are fixed while the requirements are
allowed to change. This does not follow the fundamental assumption of making a perfect system the first time, but provides a
usable and useful 80% of the desired system in 20% of the total development time. This approach has proved to be very useful
under time constraints and varying requirements.
DSDM Model Limitations
• It is a relatively new model. It is not very common. So it is difficult
to understand.
DSDM Model Advantages
• Active user participation throughout the life of the project and
iterative nature of development improves quality of the product.
• DSDM ensures rapid deliveries.
• Both of the above factors result in reduced project costs
DSDM Principles:
DSDM has nine fundamental principles revolving around the business needs:
1. Active user involvement: the first and most crucial principle is user involvement. User, the people who will be using the final product,
must be actively involved throughout the project development. It helps in reducing the errors which may occur due to user perception
and thus reduces the cost of rework as well. DSDM emphasis on working with a small and selected group of users and stay in touch
with them continually, rather than meeting them occasionally in periodic meetings and review sessions.
2. Empowered teams: To proceed quickly and smoothly, this model encourages and empower teams to take decisions. Below are some
areas where decision making as a team is very critical
• Requirements decision
• Prioritizing the activities and features delivery
• Details of technical requirements
• Which functionality needs to add in a given incremental
3. Frequent delivery: A frequent delivery of value to the customer ensures that the errors/bugs get identified, worked upon, and
resolved/ reversed/fixed at an early stage. The source of the error and root cause is also found and fixed. It applies to all, requirement
documents (user stories), working models as well as on program codes.
4. Fitness for business: In DSDM, our focus is to deliver software which is efficient enough to solve a business need and accepts changes
or enhancement in a later iteration. DSDM focuses on satisfying business needs first and doesn’t allow to create ad-hoc software. It
keeps the process flow simple and effective.
5. Incremental development: To keep the big project simple and less complicated, it becomes crucial to decompose it into multiple
small feature projects. Every delivery ensures a new feature gets delivered to the client. This incremental development and delivery
continue until the delivery of the complete set of business required features.
6. Reversible changes: In DSDM iteration happens through small increments. As all the stages of development are well known to
developers, so changes here are reversible. Therefore, the fear of total loss of work is also very less.
7. Base-line the requirements: Some high-level baselines need to be set to limit the degree of freedom to make changes. During the
business agreement phase, the Business and Development Team discuss and agree on the baseline when the change requests and
requirements would be “frozen.”
8. Integrated testing: In DSDM, testing is done as early as in the development phase to ensure that the product does not have any
technical flaws. Developers and team leads cross-check even the testing documents. It helps in fixing issues at a very early stage and
reduces rework and therefore reduces cost and time.
9. Stakeholder collaboration: It is crucial to have an atmosphere of trust and honesty to get precise requirements and honest feedback
on a resultant product. In DSDM, Business staff and developer collaboration are very crucial to deliver value. Clear business
requirement and honest feedback help in fast development which further leads to timely delivery of the project.
Four values: below are the four values of DSDM:
1. Individual: Like Agile in DSDM also value people. In the end, these are the people who are working physically on the project and know
the practical part better. Their experience and expertise add more value to the project as compared to tools, documents, or process
flows.
2. Working software: It is very crucial that a shared understanding and a standard definition of “Working software” exists between all
the parties interested in the software.
Note – Working software is the software that has successfully gone through all the stages of development and testing and ready to hit
the market now. It will be the version of the software that will be used by the end-user
3. Collaboration: It is one of the essential values for effective delivery. It is because getting people in one room to make a decision will
be more productive, less time taking, and efficient than sharing emails for weeks to make a decision. Here are a few examples of
Collaboration –
• Cross-functional team
• Co-location with the client
• Facilitating workshop
4. Response to changes: DSDM welcomes all the required modifications and accommodates them. It values and responds to all the
changes in a very innovative way, mainly through prioritizing them.
Project structure in DSDM:
The DSDM project process flow consists of 7 phases, which are organized in a rich set of roles and responsibilities and are
supported by some core techniques. Below is the part of the structure of a DSDM system process flow.
• Roles and responsibilities
• Team organization and size
• Tools and techniques
• Phase to rule them/ Process Flow
Roles and Responsibilities:
There are three leading roles in DSDM –
Project level roles:
• Directors
• Project Owners
• Project Managers
Their responsibility is to control the project as a whole. They will not be working on the project but will be responsible for getting
the work done and keep the business updated about the current situation. They act as a connection between the User and
Development team. These are usually executive level people and work directly with the business. They are also called
the Ambassadors.
Solution Development Roles:
• Developers
• Testers
They work as the “heart” of the project. They are the main driving force as they work on ground zero and are responsible for the
development of the product/solution.
Supporting Roles:
• DSDM Coach
• Workshop Facilitator
These people have good practical knowledge of all the areas of business. They assist and guide everyone working on it
continuously throughout the project until delivery. They have a good understanding of the DSDM framework as well as of
development.
Team Organization and Size:
In DSDM, a project team may consist of one or two groups, whereby one group takes the responsibility to run the tests on another
group’s delivery.
As per organizational research, team size should not be less than five members, excluding external experts. External experts are
the experienced executive level people who support projects externally.
And if the project is big and more work is to be delivered, then a multi-team structure is required.
Tools and Techniques:
The main focus of DSDM is that the product is delivered frequently in each iteration. Different tools, techniques, and, practices are
used to support the whole DSDM process.
• The Timeboxing,
• The MoSCow prioritization,
• Facilitated workshops,
• Iterative development,
• Modeling and prototyping techniques.
Timeboxing:
Timeboxing is one of the most crucial core practices. It is similar to what a milestone is in tradition software development
methods or what a sprint is in the Scrum Agile Method. Timeboxing is the amount of work to be done in a fixed given time.
One software development project will have multiple time boxes, and every time box is assigned one specific objective.
Timeboxing helps in achieving the target in time. Usually, for a project duration of a time box can be from two weeks to a
maximum of 6 weeks but not more than that.
Benefits of having Time Boxing:
• Focus on delivering the product on time.
• People stay focused as per priority and do not deviate, and thus improves productivity.
• All members know what the other person is doing and how long it is going to take to complete that activity.
• Decreases dependency and delegation of work as every member is occupied and has to give deliverables in time.
It’s like a healthy eating habit, “Eat a tiny portion of food at small intervals.”
Let’s understand it with the help of an example. We all love our student life & we all have gone through it. During exams, even if there
is a sufficient gap between the two reviews, we always used to study on the last 1 or 2 days. And our parents used to tell us to do a
little every day. The correct approach would have been
• Make a schedule
• Divide your syllabus into small portions
• Prioritize them
• Assign timelines to every part
• Finish portion in the assigned time
This systematic approach to finish the assigned work in committed time is called Timeboxing.
Facilitated Workshops:
Facilitated Workshops means providing a workshop where team members and developers can work on a clear pre-set of
deliverables. To get access to this workshop, they coordinate with a neutral person who is called Workshop facilitator. The
facilitator will be guiding the team through a process to achieve its objectives, expertly. This process that facilitator guide through
includes-
• Defining the objective,
• Identifying appropriate participants,
• Creating an agenda,
• Managing the logistics and
• Distributing any pre-reading to participants.
The motive behind having a workshop is to encourage collaborative working and enable team decisions in a short time. It allows
knowledge sharing too.
It’s like a classroom, you can discuss only one topic from a specific subject at a particular time, and the purpose of that discussion will
be focused, that is, to make the classroom understand that particular topic.
Benefits of having a Workshop include:
• Provide an ideal environment for exploring new ideas and encourages quick and systematic growth of those ideas.
• A broader range of stakeholders can take decisions.
• Everyone is aware of discussions and decisions.
• Decision making is quick & accurate.
MoSCoW Prioritization:
• Must-Have: The requirements that are fundamental and must conform to the solution.
• Should Have: The things that are important for the business solution.
• Could Have: The requirements that are important but can more easily be left out for a short while.
• Won’t Have: The requirements that can wait and include in later development.
Benefits of MoSCoW are:
• It allows business expectations to set at the Project level.
• Ensures that the team delivers the Must-Haves first
• Ensures that they deliver most or all of the Should Haves
• If time allows developers may deliver some of the Could Haves too.
• You want to purchase a big car with the following features-
Let’s define prioritization in the above case as per MoSCoW:
• Must have
• Seven seater car for off-roading and road trips
• Should have
• 2000cc engine
• Good Mileage
• Navigation System
• Good boot space
• Could have
• Yellow color car
• Sunroof
• Won’t have
• Bluetooth
• Child seat.
In Scrum, the prescribed events are used to create regularity. All events are time-boxed events, such that every event has a
maximum duration. The events are described more elaborately in the subsequent chapters.
Sprint
The heart of Scrum is a Sprint, a time-box of two weeks or one month during which a potentially releasable product increment is
created and this duration remains constant for all the sprints in the project. We cannot have varying durations for the different
sprints in a project. A new Sprint starts immediately after the conclusion of the previous Sprint.
A Sprint should be cancelled if the Sprint Goal becomes obsolete. This might occur if the organization changes direction or if
market or technology conditions change. A sprint can be cancelled only by product owner, though others have an influence on
the same.
If a Sprint is cancelled, and part of the work produced during the sprint is potentially releasable, the Product Owner typically
accepts it. All the incomplete Sprint Backlog Items are put back into the Product Backlog.
Sprints consist of the Sprint planning, daily scrums, the development work, the Sprint review, and the Sprint retrospective.
• In Sprint planning, the work to be performed in the Sprint is planned collaboratively by the Scrum Team.
• The Daily Scrum Meeting is a 15-minute time-boxed event for the Scrum Team to synchronize the activities and create a
plan for that day.
• A Sprint Review is held at the end of the Sprint to inspect the Increment and make changes to the Product Backlog, if
needed.
• The Sprint Retrospective occurs after the Sprint Review and prior to the next Sprint Planning. In this meeting, the Scrum
Team is to inspect itself and create a plan for improvements to be enacted during the subsequent Sprint.
Sprint Planning
The work to be performed in the Sprint is planned in the Sprint Planning Meeting. Sprint Planning Meeting is of duration of
maximum of four hours for two weeks sprints and eight hours for one month Sprints. It is the responsibility of the Scrum Master
to ensure that the meeting takes place and that all the required attendees are present and understand the purpose of the
scheduled meeting. The Scrum Master moderates the meeting to monitor the sustenance of discussion and closure on time.
Sprint Planning focuses on the following two questions -
• What needs to be and can be delivered in the Sprint Increment?
• How will the work needed for the execution of Sprint be achieved?
The inputs to this meeting are -
• The Product Backlog
• The latest product Increment
• Projected capacity of the Team during the Sprint
• Past performance of the Team
The Scrum Team discusses the functionality that can be developed during the Sprint. Product Owner provides clarifications on
the Product Backlog items. The team selects the items from the Product Backlog for the Sprint, as they are the best to assess what
they can accomplish in the Sprint.
The Scrum Team then comes up with Sprint Goal. The Sprint Goal is an objective that provides guidance to the Team on why it is
building the Product Increment. The Team then decides how it will build the selected functionality into a working product
Increment during the Sprint. The Product Backlog items selected for this Sprint plus the plan for delivering them is called the
Sprint Backlog.
Work during a sprint is estimated during sprint planning and may be of varying size and/or effort. By the end of the Sprint
Planning meeting, the work is divided into tasks of duration of one day or less. This is to enable the ease of work allocation, and
tracking the completion. If the Team realizes that it has too much or too little work, it can renegotiate the selected Product
Backlog items with the Product Owner.
The Team may also invite others (not part of Scrum Team) to attend the Sprint Planning meeting to obtain technical or domain
advice or help in estimation
Daily Scrum Meetings
The Daily Scrum Meeting is a 15-minute meeting for the Team, conducted daily to quickly understand the work since the last
Daily Scrum Meeting and create a plan for the next 24 hours. This meeting is also referred to as Daily Stand up Meeting.
The Daily Scrum Meeting is held at the same time and same place every day to reduce complexity.
During the meeting, each Team member explains -
• What did he do yesterday that helped the Team meet the Sprint Goal?
• What will he do today to help the Team meet the Sprint Goal?
• Does he see any impediments that prevent him or the Team from meeting the Sprint Goal?
Daily Scrum is mistaken to be a status tracking event, though, in fact, it is a planning event.
The input to the meeting should be how the team is doing toward meeting the Sprint Goal, and the output should be a new or
revised plan that optimizes the team’s efforts in meeting the Sprint Goal.
Though the Scrum Master coordinates the Daily Scrum Meeting and ensures that the objectives of the meeting are met, the
Meeting is the responsibility of the Team.
If necessary, the Team may meet immediately after the Daily Scrum Meeting, for any detailed discussions, or to re-plan the rest of
the Sprint’s work.
Following are the benefits of Daily Scrum Meetings -
• Improve communication within the Team.
• Identify impediments, if any, in order to facilitate an early removal of the same, so as to minimize impact on the Sprint.
• Highlight and promote quick decision-making.
• Improve the Team’s level of knowledge.
Sprint Review
A Sprint Review is held at the end of every Sprint. During the Sprint Review, a presentation of the increment that is getting
released is reviewed. In this meeting, the Scrum Team and the stakeholders collaborate to understand what was done in the
Sprint. Based on that, and any changes to the Product Backlog during the Sprint, the attendees arrive at the next steps required
that could optimize value. Thus, the objective of Sprint Review is to obtain feedback and progress unitedly.
The Sprint Review is normally held for two hours for two week sprints and for four hours for one month sprints.
The Scrum Master ensures that -
• The meeting takes place.
• The participants understand the purpose.
• The meeting is focused on the required agenda and is completed within the required duration.
The Sprint Review includes the following aspects -
• Attendees include the Scrum Team and key stakeholders, as invited by the Product Owner.
• The Product Owner explains what Product Backlog items have been completed during the sprint and what has not been
completed.
• The Team discusses what went well during the Sprint, what problems it ran into, and how those problems were solved.
• The Team demonstrates the work that it has completed and answers questions, if any, about the Increment.
• The entire group then discusses on what to do next. Thus, the Sprint Review provides valuable input to Sprint Planning of
the subsequent Sprint.
• The Scrum Team then reviews the timeline, budget, potential capabilities, and marketplace for the next anticipated release
of the product increment.
• The outcome of the Sprint Review is an updated Product Backlog, which defines the probable Product Backlog items for the
next Sprint.
Sprint Retrospective
The Sprint Retrospective occurs after the Sprint Review and prior to the next Sprint Planning. This is usually a one hour meeting
for two-week duration sprints and a three hour meeting for one month duration Sprints.
The purpose of the Sprint Retrospective is to -
• Combine the learnings from the last Sprint, with regards to people, relationships, process, and tools.
• Identify the major items that went well and potential improvements.
• Creation of a plan for implementing improvements to increase product quality.
The Sprint Retrospective is an opportunity for the Scrum Team to introspect and improve within the Scrum process framework so
as to make the next Sprint outcome more effective.
Product Backlog
▪ The Product Backlog is an ordered list of features that are needed as part of the end product and it is the single source of
requirements for any changes to be made to the product.
▪ The Product Backlog lists all features, functions, requirements, enhancements, and fixes that constitute the changes to be
made to the product in future releases. Product Backlog items have the attributes of a description, order, estimate, and
value. These items are normally termed as User Stories. The Product Owner is responsible for the Product Backlog, including
its content, availability, and ordering.
▪ A Product Backlog is an evolving artifact. The earliest version of it may contain only the initially known and best understood
requirements. The Product Backlog gets developed as the product, and the environment in which it will be used, progress.
The Product Backlog constantly changes to incorporate what is required to make it effective. As long as a product exists, its
Product Backlog also exists.
▪ As the product being built is used and gains value, the Product Backlog becomes a larger and more exhaustive list. Changes
in business requirements, market conditions, or technology, cause changes in the Product Backlog, making it a live artifact.
▪ Product Backlog refinement means adding detail, estimates, and priority order to the Product Backlog items. This is an
ongoing process performed by the Product Owner and the Team. The Scrum Team decides how and when refinement is to
be done.
▪ Product Backlog items can be updated at any time by the Product Owner or at the Product Owner’s discretion.
▪ Higher-ordered Product Backlog items are usually clearer and more detailed than lower-ordered ones. More precise
estimates are made based on the greater clarity and increased detail. The lower the order, the lesser is the detail.
▪ Product Backlog items that may likely be the candidate requirements for the upcoming Sprint are refined so that these items
can be developed during the Sprint. Product Backlog items that can be developed by the Team within one Sprint are
deemed to be ready for selection in a Sprint planning meeting.
Sprint Backlog
▪ The Sprint Backlog is the set of Product Backlog items selected for the Sprint, plus a plan for delivering the product
Increment and realizing the Sprint Goal.
▪ The Sprint Backlog is a forecast by the Team about what functionality will be made available in the next Increment and the
work needed to deliver that functionality as a working product Increment.
▪ The Sprint Backlog is a plan with enough detail that can be understood but the Team to track in the Daily Scrum. The Team
modifies the Sprint Backlog throughout the Sprint, and the Sprint Backlog emerges during the Sprint. This emergence
occurs as the Team works through the plan and learns more about the work needed to achieve the Sprint Goal.
▪ As new work is required, the Team adds it to the Sprint Backlog. As work is performed or completed, the estimated
remaining work is updated. When elements of the plan are deemed unnecessary, they are removed. Only the Team can
change its Sprint Backlog during a Sprint. The Sprint Backlog is a highly visible, real-time picture of the work that the Team
plans to accomplish during the Sprint, and it belongs solely to the Team.
Increment
▪ The Increment is the sum of all the Product Backlog items completed during a Sprint combined with the increments of all
previous Sprints. At the end of a Sprint, the new Increment must be a working product, which means it must be in a useable
condition.
▪ The purpose of each Sprint is to deliver Increments of potentially releasable functionality.
▪ Teams deliver an Increment of product functionality every Sprint. This Increment is useable, so a Product Owner may choose
to release it immediately.
▪ Each Increment is additive to all prior Increments and thoroughly tested, ensuring that all Increments work together.
▪ As Scrum Teams mature, it is expected that their definitions of Increments expands to include more stringent criteria for
higher quality. Any one product should have a definition of Increment that is a standard for any work done on it.
Sprint Burn-Down Chart
▪ At any point in time in a Sprint, the total work remaining in the Sprint Backlog can be summed. The Team tracks this total
work remaining for every Daily Scrum to project the likelihood of achieving the Sprint Goal. By tracking the remaining work
throughout the Sprint, the Team can manage its progress.
▪ Sprint Burn-Down Chart is a practice for trending the work expended by the Scrum Team. This has been proven to be a
useful technique in monitoring the Sprint progress towards the Sprint Goal.
▪ The Product Owner tracks this total work remaining at least every Sprint Review. The Product Owner compares this amount
with work remaining at previous Sprint Reviews to assess progress toward completing the projected work by the desired
time for the goal. This information is shared with all stakeholders.
▪ The sprint tracking is usually done using Burn-Down Chart. Burn-Down Chart shows the remaining effort in day-wise number
of hours.
If the sprint work is done as planned daily, the scrum progress is almost aligned to the ideal bar.
If the sprint work gets delayed and time commitment is not met, the burn-down chart looks as
follows -
But, as the burn-down chart is drawn daily, and the slippage is known early, corrective actions
can be taken to meet the sprint time line. Suppose, the team stretches to meet the timeline, the
burn-down chart looks as follows -
Thus, at any point in time in a Sprint, the total work remaining in the Sprint can be visualized
and possibility of meeting sprint timeline can be improved.
Conclusion
Burn-down charts aid the Scrum team to keep track of their progress and what needs to be done
to meet the sprint goal.
CASE Tools
• CASE Tools is stands for Computer Aided Software Engineering Tools. As the name suggests, these are the tools which are
used to automate the processes while developing software product through software development life cycle (SDLC).
• The CASE Tools are capable of automating the tasks in almost every phase of software development life cycle reducing the
workload of developers and other team members. They are application programs which are designed to perform specific
tasks.
• By automating the various processes of software development life cycle, the risk of errors & fault decreases and efficiency &
functionality increases. Also, CASE Tools are efficient enough to reduce the time consumption effectively making the cost of
the project in control.
• The scope of CASE tools goes throughout the SDLC.
• CASE tools can be broadly divided into the following parts based on their use at a particular SDLC stage:
• Central Repository - CASE tools require a central repository, which can serve as a source of common, integrated and
consistent information. Central repository is a central place of storage where product specifications, requirement
documents, related reports and diagrams, other useful information regarding management is stored. Central repository
also serves as data dictionary.
• Upper Case Tools - Upper CASE tools are used in planning, analysis and design stages of SDLC.
• Lower Case Tools - Lower CASE tools are used in implementation, testing and maintenance.
• Integrated Case Tools - Integrated CASE tools are helpful in all the stages of SDLC, from Requirement gathering to
Testing and documentation.