Chapter 1.docx 1
Chapter 1.docx 1
CMM was developed by the Software Engineering Institute (SEI) at Carnegie Mellon
University in 1987.
● It is not a software process model. It is a framework that is used to analyze the approach
and techniques followed by any organization to develop software products.
● It also provides guidelines to further enhance the maturity of the process used to develop
those software products.
● It is based on profound feedback and development practices adopted by the most
successful organizations worldwide.
● This model describes a strategy for software process improvement that should be
followed by moving through 5 different levels.
● Each level of maturity shows a process capability level. All the levels except level-1 are
further described by Key Process Areas (KPA’s).
Shortcomings of SEI/CMM:
● It encourages the achievement of a higher maturity level in some cases by displacing the
true mission, which is improving the process and overall software quality.
● It only helps if it is put into place early in the software development process.
● It has no formal theoretical basis and in fact is based on the experience of very
knowledgeable people.
● It does not have good empirical support and this same empirical support could also be
constructed to support other models.
Key Process Areas (KPA’s):
Each of these KPA’s defines the basic requirements that should be met by a software process
in order to satisfy the KPA and achieve that level of maturity.
Conceptually, key process areas form the basis for management control of the software
project and establish a context in which technical methods are applied, work products like
models, documents, data, reports, etc. are produced, milestones are established, quality is
ensured and change is properly managed.
Level-1: Initial –
● No KPA’s defined.
● Processes followed are Adhoc and immature and are not well defined.
● Unstable environment for software development.
● No basis for predicting product quality, time for completion, etc.
Level-2: Repeatable –
● Focuses on establishing basic project management policies.
● Experience with earlier projects is used for managing new similar natured projects.
● Project Planning- It includes defining resources required, goals, constraints, etc. for the
project. It presents a detailed plan to be followed systematically for the successful
completion of good quality software.
● Configuration Management- The focus is on maintaining the performance of the
software product, including all its components, for the entire lifecycle.
● Requirements Management- It includes the management of customer reviews and
feedback which result in some changes in the requirement set. It also consists of
accommodation of those modified requirements.
● Subcontract Management- It focuses on the effective management of qualified software
contractors i.e. it manages the parts of the software which are developed by third parties.
● Software Quality Assurance- It guarantees a good quality software product by following
certain rules and quality standard guidelines while developing.
Level-3: Defined –
● At this level, documentation of the standard guidelines and procedures takes place.
● It is a well-defined integrated set of project-specific software engineering and
management processes.
● Peer Reviews- In this method, defects are removed by using a number of review methods
like walkthroughs, inspections, buddy checks, etc.
● Intergroup Coordination- It consists of planned interactions between different
development teams to ensure efficient and proper fulfillment of customer needs.
● Organization Process Definition- Its key focus is on the development and maintenance
of the standard development processes.
● Organization Process Focus- It includes activities and practices that should be followed
to improve the process capabilities of an organization.
● Training Programs- It focuses on the enhancement of knowledge and skills of the team
members including the developers and ensuring an increase in work efficiency.
Level-4: Managed –
● At this stage, quantitative quality goals are set for the organization for software products
as well as software processes.
● The measurements made help the organization to predict the product and process quality
within some limits defined quantitatively.
● Software Quality Management- It includes the establishment of plans and strategies to
develop quantitative analysis and understanding of the product’s quality.
● Quantitative Management- It focuses on controlling the project performance in a
quantitative manner.
Level-5: Optimizing –
● This is the highest level of process maturity in CMM and focuses on continuous process
improvement in the organization using quantitative feedback.
● Use of new tools, techniques, and evaluation of software processes is done to prevent
recurrence of known defects.
● Process Change Management- Its focus is on the continuous improvement of the
organization’s software processes to improve productivity, quality, and cycle time for the
software product.
● Technology Change Management- It consists of the identification and use of new
technologies to improve product quality and decrease product development time.
● Defect Prevention- It focuses on the identification of causes of defects and prevents them
from recurring in future projects by improving project-defined processes.
NOTE: The description of the phases of the waterfall model is same as that of the process
model.
An alternative design for 'linear sequential model' is as follows:
Advantages of waterfall model
● The waterfall model is simple and easy to understand, implement, and use.
● All the requirements are known at the beginning of the project, hence it is easy to manage.
● It avoids overlapping of phases because each phase is completed at once.
● This model works for small projects because the requirements are understood very well.
● This model is preferred for those projects where the quality is more important as compared
to the cost of the project.
Disadvantages of the waterfall model
● This model is not good for complex and object oriented projects.
● It is a poor model for long projects.
● The problems with this model are uncovered, until the software testing.
● The amount of risk is high.
V-model
The V - model is SDLC model where execution of processes happens in a sequential manner
in V-shape. It is also known as Verification and Validation model.
V - Model is an extension of the waterfall model and is based on association of a testing
phase for each corresponding development stage. This means that for every single phase in
the development cycle there is a directly associated testing phase. This is a highly disciplined
model and next phase starts only after completion of the previous phase.
V- Model design
Under V-Model, the corresponding testing phase of the development phase is planned in
parallel. So there are Verification phases on one side of the .V. and Validation phases on the
other side. Coding phase joins the two sides of the V-Model.
The below figure illustrates the different phases in V-Model of SDLC.
Verification Phases
Following are the Verification phases in V-Model:
Business Requirement Analysis: This is the first phase in the development cycle where the
product requirements are understood from the customer perspective. This phase involves
detailed communication with the customer to understand his expectations and exact
requirement. This is a very important activity and need to be managed well, as most of the
customers are not sure about what exactly they need. The acceptance test design planning is
done at this stage as business requirements can be used as an input for acceptance testing.
System Design: Once you have the clear and detailed product requirements, it.s time to
design the complete system. System design would comprise of understanding and detailing
the complete hardware and communication setup for the product under development. System
test plan is developed based on the system design. Doing this at an earlier stage leaves more
time for actual test execution later.
Architectural Design: Architectural specifications are understood and designed in this
phase. Usually more than one technical approach is proposed and based on the technicaland
financial feasibility the final decision is taken. System design is broken down further into
modules taking up different functionality. This is also referred to as High Level Design HLD.
The data transfer and communication between the internal modules and with the outside
world other systems is clearly understood and defined in this stage. With this information,
integration tests can be designed and documented during this stage.
Module Design: In this phase the detailed internal design for all the system modules is
specified, referred to as Low Level Design LLD. It is important that the design is compatible
with the other modules in the system architecture and the other external systems. Unit tests
are an essential part of any development process and helps eliminate the maximum faults and
errors at a very early stage. Unit tests can be designed at this stage based on the internal
module designs.
Coding Phase
The actual coding of the system modules designed in the design phase is taken up in the
Coding phase. The best suitable programming language is decided based on the system and
architectural requirements. The coding is performed based on the coding guidelines and
standards. The code goes through numerous code reviews and is optimized for best
performance before the final build is checked into the repository.
Validation Phases Following are the Validation phases in V-Model:
Unit Testing: Unit tests designed in the module design phase are executed on the code during
this validation phase. Unit testing is the testing at code level and helps eliminate bugs at an
early stage, though all defects cannot be uncovered by unit testing.
Integration Testing: Integration testing is associated with the architectural design phase.
Integration tests are performed to test the coexistence and communication of the internal
modules within the system.
System Testing: System testing is directly associated with the System design phase. System
tests check the entire system functionality and the communication of the system under
development with external systems. Most of the software and hardware compatibility issues
can be uncovered during system test execution.
Acceptance Testing: Acceptance testing is associated with the business requirement analysis
phase and involves testing the product in user environment. Acceptance tests uncover the
compatibility issues with the other systems available in the user environment. It also
discovers the non functional issues such as load and performance defects in the actual user
environment.
V- Model Application V- Model application is almost same as waterfall model, as both the
models are of sequential type. Requirements have to be very clear before the project starts,
because it is usually expensive to go back and make changes. This model is used in the
medical development field, as it is strictly disciplined domain. Following are the suitable
scenarios to use V-Model:
*Requirements are well defined, clearly documented and fixed.
*Product definition is stable.
*Technology is not dynamic and is well understood by the project team.
*There are no ambiguous or undefined requirements.
*The project is short.
V- Model Pros and Cons
The advantage of V-Model is that it’s very easy to understand and apply. The simplicity of
this model also makes it easier to manage. The disadvantage is that the model is not flexible
to changes and just in case there is a requirement change, which is very common in today’s
dynamic world, it becomes very expensive to make the change.
PROS
This is a highly disciplined model and Phases are completed one at a time.
Works well for smaller projects where requirements are very well understood.
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.
CONS
High 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.
Once an application is in the testing stage, it is difficult to go back and change a functionality
No working software is produced until late during the life cycle.
3. Incremental Process model
● The incremental model combines the elements of waterfall model and they are applied in an
iterative fashion.
● The first increment in this model is generally a core product.
● Each increment builds the product and submits it to the customer for any suggested
modifications.
● The next increment implements on the customer's suggestions and add additional
requirements in the previous increment.
● This process is repeated until the product is finished.
For example, the word-processing software is developed using the incremental model.
Advantages of incremental model
● This model is flexible because the cost of development is low and initial product delivery is
faster.
● It is easier to test and debug during the smaller iteration.
● The working software generates quickly and early during the software life cycle.
● The customers can respond to its functionalities after every increment.
Disadvantages of the incremental model
● The cost of the final product may cross the cost estimated initially.
● This model requires a very clear and complete planning.
● The planning of design is required before the whole system is broken into small increments.
● The demands of customer for the additional functionalities after every increment causes
problem during the system architecture.
4. RAD model
● RAD is a Rapid Application Development model.
● Using the RAD model, software product is developed in a short period of time.
● The initial activity starts with the communication between customer and developer.
● Planning depends upon the initial requirements and then the requirements are divided into
groups.
● Planning is more important to work together on different modules.
The RAD model consist of following phases:
1. Business Modeling
● Business modeling consist of the flow of information between various functions in the
project.
● For example what type of information is produced by every function and which are the
functions to handle that information.
● A complete business analysis should be performed to get the essential business information.
2. Data modeling
● The information in the business modeling phase is refined into the set of objects and it is
essential for the business.
● The attributes of each object are identified and define the relationship between objects.
3. Process modeling
● The data objects defined in the data modeling phase are changed to fulfil the information
flow to implement the business model.
● The process description is created for adding, modifying, deleting or retrieving a data object.
4. Application generation
● In the application generation phase, the actual system is built.
● To construct the software the automated tools are used.
5. Testing and turnover
● The prototypes are independently tested after each iteration so that the overall testing time is
reduced.
● The data flow and the interfaces between all the components are are fully tested. Hence,
most of the programming components are already tested.
● Prototype is defined as first or preliminary form using which other forms are copied or
derived.
● Prototype model is a set of general objectives for software.
● It does not identify the requirements like detailed input, output.
● It is software working model of limited functionality.
● In this model, working programs are quickly produced.
1. Requirements gathering: In this phase, you must define the requirements. You should
explain business opportunities and plan the time and effort needed to build the project. Based
on this information, you can evaluate technical and economic feasibility.
2. Design the requirements: When you have identified the project, work with stakeholders
to define requirements. You can use the user flow diagram or the high-level UML diagram to
show the work of new features and show how it will apply to your existing system.
3. Construction/ iteration: When the team defines the requirements, the work begins.
Designers and developers start working on their project, which aims to deploy a working
product. The product will undergo various stages of improvement, so it includes simple,
minimal functionality.
4. Testing: In this phase, the Quality Assurance team examines the product's performance
and looks for the bug.
5. Deployment: In this phase, the team issues a product for the user's work environment.
6. Feedback: After releasing the product, the last step is feedback. In this, the team receives
feedback about the product and works through the feedback.
Agile methodology
AGILE is a methodology that promotes continuous iteration of development and testing
throughout the software development life cycle of the project. Both development and testing
activities are concurrent unlike the Waterfall model
The agile software development emphasizes on four core values.
XP values
Following are the values for extreme programming:
1. Communication
● Building software development process needs communication between the developer and
the customer.
● Communication is important for requirement gathering and discussing the concept.
2. Simplicity
The simple design is easy to implement in code.
3. Feedback
Feedback guides the development process in the right direction.
4. Courage
In every development process there will always be a pressure situation. The courage or the
discipline to deal with it surely makes the task easy.
5. Respect
Agile process should inculcate the habit to respect all team members, other stake holders and
customer.
The XP Process
The XP process comprises four framework activities:
1. Planning
● Planning starts with the requirements gathering which enables XP team to understand the
rules for the software.
● The customer and developer work together for the final requirements.
2. Design
The XP design follows the 'keep it simple' principle.
● A simple design always prefers the more difficult representation.
3. Coding
● The coding is started after the initial design work is over.
● After the initial design work is done, the team creates a set of unit tests which can test each
situation that should be a part of the release.
● The developer is focused on what must be implemented to pass the test.
● Two people are assigned to create the code. It is an important concept in coding activity.
4. Testing
● Validation testing of the system occurs on a daily basis. It gives the XP team a regular
indication of the progress.
● 'XP acceptance tests' are known as the customer test.
Applications of Extreme Programming (XP): Some of the projects that are suitable to
develop using XP model are given below:
● 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.
●
Scrum
● Scrum is an agile process most commonly used for product development, especially
software development. Scrum is a project management framework that is applicable to any
project with aggressive deadlines, complex requirements and a degree of uniqueness. In
Scrum, projects move forward via a series of iterations called sprints. Each sprint is typically
two to four weeks long.
● Scrum principles are consistent with the agile platform that are used to guide development
activities within a process.
● It includes the framework activities like requirement, analysis, design, evolution and
delivery.
● Work tasks occur within a process pattern in each framework activity called as 'sprint'.
● Scrum highlights the use of a set of software process pattern that are effective for the
projects with tight timelines, changing requirements and business criticality.
Scrum team: A typical scrum team has between five and nine people, but Scrum projects can
easily scale into the hundreds. However, Scrum can easily be used by one-person teams and
often is. This team does not include any of the traditional software engineering roles such as
programmer, designer, tester or architect. Everyone on the project works together to complete
the set of work they have collectively committed to complete within a sprint. Scrum teams
develop a deep form of camaraderie and a feeling that “we’re all in this together.”
Product owner: The product owner is the project’s key stakeholder and represents users,
customers and others in the process. The product owner is often someone from product
management or marketing, a key stakeholder or a key user.
Scrum Master: The Scrum Master is responsible for making sure the team is as productive
as possible. The Scrum Master does this by helping the team use the Scrum process, by
removing impediments to progress, by protecting the team from outside, and so on.
Product backlog: The product backlog is a prioritized features list containing every desired
feature or change to the product. Note: The term “backlog” can get confusing because it’s
used for two different things. To clarify, the product backlog is a list of desired features for
the product. The sprint backlog is a list of tasks to be completed in a sprint.
Sprint planning meeting: At the start of each sprint, a sprint planning meeting is held,
during which the product owner presents the top items on the product backlog to the team.
The Scrum team selects the work they can complete during the coming sprint. That work is
then moved from the product backlog to a sprint backlog, which is the list of tasks needed to
complete the product backlog items the team has committed to complete in the sprint.
Daily Scrum: Each day during the sprint, a brief meeting called the daily scrum is
conducted. This meeting helps set the context for each day’s work and helps the team stay on
track. All team members are required to attend the daily scrum.
Sprint review meeting: At the end of each sprint, the team demonstrates the completed
functionality at a sprint review meeting, during which, the team shows what they
accomplished during the sprint. Typically, this takes the form of a demonstration of the new
features, but in an informal way; for example, PowerPoint slides are not allowed. The
meeting must not become a task in itself nor a distraction from the process.
Sprint retrospective: Also at the end of each sprint, the team conducts a sprint retrospective,
which is a meeting during which the team (including its ScrumMaster and product owner)
reflect on how well Scrum is working for them and what changes they may wish to make for
it to work even better.
Each of the Scrum terms has its own page within the Scrum section, so be sure to check out
all the pages in the navigation.
Each process patterns defines a set of development actions which are as follows:
Backlog
● A prioritized list of project requirements or features that provide business value for the
customer.
● Items can be added to the backlog at any time.
● The product manager accesses the backlog and updates priorities, as required.
Sprints
● It consists of work units that are required to achieve a requirement defined in the backlog.
● Changes are not introduced during the sprints. It allows team members to work in short-term
but in the stable environment.
Scrum meeting
● The short meetings are held daily by the scrum team.
● The key questions are asked and answered by all team members.
● Daily meetings guide to 'knowledge socialization' and that encourages a self-organizing
team structure.
Demos
● Deliver the software increment to the customer. Using which the customer evaluates and
demonstrates the functionalities.
What is kanban?
Kanban is a popular framework used to implement agile software development. It requires
real-time communication of capacity and full transparency of work. Work items are
represented visually on a kanban board, allowing team members to see the state of every
piece of work at any time.
When Applicable
Kanban can be used in any knowledge work setting, and is particularly applicable in
situations where work arrives in an unpredictable fashion and/or when you want to deploy
work as soon as it is ready, rather than waiting for other work items.
Values
Teams applying Kanban to improve the services they deliver embrace the following values:
Transparency - sharing information openly using clear and straightforward language
improves the flow of business value.
Balance - different aspects, viewpoints, and capabilities must be balanced in order to achieve
effectiveness.
Collaboration - Kanban was created to improve the way people work together.
Customer Focus - Kanban systems aim to optimize the flow of value to customers that are
external from the system but may be internal or external to the organization in which the
system exists.
Flow - Work is a continuous or episodic flow of value.
Leadership - Leadership (the ability to inspire others to act via example, words, and
reflection) is needed at all levels in order to realize continuous improvement and deliver
value.
Understanding - Individual and organizational self-knowledge of the starting point is
necessary to move forward and improve.
Agreement - Everyone involved with a system are committed to improvement and agree to
jointly move toward goals while respecting and accommodating differences of opinion and
approach.
Respect - Value, understand, and show consideration for people.
Scrum vs. kanban
Kanban and scrum share some of the same concepts but have very different approaches. They
should not be confused with one another.
SCRUM KANBAN
No existing roles.
Product owner, scrum master, Some teams enlist the
Roles development team help of an agile coach.