Arunkumar Khannur's Software Testing Knowledge Center

3.3. Software Development Life Cycle

Software development can be exceedingly complex and there are often many alternative ways to perform the various activities. These activities basically consist of Software Engineering (SE) activities, Software Management (SM) activities and Project Management activities. In order to carry out software development effectively, we need to carry out project management by defining processes for these SE and SM activities using life cycles supported by standards and models in order to develop software.

In this section, the concepts related to software development life cycles are discussed which include meaning software process, software engineering process, software management process, software development life cycle, standards, models and methodology.

3.3.1. Software Process
Software process is the set of actions, tasks and procedures involved in producing a software system, throughout its life cycle. Software Process comprises of Software Engineering Process, Software Management Process, Process Management and Project Management Process. A "good" software process must be predictable: cost estimates and schedules must be met, and the resulting product should be robust and offer the required functionality.

3.3.2. Software Engineering Process
The total set of software engineering activities, methods, best practices, deliverables, and automated tools that stakeholders use to transform a user's requirements into software.

3.3.3. Software Management Process

The total set of activities, methods, best practices, deliverables, and automated tools that stakeholders use to support software engineering to produce according to plan and to improve the capability to produce better systems. Software Management related tasks help in managing the project as per plan, managing integrity of system and its components, requirements and change management, managing verification and validation related tasks, managing documentation, change management, statistical process control and so on.

3.3.4. Software Development Life Cycle (SDLC)
Software Development Life Cycle is the process of developing software through successive phases consisting of software engineering activities in an orderly manner that are well supported by standards, models and methodology so as to transform a user's requirements into software. It is a complicated process as it requires careful planning and execution to meet the goals. In brief, SDLC is a set of activities mentioned in software engineering process along with standards, models and methodology to implement.

3.3.5. Standards
Standards are shared across industry, which greatly facilitates in bringing uniformity across implementation of practices by providing a standard description and definitions of the systems engineering related practice. Standards tell “what” to do with respect to the processes for engineering systems based on the life cycle perspective. Standards facilitate
  • To establish uniform requirements for development and documentation
  • To define a common framework for systems life cycle processes
  • To clarify the roles and responsibilities participants
  • By clarifying the types and contents of documentation
  • To identify the tasks, phases, baselines, reviews, and documents needed
  • Application of best practices of the industry, and
  • Avoidance of the pitfalls and problems of the past

There are several main systems engineering standards to choose from. However very popular process framework standards include: ISO/IEC 15288 for Systems Life Cycle; ISO/IEC 12207, IEEE/EIA 12207.0, 12207.1, 12207.2 for Software Life Cycle, which contain processes, activities, and tasks that are to be applied during the acquisition of a system that contains software, a stand-alone software product, and software services.; and ISO/IEC 15504 for Process Assessment.

3.3.6. Models
Models, like Capability Maturity Model Integration (CMMI), give specific guidelines on best practices for how to do the “what” defined in the standards better than has historically been done. They give proven best practices that will improve the quality, cost, and schedule of a project. The CMMI also provides an assessment method to determine how well the processes in the standards are defined and implemented. Implementation (the actual “how to”) is up to the professional judgment of the project manager.

3.3.7. Methodology
Methodology is the physical implementation of the logical life cycle which provides step-by-step activities for each phase in SDLC, with well defined individual /group roles in each activity, specifying deliverables and applicable quality standards for each activity, and tools and techniques to be used for each activity. In brief, methodology answers “How to” and as such is focused on physical implementation of that logical life cycle.

Methodology ensures systematic approach that is consistent, reproducible approach to all projects. It reduces the risk associated with shortcuts and mistakes. It is helpful in producing complete and consistent documentation from one project to the next and also, to incorporate the use of several development tools and techniques.
Khannur's Book
Arunkumar Khannur, Software Testing - Techniques and Applications, Published by Pearson Publications, 2011 (ISBN:978-81-317-5836-6; Pages:341 + xxii)
Follow Khannur
Khannur's Company
ISQT Process & Consulting Services Pvt. Ltd., Bangalore, INDIA
Khannur's Software Testing Forum
 Contact Khannur
ISQT Process & Consulting Services Pvt. Ltd.
#732, 1st Floor, 12th Main,
3rd Block, Rajajinagar,
Bangalore - 560010, INDIA
Phone: +91 80 23012511
Skype: arun.isqt