Lecture 2 Introduction to Software Engineering
Lecture 2 Introduction to Software Engineering
It cans also be defined as a systematic process for building software that ensures the
quality and correctness of the software built.
SDLC process aims to produce high-quality software that meets customer expectations.
This stage gives a clearer picture of the scope of the entire project and the anticipated
issues, opportunities, and directives which triggered the project.
Requirements Gathering stage need teams to get detailed and precise requirements. This
helps companies to finalize the necessary timeline to finish the work of that system.
Phase 3: Design:
In this third phase, the system and software design documents are prepared as per the
requirement specification document. This helps define overall system architecture.
This design phase serves as input for the next phase of the model.
Phase 4: Coding:
Once the system design phase is over, the next phase is coding. In this phase, developers
start build the entire system by writing code using the chosen programming language. In
the coding phase, tasks are divided into units or modules and assigned to the various
developers. It is the longest phase of the Software Development Life Cycle process.
In this phase, Developer needs to follow certain predefined coding guidelines. They also
need to use programming tools like compiler, interpreters, debugger to generate and
implement the code.
Phase 5: Testing:
Once the software is complete, and it is deployed in the testing environment. The testing
team starts testing the functionality of the entire system. This is done to verify that the
entire application works according to the customer requirement.
During this phase, QA and testing team may find some bugs/defects which they
communicate to developers. The development team fixes the bug and send back to QA for
a re-test. This process continues until the software is bug-free, stable, and working
according to the business needs of that system.
Phase 6: Installation/Deployment:
Once the software testing phase is over and no bugs or errors left in the system then the
final deployment process starts. Based on the feedback given by the project manager, the
final software is released and checked for deployment issues if any.
Phase 7: Maintenance:
Once the system is deployed, and customers start using the developed system, following 3
activities occur
Bug fixing - bugs are reported because of some scenarios which are not tested at
all
Upgrade - Upgrading the application to the newer versions of the Software
Enhancement - Adding some new features into the existing software
1. Waterfall model
This model was the very first model used in SDLC. It is also known as the linear
sequential model.
In this model, the outcome of one phase is the input for the next phase. Development of
the next phase starts only when the previous phase is complete, there is no overlapping of
phases.
Figure 1: Waterfall Model
A slight modification of the Waterfall model or cascade life cycle model exist, which
offers the possibility of going back and reviewing previous stages. This was added on the
basis that inconsistences in one step only calls into question the previous step.
ADVANTAGES DISADVANTAGES
Simple to use and understand The software is ready only after the last stage is over
Management simplicity thanks to its rigidity: every High risks and uncertainty
phase has a defined result and process review
Development stages go one by one Not the best choice for complex and object-oriented
projects
Perfect for the small or mid-sized projects where Inappropriate for the long-term projects
requirements are clear and not equivocal
Easy to determine the key points in the The progress of the stage is hard to measure while it is
development cycle still in the development
Easy to classify and prioritize tasks Integration is done at the very end, which does not give
the option of identifying the problem in advance
2. Iterative and Incremental model
In this model, the 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 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.
Figure 4: V- Model
4.1.1.Identification
This phase starts with gathering the business requirements in the baseline spiral. In the
subsequent spirals as the product matures, identification of system requirements, and unit
requirements are all done in this phase.
The understanding of system requirements is done by continuous communication
between the customer and the system analyst. At the end of each spiral, a product is
deployed.
4.1.2.Design
The Design phase starts with the conceptual design in the baseline spiral and involves
architectural design, logical design of modules, physical product design and the final
design in the subsequent spirals.
4.1.3.Construct or Build
The Construct phase refers to production of the actual software product at every spiral.
In the baseline spiral, when the product is just thought of and the design is being
developed a POC (Proof of Concept) is developed in this phase to get customer feedback.
Then in the subsequent spirals with higher clarity on requirements and design details a
working model of the software called build is produced with a version number. These
builds are sent to the customer for feedback.
Based on the customer evaluation, the software development process enters the next
iteration and subsequently follows the linear approach to implement the feedback
suggested by the customer. The process of iterations along the spiral continues
throughout the life of the software.
The Agile model is a combination of iterative and incremental process models with
focus on process adaptability and customer satisfaction by rapid delivery of working
software product. Agile Methods break the product into small incremental builds. These
builds are provided in iterations. Each iteration typically lasts from about one to three
weeks. Every iteration involves cross functional teams working simultaneously on various
areas like −
Planning
Requirements Analysis
Design
Coding
Unit Testing and
Acceptance Testing.
At the end of the iteration, a working product is displayed to the customer
and important stakeholders.
The Agile thought process had started early in the software development
and started becoming popular with time due to its flexibility and adaptability.
The most popular Agile methods include Rational Unified Process (1994),
Scrum (1995), Crystal Clear, Extreme Programming (1996), Adaptive Software
Development, Feature Driven Development, and Dynamic Systems
Development Method (DSDM) (1995). These are now collectively referred to
as Agile Methodologies, after the Agile Manifesto was published in 2001.
5.1. Agile Manifesto principles −