Week 2 Software Engineering
Week 2 Software Engineering
The solution lifecycle is a step-by-step framework of best practices used to shepherd a project from its
beginning to its end. It provides project managers a structured way to create, execute, and finish a
project.
This project management process generally includes four phases: initiating, planning, executing, and
closing. Some may also include a fifth “monitoring and controlling” phase between the executing and
closing stages. By following each step, a project team increases the chance of achieving its goals.
1. Initiating
In the initiation phase, you’ll define the project. You’ll sort out the project goals, scope, and resources of
the project, and what roles are needed on the team. Clarifying what stakeholders expect out of the project,
and what exactly the project is aiming to achieve (and why) will give the project and team clear direction.
This is a crucial phase to the project’s success. Without clarity around what needs to be achieved and why,
the project runs the risk of not accomplishing the end goals and meeting the expectations of stakeholders.
2. Planning
In the planning phase, you’ll determine the steps to actually achieve the project goals—the “how” of
completing a project.
You’ll establish budgets, timelines, and milestones, and source materials and necessary documents. This
step also involves calculating and predicting risk, putting change processes into place, and outlining
communication protocols. If the initiation phase is assembling your troops, the planning phase is deciding
what to do with them.
Executing a project means putting your plan into action and keeping the team on track. Generally this
means tracking and measuring progress, managing quality, mitigating risk, managing the budget, and using
data to inform your decisions.
Specific steps might include:
Using tools like GANTT or burndown charts to track progress on tasks
Responding to risks when they manifest
Recording costs
Keeping team members motivated and on task
Keeping stakeholders informed of progress
Incorporating changes via change requests
4. Close projects
In the closing phase of the project management lifecycle, you’ll conclude project activities, turn the
finished product or service over to its new owners, and assess the things that went well and didn’t go so
well. It’ll also be a time to celebrate your hard work.
Software Processes is a coherent set of activities for specifying, designing, implementing and testing
software systems. A software process model is an abstract representation of a process that presents a
description of a process from some particular perspective. There are many different software processes
but all involve:
Requirements Specification – defining what the system should do;
Design and implementation – defining the organization of the system and implementing the
system;
Validation – checking that it does what the customer wants;
Evolution – changing the system in response to changing customer needs.
Operating Systems
Utility Software
Waterfall
The first published model of the software development process was derived from engineering
process models used in large military systems engineering (Royce 1970). It presents the
software development process as a number of stages, as shown below. Because of the cascade
from one phase to another, this model is known as the waterfall model or software life cycle.
The waterfall model is an example of a plan-driven process.
In principle, the result of each phase in the waterfall model is one or more documents that are
approved (“signed off”). The following phase should not start until the previous phase has
finished. For hardware development, where high manufacturing costs are involved, this makes
sense. However, for software development, these stages overlap and feed information to each
other. During design, problems with requirements are identified; during coding design problems
are found, and so on. The software process, in practice, is never a simple linear model but
involves feedback from one phase to another.
Incremental Model
Incremental development in some form is now the most common approach for the development of
application systems and software products. This approach can be either plan-driven, agile or, more
usually, a mixture of these approaches. In a plan-driven approach, the system increments are identified
in advance; if an agile approach is adopted, the early increments are identified, but the development of
later increments depends on progress and customer priorities. Incremental software development, which
is a fundamental part of agile development methods, is better than a waterfall approach for systems
whose requirements are likely to change during the development process. This is the case for most
business systems and software products. Incremental development reflects the way that we solve
problems. We rarely work out a complete problem solution in advance but move toward a solution in a
series of steps, backtracking when we realize that we have made a mistake. By developing the software
incrementally, it is cheaper and easier to make changes in the software as it is being developed.
V shape Model
The V-model is a type of SDLC model where process executes in a sequential manner in V-shape. It
is also known as Verification and Validation model. It is based on the association of a testing phase
for each corresponding development stage. Development of each step directly associated with the
testing phase. The next phase starts only after completion of the previous phase i.e. for each
development activity, there is a testing activity corresponding to it.
The V-Model is a software development life cycle (SDLC) model that provides a systematic and
visual representation of the software development process. It is based on the idea of a “V” shape, with
the two legs of the “V” representing the progression of the software development process from
requirements gathering and analysis to design, implementation, testing, and maintenance.
Spiral Model
The 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.
It provides a systematic and iterative approach to software development. 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.
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.
Risk Analysis: In the risk analysis phase, the risks associated with the project are identified and
evaluated.
Engineering: In the engineering phase, the software is developed based on the requirements
gathered in the previous iteration.
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.
Planning: The next iteration of the spiral begins with a new planning phase, based on the results
of the evaluation.
The Spiral Model is often used for complex and large software development projects, as it
allows for a more flexible and adaptable approach to software development. It is also well-
suited to projects with significant uncertainty or high levels of risk.
Component-Based Software Engineering (CBSE) is a process that focuses on the design and
development of computer-based systems with the use of reusable software components.
It not only identifies candidate components but also qualifies each component’s interface, adapts
components to remove architectural mismatches, assembles components into a selected architectural
style, and updates components as requirements for the system change.
The process model for component-based software engineering occurs concurrently with component-
based development.
Component-based development:
Component-based development (CBD) is a CBSE activity that occurs in parallel with domain
engineering. Using analysis and architectural design methods, the software team refines an
architectural style that is appropriate for the analysis model created for the application to be built.
Major CBSE processes include;
Component Qualification
Component development
Component integration
Component support
Assignment: Make shot notes on the iterative model, clearly bringing out the
difference between iterative and incremental models.
Engineering is all about selecting the most appropriate method for a set of circumstances, so a more
creative, less formal approach to development may be the right one for some kinds of software. A more
flexible software process that accommodates rapid change is particularly appropriate for the
development of interactive web-based systems and mobile apps, which require a blend of software and
graphical design skills.
Prototyping
JAD
JAD (Joint Application Development) is a software development approach that engages the client and/or
the end-users to design and develop the system. This model was designed and put forward by Dr. Chuck
Morris and Dr. Tony Crawford of IBM, who propose this model in the late 1970s. As compared to other
primitive SDLC models, the Joint Application Development model leads to faster progression of the
system development, which has better client approval.
This model, furthermore, is vast when it comes to agile delivery wherein the software products need to
be developed as well as shipped in short iterations depending on agreements among the industrial as
well as industry stakeholders, which are termed as Minimum Viable Product (MVP).
Phases of the JAD MODEL
1. Define Specific Objectives: The facilitator, in partnership with stakeholders, sets all the
objectives and a list of items, which is then distributed to other developers and participants to
understand and review. This objective contains elements like the scope of this projected system,
its potential outcome, technical specifications required, etc.
2. Session Preparation: The facilitator is solely responsible for this preparation, where all relevant
data is collected and sent to other members before time. For better insight, research is carried
out to know the system requirement better and gather all the necessary information for
development.
3. Session Conduct: Here, the facilitator is accountable for identifying those issues that have to be
working out to make the system error-free. Here the facilitator will serve as a participant but
will not have a say regarding any information.
4. Documentation: After the product is developed, the records and published documents are put
forward into the meeting so that the stakeholders and consumers can approve it through the
meeting.
UP
The Unified Process recognizes the importance of customer communication and streamlined methods
for describing the customer’s view of a system. It emphasizes the important role of software architecture
and “helps the architect focus on the right goals, such as understandability, reliance to future changes,
and reuse”.
Inception
Elaboration
Conception
Transition
Production
The inception phase of the UP encompasses both customer communication and planning activities. By
collaborating with stakeholders, business requirements for the software are identified; a rough
architecture for the system is proposed; and a plan for the iterative, incremental nature of the ensuing
project is developed.
The elaboration phase encompasses the communication and modeling activities of the generic process
model.
Elaboration refines and expands the preliminary use cases that were developed as part of the inception
phase and expands the architectural representation to include five different views of the software the use
case model, the requirements model, the design model, the implementation model, and the deployment
model.
Elaboration creates an “executable architectural baseline” that represents a “first cut” executable system.
The construction phase of the UP is identical to the construction activity defined for the generic software
process. Using the architectural model as input, the construction phase develops or acquires the software
components that will make each use case operational for end users.
To accomplish this, requirements and design models that were started during the elaboration phase are
completed to reflect the final version of the software increment. All necessary and required features and
functions for the software increment (the release) are then implemented in source code.
The transition phase of the UP encompasses the latter stages of the generic construction activity and the
first part of the generic deployment (delivery and feedback) activity.
Software is given to end users for beta testing and user feedback reports both defects and necessary
changes. At the conclusion of the transition phase, the software increment becomes a usable software
release.
The production phase of the UP coincides with the deployment activity of the generic process. During
this phase, the ongoing use of the software is monitored, support for the operating environment
(infrastructure) is provided, and defect reports and requests for changes are submitted and evaluated.
RAD
Rapid Application Development or RAD means an adaptive software development model based on
prototyping and quick feedback with less emphasis on specific planning. In general, the RAD approach
prioritizes development and building a prototype, rather than planning. With rapid application
development, developers can quickly make multiple iterations and updates to the software without starting
from scratch. This helps ensure that the final outcome is more quality-focused and aligns with the end users’
requirements.
RAD was conceived in the 1980s, so it’s definitely not something new. But unlike the waterfall model,
it’s not singular. It’s a continuous evolution of development philosophies according to the requirement at
that particular time. The worldwide market for Rapid Application Development is projected to grow at a
Assignment:
Make short notes on personal and team software processes (psp/tsp) clearly differentiating the 2 more
approaches with regards to method of implementation.