The document discusses the software development life cycle (SDLC) and system development methodologies. It describes the main phases of the SDLC as planning, analysis, design, development, testing, deployment, and maintenance. It also discusses different SDLC models like waterfall and iterative waterfall. The iterative waterfall model allows revisiting phases to address issues identified later. Finally, it defines a systems development methodology as a formal process for developing software and describes object-oriented analysis and design as an example methodology.
1. 2. Software Development Life Cycle and System Development
Methodologies
Introduction: In the lesson 01, we discussed why we need Software Systems and what the
main characteristics Software System should have. In this lesson we will discuss about the
how we can develop software systems and methodologies we can adhere when we
developing software systems.
Lesson Outcomes:
After completing this lesson you should be able to
• Explain the software development life‐cycle.
• Using suitable examples, explain the waterfall method.
• Identify and describe the main limitations in water fall method.
• Explain the role iterative waterfall method and how it differs from waterfall method.
• Define the object oriented analysis and design methodology.
2.1 Software Development Life Cycle (SDLC)
Systems Development Life Cycle (SDLC) is a software development process, although it is
also a process that independent of software or other information technology
considerations, i.e. SDLC is independent of the technology we are using, such as Java, C,
.Net, C#, client‐server application , web application etc. It is used by a systems analyst to
develop Software System, including requirements gathering, requirements validation,
requirement analysis, system design, implementation, and maintenance.
An SDLC should result in a high quality system that meets customer expectations, within
time and cost estimates, and is cheap to maintain and cost‐effective to enhance. SDLC is a
systematic approach to problem solving and is composed of several phases. The general
phases in SDLC are:
a) Planning
b) Analysis
c) Design
2. d) Development
e) Testing
f) Deployment
g) Maintenance
Let’s analyze each of these phases one by one, in terms of activities carried out in each
phase:
2.1.1 Planning
Before starting the system development process, we need to establish proper plan by
• Defining the system to be developed – System should be clearly understand
and chosen based on the critical functionalities should be provided by the
system. For example, in Inventory Control System, critical functions Material
Request Notes, Receipt Notes, Stock Balance Notes, etc. and non‐ critical
functions are functions update customer types, item types, customer
information, etc.
• The project scope – Based on the high of level of system requirements, project
scope should be clearly estimated. Based on the project scope we can also
estimate the project duration, such as its one year, two years, etc. It is not good
practice to promise to give a project in six months where it is not possible to give
in six months.
• Developing the project plan – Project development plan should contain all the
details of the tasks to be implemented, who will complete them and when they
will complete it.
• Managing and monitoring the project plan – This allows the organization to
stay on track, creating project milestones and feature creeps which allow you to
add to the initial plan
2.1.2 Analyze
The users and the Analyst work together to collect comprehend and logically
formalize requirements by
• Gathering customer requirements
3. System analyst collaborates with users to get the requirements clearly. System
analyst may conduct interviews from selected employees from the
organization representing each knowledge level managerial structure.
• Analyzing the requirements
Identified requirements are prioritized and put in a requirements definition
document.
The following diagram (figure 1) shows the main inputs to analyze phase and the
main output of the analyze phase
Figure 1:‐ Inputs and Outputs of the Analyze Phase.
2.1.3 Design
This is the phase where we started to design our system, based on the customer
requirements:
• Designing the technical architecture
System architecture should be design based on the identified requirements, and
the hardware, software should be chosen that will be best suited to the customer
requirements.
• Designing the systems model
Here we should design all the modules of the system including GUI screen and
databases designing.
• Write the test Cases
Test cases should be written to check the functionalities of the system according
to the system requirements.
4. Following diagram (figure 2) shows the main inputs and outputs of the design
phase:
Figure 2:‐ Inputs and Outputs of the Design Phase
2.1.4 Development
In the development phase, the designed system will now be implemented by
• Building the technical architecture
If technical materials are needed such as Oracle, VB, Eclipse, etc, those will be
purchased if necessary and then will be configured to start the implementation.
• Building the database and programs
Systems will be developed or implemented by the system developers.
2.1.5 Testing
The implemented system will be tested by the quality assurance team according to
the test cases written in the analyze phase.
2.1.6 Deployment
Once the quality assurance team ensures the system is error free, then system will
be deployed at the client side. At this stage, if necessary only, training will be
provided to end‐users to make them familiarize to new system.
5. 2.1.7 Maintenance
Once the system is deployed, in order to keep the system up to date with the
customer requirements, changes will also be implemented when it is necessary.
Activity 2.1
Consider, you are asked to computerized current manual system of a Library. What are the main
activities, you will carry out under each of the phases in SDLC?
• Planning
o Identify the critical functionalities in Library System, such as lending and returning
processes, prepare Project Plan, including the critical tasks, developers attached to
each task with timelines and define the scope of the project
• Analyze
o Identify critical functionalities and document all the identified functionalities, such as
member registration, calculate calculating taxes and other expenses, etc.
• Design
o Design the main functionalities, modules of the system such as, Lending Process,
Return Process, Book Maintenance Process, etc.
• Development ‐ developed identified modules and functionalities.
• Testing ‐ Testing the system using test cases
• Deploy – Deploy the system in client side, and provide training to the library staff.
• Maintenance – Keep monitoring the system process, and do changes when it is necessary.
Question: Why software development life cycle is important for the development
of software?
SDLC can be taken as a framework that guides us through the development of Software
Systems. Since software can be very difficult and complex, we need the SDLC as a
framework to guide the development to make it more systematic and efficient.
We will be able to tell how long it will take to complete the project, to test and deploy.
Not only that, we will have an easier time debugging and finding flaws in the software
program or make enhancement to it.
6. 2.2 Software Development Life Cycle Models
Nowadays, Software Systems are so big and complex that teams of architects,
analysts, programmers, testers and users must work together to create the millions
of lines of code. To manage this number of SDLC models have been created,
waterfall, iterative waterfall, spiral, incremental, etc are some of those.
2.3 Waterfall Model
The waterfall model is a sequential software development model in which
development is seen as flowing steadily downwards (like a waterfall) through the
phases of requirements analysis, design, implementation, testing, integration, and
maintenance. (Source: http://en.wikipedia.org/)
In waterfall model, each phase produce the output required for the next phase in
mutually exclusive (non‐overlapping).
The structure of the waterfall model can be viewed as follows, see figure 3.
Requirement Analysis
Design
Implementation
Testing
Integration
Maintenance
Figure 3:‐ Waterfall Model
To follow the waterfall model, we should proceeds from one phase to the next in
purely sequential manner.
For example, we need to complete requirement analysis phase to move to the design
phase. (In requirement analysis phase, we will identify the all the customer
requirements, and also will be able to prioritize the requirements based on their
criticality).
7. In the design phase we will design our system accordance to the customer
requirements. When the design is fully completed, an implementation of that design
is made by developers.
Towards the later stages of this implementation phase, disparate software
components produced by different teams are integrated. After the implementation
and integration phases are complete, the software product is tested and debugged;
any faults introduced in earlier phases are removed here. Then the software product
is installed, and later maintained to introduce new functionality and remove bugs.
As you see, the waterfall model maintains that one should move to a phase only
when its’ preceding phase is completed and perfected. Phases of development in the
waterfall model are discrete, and there is no jumping back and forth or overlap
between them.
Therefore since there no jumping back and forth options in Waterfall methods,
following limitations are in the waterfall method:
Mutual exclusivity of phases results in poor use of human resources, since
developers must wait for designers, etc.
Unidirectional motion between phases is inadequate since it does not allow
changes to be made to documents/code created in earlier phases.
To overcome these limitations, Iterative waterfall method was introduced.
2.4 Iterative Waterfall Model
Iterative waterfall model is a revised model of the waterfall model, where phases
can be revisited several times to correct mistakes or problems identified in
subsequent phases.
The following diagram (Figure 4) shows the structure of the Iterative waterfall
method
Requirement
Figure 4:‐ Iterative waterfall Model
Design
Implementation
Testing
Integration
Maintenance
8. Activity 2.2
Identify activities that can not be overcome using waterfall method but Iterative waterfall method
• If requirements are not being captured well, then this error will reflect the entire process of
waterfall method, even error is identified at the design phase or any other phases. But if we
use Iterative waterfall method, when the error is identified, we can jump back to the relevant
phase and correct the error and continue.
• Even we identified coding error in testing phase, we can not jump back and correct the error in
waterfall model but in iterative waterfall model.
Note: As you see, system development life cycle (SDLC) models divide the life of an
information system into two stages, i.e. system development (Requirement Analysis, Design,
Implementation, Testing and Integration phases) and system operation and support
(Maintenance phase).
Following figure, (figure 5) illustrates the two life cycle stages of SDLC models
Conversion
Life Cycle Stage Life Cycle Stage
System development Lifetime of a System operation and
System support
Using system development
methodology Using information Technology
Obsolescence
Figure 5:‐ A System Life Cycle
(When system cycle from development to operation and support, a construction
must take place. At some points, obsolescence occurs when system cycle from
operation and support to system development)
Question: What is a systems development methodology?
9. A systems development methodology is a very formal and precise system
development process that defines a set of activities, methods, best practices,
deliverables, and automated tools for system developers and project managers to
use to develop software systems. (Source: Whitten, J.L and et.al, Systems Analysis
and Design Methods, (5th Edition), McGraw‐Hill, pp 78‐79)
As such, we use system development methodologies to cover activities in system
development stages. Object oriented Analysis and Design methodology is an
example for such as system development methodology.
2.5 Object Oriented Analysis and Design methodology (OOAD methodology)
Object Oriented Analysis and Design methodology completely based on object
oriented modeling. In object oriented modeling system is analyzed in terms of
objects and their relationships.
During the system analysis phase, object modeling will be done as a technique for
defining business requirements for a new system. The approach of using object
modeling during system analysis phase is called object oriented analysis. In the
design phase, object oriented techniques will be used to design a new system. The
approach of using object oriented techniques for designing a system is referred to as
object oriented designing. In the implementation phase, object oriented
programming will be used to implement designed system and the implemented
system will be tested by using test cases. In this course, we are mainly focus on
object oriented analysis and designing.
Activity 2.3
How SDLC differs from Systems Development Methodologies?
SDLC represent the entire life cycle of the system software, Systems Development
Methodologies cover the system development stage (analysis, design, implementation, testing,
integration) of the SDLC.
10. Summery:
In this lesson we define what Software Development Life Cycle (SDLC) is, we analyzed the main phases
in SDLC with their activities. Then we discuss about the SDLC models, such as waterfall, and iterative
waterfall model. We evaluate how iterative waterfall model can be used to overcome the issues in
waterfall model.
We divided the SDLC model into main two stages, system development, system operation and support.
We identify the role of system development methodologies in SDLC. Object Oriented Systems Analysis
and Design methodology is an example of such a system development methodology, where systems will
be analyzed and designed in terms of Objects and their relationships.
In the next lesson, we will discuss about Object Oriented Concepts.