Software development process

Software development process (or SDLC - software development life cycle) is the process of dividing software development work into distinct phases to improve design, product management, and project 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.

Most modern development processes can be vaguely described as agile. Other methodologies include waterfall, prototyping*, iterative and incremental development, spiral development, rapid application development, and extreme programming.

Software development activities

  1. Identification of need. The sources of ideas for software products: market research (new customers/existing customers), sales prospects who rejected the product, required features.

  2. Planning. Customers typically have an abstract idea of what they want as an end result but do not know what software should do. So, an engineer should: extract the requirements and perform an requirements analysis.

  3. Design. Once the requirements are established, the design of the software can be established in a software design document (IEEE 1016). On this stage should be done high-level design of main modules for overall picture (architecture diagram, block diagram) and should be already chosen programming language, operating system, and hardware components. Also it may include detailed low-level design with prototyping as proof-of-concept.

  4. Development & Implementation. Implementation is the part of the process where software engineers actually program the code for the project.

  5. Testing. This part of the process ensures that defects are recognized as soon as possible.

  6. Documenting. Documenting the internal design of software for the purpose of future maintenance and enhancement. This may also include the writing of an API, be it external or internal.

  7. Deployment. This may involve installation, customization (such as by setting parameters to the customer's values).

  8. Maintenance. Enhancing software to cope with newly discovered faults or requirements, fixing reported issues, keeping the software running.

Last updated