Professional Documents
Culture Documents
Software
Engineering
Evolving Role of Software
• Due to
• Failure and over budget rates are High
• Success
• Cost of hardware and software is decreased by the time
• Manager and Technical Persons asked:
• Why are costs so high?
• Why can not we find all errors before release?
• Why do we have difficulty in measuring progress of software development?
Software Crisis: Problem encountered in the
development of software during 1960s.
1. Early software development was ‘personalized’.
2. As sophistication of application grew, programs grew in size
and complexity.
3. Maintenance became difficult.
4. Software projects were taking a lot longer than originally
calculated.
5. Software was costing a lot more to develop than initially
estimated.
6. Software was being delivered to the customer only to fail.
7. Error found by the customer were extremely difficult to
trace and fix.
Software
• It consists of programs, set of documentations and the procedures used to setup and
operate the software system
• Software = Programs + Documentation + Operating Procedures.
Programs
Documentation Operating
Procedures
According to IEEE -
The application of systematic, disciplined and quantifiable approach to the
development, operation, and maintenance of software; that is, the
application of engineering to software.
According to Boehm -
The practical application of scientific knowledge in the design and
construction of computer programs and the associated documentation
required to develop, operate, and maintain them.
Software Engineering
Failure
Intensity
Time
Bathtub Curve
Software Characteristics
Failure
Intensity
Time
Software curve
Software Characteristics
• performance requirements,
• implicit characteristics
Test
Maintain
Prototype Model
Basic Requirement Identification: This step involves understanding the very basics product
requirements especially in terms of user interface. The more intricate details of the internal
design and external aspects like performance and security can be ignored at this stage.
Developing the initial Prototype: The initial Prototype is developed in this stage, where the very
basic requirements are show cased and user interfaces are provided. These features may not
exactly work in the same manner internally in the actual software developed and the
workarounds are used to give the same look and feel to the customer in the prototype
developed.
Review of the Prototype: The prototype developed is then presented to the customer and the other
important stakeholders in the project. The feedback is collected in an organized manner and
used for further enhancements in the product under development.
Prototype Model
Revise and enhance the Prototype: The feedback and the review comments are discussed during
this stage and some negotiations happen with the customer based on factors like, time and
budget constraints and technical feasibility of actual implementation. The changes accepted are
again incorporated in the new Prototype developed and the cycle repeats until customer
expectations are met.
Prototype Model: Advantages
• The customers get to see the partial product early in the life cycle. This ensures a greater level of
customer satisfaction and comfort.
• New requirements can be easily accommodated as there is scope for refinement.
• Missing functionalities can be easily figured out.
• Errors can be detected much earlier thereby saving a lot of effort and cost, besides enhancing the
quality of the software.
• The developed prototype can be reused by the developer for more complicated projects in the
future.
• Flexibility in design.
Prototype Model: Disadvantages
• Costly w.r.t time as well as money.
• There may be too much variation in requirements each time the prototype is evaluated by the
customer.
• Poor Documentation due to continuously changing customer requirements.
• It is very difficult for the developers to accommodate all the changes demanded by the
customer.
• There is uncertainty in determining the number of iterations that would be required before the
prototype is finally accepted by the customer.
• After seeing an early prototype, the customers sometimes demand the actual product to be
delivered soon.
• Developers in a hurry to build prototypes may end up with sub-optimal solutions.
• The customer might lose interest in the product if he/she is not satisfied with the initial
prototype.
Spiral Model
• Spiral model is one of the most important Software Development Life Cycle models, which
provides support for Risk Handling.
• In its diagrammatic representation, it looks like a spiral with many loops. The exact number of
loops of the spiral is unknown and can vary from project to project.
• Each loop of the spiral is called a Phase of the software development process.
• The exact number of phases needed to develop the product can be varied by the project manager
depending upon the project risks.
• As the project manager dynamically determines the number of phases, so the project manager has
an important role to develop a product using spiral model.
• The Radius of the spiral at any point represents the expenses(cost) of the project so far, and the angular dimension represents the progress
made so far in the current phase.
Spiral Model
• Each phase of Spiral Model is divided into four quadrants as shown in the above figure. The
functions of these four quadrants are discussed below-
1. Objectives determination and identify alternative solutions: Requirements are gathered from
the customers and the objectives are identified, elaborated and analyzed at the start of every
phase. Then alternative solutions possible for the phase are proposed in this quadrant.
2. Identify and resolve Risks: During the second quadrant all the possible solutions are evaluated
to select the best possible solution. Then the risks associated with that solution is identified and
the risks are resolved using the best possible strategy. At the end of this quadrant, Prototype is
built for the best possible solution.
3. Develop next version of the Product: During the third quadrant, the identified features are
developed and verified through testing. At the end of the third quadrant, the next version of the
software is available.
4. Review and plan for the next Phase: In the fourth quadrant, the Customers evaluate the so far
developed version of the software. In the end, planning for the next phase is started.
Spiral Model
• The most important feature of the spiral model is handling these unknown risks after the project
has started. Such risk resolutions are easier done by developing a prototype.
• The spiral model supports coping up with risks by providing the scope to build a prototype at
every phase of the software development.
• Prototyping Model also support risk handling, but the risks must be identified completely before
the start of the development work of the project.
• But in real life project risk may occur after the development work starts, in that case, we cannot
use Prototyping Model.
• In each phase of the Spiral Model, the features of the product dated and analyzed and the risks at
that point of time are identified and are resolved through prototyping. Thus, this model is much
more flexible compared to other SDLC models.
Spiral Model as Meta Model
• The Spiral model is called as a Meta Model because it subsumes all
the other SDLC models. For example, a single loop spiral represents
the Iterative Waterfall Model.
• The spiral model incorporates the stepwise approach of the Classical
Waterfall Model.
• The spiral model uses the approach of Prototyping Model by building
a prototype at the start of each phase as a risk handling technique.
Also, the spiral model can be considered as supporting the
evolutionary model – the iterations along the spiral can be considered
as evolutionary levels through which the complete system is built.
Spiral Model: Advantages
• Risk Handling: The projects with many unknown risks that occur as the
development proceeds, in that case, Spiral Model is the best development
model to follow due to the risk analysis and risk handling at every phase.
• Good for large projects: It is recommended to use the Spiral Model in
large and complex projects.
• Flexibility in Requirements: Change requests in the Requirements at
later phase can be incorporated accurately by using this model.
• Customer Satisfaction: Customer can see the development of the
product at the early phase of the software development and thus, they
habituated with the system by using it before completion of the total
product.
Spiral Model: Disadvantages
• Complex: The Spiral Model is much more complex than other SDLC models.
• Expensive: Spiral Model is not suitable for small projects as it is expensive.
• Too much dependable on Risk Analysis: The successful completion of the project is very much
dependent on Risk Analysis. Without very highly experienced expertise, it is going to be a failure
to develop a project using this model.
• Difficulty in time management: As the number of phases is unknown at the start of the project,
so time estimation is very difficult.
•
Iterative Enhancement Model
• In Iterative model, iterative process starts with a simple implementation of a small set of the
software requirements and iteratively enhances the evolving versions until the complete system is
implemented and ready to be deployed.
• An iterative life cycle model does not attempt to start with a full specification of requirements.
Instead, development begins by specifying and implementing just part of the software, which is
then reviewed in order to identify further requirements. This process is then repeated, producing a
new version of the software at the end of each iteration of the model.
Iterative Model design
• Iterative process starts with a simple implementation of a subset of the software requirements and
iteratively enhances the evolving versions until the full system is implemented. At each iteration,
design modifications are made and new functional capabilities are added. The basic idea behind
this method is to develop a system through repeated cycles (iterative) and in smaller portions at a
time (incremental).
Iterative Model design
•"During software development, more than one iteration of the software development cycle may be
in progress at the same time." and "This process may be described as an "evolutionary acquisition"
or "incremental build" approach."
•In incremental model the whole requirement is divided into various builds. During each iteration,
the development module goes through the requirements, design, implementation and testing phases.
Each subsequent release of the module adds function to the previous release. The process continues
till the complete system is ready as per the requirement.
•The key to successful use of an iterative software development lifecycle is rigorous validation of
requirements, and verification & testing of each version of the software against those requirements
within each cycle of the model. As the software evolves through successive cycles, tests have to be
repeated and extended to verify each version of the software.
Iterative Model Application
•Like other SDLC models, Iterative and incremental development has some specific applications in
the software industry. This model is most often used in the following scenarios:
• 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 set 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.
Pros Cons
Some working functionality can be developed quickly
More resources may be required.
and early in the life cycle.
Although cost of change is lesser, but it is not very suitable for changing
Results are obtained early and periodically.
requirements.
Parallel development can be planned. More management attention is required.
System architecture or design issues may arise because not all
Progress can be measured.
requirements are gathered in the beginning of the entire life cycle.
Less costly to change the scope/requirements. Defining increments may require definition of the complete system.
Testing and debugging during smaller iteration is easy. Not suitable for smaller projects.
Risks are identified and resolved during iteration; and
Management complexity is more.
each iteration is an easily managed milestone.
Easier to manage risk - High risk part is done first. End of project may not be known which a risk is.
With every increment operational product is
Highly skilled resources are required for risk analysis.
delivered.
Issues, challenges & risks identified from each
increment can be utilized/applied to the next Projects progress is highly dependent upon the risk analysis phase.
increment.
It supports changing requirements.
Initial Operating time is less.
Better suited for large and mission-critical projects.
During life cycle software is produced early which
facilitates customer evaluation and feedback.
Evolutionary Model
• Evolutionary model is a combination of Iterative and Incremental model of software development
life cycle. Delivering your system in a big bang release, delivering it in incremental process over
time is the action done in this model. Some initial requirements and architecture envisioning need
to be done.
• It is better for software products that have their feature sets redefined during development
because of user feedback and other factors. The Evolutionary development model divides the
development cycle into smaller, incremental waterfall models in which users are able to get access
to the product at the end of each cycle.
• Feedback is provided by the users on the product for the planning stage of the next cycle and the
development team responds, often by changing the product, plan or process. Therefore, the
software product evolves with time.
• All the models have the disadvantage that the duration of time from start of the project to the
delivery time of a solution is very high. Evolutionary model solves this problem in a different
approach.
Evolutionary Model
• Evolutionary model suggests breaking down of work into smaller chunks, prioritizing them and then
delivering those chunks to the customer one by one.
• The number of chunks is huge and is the number of deliveries made to the customer.
• The main advantage is that the customer’s confidence increases as he constantly gets quantifiable
goods or services from the beginning of the project to verify and validate his requirements.
• The model allows for changing requirements as well as all work in broken down into maintainable
work chunks.