Sofytware Engineering BCA
Sofytware Engineering BCA
Software engineering is an engineering discipline that is concerned with all aspects of software
production. Software engineers should adopt a systematic and organised approach to their work and
use appropriate tools and techniques depending on the problem to be solved, the development
constraints and the resources available.
• System engineers are involved in system specification, architectural design, integration and
deployment.
– Waterfall;
– Iterative development;
The Spiral Model is a Software Development Life Cycle (SDLC) model that provides a systematic and
iterative approach to software development. In its diagrammatic representation, 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.It is based on the idea of a
spiral, with each iteration of the spiral representing a complete software development cycle,
from requirements gathering and analysis to design, implementation, testing, and maintenance.
The Spiral Model is a risk-driven model, meaning that the focus is on managing risk through multiple
iterations of the software development process. It consists of the following phases:
1. Planning
The first phase of the Spiral Model is the planning phase, where the scope of the project is determined
and a plan is created for the next iteration of the spiral.
2. Risk Analysis
In the risk analysis phase, the risks associated with the project are identified and evaluated.
3. Engineering
In the engineering phase, the software is developed based on the requirements gathered in the previous
iteration.
4. Evaluation
In the evaluation phase, the software is evaluated to determine if it meets the customer’s requirements
and if it is of high quality.
5. Planning
The next iteration of the spiral begins with a new planning phase, based on the results of the evaluation.
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.
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 are identified and the risks are
resolved using the best possible strategy. At the end of this quadrant, the Prototype is built for the best
possible solution.
Develop the 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.
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.
Why Spiral Model is called Meta Model?
The Spiral model is called a Meta-Model because it subsumes all the other SDLC models. For example, a
single loop spiral actually represents the Iterative Waterfall Model.
The spiral model incorporates the stepwise approach of the Classical Waterfall Model.
The spiral model uses the approach of the 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.
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 a later phase can be incorporated
accurately by using this model.
Customer Satisfaction: Customers 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.
Iterative and Incremental Approach: The Spiral Model provides an iterative and incremental approach to
software development, allowing for flexibility and adaptability in response to changing requirements or
unexpected events.
Emphasis on Risk Management: The Spiral Model places a strong emphasis on risk management, which
helps to minimize the impact of uncertainty and risk on the software development process.
Improved Communication: The Spiral Model provides for regular evaluations and reviews, which can
improve communication between the customer and the development team.
Improved Quality: The Spiral Model allows for multiple iterations of the software development process,
which can result in improved software quality and reliability.
Evolutionary Model:
• Exploratory development
– Objective is to work with customers and to evolve a final system from an initial outline
specification. Should start with well-understood requirements and add new features as
proposed by the customer.
• Throw-away prototyping
– Objective is to understand the system requirements. Should start with poorly
understood requirements to clarify what is really needed.
Evolutionary Development:
• Problems
– Lack of process visibility;
– Systems are often poorly structured;
– Special skills (e.g. in languages for rapid prototyping) may be required.
• Applicability
– For small or medium-size interactive systems;
– For parts of large systems (e.g. the user interface);
– For short-lifetime systems.
Application of Evolutionary Model:
I. It is used in large projects where you can easily find modules for incremental implementation.
Evolutionary model is commonly used when the customer wants to start using the core features
instead of waiting for the full software.
II. Evolutionary model is also used in object oriented software development because the system
can be easily portioned into units in terms of objects.
III. Necessary Conditions for Implementing this Model
IV. Customer needs are clear and been explained in deep to the developer team.
V. There might be small changes required in separate parts but not a major change.
VI. As it requires time, so there must be some time left for the market constraints.
VII. Risk is high and continuous targets to achieve and report to customer repeatedly.
VIII. It is used when working on a technology is new and requires time to learn.
Adaptability to Changing Requirements: Evolutionary models work effectively in projects when the
requirements are ambiguous or change often. They support adjustments and flexibility along the course
of development.
Early and Gradual Distribution: Functional components or prototypes can be delivered early thanks to
incremental development. Faster user satisfaction and feedback may result from this.
User Commentary and Involvement: Evolutionary models place a strong emphasis on ongoing user input
and participation. This guarantees that the software offered closely matches the needs and expectations
of the user.
Improved Handling of Difficult Projects: Big, complex tasks can be effectively managed with the help of
evolutionary models. The development process is made simpler by segmenting the project into smaller,
easier-to-manage portions.
Communication Difficulties: Evolutionary models require constant cooperation and communication. The
strategy may be less effective if there are gaps in communication or if team members are spread out
geographically.
Dependence on an Expert Group: A knowledgeable and experienced group that can quickly adjust to
changes is needed for evolutionary models. Teams lacking experience may find it difficult to handle
these model’s dynamic nature.
Increasing Management Complexity: Complexity can be introduced by organizing and managing several
increments or iterations, particularly in large projects. In order to guarantee integration and
synchronization, good project management is needed.
Greater Initial Expenditure: As evolutionary models necessitate continual testing, user feedback and
prototyping, they may come with a greater starting cost. This may be a problem for projects that have
limited funding.