What is Software Development Life Cycle (or
SDLC) ?
A software development process (software-engineering
process), also known as a software development life-cycle (SDLC or
The ABCs of SDLC), is a
structure imposed on the development of a software
product.
Similar terms include software life cycle and software process.
SDLC also referred to as the application development life-cycle, is a term used in systems
engineering, information systems and IT/CS
to describe a process for planning, creating, testing, and deploying an information system.
[1]
There are several models for such
processes, each describing approaches to a variety of tasks or activities that take place
during the process.
Software development is the process
of developing software through successive phases in an orderly way.
This process
not only the actual writing of code but also the preparation of requirements and objectives,
the design of what is to be coded, and confirmation that what is developed has met
objectives.
Especially the first phase in the software development
process may involve many departments, including marketing, engineering, research and
development and general management.
However, the complexity of modern systems and computer products long ago made the need clear
for some kind of orderly development process. [2]
What is DevOps? (Realization technologies) is a
set of practices that automates the processes between software development and IT teams, in
order that they can build, test, and release software faster and more reliably.
DevOps, with its pursuit of continuous application updates, is revolutionizing the way
organizations approach software development.
More about:
DevOps,
Redhat-DevOps,
Azure DevOps,
DevOps Best Practices,
About DevOps,
Wiki,
Project Health Tools
What is DevSecOps? DevSecOps or
Development, Security, and Operations, is a framework that
integrates security into every phase of the software development
lifecycle, rather than leaving it as an afterthought.
CI&CD Build Automation - A CI/CD pipeline
is an
automated software development process that builds, tests, and deploys code changes,
integrating continuous integration (CI) and continuous delivery/deployment (CD) practices to
deliver high-quality software faster and more reliably.
More about:
Pipeline as Code with
Jenkins,
Jenkins,
Understanding GitHub Actions,
CI/CD Pipeline Using GitHub Actions,
The automated enterprise
Process Activities and Steps (Software development
activities)
In general, the development of commercial software is usually a result of
demand in the marketplace, while enterprise software development generally
arises from a need or a problem within the enterprise environment.
Some of the activities in the software development process are sequential in nature,
dividing the process into the following phases.
The misunderstanding and knowledge
unsufficiency between actors during the software project development
life-cycle is described best in below picture.
Typical phases of software development:
Ongoing Activities in Software Development:
- Requirements Analysis - Extracting the requirements of a
desired software product is the first task in creating it. While customers probably
believe they know what the software is to do, it may require skill and experience in
software engineering to recognize incomplete, ambiguous or contradictory requirements.
See also:
Requirement,
Use
Cases,
Requirement Analysis,
Business RA,
Business doc,
RA book,
2,
pdf - Managing Software Requirements ,
System analysis and design
- Specification - Specification is the task of precisely
describing the software to be written, in a mathematically rigorous way. In practice,
most successful specifications are written to understand and fine-tune applications that
were already well-developed, although safety-critical software systems are often
carefully specified prior to application development. Specifications are most important
for external interfaces that must remain stable.
See also:
Software Requirements Specification,
Software requirements,
Writing Software Specification,
SS Integration book,
SS Integration book,
SS Integration book
- Software architecture - The architecture of a software system
refers to an abstract representation of that system. Architecture is concerned with
making sure the software system will meet the requirements of the product, as well as
ensuring that future requirements can be addressed.
See also:
SA and Related Concerns,
SA Design Patterns JAVA,
SA book,
SA Book Springer
- Software Design - Software design is a process of
problem-solving and planning for a software solution.
See also:
Patterns and Software,
Design Pattern,
What is SD?,
Computer-aided SE,
book,
JAVA SD,
Methodology,
Beautiful Architecture,
Enterprise integration patterns,
Head first design patterns,
Advanced Design Concepts
- Testing - Testing of parts of software, especially where code by
two different engineers must work together, falls to the software engineer.
See also:
Acceptance testing,
Version Control,
Abstract,
Testing Geek,
Testing
tools,
book1,
book2,
Testing book,
Medium
Blog ,
FRAMEWORKS for
Testing,
Test Automation,
- Implementation - Reducing a design to code may be the most
obvious part of the software engineering job, but it is not necessarily the largest
portion.
See also:
IoC I. Techniques,
Writing Excellent Code ,
Software I. Techniques,
Delegation,
Replace Delegation with Inheritance,
Head first OOA and OOD,
Inheritance and
Delegation,
Design Patterns,
- Training and
Support - A large percentage of software projects fail because the developers
fail to realize that it doesn't matter how much time and planning a development team
puts into creating software if nobody in an organization ends up using it. People are
occasionally resistant to change and avoid venturing into an unfamiliar area, so as a
part of the deployment phase, its very important to have training classes for the most
enthusiastic software users (build excitement and confidence), shifting the training
towards the neutral users intermixed with the avid supporters, and finally incorporate
the rest of the organization into adopting the new software. Users will have lots of
questions and software problems which leads to the next phase of software.
See also:
Successfull Business Plan,
Anatomy of Business Plan,
Practicess about success
- Maintenance - Maintaining and enhancing software to cope with
newly discovered problems or new requirements can take far more time than the initial
development of the software. Not only may it be necessary to add code that does not fit
the original design but just determining how software works at some point after it is
completed may require significant effort by a software engineer. About 60% of all
software engineering work is maintenance, but this statistic can be misleading. A small
part of that is fixing bugs. Most maintenance is extending systems to do new things,
which in many ways can be considered new work.
See also:
Maintenance
lifecycle,
Online book,
Maintenance plan,
Online Book
- Deployment - Software deployment is all of the activities that
make a software system available for use.
See also:
Release
Engineering,
Deployment Strategies,
Component Deployment ,
Java Deployment,
Updating and Patching
Software development methodology - Process Models
(Software development models)
⇧
A decades-long goal has been to find repeatable, predictable processes or methodologies that
improve productivity and quality. Some try to systematize or formalize the seemingly unruly
task of writing software. Others apply project management techniques to writing software.
Without project management,
software projects can easily be delivered late or over budget. With large numbers
of software projects not meeting their expectations in terms of functionality, cost, or
delivery schedule, effective project management is proving difficult. [3] E.g. see Process
Modeling
The dev-models are the various processes or methodologies that are being selected for the development of
the project depending on the project's aims and goals. There are many development
life cycle models that have been developed in order to achieve different required
objectives. The models specify the various stages of the process and the order in
which they are carried out.
The selection of model has very high impact on the testing that is carried out. It
will define the what, where and when of our planned testing, influence regression testing
and largely determines which test techniques to use. [4]
What is the difference between a software process model and software
engineering methods (methodology)?
A software process model is an abstract representation of a
process methodology. E.g. Waterfall, Agile, Spiral are process models.
They don't specify how to do things, but outline the types of things that are done.
For example, Waterfall identifies the phases that a project goes through -
requirements, design, implementation/unit testing, integration testing, system testing,
deployment - without saying what artifacts to produce or what tools to use
(although the output of code is implied). Agile defines core values in the
form of the Agile manifesto, time-boxed iterations, and continuous response to change, but
it doesn't say how long your iterations should be or how you go about responding to change.
A software development methodology
is a specific way of conducting a software project. These are things like
the Rational Unified Process and Scrum. They define exactly what, when, and/or
how various artifacts are produced. They might not be entirely explicit with all
regards - for example, Scrum doesn't identify what documents to produce or
not to produce, since it's focus is on delivering value to the customer - but they define,
in some way, the actions that members of the project team must deliver. However, in
actuality, the point is often moot. Many times, process methodologies are presented as frameworks
in which you tailor to the needs of your customer and development team, based on
requirements and resources. On top of this, organizations might deal with regulatory or
legal guidelines that dictate certain aspects of what must be produced or how to go about
performing certain tasks (especially related to verification and validation activities).
Also process methodologies are presented as approach.
It frequently becomes more important to discuss each team or organization's process in terms
of plan-driven versus agile or amount of formality and ceremony. Discussing the terminology
difference between a "process model" and a "process methodology" is mostly useful during
academic discussions of process models.
Several models exist to streamline the development process. Each
one has its pros and cons, and it is up to the development team to adopt
the most appropriate one for the project. Sometimes a combination of the models may be more
suitable.
- Waterfall
processes - This is the classic process model, with a linear and sequential
method that has goals for each development phase. The waterfall model simplifies task
scheduling, because there are no iterative or overlapping steps. One drawback of the
waterfall is that it does not allow for much revision.
See also:
Waterfall model in SDLC,
A Book,
Picture1,
Picture2
- Iterative processes - Iterative development prescribes the
construction of initially small but ever larger portions of a software project to help
all those involved to uncover important issues early before problems or faulty
assumptions can lead to disaster. Iterative processes are preferred by commercial
developers because it allows a potential of reaching the design goals of a customer who
does not know how to define what he wants.
See also:
Iterative development in SDLC,
Difference on Agile and Iterative Developments,
Agile and Iterative Development book
- Extreme
Programming - XP, is the best-known agile process. In XP, the phases are
carried out in extremely small (or "continuous") steps compared to the older,
"batch" processes. The (intentionally incomplete) first pass through the steps
might take a day or a week, rather than the months or years of each complete step in the
Waterfall model.
See also:
What is XP?,
XP
roadmap,
XP book,
Java XP,
XP and Agile dev.,
Team Programming - Mobbing
- Agile
software development - Agile processes seem to be more efficient than older
methodologies, using less programmer time to produce more functional, higher quality
software, but have the drawback from a business perspective that they do not provide
long-term planning capability. In essence, they say that they will provide the most bang
for the buck, but won't say exactly when that bang will be.
See also:
Agile Strategies
for Enterprise IT,
Manifesto,
Agyle
system SDLC,
Agile develeopment book,
Agile development,
Agile Java development with Spring, Hibernate and Eclipse
- Scrum
(development) - Scrum is an iterative incremental framework for managing
complex work (such as new product development) commonly used with agile software
development.
See also:
What is
Scrum,
Scrum?,
Scrum with JIRA,
Better Scrum with GitHub,
Scrum master pdf,
Scrum book
- DevOps | DevSecOps - is a set of practices that
automates
the processes between software development and IT teams, in order that they can build,
test, and release software faster and more reliably.
DevSecOps, or Development, Security, and Operations, is a framework that integrates
security
into every phase of the software development lifecycle, rather than leaving it as an
afterthought.
- Other models:
See:
TDD,
TDD book,
BDD,
FDD ,
RAD ,
RAD book,
Spiral Model
,
Cleanroom ,
Cleanroom book,
DSDM ,
RUP ,
V-Model ,
Lean
Supporting disciplines
⇧
Software engineering can be divided into some below management activities
and subdisciplines.
- Software Configuration management - SCM systems are based on a
simple idea: the definitive copies of your files are kept in a central repository.
People check out copies of files from the repository, work on those copies, and then
check them back in when they are finished. SCM systems manage and track revisions by
multiple people against a single master set.
All SCM systems provide the following essential features: * Concurrency Management, *
Versioning, * Synchronization
See also:
SCM Book,
SCM Patterns,
SCM Book,
SCM
Security,
Why SCM Important?,
SCM and Build
Tools
- Software Documentation - An important task is documenting the
internal design of software for the purpose of future maintenance and enhancement.
See also:
SRS, FRS and BRS,
Writing SD,
Documentation pdf,
Book how to write,
Quality fo Technical documentation
- Software quality assurance (SQA) - Software QA involves the
entire software development PROCESS - monitoring and improving the process, making sure
that any agreed-upon standards and procedures are followed, and ensuring that problems
are found and dealt with. It is oriented to 'prevention'.
See also:
Quality requirements,
A Book,
SQ
Mode,
Software
Quality ,
SQA Test ,
A book,
Test Automation
- Software Project Management - Software project management
encompasses the knowledge, techniques, and tools necessary to manage the development of
software products.
What Is Scrum in Project Management? (Product Owner vs Scrum Master) - Scrum is an Agile project
management methodology that allows for rapid development and testing, especially within
a small team.
These teams are led by a Scrum master, whose main job is to remove all obstacles to
getting work done.
See also:
PM Software,
Agile Project Management,
Project Methodology, 2,
Applied Software PM,
SPM in Practice,
Onshoring/ Offshoring/Nearshoring ,
Perception management
- Risk analysis - management activities that attempt to identify
aspects of the development process that have a significant chance of failing. After
risks are identified, managers have several options. One drastic possibility is
cancellation of a project. More likely, risks indicate the need for a change in goals or
a change in how resources are allocated.
See also:
Risk Analysis,
Essential Guide - Risk Matrix
- Planning - management activities that determine the specific
goals and allocate adequate resources for the various phases of development. Resources
include time, work and meeting space, people, and developmental hardware and software.
Risk analysis can be viewed as preparation for planning. For phases with high risk,
managers may allocate more time or people, or they may allocate more skilled people, or
they may devote time to the training of the people that are involved.
See also:
Planning,
Project
planning,
What is Sprint Planning?,
Sprint Planning,
Retrospective,
Business
plan
- Verification - activities directed at ensuring that the
products of the various phases of development meet their objectives. Testing is an
important part of verification that takes place during implementation and integration.
There are two kinds of testing: black-box and white box. Black-box testing is testing
how software meets its client-oriented specifications, without regard to implementation.
White-box testing uses knowledge of implementation to determine a testing plan that all
paths of control have been exercised.
See also:
Verification and validation,
Formal
verification,
Verification2
References
- Software Development Process
- SDLC
- SDLC models
- Software Development Methodologies - BlackDuck
|