Software Engineering Unit1
Software Engineering Unit1
Software Engineering Unit1
➢ The term software engineering is the product of two words software and engineering.
➢ The software is a collection of integrated programs.
➢ Software subsists of carefully-organized instructions and code written by developers on
any of various particular computer languages.
➢ Computer programs and related documentation such as requirements, design models and
user manuals.
➢ Engineering is the application of scientific and practical knowledge to invent, design,
build, maintain, and improve frameworks, processes, etc.
➢ Software Engineering is an engineering branch related to the evolution of software product
using well-defined scientific principles, techniques, and procedures. The result of software
engineering is an effective and reliable software product.
The necessity of software engineering appears because of a higher rate of progress in user
requirements and the environment on which the program is working.
The features that good software engineers should possess are as follows:
Waterfall model :
Some Circumstances where the use of the Waterfall model is most suited are:
o This model is simple to implement also the number of resources that are required for it is
minimal.
o The requirements are simple and explicitly declared; they remain unchanged during the
entire project development.
o The start and end points for each phase is fixed, which makes it easy to cover progress.
o The release date for the complete product, as well as its final cost, can be determined before
development.
o It gives easy to control and clarity for the customer due to a strict reporting system.
o In this model, the risk factor is higher, so this model is not suitable for more significant and
complex projects.
o This model cannot accept the changes in requirements during development.
o It becomes tough to go back to the phase. For example, if the application has now shifted
to the coding phase, and there is a change in requirement, It becomes tough to go back and
change it.
o Since the testing done at a later stage, it does not allow identifying the challenges and risks
in the earlier phase, so the risk reduction strategy is difficult to prepare.
Prototype Model :
➢ The prototype model requires that before carrying out the development of actual software,
a working prototype of the system should be built.
➢ A prototype is a toy implementation of the system.
➢ A prototype usually turns out to be a very crude version of the actual system, possible
exhibiting limited functional capabilities, low reliability, and inefficient performance as
compared to actual software.
➢ In many instances, the client only has a general view of what is expected from the software
product.
➢ In such a scenario where there is an absence of detailed information regarding the input to
the system, the processing needs, and the output requirement, the prototyping model may
be employed.
Steps of Prototype Model :
Agile Process :
1. Frequent Delivery
2. Face-to-Face Communication with clients.
3. Efficient design and fulfils the business requirement.
4. Anytime changes are acceptable.
5. It reduces total development time.
1. Due to the shortage of formal documents, it creates confusion and crucial decisions taken
throughout various phases can be misinterpreted at any time by different team members.
2. Due to the lack of proper documentation, once the project completes and the developers
allotted to another project, maintenance of the finished project can become a difficulty.
Spiral Model :
The spiral model is an SDLC model that combines elements of an iterative software development
model with a waterfall model. It is advisable to use this model for expensive, large and complex
projects.
In its diagrammatic representation, we have a coil having many cycles or loops. The number of
cycles varies for each project and is usually specified by the project manager. Each spiral cycle
is a stage in the software development process.
The Spiral Model allows the product to be rolled out and refined in each phase of the spiral,
with the ability to build prototypes in each stage. A prototype is created at the beginning of each
phase as a risk management technique.
The most important feature of the model is that once the project starts, it has the ability to
manage unknown risks.
Spiral Model Phases :
It has four stages or phases: The planning of objectives, risk analysis, engineering or
development, and finally review. A project passes through all these stages repeatedly and the
phases are known as a Spiral in the model.
2. Risk Analysis and resolving – In this quadrant, all the proposed solutions are
analyzed and any potential risk is identified, analyzed, and resolved.
3. Develop and test: This phase includes the actual implementation of the different
features. All the implemented features are then verified with thorough testing.
4. Review and planning of the next phase – In this phase, the software is evaluated
by the customer. It also includes risk identification and monitoring like cost
overrun or schedule slippage and after that planning of the next phase is started.
1. The spiral model is perfect for projects that are large and complex in nature as
continuous prototyping and evaluation help in mitigating any risk.
2. Because of its risk handling ability, the model is best suited for projects which are
very critical like software related to the health domain, space exploration, etc.
2. It is not suitable for a simpler and smaller project because of multiple phases.
4. Project deadlines can be missed since the number of phases is unknown in the
beginning and frequent prototyping and risk analysis can make things worse.
Classical Waterfall Model: The Classical Waterfall model can be considered as the basic
model and all other life cycle models are based on this model. It is an ideal model. However,
the Classical Waterfall model cannot be used in practical project development, since this model
does not support any mechanism to correct the errors that are committed during any of the
phases but detected at a later phase. This problem is overcome by the Iterative Waterfall model
through the inclusion of feedback paths.
Iterative Waterfall Model: The Iterative Waterfall model is probably the most used software
development model. This model is simple to use and understand. But this model is suitable only
for well-understood problems and is not suitable for the development of very large projects and
projects that suffer from a large number of risks.
Prototyping Model: The Prototyping model is suitable for projects, which either the customer
requirements or the technical solutions are not well understood. This risks must be identified
before the project starts. This model is especially popular for the development of the user
interface part of the project.
Evolutionary Model: The Evolutionary model is suitable for large projects which can be
decomposed into a set of modules for incremental development and delivery. This model is
widely used in object-oriented development projects. This model is only used if incremental
delivery of the system is acceptable to the customer.
Spiral Model: The Spiral model is considered as a meta-model as it includes all other life cycle
models. Flexibility and risk handling are the main characteristics of this model. The spiral model
is suitable for the development of technically challenging and large software that is prone to
various risks that are difficult to anticipate at the start of the project. But this model is more
complex than the other models.
Agile Model: The Agile model was designed to incorporate change requests quickly. In this
model, requirements are decomposed into small parts that can be incrementally developed. But
the main principle of the Agile model is to deliver an increment to the customer after each Time-
box. The end date of an iteration is fixed, it can’t be extended. This agility is achieved by
removing unnecessary activities that waste time and effort.