Software process, software development lifecycle

Answer: By definition, the software process is the set of tasks when implemented properly will produce a software product. Software process is the high level description of an “orderly sequence” of tasks that developers must follow. For example: It is similar to the way people build house. They must start with the foundation first, then the frame, then the roof. After that they can work more detail inside. You cannot build the roof without the frame and you cannot build a frame without a strong foundation.

Software development life cycle is the software process that divided into several phases depending on the model that developers select. Some models advocate a “more generic” phases such as: Requirements, Development, Verification and Evolution. Other models advocate “more specific”. For example, The Waterfall life cycle has several phases: Requirement phase, Design phase, Implementation phase (Coding) Testing phase, and Maintenance phase. Sometime developers add details in some phases to make it easier to understand. For example: Design phase can be divided into High level design and Low level design. Other developers prefer to divide Design phase into Architecture and detailed design. Some developers divide Testing phase into Validation and Verification. All of these variations are just minor adjustment to make the process more visible and easier to follow.

Every software method requires certain documentation. During each phase, developers must create a number of corresponding documents accordingly. For example: At the end of requirement phase, developers must document a requirements specification. At the end of Design phase, developers must document a design specification. Because software methods differ, the number of documents will also vary. Some methods require more documents, some require less.

In general, people who involve in software development is called “Software developer”. However, depending on the type and length of project, companies may divide “Developers” into specific roles and responsibilities. When the project is large and complex, it may involve hundred or thousand developers then it is necessary to assign developers into specific roles, responsibilities depending on their experience. For example: Developer who works on the Requirement phase is called Requirement Engineer or Business Analyst. Developer who works on Design phase is called Design Engineer. If Design phase is divided into Architect and Detail design then Developer who works on Architecture phase is called Software Architect. Developer who works on implementation phase is called Programmer and developer who works on testing phase is called Tester etc.

Sources

  • Blogs of Prof. John Vu, Carnegie Mellon University