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 software engineering
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 includes 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]
More about SDLC:
Software development process,
Lecture,
mdsd-pdf
Dev Ops (more,
Project Health Tools) 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, read
DevOps automation best practices
Micro Services
(More about) - also known as
the microservice architecture - is an architectural style that structures an application as a collection of loosely coupled services, which implement business capabilities.
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.
Picture best describes the misunderstanding and knowledge unsufficiency between actors during the software project development life-cycle.
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,
RA analysing and Specification writing,
Business RA,
RA pdf,
RA book,
System RA book,
book - 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 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,
FRAMEWORKS for Testing,
book1,
book2,
Testing book
- 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
- 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,
Abstract
Maintenance plan,
Maintenance tips,
Online Book
- Deployment - Software deployment is all of the activities that make a software system available for use.
See also:
Release Engineering,
Strategies,
Options,
Google Code,
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,
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,
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:
Extreme programming,
XP rules,
What is XP?,
XP roadmap,
XP book,
Java XP,
XP and Agile dev.
- 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,
apply Scrum with RTC,
Scrum pdf,
Scrum book
- DevOps - 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.
- 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,
Google Code,
SCM Book,
SCM Security,
SCM,
Why SCM?,
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:
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,
Architecture,
Writing QRs,
Software Quality ,
SQA Test ,
SQ Topics,
A book
- Software Project Management - Software project management encompasses the knowledge, techniques, and tools necessary to manage the development of software products.
See also:
PM Software,
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
- 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,
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
- 1. Software Development Process
- 2. SDLC
- 3. SDLC models
- 4. Difference between the two
- What is a System
- Software Development Methodologies
|