Arunkumar Khannur's Software Testing Knowledge Center

3.4. Phases in Software Development

Software development is a problem solving process made up of a defined set of phases with each phase being a collection of logically related group of activities. Each phase takes an input and delivers an output. By carrying out these phases an initial problem specified in the form of requirements specification is being converted into final software using stepwise refinement principle. The phases are planned and defined in such a manner that as we move from one phase to another, we transform problem specification to conceptual/logical solution to physical implementation to operation & maintenance. Following are the commonly used phases in software projects though there can be different terminologies being in use.
  • Requirements Specification
  • Planning
  • Design
  • Construction or Coding
  • Testing
  • Build and ReleaseTesting
  • Operation and Maintenance

3.4.1. Requirements Specification Phase
In this phase Business requirements from users and customers are gathered and formally specified in the form a document. To gather the requirements, techniques like sampling of existing documentation, forms, and databases; research and user/customer site visits; observation of the work environment; questionnaires; interviews; brainstorming; storyboarding are of great help.Following this, ccustomer and user business functions and processes are analyzed, and decision on which aspects will be incorporated into the system are determined. These requirements are analyzed and prioritized. This involves taking broad and abstract mission needs obtained from the customer and user, decomposing them into precise and unambiguous requirements, defining the purpose of a proposed system and outlining its external behavior. Following this, requirements are presented them in understandable way in the form of a document to relevant stake holders. At the end, this phase produces a nice big list of functionality that the system should provide, which describes functions the system should perform, business logic that processes data, what data is stored and used by the system, and how the user interface should work. The overall result is the system as a whole and how it performs, not how it is actually going to do it. The terminology used in requirements specification phase is nearer to user and customer and as such may not make much meaning to development team. Finally, the document is checked for accuracy of the understanding gained. In brief, needs of users and customers are identified, analyzed, documented, reviewed, approved and base lined.

3.4.2 Planning Phase
In this phase, requirements specification is reviewed in order to understand the scope of the project; appropriate life cycle model is selected; size, effort, cost, and schedule are estimated; phase-wise plan of effort and schedule is arrived at; resource requirements are identified; hardware, software, tools are identified; development related risks are identified; project success criteria is arrived at; measurements plan is being made; review plan comprising of milestone and release is made; configuration management plan is also made. At the end of development planning phase, we arrive at development plan document and also, schedule. Using this development plan as the basis, one can define other plans like testing, configuration management plan, review plan, audit plan.

3.4.3. Design Phase
Design phase produces arhitecture documents and design documents. In addition it may produce design criteria and standards. This is the phase where the details on how the system will work is produced. Architecture, including hardware and software, communication, software design (like UML is produced here) are all part of the deliverables of a design phase. Design phase identifies how the application will be constructed (what information will be processed, what programming languages will be used, what will the interface look like) The architecture document is developed primarily during the design phase of the project, when the SRS is stable enough, and then is maintained throughout the project. Here the software architect/designer analyzes the project requirements from different sources such as Software Requirement Specifications, Supplementary Specifications, Use case, Use-case model, etc. Following this, architect/designer identifies- the system’s major components, functions and attributes of each component, dependencies, interface, operational scenarios for the program (include both normal operation and exception handling), operational behavior of the system, etc. Then software architect/designer identifies how the application will be constructed (what information will be processed, what programming languages will be used, what will the interface look like). All these are documented as Software Architecture Document (SAD), which is a comprehensive architectural overview of the system, using a number of different architectural views to describe different aspects of the system.

The design document is developed when the architecture design is stable enough, and is maintained throughout the project. Here, as a first step, designer splits the system into various modules, identifies design methodology, identifies Interface between various modules and identifying common functions. Once this is done, designer identifies algorithms, builds design of each function identified, selects the tools, and specifies the criteria, standards, methods and format for design.

As a result of this, based on the SRS and SAD, designers may develop use-case diagram, class design, database design, interface design, data structure design, etc

3.4.4. Construction or Coding Phase
In construction or coding phase, developers perform coding using design document. Appropriate Coding Standards and UI Standards are used as the basis to prepare or modify code. Such a developed code is integrated into the system. In all the activities in construction or coding, compliance for design and standards are verified. Also, software product related documents like User Manual and Installation Guide are produced in this phase

3.4.5. Testing Phase
During testing, the implementation is tested against the requirements to make sure that the product is actually solving the needs addressed and gathered during the requirements phase. Unit tests and system/acceptance tests are done during this phase. Unit tests act on a specific component of the system, while system tests act on the system as a whole.

3.4.6. Build and Release Phase
Build and Release phase orchestrates the complex software development, assembly of various components, testing, packaging and deployment and processes necessary for software release delivery to achieve company's objectives. Also, a robust build and release environment is essential for optimal utilization of system resources, planning and tracking release schedules and deliver the software on time. Build is a version of software that on completion delivers the specified set of the requirements. Build activities include- creating local build, checking in’ all the source code, keeping original source code separate from built objects, using common build tools, creating builds regularly, creating build and storing the logs for review and analysis, tracking release package progression

Release activities involve- Release Planning; Release Building; Acceptance Testing; Release Preparation; Release Documentation and Release Deployment.

3.4.7. Operation and Maintenance Phase
In this phase, released product shall be made operational and appropriate support shall be extended. This phase involves- training users or team of selected users in using the application, setting up helpdesk to address any issues during operation, releasing application for deployment and deploying application. When the system is operational, there may arise incidents that may hamper normal operation of the system. At this juncture, help desk shall address these incidents.
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