Context
From the initial days of Information Technology (IT) practitioners have always recognized the need to establish and apply a suite of industry recognized best practices. One of these best practices is used to develop and maintain computer applications. This is the cycle of life for software.
A number of lifecycles have been developed to address specific disciplines within IT - examples include Project Management Lifecycle (PMLC), Software Development Lifecycle (SDLC), and Software Testing Lifecycle (STLC). In all cases, these lifecycles are made up of a number of phases, each containing a set of deliverables.
Software Development Lifecycle (SDLC)
The SDLC is used by application development and support teams to develop and maintain computer applications and systems. The SDLC is usually applied across an entire organization and is used from the inception of a project through to a successful implementation of the required solution - in the majority of organizations, the SDLC is executed and monitored using an accompanying Project Management Lifecycle (PMLC). Though a multitude of SDLC's exist, the majority of them rely a phased approach, pre-defined deliverables, and standard naming conventions. The SDLC executes in parallel and concurrently with a software testing lifecycle (STLC). The following provides an overview and explanation of the sequenced phases of a generic software development lifecycle (SDLC).
Systems Analysis
The Systems Analysis phase is the first phase to be performed within an SDLC. It is initiated only and in conjunction with a project being authorized or approved. Its purpose is to ensure the requirements to satisfy a business need have been identified and translated into a notational form or models. Once documented, project teams (business and technical staff) utilize the requirements to ensure a common understanding is achieved and to verify the requirements are attainable. As an iterative process, the Systems Analysis phase ensures the project team members are working together to define and clarify the business need and promoting alternatives that could be utilized to address the business need.
Design
The Design phase ensures the application is designed according to the authorized requirements generated during the Systems Analysis phase. The Design phase focuses on the refinement and further granularity of the data, application, and technology models defined in the Systems Analysis phase and incorporates other factors that must be considered in designing the solution (e.g. data and non-functional requirements, testing strategy). The solution designed is refined to a level (ie functional specification) where individual software, hardware and data components are defined and documented. When this phase is complete, it will be possible to generate comprehensive time and resource estimates for delivering the application and the necessary business functionality.
Build
The Build phase ensures the following:
1. The application is being built in accordance with the business requirements that were prepared and refined during the Systems Analysis phase
2. The technical and functional standards, as well as design elements of the business solution prepared during the Design phase are used as the basis for developing and testing the product.
The aim of the Build phase is to produce readable, testable and maintainable code for the application in a non-production environment.
Test
The Test phase ensures:
1. The technical code created during the Build phase adheres to the business requirements that were developed and evolved since the beginning of the project
2. The technical code adheres to the design standards prepared during the Design phase.
The aim is to ensure the code built in a non-production environment is viable and can be tested by the end users to assess its ability to satisfy the business need.
Release
The Release phase ensures the application has been satisfactorily tested and satisfies the business need. Once satisfying these criteria the application can be placed into the production environment and utilized by the user community in a production environment.
Cameron Watson, President, QAIAssist
Senior manager with over 20 years experience in optimizing business operations in the private and public sectors including financial services, banking, consulting and aerospace industries. Watson has a proven track record in leading large and medium sized organizations through successful implementation of organizational "best practices", process management and improvement, re-engineering, and "quality" initiatives.
QAIassist helps organizations increase and optimise their IT delivery and support efficiency. QAIassist's Integrated Methodology incorporates the disciplines and deliverables required for organizations to consistently deliver quality applications on time and within budget. Visit QAIassist's website-www.qaiassist.com
