CHAPTER 2: SOFTWARE DEVELOPMENT PROCESSES
Definition: The activities that go into producing an “information
systems” solutions to “an organizational” problem or opportunity/
challenge.
● It is part of organizational problem-solving process.
● Problem may be :-
● Nonperformance as expected.
● Realization of areas, it should take
advantage of new opportunities (to perform
more successfully).
Systems Development Life Cycle
It is a systematic study and orderly approach to solving system
problems.
Note: While this approach comes in different formats, it usually
incorporates the following steps:
(i) Planning
- Identify the scope and boundary of the problem, and plan the
development strategy and goals, conduct feasibility study, establish
project plan.
- To properly decide what to make, what not to make, and what to
make first, you can use a feature prioritization framework that takes into
account the value of the software/update, the cost, the time it takes to
build, and other factors.
- Once it is decided that the software project is in line with business
and stakeholder goals, feasible to create, and addresses user needs, then
you can move on to the next phase.
(ii) Systems Analysis
Study and analyze the problems, causes and effects. Then identify and
analyze the requirements that must be fulfilled by any successful
solution
(iii) System Design
- Design how the requirements are to be met by the new
system, define technical specifications.
(iv) System Development
The actual development phase is where the development team members
divide the project into software modules and turn the software
requirement into code that makes the product.
This SDLC phase can take quite a lot of time and specialized
development tools. It’s important to have a set timeline and milestones
so the software developers understand the expectations and you can keep
track of the progress in this stage.
In some cases, the development stage can also merge with the testing
stage where certain tests are run to ensure there are no critical bugs.
Keep in mind, different types of product development software will have
different specialties so you’ll want to pick the one that suits you best.
(v) Testing
Before getting the software product out the door to the production
environment, it’s important to have your quality assurance team perform
validation testing to make sure it is functioning properly and does what
it’s meant to do. The testing process can also help hash out any major
user experience issues and security issues.
In some cases, software testing can be done in a simulated environment.
Other simpler tests can also be automated.
The types of testing to do in this phase:
● Performance testing: Assesses the software's speed and scalability
under different conditions
● Functional testing: Verifies that the software meets the requirements
● Security testing: Identifies potential vulnerabilities and weaknesses
● Unit-testing: Tests individual units or components of the software
● Usability testing: Evaluates the software's user interface and overall
user experience
● Acceptance testing: Also termed end-user testing, beta
testing, application testing, or field testing, this is the
final testing stage to test if the software product delivers
on what it promises
(vi) System Implementation
- Test system and train users, get the system running and begin to
use the system.
viI) Evaluation/maintenance
- Evaluate the implemented solution, refine the design and implement
improvements.
The term "cycle" refers to the natural tendency for systems to cycle
through these activities.
Deliverables - planning
• Identification and prioritization of information system needs
• Problem is identified and articulated
• Business case or system justification
• Project scope
• Project feasibility
• Selection of system development participants
• Project (work) plan
Deliverables - Analysis
• Description of the current system/environment
• Determine and structure functional requirements
• Identification of alternatives
• Initial system models are built
Deliverables - Design
• Technical detailed specifications of all systems elements (programs,
files, network, system software, etc.)
• Interface Design
• Database and file design
Deliverables - Implementation
• Software code
• Documentation
• Installation plan
• Testing plan
• Training procedures
• Initial support capabilities outlined
• Maintenance Plan
• Evaluation Plan
Maintenance
The maintenance phase is the final stage of the SDLC if you’re
following the waterfall structure of the software development process.
However, the industry is moving towards a more agile software
development approach where maintenance is only a stage for further
improvement.
In the maintenance stage, users may find bugs and errors that were
missed in the earlier testing phase. These bugs need to be fixed for better
user experience and retention. In some cases, these can lead to going
back to the first step of the software development life cycle.
The SDLC phases can also restart for any new features you may want to
add in your next release/update.
The Software Process Models
The software process is the set of activities and associated results, which
produce a software product. These activities are mostly carried out by
software engineers.
There is no such thing as a ‘right’ or a ‘wrong’ software process.
Different software processes decompose software activities (feasibility
study, analysis, design, implementation and evolution) in different ways.
The timing of the activities varies as does the results of each activity.
Different organizations use different processes to produce the same type
of product. However, some processes are more suitable than others for
some types of application. If the wrong process is used, this will
probably reduce the quality or the usefulness of the software product to
be developed.
Because there are a variety of different process models used, it is
impossible to produce reliable figures for cost distribution across these
activities. However, we do know that modifying software usually takes
up more than 60% of total software costs. This percentage is increasing
as more and more software is produced and has to be maintained.
Designing software for change is therefore essential.
Software processes (like most business processes) are complex and
involve a very large number of activities. Like products, processes also
have attributes or characteristics.
It is not possible to optimize all process attributes simultaneously. For
example, if a rapid development process is required then it may be
necessary to reduce the process visibility. Making a process visible
means producing documents at regular intervals.
SOFTWAREPROCESSCHARACTERISTICS DESCRIPTION
i) Understandability – To what extent is the process explicitly defined
and how easy is it to understand the process definition?
ii) Visibility – Do the process activities culminate in clear results so
that the progress of the process is externally visible?
iii) Supportability – To what extent can the process activities be
supported by CASE tools?
iv) Acceptability – Is the defined process acceptable to and unable by
the engineers responsible for producing the software products?
v) Reliability - Is the process designed in such a way that process
errors are avoided or trapped before they result in product errors?
vi) Robustness – Can the process continue in spite of unexpected
problems?
vii) Maintainability – Can the process evolve to reflect changing
organization requirements or identified process improvements?
viii) Rapidity – How fast can the process of delivering a system from a
given specification be completed?