Definition of Software Engineering
Software Development Life Cycle (SDLC)
SDLC stands for Software Development Life Cycle.
It is a systematic process used to develop
software from the initial idea to deployment and maintenance.
Main Phases
of SDLC
It is a step-by-step process used by teams to
plan, build, test, and maintain high-quality software.
Following this structured cycle helps
developers deliver projects on time, stay within budget, and ensure the
software meets user needs.
Planning →
Requirement Analysis → Design → Implementation → Testing → Deploy→ Maintenance
The Standard
Phases of SDLC
The Software
Development Life Cycle typically involves the following core stages:
1 Planning: Define the project's goals, scope, cost, and
overall strategy.
2 Requirements
Analysis: Gather and document exactly what the
software needs to do.
3 Design: Create the technical blueprint, system
architecture, and user interface.
4 Development
(Coding, Implementation): Write the
actual code to build the software.
5 Testing: Check the software for bugs and make sure it
works perfectly.
6 Deployment: Release the software to the public or the
production environment.
7 Maintenance: Provide ongoing support, fix any new bugs,
and release updates.
1 Planning:
In this phase, the organization decides what software
needs to be developed and why.
It includes:
- Identifying
the problem
- Defining
project goals
- Estimating
cost and time
- Identifying
required resources
Example: A
college decides to develop an online student attendance system.
2Requirements Analysis:
Developers collect and understand what the users
expect from the software.
Requirements
may include:
- Functional requirements – what the
system should do
- Non-functional requirements –
performance, security, reliability, etc.
Example: The
attendance system should allow teachers to mark attendance and students to view
their attendance.
3 Design:
In this phase, the requirements are converted into a technical
design.
Developers decide:
- Database
structure
- System
architecture
- User
interface
- Modules
- Technologies
to be used
Example:
Designing tables for students, teachers, subjects, and attendance records.
4 Development (Coding, Implementation):
The
actual software is developed by writing program code.
Different modules are coded
according to the design.
Example: Developers write Python, Java,
PHP, or other code to create the attendance system.
5 Testing:
The developed software is tested to identify and correct errors,
bugs, and defects.
Common
testing types include:
- Unit testing
(such
as individual functions, methods, or classes)
- Integration
testing (individual
units or modules are combined and tested as a group)
- System
testing (in which the complete
and integrated application is tested as a whole to ensure it meets
the requirements)
- Acceptance
testing (the
final phase of software evaluation where real users or stakeholders check
if a system satisfies business requirements and is ready for production.)
Example:
Checking whether attendance is correctly saved in the database and displayed to
students.
6 Deployment:
After
successful testing, the software is installed or released for actual users.
Example: The college uploads the
attendance system to its server and teachers and students start using it.
7 Maintenance:
After deployment, the software needs continuous maintenance
and improvement.
This may include:
- Fixing newly discovered bugs (Incorrect
Input Validation, Off-by-One Array Loop)
- Adding new
features (admin change a name or picture, Smartphone camera)
- Improving
security (Use multi-factor
authentication (MFA): Require users to provide
two or more verification factors to gain access (Use multi-factor authentication
(MFA): Require users to provide two or more verification
factors to gain access, Encrypt
data: Make sensitive files unreadable both at rest and in
transit using strong cryptographic methods.)
- Updating
the software (Operating System Patches:
Your phone or computer getting a monthly security patch (like a minor
Windows or Android security fix, App Bug Fixes: Social
media apps like Instagram or Spotify downloading a patch to stop sudden
crashes.)
Example:
Later, the college adds an SMS or email notification feature to the attendance
system.
Common
SDLC Methodologies
The Software Development Life Cycle
(SDLC) is a structured process used by teams to plan, design, build, test, and
deploy software.
SDLC methodologies are different
approaches used by software development teams to plan, develop, test, and
maintain software. Each methodology defines how the different phases of SDLC
are organized and carried out.
The most common SDLC methodologies are:
1.
Waterfall Model
2.
V-Model
3.
Prototype Model
4.
Iterative Model
5.
Incremental Model
6.
Spiral Model
7.
Agile Model
8.
RAD Model
Waterfall: A traditional, linear approach where each
phase must be fully completed before the next one begins. This methodology was
introduced first by Winston W. Royce in
1970 and has been adopted by the software industry over the period of time.
Phases
Requirements
→ Design → Implementation → Testing → Deployment → Maintenance
Each phase is generally completed before
the next phase begins.
Advantages
Simple and easy to understand.
Easy to manage.
Clear documentation.
Suitable when requirements are stable.
Disadvantages
Difficult to accommodate changing
requirements.
Testing occurs relatively late.
Errors discovered late can be expensive
to fix.
Example
A classic real-world example of the Waterfall Model is building an
Online Food Delivery System. Building a
house or a commercial building
Developing software for a government
project where requirements are clearly defined before development begins.
2.
V-Model
The V-Model, or Verification and
Validation Model, is an extension of the Waterfall approach.
In this model, each development phase
has a corresponding testing phase.
The modern V-model (Verification and
Validation model) for systems engineering was developed in 1991 by Kevin Forsberg and Harold Mooz, while earlier conceptual
roots trace back to Barry Boehm in 1979 and refined variants used by NASA (NASA
is the National Aeronautics and Space Administration)
Requirements Acceptance Testing
↓ ↑
System
Design System Testing
↓ ↑
Architecture Integration Testing
↓ ↑
Module
Design Unit Testing
↓ ↑
Coding
Advantages
Testing is planned early.
Clearly defined development and testing
activities.
Suitable for projects requiring high
reliability.
Disadvantages
Changes are difficult to accommodate.
Requires clearly defined requirements.
Can be expensive for changing projects.
Example
A real-life example of the V-Model in
software development is secure online banking application for
money transfers. Another
industry like automotive or healthcare.
3.
Prototype Model
In the Prototype Model, a preliminary
version of the software, called a prototype, is created to understand user
requirements.
Process
Requirements
→ Prototype → User Feedback → Refinement → Final System
The prototype helps users and developers
understand what the final system should look like.
As an industry-wide engineering response
to the limitations of the rigid Waterfall model, with early formal frameworks
proposed by researchers like Bally
and others in 1977.
Advantages
Helps clarify unclear requirements.
Users can provide feedback early.
Reduces misunderstanding between users
and developers.
Disadvantages
Can increase development time.
Users may think the prototype is the
final product.
Poorly managed prototypes can lead to
design problems.
Example
Before developing a complete college
management system, developers create a simple prototype showing the login,
student registration, and attendance screens.
4. Iterative
Model
In the Iterative Model, software is developed through repeated
cycles called iterations.
Each iteration
produces an improved version of the software.
Plan → Design →
Develop → Test
↑ ↓
└──── Improve ← Feedback
The Iterative Enhancement technique and
foundational concepts of iterative development in software engineering were
introduced and published by Victor R.
Basili and Joe E. Turner in 1975, while broader evolutionary and cyclic
development frameworks like the Spiral model were later formalized by Barry Boehm in 1988.
Example
Banking App
Baking a Cake (Refining a Recipe)
Mobile Apps (like WhatsApp)
Advantages
Allows continuous improvement.
Feedback can be incorporated into later iterations.
Problems can be identified earlier.
Disadvantages
Requires good planning.
Repeated changes may increase cost.
The overall system architecture must be carefully managed.
5. Incremental
Model
In the Incremental Model, the software is divided into smaller
parts called increments. Each increment adds new functionality to the system.
The
Incremental Model in software engineering was proposed by Harlan
Mills in 1980.
Example
For an online college
system:
Increment 1: Student registration
Increment 2: Attendance
Increment 3: Examination
Increment 4: Results
Increment 5: Fee management
Each increment is developed and tested before the next one is
added.
Advantages
Working software is available early.
Easier to test smaller parts.
Changes can be accommodated more easily than in Waterfall.
Disadvantages
Requires proper planning.
Integration between increments can be challenging.
Not ideal when the system cannot be divided into independent
functions.
6. Spiral Model
The Spiral Model combines iterative development with risk
analysis.
Each cycle of the
spiral generally involves:
Planning
Risk Analysis
Development and Testing
Evaluation and Planning for the Next Cycle
The
spiral model was proposed by Barry Boehm in 1986
Advantages
Strong focus on risk management.
Suitable for large and complex projects.
Customer feedback can be incorporated.
Disadvantages
More expensive.
Requires experienced professionals.
Complex to manage.
Example
Large banking, aerospace, or defense software projects where
identifying and controlling risks is extremely important.
7 Agile: A flexible approach where software is
developed in small, continuous cycles, allowing for quick feedback and changes.
Agile is a flexible
project management and product development approach that breaks work into
small, repeating cycles to help teams adapt quickly to change. February 2001
when 17 software developers met at a ski resort in Snowbird, Utah. Known as the Agile Alliance,
prominent signatories included Kent Beck, Ward Cunningham, Martin Fowler, Ken
Schwaber, and Jeff Sutherland.
The
team develops a small set of features, tests them, obtains feedback, and then
works on the next set.
Planning
↓
Development
↓
Testing
↓
Customer Feedback ↓ Improvement ↺
Advantages
Highly flexible.
Quickly responds to changing
requirements.
Frequent customer feedback.
Working software is delivered regularly.
Disadvantages
Requires active customer/team
participation.
Documentation may receive less emphasis
if poorly managed.
Scope can change frequently.
Example
Developing a mobile shopping application
where customers' requirements and features change frequently.
Common Frameworks
(Example)
Teams use
different methods to put Agile into practice:
Scrum: Divides work into short, fixed time
periods called sprints, usually lasting two weeks.
Kanban: Uses visual boards to track tasks and
limit how much work happens at the same time
Spotify
Microsoft
Amazon
8.
RAD Model
RAD stands for Rapid Application
Development.
It focuses on developing software
quickly through prototyping, reusable components, and continuous user
involvement.
The Rapid Application Development (RAD)
model was formally developed by James
Martin in the early 1990s (with foundational concepts emerging at IBM
during the 1980s).
Advantages
Faster development.
Frequent user feedback.
Useful for applications with tight
deadlines.
Disadvantages
Requires skilled developers.
Not suitable for very large or highly
complex systems.
Requires continuous user involvement.
Example
Building an internal employee travel
request and approval app using a low-code platform.
E-Commerce Checkout Redesign.
Hospital Patient Check-In Kiosk.
No comments:
Post a Comment