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 software development life-cycle 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.

software development life-cycle

Typical phases of software development:

Ongoing Activities in Software Development:


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.

Supporting disciplines

Software engineering can be divided into some below management activities and subdisciplines.

References


  1. 1. Software Development Process
  2. 2. SDLC
  3. 3. SDLC models
  4. 4. Difference between the two
  5. What is a System
  6. Software Development Methodologies