Systems development life cycle

Last updated

Model of the software development life cycle, highlighting the maintenance phase SDLC-Maintenance-Highlighted.png
Model of the software development life cycle, highlighting the maintenance phase

In systems engineering, information systems and software engineering, the systems development life cycle (SDLC), also referred to as the application development life cycle, is a process for planning, creating, testing, and deploying an information system. [1] The SDLC concept applies to a range of hardware and software configurations, as a system can be composed of hardware only, software only, or a combination of both. [2] There are usually six stages in this cycle: requirement analysis, design, development and testing, implementation, documentation, and evaluation.

Contents

Overview

A systems development life cycle is composed of distinct work phases that are used by systems engineers and systems developers to deliver information systems. Like anything that is manufactured on an assembly line, an SDLC aims to produce high-quality systems that meet or exceed expectations, based on requirements, by delivering systems within scheduled time frames and cost estimates. [3] Computer systems are complex and often link components with varying origins. Various SDLC methodologies have been created, such as waterfall, spiral, agile, rapid prototyping, incremental, and synchronize and stabilize. [4]

SDLC methodologies fit within a flexibility spectrum ranging from agile to iterative to sequential. Agile methodologies, such as XP and Scrum, focus on lightweight processes that allow for rapid changes. [5] Iterative methodologies, such as Rational Unified Process and dynamic systems development method, focus on stabilizing project scope and iteratively expanding or improving products. Sequential or big-design-up-front (BDUF) models, such as waterfall, focus on complete and correct planning to guide larger projects and limit risks to successful and predictable results. [ citation needed ] Anamorphic development is guided by project scope and adaptive iterations.

In project management a project can include both a project life cycle (PLC) and an SDLC, during which somewhat different activities occur. According to Taylor (2004), "the project life cycle encompasses all the activities of the project, while the systems development life cycle focuses on realizing the product requirements". [6]

SDLC is not a methodology per se, but rather a description of the phases that a methodology should address. The list of phases is not definitive, but typically includes planning, analysis, design, build, test, implement, and maintenance/support. In the Scrum framework, [7] for example, one could say a single user story goes through all the phases of the SDLC within a two-week sprint. By contrast the waterfall methodology, where every business requirement[ citation needed ] is translated into feature/functional descriptions which are then all implemented typically over a period of months or longer.[ citation needed ]

History

According to Elliott (2004), SDLC "originated in the 1960s, to develop large scale functional business systems in an age of large scale business conglomerates. Information systems activities revolved around heavy data processing and number crunching routines". [8]

The structured systems analysis and design method (SSADM) was produced for the UK government Office of Government Commerce in the 1980s. Ever since, according to Elliott (2004), "the traditional life cycle approaches to systems development have been increasingly replaced with alternative approaches and frameworks, which attempted to overcome some of the inherent deficiencies of the traditional SDLC". [8]

Models

A ten-phase version of the systems development life cycle Systems Development Life Cycle.gif
A ten-phase version of the systems development life cycle

SDLC provides a set of phases/steps/activities for system designers and developers to follow. Each phase builds on the results of the previous one. [9] [10] [11] [12] Not every project requires that the phases be sequential. For smaller, simpler projects, phases may be combined/overlap. [9]

Waterfall

The oldest and best known is the waterfall model, which uses a linear sequence of steps. [10] Waterfall has different varieties. One variety is as follows: [9] [10] [13] [14]

Preliminary analysis

Conduct with a preliminary analysis, consider alternative solutions, estimate costs and benefits, and submit a preliminary plan with recommendations.

  • Conduct preliminary analysis: Identify the organization's objectives and define the nature and scope of the project. Ensure that the project fits with the objectives.
  • Consider alternative solutions: Alternatives may come from interviewing employees, clients, suppliers, and consultants, as well as competitive analysis.
  • Cost-benefit analysis: Analyze the costs and benefits of the project.

Systems analysis, requirements definition

Decompose project goals[ clarification needed ] into defined functions and operations. This involves gathering and interpreting facts, diagnosing problems, and recommending changes. Analyze end-user information needs and resolve inconsistencies and incompleteness: [15]

  • Collect facts: Obtain end-user requirements by document review, client interviews, observation, and questionnaires.
  • Scrutinize existing system(s): Identify pros and cons.
  • Analyze the proposed system: Find solutions to issues and prepare specifications, incorporating appropriate user proposals.

Systems design

At this step, desired features and operations are detailed, including screen layouts, business rules, process diagrams, pseudocode, and other deliverables.

Development

Write the code.

Integration and testing

Assemble the modules in a testing environment. Check for errors, bugs, and interoperability.

Acceptance, installation, deployment

Put the system into production. This may involve training users, deploying hardware, and loading information from the prior system.

Maintenance

Monitor the system to assess its ongoing fitness. Make modest changes and fixes as needed. To maintain the quality of the system.

Evaluation

The system and the process are reviewed. Relevant questions include whether the newly implemented system meets requirements and achieves project goals, whether the system is usable, reliable/available, properly scaled and fault-tolerant. Process checks include review of timelines and expenses, as well as user acceptance.

Disposal

At end of life, plans are developed for discontinuing the system and transitioning to its replacement. Related information and infrastructure must be repurposed, archived, discarded, or destroyed, while appropriately protecting security. [16]

In the following diagram, these stages are divided into ten steps, from definition to creation and modification of IT work products:

Systems analysis and design

Systems analysis and design (SAD) can be considered a meta-development activity, which serves to set the stage and bound the problem. SAD can help balance competing high-level requirements. SAD interacts with distributed enterprise architecture, enterprise I.T. Architecture, and business architecture, and relies heavily on concepts such as partitioning, interfaces, personae and roles, and deployment/operational modeling to arrive at a high-level system description. This high-level description is then broken down into the components and modules which can be analyzed, designed, and constructed separately and integrated to accomplish the business goal. SDLC and SAD are cornerstones of full life cycle product and system planning.

Object-oriented analysis and design

Object-oriented analysis and design (OOAD) is the process of analyzing a problem domain to develop a conceptual model that can then be used to guide development. During the analysis phase, a programmer develops written requirements and a formal vision document via interviews with stakeholders.

The conceptual model that results from OOAD typically consists of use cases, and class and interaction diagrams. It may also include a user interface mock-up.

An output artifact does not need to be completely defined to serve as input of object-oriented design; analysis and design may occur in parallel. In practice the results of one activity can feed the other in an iterative process.

Some typical input artifacts for OOAD:

System lifecycle

The system lifecycle is a view of a system or proposed system that addresses all phases of its existence to include system conception, design and development, production and/or construction, distribution, operation, maintenance and support, retirement, phase-out, and disposal. [17]

Conceptual design

The conceptual design stage is the stage where an identified need is examined, requirements for potential solutions are defined, potential solutions are evaluated, and a system specification is developed. The system specification represents the technical requirements that will provide overall guidance for system design. Because this document determines all future development, the stage cannot be completed until a conceptual design review has determined that the system specification properly addresses the motivating need.

Key steps within the conceptual design stage include:

  • Need identification
  • Feasibility analysis
  • System requirements analysis
  • System specification
  • Conceptual design review

Preliminary system design

During this stage of the system lifecycle, subsystems that perform the desired system functions are designed and specified in compliance with the system specification. Interfaces between subsystems are defined, as well as overall test and evaluation requirements. [18] At the completion of this stage, a development specification is produced that is sufficient to perform detailed design and development.

Key steps within the preliminary design stage include:

  • Functional analysis
  • Requirements allocation
  • Detailed trade-off studies
  • Synthesis of system options
  • Preliminary design of engineering models
  • Development specification
  • Preliminary design review

For example, as the system analyst of Viti Bank, you have been tasked to examine the current information system. Viti Bank is a fast-growing bank in Fiji. Customers in remote rural areas are finding difficulty to access the bank services. It takes them days or even weeks to travel to a location to access the bank services. With the vision of meeting the customers' needs, the bank has requested your services to examine the current system and to come up with solutions or recommendations of how the current system can be provided to meet its needs.

Detail design and development

This stage includes the development of detailed designs that brings initial design work into a completed form of specifications. This work includes the specification of interfaces between the system and its intended environment, and a comprehensive evaluation of the systems logistical, maintenance and support requirements. The detail design and development is responsible for producing the product, process and material specifications and may result in substantial changes to the development specification.

Key steps within the detail design and development stage include:

  • Detailed design
  • Detailed synthesis
  • Development of engineering and prototype models
  • Revision of development specification
  • Product, process, and material specification
  • Critical design review

Production and construction

During the production and/or construction stage the product is built or assembled in accordance with the requirements specified in the product, process and material specifications, and is deployed and tested within the operational target environment. System assessments are conducted in order to correct deficiencies and adapt the system for continued improvement.

Key steps within the product construction stage include:

  • Production and/or construction of system components
  • Acceptance testing
  • System distribution and operation
  • Operational testing and evaluation
  • System assessment

Utilization and support

Once fully deployed, the system is used for its intended operational role and maintained within its operational environment.

Key steps within the utilization and support stage include:

  • System operation in the user environment
  • Change management
  • System modifications for improvement
  • System assessment

Phase-out and disposal

Effectiveness and efficiency of the system must be continuously evaluated to determine when the product has met its maximum effective lifecycle. [19] Considerations include: Continued existence of operational need, matching between operational requirements and system performance, feasibility of system phase-out versus maintenance, and availability of alternative systems.

Phases

System investigation

During this step, current priorities that would be affected and how they should be handled are considered. A feasibility study determines whether creating a new or improved system is appropriate. This helps to estimate costs, benefits, resource requirements, and specific user needs.

The feasibility study should address operational, financial, technical, human factors, and legal/political concerns.

Analysis

The goal of analysis is to determine where the problem is. This step involves decomposing the system into pieces, analyzing project goals, breaking down what needs to be created, and engaging users to define requirements.

Design

In systems design, functions and operations are described in detail, including screen layouts, business rules, process diagrams, and other documentation. Modular design reduces complexity and allows the outputs to describe the system as a collection of subsystems.

The design stage takes as its input the requirements already defined. For each requirement, a set of design elements is produced.

Design documents typically include functional hierarchy diagrams, screen layouts, business rules, process diagrams, pseudo-code, and a complete data model with a data dictionary. These elements describe the system in sufficient detail that developers and engineers can develop and deliver the system with minimal additional input.

Testing

The code is tested at various levels in software testing. Unit, system, and user acceptance tests are typically performed. Many approaches to testing have been adopted.

The following types of testing may be relevant:

Training and transition

Once a system has been stabilized through testing, SDLC ensures that proper training is prepared and performed before transitioning the system to support staff and end users. Training usually covers operational training for support staff as well as end-user training.

After training, systems engineers and developers transition the system to its production environment.

Operations and maintenance

Maintenance includes changes, fixes, and enhancements.

Evaluation

The final phase of the SDLC is to measure the effectiveness of the system and evaluate potential enhancements.

Life cycle

Management and control

SDLC phases related to management controls SDLC Phases Related to Management Controls.jpg
SDLC phases related to management controls

SDLC phase objectives are described in this section with key deliverables, a description of recommended tasks, and a summary of related control objectives for effective management. It is critical for the project manager to establish and monitor control objectives while executing projects. Control objectives are clear statements of the desired result or purpose and should be defined and monitored throughout a project. Control objectives can be grouped into major categories (domains), and relate to the SDLC phases as shown in the figure. [20]

To manage and control a substantial SDLC initiative, a work breakdown structure (WBS) captures and schedules the work. The WBS and all programmatic material should be kept in the "project description" section of the project notebook.[ clarification needed ] The project manager chooses a WBS format that best describes the project.

The diagram shows that coverage spans numerous phases of the SDLC but the associated MCD[ clarification needed ] shows mappings to SDLC phases. For example, Analysis and Design is primarily performed as part of the Acquisition and Implementation Domain, and System Build and Prototype is primarily performed as part of delivery and support. [20]

Work breakdown structured organization

Work breakdown structure SDLC Work Breakdown Structure.jpg
Work breakdown structure

The upper section of the WBS provides an overview of the project scope and timeline. It should also summarize the major phases and milestones. The middle section is based on the SDLC phases. WBS elements consist of milestones and tasks to be completed rather than activities to be undertaken and have a deadline. Each task has a measurable output (e.g., analysis document). A WBS task may rely on one or more activities (e.g. coding). Parts of the project needing support from contractors should have a statement of work (SOW). The development of a SOW does not occur during a specific phase of SDLC but is developed to include the work from the SDLC process that may be conducted by contractors. [20]

Baselines

Baselines[ clarification needed ] are established after four of the five phases of the SDLC, and are critical to the iterative nature of the model. [21] Baselines become milestones.

Alternative methodologies

Alternative software development methods to systems development life cycle are:

Comparison of Methodology Approaches (Post, & Anderson 2006) [22]
SDLCRADOpen sourceObjectsJADPrototypingEnd User
ControlFormalMISWeakStandardsJointUserUser
Time frameLongShortMediumAnyMediumShortShort

UsersManyFewFewVariesFewOne or twoOne
MIS staffManyFewHundredsSplitFewOne or twoNone
Transaction/DSS TransactionBothBothBothDSSDSSDSS
InterfaceMinimalMinimalWeakWindowsCrucialCrucialCrucial
Documentation and trainingVitalLimitedInternalIn ObjectsLimitedWeakNone
Integrity and securityVitalVitalUnknownIn ObjectsLimitedWeakWeak
ReusabilityLimitedSomeMaybeVitalLimitedWeakNone

Strengths and weaknesses

Fundamentally, SDLC trades flexibility for control by imposing structure. It is more commonly used for large scale projects with many developers.

Strength and Weaknesses of SDLC [22]
StrengthsWeaknesses
ControlIncreased development time
Monitor large projectsIncreased development cost
Detailed stepsSystems must be defined up front
Evaluate costs and completion targetsRigidity
DocumentationHard to estimate costs, project overruns
Well defined user inputUser input is sometimes limited
Ease of maintenanceLittle parallelism
Development and design standardsAutomation of documentation and standards is limited
Tolerates changes in MIS of staffingDoes not tolerate changes in requirements
Projects canned early on the result in little or no value

See also

Related Research Articles

<span class="mw-page-title-main">Systems engineering</span> Interdisciplinary field of engineering

Systems engineering is an interdisciplinary field of engineering and engineering management that focuses on how to design, integrate, and manage complex systems over their life cycles. At its core, systems engineering utilizes systems thinking principles to organize this body of knowledge. The individual outcome of such efforts, an engineered system, can be defined as a combination of components that work in synergy to collectively perform a useful function.

The waterfall model is a breakdown of development activities into linear sequential phases, meaning they are passed down onto each other, where each phase depends on the deliverables of the previous one and corresponds to a specialization of tasks. The approach is typical for certain areas of engineering design. In software development, it tends to be among the less iterative and flexible approaches, as progress flows in largely one direction through the phases of conception, initiation, analysis, design, construction, testing, deployment and maintenance. The waterfall model is the earliest SDLC approach that was used in software development.

<span class="mw-page-title-main">Spiral model</span> Software development process model

The spiral model is a risk-driven software development process model. Based on the unique risk patterns of a given project, the spiral model guides a team to adopt elements of one or more process models, such as incremental, waterfall, or evolutionary prototyping.

A software company is an organisation — owned either by the state or private — established for profit whose primary products are various forms of software, software technology, distribution, and software product development. They make up the software industry.

Rapid application development (RAD), also called rapid application building (RAB), is both a general term for adaptive software development approaches, and the name for James Martin's method of rapid development. In general, RAD approaches to software development put less emphasis on planning and more emphasis on an adaptive process. Prototypes are often used in addition to or sometimes even instead of design specifications.

Software development is the process used to create software. Programming and maintaining the source code is the central step of this process, but it also includes conceiving the project, evaluating its feasibility, analyzing the business requirements, software design, testing, to release. Software engineering, in addition to development, also includes project management, employee management, and other overhead functions. Software development may be sequential, in which each step is complete before the next begins, but iterative development methods where multiple steps can be executed at once and earlier steps can be revisited have also been devised to improve flexibility, efficiency, and scheduling.

A modeling language is any artificial language that can be used to express data, information or knowledge or systems in a structure that is defined by a consistent set of rules. The rules are used for interpretation of the meaning of components in the structure of a programing language.

A requirement is a singular documented physical or functional need that a particular design, product, or process aims to satisfy. It is commonly used in engineering design, systems engineering, software engineering, enterprise engineering, product development, and process optimization. It is a broad concept that could speak to any necessary function, attribute, capability, characteristic, or quality of a system for it to have value and utility to a customer, organization, internal user, or other stakeholder. Requirements can come with different levels of specificity; for example, a requirement specification or requirement "spec" refers to an explicit, highly objective/clear requirement to be satisfied by a material, design, product, or service.

<span class="mw-page-title-main">Product lifecycle</span> Duration of processing of products from inception, to engineering, design & manufacture

In industry, product lifecycle management (PLM) is the process of managing the entire lifecycle of a product from its inception through the engineering, design and manufacture, as well as the service and disposal of manufactured products. PLM integrates people, data, processes, and business systems and provides a product information backbone for companies and their extended enterprises.

Structured systems analysis and design method (SSADM) is a systems approach to the analysis and design of information systems. SSADM was produced for the Central Computer and Telecommunications Agency, a UK government office concerned with the use of technology in government, from 1980 onwards.

In software project management, software testing, and software engineering, verification and validation (V&V) is the process of checking that a software system meets specifications and requirements so that it fulfills its intended purpose. It may also be referred to as software quality control. It is normally the responsibility of software testers as part of the software development lifecycle. In simple terms, software verification is: "Assuming we should build X, does our software achieve its goals without any bugs or gaps?" On the other hand, software validation is: "Was X what we should have built? Does X meet the high-level requirements?"

Requirements engineering (RE) is the process of defining, documenting, and maintaining requirements in the engineering design process. It is a common role in systems engineering and software engineering.

Software prototyping is the activity of creating prototypes of software applications, i.e., incomplete versions of the software program being developed. It is an activity that can occur in software development and is comparable to prototyping as known from other fields, such as mechanical engineering or manufacturing.

<span class="mw-page-title-main">V-model</span> Graphic of a systems development lifecycle

The V-model is a graphical representation of a systems development lifecycle. It is used to produce rigorous development lifecycle models and project management models. The V-model falls into three broad categories, the German V-Modell, a general testing model, and the US government standard.

Object-oriented analysis and design (OOAD) is a technical approach for analyzing and designing an application, system, or business by applying object-oriented programming, as well as using visual modeling throughout the software development process to guide stakeholder communication and product quality.

Application lifecycle management (ALM) is the product lifecycle management of computer programs. It encompasses requirements management, software architecture, computer programming, software testing, software maintenance, change management, continuous integration, project management, and release management.

<span class="mw-page-title-main">V-model (software development)</span> Software development methodology

In software development, the V-model represents a development process that may be considered an extension of the waterfall model and is an example of the more general V-model. Instead of moving down linearly, the process steps are bent upwards after the coding phase, to form the typical V shape. The V-Model demonstrates the relationships between each phase of the development life cycle and its associated phase of testing. The horizontal and vertical axes represent time or project completeness (left-to-right) and level of abstraction, respectively.

<span class="mw-page-title-main">Enterprise life cycle</span> Process of changing an enterprise over time

Enterprise life cycle (ELC) in enterprise architecture is the dynamic, iterative process of changing the enterprise over time by incorporating new business processes, new technology, and new capabilities, as well as maintenance, disposition and disposal of existing elements of the enterprise.

Software requirements for a system are the description of what the system should do, the service or services that it provides and the constraints on its operation. The IEEE Standard Glossary of Software Engineering Terminology defines a requirement as:

  1. A condition or capability needed by a user to solve a problem or achieve an objective
  2. A condition or capability that must be met or possessed by a system or system component to satisfy a contract, standard, specification, or other formally imposed document
  3. A documented representation of a condition or capability as in 1 or 2

In software engineering, a software development process or software development life cycle (SDLC) is a process of planning and managing software development. It typically involves dividing software development work into smaller, parallel, or sequential steps or sub-processes to improve design and/or product management. The methodology may include the pre-definition of specific deliverables and artifacts that are created and completed by a project team to develop or maintain an application.

References

  1. SELECTING A DEVELOPMENT APPROACH. Retrieved 17 July 2014.
  2. Parag C. Pendharkara; James A. Rodgerb; Girish H. Subramanian (November 2008). "An empirical study of the Cobb–Douglas production function properties of software development effort". Information and Software Technology. 50 (12): 1181–1188. doi:10.1016/j.infsof.2007.10.019.
  3. "Systems Development Life Cycle from". FOLDOC. Retrieved 2013-06-14.
  4. "Software Development Life Cycle (SDLC)".
  5. "SDLC Overview: Models & Methodologies" . Retrieved 2021-12-12.
  6. Taylor, James (2004). Managing Information Technology Projects. p. 39.
  7. "What is Scrum?". December 24, 2019.
  8. 1 2 Geoffrey Elliott (2004) Global Business Information Technology. p.87.
  9. 1 2 3 4 US Department of Justice (2003). INFORMATION RESOURCES MANAGEMENT Chapter 1. Introduction.
  10. 1 2 3 Everatt, G.D.; McLeod, R Jr (2007). "Chapter 2: The Software Development Life Cycle". Software Testing: Testing Across the Entire Software Development Life Cycle. John Wiley & Sons. pp. 29–58. ISBN   9780470146347.
  11. Unhelkar, B. (2016). The Art of Agile Practice: A Composite Approach for Projects and Organizations. CRC Press. pp. 56–59. ISBN   9781439851197.
  12. Land, S.K.; Smith, D.B.; Walz, J.W. (2012). Practical Support for Lean Six Sigma Software Process Definition: Using IEEE Software Engineering Standards. John Wiley & Sons. pp. 341–3. ISBN   9780470289952.
  13. Kay, Russell (May 14, 2002). "QuickStudy: System Development Life Cycle". ComputerWorld.
  14. Taylor, G.D. (2008). Introduction to Logistics Engineering. CRC Press. pp. 12.6–12.18. ISBN   9781420088571.
  15. "Chapter 5". Information Systems Control and Audit (PDF). Institute of Chartered Accountants of India. August 2013. p. 5.28.
  16. Radack, S. (n.d.). "The system development life cycle (SDLC)" (PDF). National Institute of Standards and Technology.
  17. Blanchard and Fabrycky (2006). Systems Engineering and Analysis, Fourth Edition. Prentice Hall. p. 19.
  18. Dr. Joahn Gouws (2007). Introduction to Engineering, System Engineering. Melikon Pty Ltd.
  19. Cunningham, James. "HERC Maintenance". Fargo. XXI (North Avenue): 49. Archived from the original on 21 January 2013. Retrieved 13 May 2009.
  20. 1 2 3 4 5 U.S. House of Representatives (1999). Systems Development Life-Cycle Policy. p.13. Archived 2013-10-19 at the Wayback Machine
  21. Blanchard, B. S., & Fabrycky, W. J.(2006) Systems engineering and analysis (4th ed.) New Jersey: Prentice Hall. p.31
  22. 1 2 Post, G., & Anderson, D., (2006). Management information systems: Solving business problems with information technology. (4th ed.). New York: McGraw-Hill Irwin.

Further reading