PM Slide2
PM Slide2
Methodologies
Nahim Adnan
Assistant Professor
Dept of CSE
United International University
Agile Methodology
• In manufacturing industry, agile methodologies such as Kanban are
used for responsive supply chain.
• It suggests that “you should never keep unnecessary inventory with you but
only inventory that is immediately needed ”.
• If you keep entire inventory and the market condition suddenly changed then
this inventory is no longer needed.
• It is better to keep necessary minimum inventory.
• In agile software development, its’ better to work on a few
requirements first and if the market receives the product well then
add more features to the product.
Spiral Model - Motivations
• Many people realize that software development does not follow a linear
path. Evolution can take place in any stage of the software development.
• When the product is at the design phase, the requirements may evolve and thus
are changed.
• When the product is constructed and tested, some part of the design may
evolve and thus need to be changed.
• There is a risk involved in any phase of the software development.
• If a software design does not reflect the software requirement properly.
• If the source code does not represent the software design properly.
• A risk mitigation strategy is needed to ensure that the development
cycle is not affected by these risks.
Spiral Model - Motivations
• Barry Boehm developed spiral model.
• If the requirements are known, fixed, and can be specified correctly and the
design can be correctly made for those requirements, then software
development can progress in a linear manner and a risk-free Waterfall model
can be adopted for that project.
• If the requirements are not fully known or are not fixed at the
initiation of the project, then the agile model is best suited for
development.
• Choosing the best software engineering methodology for a software
project is the outcome of the spiral model.
Spiral Model – Basic Activities
• First factor is to evaluate whether all the stakeholders’ success factors
are met.
• One must consider whether the estimated cost of a project justifies the
further development of that project. Project cost is a success factor.
• Second factor is to find out available alternatives.
• For example, a factor that is often considered before a project is considered is
a “build vs buy” decision.
• Third factor is to find out all possible risk factors for each alternative.
• For instance, building a product from scratch may be more expensive than
buying an off-the-shelf product.
Spiral Model – Basic Activities
• Fourth factor is that when all the alternatives are considered, and the
best course of action is selected then approval from all stakeholders is
needed to proceed further.
Spiral Model - Details
• In the Spiral model, there are provisions for allocating extra efforts for riskier
process steps as well as provisions for making more detailed plans for riskier
process steps.
• Building a prototype is also a necessary requirement spiral model. Refining this
prototype over many iterations is again an important ingredient in this model.
• The number of cycles in the spiral model shows the amount of risk is involved in a
project.
• There will be many iterations involved in developing the prototype model before
the prototype is mature enough to be considered for making the actual software
product.
Spiral Model
Spiral Model Vs Other Models – XP, Scrum
• The iterations in the spiral model are not like the true agile
methodology such as XP and Scrum. In true agile models, a complete
fully functional software product is developed. For example, after first
iteration, version 1.1 is developed whereas after two iterations,
version 1.2 is developed, and 1.2 version has some more additional
features.
• In contrast, in spiral model prototypes are developed instead of actual
software product. Prototypes are developed in multiple iteration to
reflect the customer needs. Prototypes help reduce the
communication gap between the customers and the developers of a
proposed software product.
Spiral Model Vs RUP Model
• In RUP, there could be several iterations in just one phase of the
software development life cycle.
• For example, there could be three iterations over software design. These
iterations are totally separated from the other phases of software
development.
• In contrast, in the spiral model, the iteration takes place over all the
phases of the software development life cycle including requirements,
design, construction and testing phases.
Drawbacks of Spiral Model
• The Spiral model carries a lot of overhead in terms of several iterations to
develop a software product. Thus, if a software product does not need to be
developed using many iterations and, in fact, it can be developed using just one
development cycle, then the Spiral model is overkill.
• For simple software project such as a library management system for a small
library may not require several iterations to understand the requirements. For
such projects, other simpler models may be better suited.
When to use Spiral Model
•The Spiral model is in fact a super model. The outcome of a Spiral model is a
model that can be an agile or Waterfall model. Therefore, you first run the Spiral
model to find a suitable model for your project. In these scenarios, the Spiral model
is used for evaluating the risks that may occur in the project.
• For example, in a Spiral model, after evaluating and mitigating the risks, if it is determined
that a Waterfall model is more suitable to the development project, then the Waterfall model
can be used.
•Generally, the Spiral model can be used for projects where too many risks are
involved. The process of considering the risks and the ways to mitigate those risks is
costly and lengthy. For these reasons, this model is suitable for high-risk projects
only.
Prototypes
• A prototype is a rapidly developed piece of software, and it may not contain the
depth of a software product.
• For example, a prototype of a menu system may not have all the submenus incorporated as
required in the requirement specification.
• However, the prototype will show (to the customer) how the menus will look and what those
menus will do.
• Prototypes are not tested thoroughly as is the case with actual software products.
• The purpose of a prototype is not to be used by the end users but to be used only for
demonstration purposes.
• The effort required to develop a prototype is around 5% to 10% of the effort required to build
the actual product.
Incremental Iteration Model - Motivations
• An agile methodology mostly depends on building a software product using
incremental iterations.
• It provides many benefits over the traditional approaches of building a software
product.
• The most important of these benefits includes the ability to tap the market at an
early date when only a modest product is built quickly using less effort. This
approach minimizes the financial risks.
• Once the modest product is well received by the customers and the preferences
of the customers are well known, then additional features can be added to the
software product over time.
Incremental Iteration Model
Incremental Iteration Model
• The entire project is broken down into several iterations. Each iteration consists of all the
phases, including the requirement specification, design, construction, testing, and
release of building a software product.
• Using the design, construction, testing, and release phases for these few requirements
alone will result in a small software product with only a few product features after the
first iteration.
• During the next iteration, again a few requirements are considered, and all the phases of
software development are again performed for developing the software features as per
these requirements.
• After completion of each iteration, a partial product is created. This partial product is
integrated with the existing product.
• The process of creating the partial products and integrating them with the main product
continues until all the requirements are exhausted.
Incremental Iteration Model : Major & Minor
releases
• In an incremental iteration model, there is a concept called major and minor
releases. Any major or minor release of the software product is a product release
that may coincide with the completion of some predefined number of iterations.
Benefits of Incremental Iteration Model
• The beauty of the incremental iterative approach is that the main build of the
product is always a working product, and it can be marketed while the project
team is busy creating additional software product features.
eXtreme Programming (XP) - Motivations
• The idea behind the Waterfall and RUP models is that the entire software product
is developed under one project. However, many companies want to release their
products into the market as early as possible, and these companies do not wait
until the full products are developed.
• It is also realized that it is better to test the market with a product containing a
small number of features. If the product is well received in the market, then
additional features can be developed.
• On the other hand, if it is not well received, then the product can be stopped
from further development.
• To cater to these kinds of needs, eXtreme Programming (XP) methodology has
been developed.
eXtreme Programming
• In waterfall model, customer is only required over requirement
specification phase.
• In contrast, in XP, the customer is constantly engaged in the project
and the product is continuously tested – pair programming, test-
driven development.
• All the artifacts (requirement specifications, product model, untested
product, and so on) available during the product development are
constantly reviewed by the customer. The customer is responsible for
all aspects related to the requirement specifications for the software
product.
eXtreme Programming
• Since the customer (sometimes also known as the product owner) is always
involved in the product development process, he or she decides what features of
the product need to be developed during the next iteration.
• Therefore, incremental iteration cycles are performed. Some product features are
developed, tested, and approved by the customer during an iteration.
• Once the iteration is over, another set of product features is considered and so
on, as explained in the incremental iteration model.
• In essence, the complete software product is developed in multiple short
development cycles rather than in a single, long, and complete cycle.
eXtreme Programming Activities
• XP is based on several activities. The activities include coding, testing,
listening, and designing. Using these activities, a set of working product
features is developed and added to the existing software product in each
iteration cycle.
• Coding: The XP methodology believes that the main task of any software product
development is to generate a code (using a high-level programming language) that,
in turn, will generate a machine-readable code.
• Testing: The XP methodology believes that the best way to achieve product quality
is to make the testing procedure the central activity during the entire product
development process. Because of this, XP supports test-driven development. In
test-driven development, the developer first writes the test cases for each feature
of the product and then develops the code that passes these test cases. These tests
are known as unit tests because they test each unit of the source code.
eXtreme Programming Activities
• Listening: During the listening activity, the programmers listen to what the
customer wants in the product. The customer explains the business logic behind
a feature that he or she is expecting in the product.
• Designing: In XP, the size of the product developed during the initial iterations is
very small. The size keeps growing with the number of iterations. Product design
is not a serious activity during the early iterations. However, as the product size
increases, the product design becomes a concern.
• The parts of the product that were developed initially were not designed to be integrated
with the features that are added later. This is because, while developing the initial product, it
is difficult to predict what additional features the customer will want at the later stages. This
problem results in a software product with a shaky performance. To address this issue, the
existing code needs to be redesigned so that all parts of the product become more
compatible with each other. This kind of designing is known as refactoring.
eXtreme Programming Concepts
• Customer: A customer in XP is a representative of the company for whom the
software product is being developed. The customer provides the list of software
features that need to be developed in each iteration. The customer is always
present at the location where the software development project team develops
the software product. The customer also tests the software product features that
are developed during each iteration and ensures that they have no software
defects.
• Pair Programming: Pair programming was introduced in XP because it was
noticed that when one programmer is coding, he or she often fails to implement
the business logic correctly. To address this issue, in pair programming, two
programmers work on the same computer. While one of them writes the code,
the other one reviews each line of that code. The two programmers frequently
switch their responsibilities.
eXtreme Programming Concepts
• Release Planning: Release planning determines the product features that will be
included during the next major release of the product. Release planning consists
of three phases: exploration phase, commitment phase, and steering phase.
• In the exploration phase, the customer provides a brief list of requirements that need to be
added to the product during the next release. The development team estimates how much
time is needed to convert these requirements into product features and then to develop
those features.
• In the commitment phase, the development team commits to the customer about the
development of some of the requirements out of all the requirements (proposed by the
customer) and about the date of the next release.
• The purpose of the steering phase is to update the plan of the project, based on the input or
feedback provided by the customer as well as the development team so far.
eXtreme Programming Concepts
• Iteration Planning: Iteration planning determines the features that will be included during
the next iteration. The development team does the iteration planning to ensure that at
least the important features are developed in the present iteration.
• Continuous Integration: Continuous integration is the process of integrating the newly
developed source code with the existing build of the software product continuously.
Whenever a programmer completes his or her code, it is immediately submitted for
integration with the existing build.
• Refactoring: “Refactoring is the process of changing a software system in such a way that
it does not alter the external behavior of the code yet improves its internal structure”
(Martin Fowler). Object-oriented programming languages are used in all XP projects. The
building blocks of object-oriented programming are classes. Using the refactoring
techniques, the old classes are modified so that they will have proper interfaces to
integrate with the new classes.