SE Unit 1 Notes
SE Unit 1 Notes
SE Unit 1 Notes
Software Components:
Computer programs and associated documentation.
It can involve the application of new It usually applies only known and
and untested elements in software tested principles to meet product
projects. requirements.
A software life cycle model (also termed process model) is a pictorial and
diagrammatic representation of the software life cycle. A life cycle model
represents all the methods required to make a software product transit through its
life cycle stages. It also captures the structure in which these methods are to be
undertaken.
In other words, a life cycle model maps the various activities performed on a
software product from its inception to retirement. Different life cycle models may
plan the necessary development activities to phases in different ways. Thus, no
element which life cycle model is followed; the essential activities are contained
in all life cycle models though the action may be carried out in distinct orders in
different life cycle models. During any life cycle stage, more than one activity
may also be carried out.
Need of SDLC
The development team must determine a suitable life cycle model for a particular
plan and then observe to it.
Without using an exact life cycle model, the development of a software product
would not be in a systematic and disciplined manner. When a team is developing
a software product, there must be a clear understanding among team
representative about when and what to do. Otherwise, it would point to chaos and
project failure. This problem can be defined by using an example. Suppose a
software development issue is divided into various parts and the parts are
assigned to the team members. From then on, suppose the team representative is
allowed the freedom to develop the roles assigned to them in whatever way they
like. It is possible that one representative might start writing the code for his part,
another might choose to prepare the test documents first, and some other engineer
might begin with the design phase of the roles assigned to him. This would be
one of the perfect methods for project failure.
Requirement Analysis
Design
The goal of the design phase is to transform the requirements specified in the SRS
document into a structure that is suitable for implementation in some
programming language. In technical terms, during the design phase the software
architecture is derived from the SRS document. Two distinctly different design
approaches are popularly being used at present—the procedural and object-
oriented design approaches.
The purpose of the coding and unit testing phase is to translate a software design
into source code and to ensure that individually each function is working
correctly. The coding phase is also sometimes called t h e implementation phase,
since the design is implemented into a workable solution in this phase. Each
component of the design is implemented as a program module. The end-product
of this phase is a set of program modules that have been individually unit tested.
Integration of different modules is undertaken soon after they have been coded
and unit tested. During the integration and system testing phase, the different
modules are integrated in a planned manner. Various modules making up a
software are almost never integrated in one shot (can you guess the reason for
this?). Integration of various modules are normally carried out incrementally over
a number of steps. During each integration step, previously planned modules are
added to the partially integrated system and the resultant system is tested. Finally,
after all the modules have been successfully integrated and tested, the full
working system is obtained.
Maintenance
The total effort spent on maintenance of a typical software during its operation
phase is much more than that required for developing the software itself. Many
studies carried out in the past confirm this and indicate that the ratio of relative
effort of developing a typical software product and the total effort spent on its
maintenance is roughly 40:60.
The classical waterfall model is a very simple and intuitive model. However, it
suffers from several shortcomings. Let us identify some of the important
shortcomings of the classical waterfall model:
Inefficient error corrections: This model defers integration of code and testing
tasks until it is very late when the problems are harder to resolve.
The main change brought about by the iterative waterfall model to the classical
waterfall model is in the form of providing feedback paths from every phase to
its preceding phases.
Prototype model:
In this process model, the system is partially implemented before or during the
analysis phase thereby giving the customers an opportunity to see the product
early in the life cycle. The process starts by interviewing the customers and
developing the incomplete high-level paper model. This document is used to
build the initial prototype supporting only the basic functionality as desired by
the customer. Once the customer figures out the problems, the prototype is
further refined to eliminate them. The process continues until the user approves
the prototype and finds the working model to be satisfactory.
Step 2: Quick Design: This is the second step in Prototyping Model. This
model covers the basic design of the requirement through which a quick
overview can be easily described.
Step 3: Build a Prototype: This step helps in building an actual prototype from
the knowledge gained from prototype design.
Step 4: Initial User Evaluation: This step describes the preliminary testing
where the investigation of the performance model occurs, as the customer will
tell the strength and weaknesses of the design, which was sent to the developer.
Step 5: Refining Prototype: If any feedback is given by the user, then
improving the client’s response to feedback and suggestions, the final system is
approved.
Step 6: Implement Product and Maintain: This is the final step in the phase
of the Prototyping Model where the final system is tested and distributed to
production, here the program is run regularly to prevent failures
Advantages of Prototyping Model
• 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.
• Early feedback from customers and stakeholders can help guide the
development process and ensure that the final product meets their
needs and expectations.
• Prototyping can be used to test and validate design decisions,
allowing for adjustments to be made before significant resources are
invested in development.
• Prototyping can help reduce the risk of project failure by identifying
potential issues and addressing them early in the process.
• Prototyping can facilitate communication and collaboration among
team members and stakeholders, improving overall project efficiency
and effectiveness.
• Prototyping can help bridge the gap between technical and non-
technical stakeholders by providing a tangible representation of the
product.
Disadvantages of the Prototyping Model
• Costly with respect to 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 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.
• The prototype may not be scalable to meet the future needs of the
customer.
• The prototype may not accurately represent the final product due to
limited functionality or incomplete features.
• The focus on prototype development may shift the focus away from
the final product, leading to delays in the development process.
• The prototype may give a false sense of completion, leading to the
premature release of the product.
• The prototype may not consider technical feasibility and scalability
issues that can arise during the final product development.
• The prototype may be developed using different tools and
technologies, leading to additional training and maintenance costs.
• The prototype may not reflect the actual business requirements of the
customer, leading to dissatisfaction with the final product.
Spiral Model:
This model gets its name from the appearance of its diagrammatic representation
that looks like a spiral with many loops. The exact number of loops of the spiral
is not fixed and can vary from project to project. Each loop of the spiral is called
a phase of the software process. The exact number of phases through which the
product is developed can be varied by the project manager depending upon the
project risks. A prominent feature of the spiral model is handling unforeseen risks
that can show up much after the project has started. In this context, please
recollect that the prototyping model can be used effectively only when the risks
in a project can be identified upfront before the development work starts. As we
shall discuss, this model achieves this by incorporating much more flexibility
compared to SDLC other models. While the prototyping model does provide
explicit support for risk handling, the risks are assumed to have been identified
completely before the project start. This is required since the prototype is
constructed only at the start of the project. In contrast, in the spiral model
prototypes are built at the start of every phase. Each phase of the model is
represented as a loop in its diagrammatic representation. Over each loop, one or
more features of the product are elaborated
and analysed and the risks at that point of time are identified and are resolved
through prototyping. Based on this, the identified features are implemented.
Software development uses a dynamic and adaptable method called the iterative
enhancement Model. The iterative enhancement model encourages a software
product’s ongoing evolution and improvement. This methodology is noticeable due
to its concentration on adaptability, flexibility and change responsiveness. It makes
it easier for a product to evolve because it gives developers the freedom to
progressively enhance the software, making sure that it complies with evolving
specifications, user demands, and market demands. This helps products evolve more
easily.
The Iterative Enhancement Model creates an environment where development
teams can more effectively adjust to changing requirements by segmenting
the software development process into smaller, more manageable parts. Every
iteration improves on the one before it, adding new features and fixing problems
found in earlier stages. Members of the team, stakeholders and end users are
encouraged to collaborate and communicate continuously to make sure the
software meets changing needs and expectations. Until the software is finished
being built, the iteration process is carried out, which involves giving the user
the increments.
Advantages of Iterative Enhancement Model
• Adaptation to changing requirements is made possible by its
flexibility in accomodating modifications and improvement during
each iteration.
• Early software iterations provide clients with functional portions of
the product, facilitating prompt feedback and validation.
• Problems and risks can be identified and addressed early in the
developement process, reduces chances of issue for future stages.
• Feedback and constant client involvement are encouraged to make
sure the finished product lives up to user expectations.
• Every iteration is put through testing and improvement, leading to
higher quality product.
Disadvantages of Iterative Enhancement Model
• Especially in larger projects, managing several iterations at once can
add complexity.
• Higher cost
• Due to constant changes, there may be delays in documentation,
making it more difficult to maintain comprehensive documentation.
• Continuous customer engagement may not be possible in all
scenarios, which impacts the effectiveness of the model.
Evolutionary Development Models: This model has many of the features of the
incremental model. As in case of the incremental model, the software is developed over a
number of increments. At each increment, a concept (feature) is implemented and is deployed
at the client site. The software is successively refined and feature-enriched until the full
software is realised. The principal idea behind the evolutionary life cycle model is conveyed
by its name. In the incremental development model, complete requirements are first developed,
and the SRS document prepared. In contrast, in the evolutionary model, the requirements, plan,
estimates, and solution evolve over the iterations, rather than fully defined and frozen in a
major up-front specification effort before the development iterations begin. Such evolution is
consistent with the pattern of unpredictable feature discovery and feature changes that take
place in new product development.
Though the evolutionary model can also be viewed as an extension of the waterfall model, but
it incorporates a major paradigm shift that has been widely adopted in many recent life cycle
models. Due to obvious reasons, the evolutionary software development process is sometimes
referred to as design a little, build a little, test a little, deploy a little model. This means that
after the requirements have been specified, the design, build, test, and deployment activities
are iterated.
Advantages
The evolutionary model of development has several advantages. Two important advantages of
using this model are the following:
Effective elicitation of actual customer requirements: In this model, the user gets a chance
to experiment with a partially developed software much before the complete requirements are
developed. Therefore, the evolutionary model helps to accurately elicit user requirements with
the help of feedback obtained on the delivery of different versions of the software. As a result,
the change requests after delivery of the complete software gets substantially reduced.
Easy handling change requests: In this model, handling change requests is easier as no long
term plans are made. Consequently, reworks required due to change requests are normally
much smaller compared to the sequential models.
Disadvantages
The main disadvantages of the successive versions model are as follows:
Feature division into incremental parts can be non-trivial: For many development
projects, especially for small-sized projects, it is difficult to divide the required features
into several parts that can be incrementally implemented and delivered. Further, even
for larger problems, often the features are so interwined and dependent on each other
that even an expert would need considerable effort to plan the incremental deliveries.
Ad hoc design: Since at a time design for only the current increment is done, the design
can become ad hoc without specific attention being paid to maintainability and
optimality. Obviously, for moderate sized problems and for those for which the
customer requirements are clear, the iterative waterfall model can yield a better solution.
V- Model
Agile Model
Comparison of SDLC Model