Software Development Practices: 12/08/2021 S.G.Nambuwasam
Software Development Practices: 12/08/2021 S.G.Nambuwasam
ICT 0801
1 S.G.Nambuwasam 12/08/2021
What is Software
Software is a general term for the various kinds of
programs used to operate computers and related
devices.
Software can be thought of as the variable part of a
computer and hardware the invariable part.
Software Development
Is the act of working to produce/create software. This
software could be produced for a variety of purposes.
Reasons to Develop Software
to meet specific needs of a specific client/business
to meet a perceived need of some set of potential users
for personal use
Software Development Life Cycle (SDLC)
Market research
Gathering requirements for the proposed business
solution
Analyzing the problem
Devising a plan or design for the software-based
solution
Implementation (coding) of the software
Testing the software
Deployment
Maintenance and bug fixing
Popular Software Development Models
A. System Development Life Cycle (SDLC) Model
B. Prototyping Model
C. Rapid Application Development Model
D. Component Assembly Model
System Development Life Cycle (SDLC)
The systems development life cycle (SDLC) is a
sequential conceptual model used in project
management that describes the stages involved in an
information system development project, from an
initial feasibility study through maintenance of the
completed application.
Activities of SDLC
1.System/Information Engineering and Modeling
2.Software Requirement Analysis
3.System Analysis and Design
4.Code Generation
5.Testing
6.Maintenance
Stages of the Waterfall Model
Requirement Analysis &
Definition
The requirements are gathered from the end-user by
consultation
Requirements are analyzed for their validity and the
possibility of incorporating the requirements in the
system to be development is also studied
A Requirement Specification document is created
which serves the purpose of guideline for the next
phase of the model
Feasibility Study
Aims to objectively and rationally uncover the
strengths and weaknesses of the existing business or
proposed venture, opportunities and threats as
presented by the environment, the resources required
to carry through, and ultimately the prospects for
success
Criteria to judge feasibility
Cost required
Value to be attained
Five Common Feasibility Factors
Technology and System Feasibility
Economic Feasibility
Legal Feasibility
Operational Feasibility
Schedule Feasibility
Other Feasibility Factors
Market and real estate feasibility
Resource feasibility
Cultural feasibility
Financial feasibility
Feasibility Study Report
The feasibility study outputs the feasibility study
report
A report detailing the evaluation criteria, the study
findings, and the recommendations
System & Software Design
The requirement specifications from first phase are
studied in this phase and system design is prepared.
Helps in specifying hardware and system requirements
Helps in defining overall system architecture
Serve as input for the next phase of the model
Implementation & Unit Testing
the work is divided in modules/units and actual coding
is started
The system is first developed in small programs called
units, which are integrated in the next phase.
Each unit is developed and tested for its functionality;
Integration & System Testing:
Units are integrated into a complete system during
Integration phase and tested to check if all
modules/units coordinate between each other and the
system as a whole behaves as per the specifications.
After successfully testing the software, it is delivered
to the customer.
Operations & Maintenance:
virtually never ending phase (Very long)
the issues related to the system are solved after
deployment of the system
Waterfall development in action
1. create the functional specification
2. When we have a full understanding of the business
the functional specification is published and
distributed to as many business experts as possible
for feedback.
3. When the functional specification is final we often
convey a meeting of business experts and work
through the final copy together to iron out any errors
prior to sign-off.
4. produce a non working prototype application along with
a user interface specification
5. When everybody is happy that the screens will deliver
the functionality required the application can be
developed and tested.
6. When the application is complete a beta release is
published and provided to the business for testing.
7. Any bugs found are rapidly repaired
8. When no significant bugs remain and the client is happy
with the application it can go live as release version 1.0.
Advantages of the waterfall method
Design errors are captured before any software is written
saving time during the implementation phase.
Excellent technical documentation is part of the deliverables
and it is easier for new programmers to get up to speed during
the maintenance phase.
The approach is very structured and it is easier to measure
progress by reference to clearly defined milestones.
The total cost of the project can be accurately estimated after
the requirements have been defined (via the functional and
user interface specifications).
Testing is easier as it can be done by reference to the scenarios
defined in the functional specification.
Disadvantages of the waterfall method
Clients will often find it difficult to state their
requirements at the abstract level of a functional
specification and will only fully appreciate what is
needed when the application is delivered. It then
becomes very difficult (and expensive) to re-engineer
the application.
The model does not cater for the possibility of
requirements changing during the development cycle.
A project can often take substantially longer to deliver
than when developed with an iterative methodology
such as the agile development method.
Prototyping Model
The basic idea here is that instead of freezing the
requirements before a design or coding can proceed, a
throwaway prototype is built to understand the
requirements.
prototype is developed based on the currently known
requirements.
By using this prototype, the client can get an "actual
feel" of the system, since the interactions with
prototype can enable the client to better understand the
requirements of the desired system.
Prototyping is an attractive idea for complicated and
large systems for which there is no manual process or
existing system to help determining the requirements.
It is also an effective method to demonstrate the
feasibility of a certain approach.
might be needed for novel systems where it is not clear
that constraints can be met or that algorithms can be
developed to implement the requirements.
Prototyping Model
Stages of the Prototyping Model