The Six Stages of Software Development

Software development is the process of building a software system, or the software parts of a system, according to user requirements. It is a systems engineering covering requirements capture, requirements analysis, design, implementation and testing.

1. Planning

Define the problem to be solved as a whole: understand the user’s requirements and the real environment, study and demonstrate the project’s feasibility from technical, economic and social angles, write the feasibility study report, explore solutions, estimate the costs of available resources (computer hardware, system software, manpower and so on), the benefits obtainable and the development schedule, and draw up the implementation plan for completing development.

2. Analysis

Software requirement analysis is the systematic study and conception of what software to build: refining the user’s needs, discarding the false and keeping the true, understanding them correctly, then expressing them in software engineering language, that is, the requirement specification document. The basic task of this stage is to settle with the user what problem is to be solved, build the software’s logical model, write the requirement specification and win the user’s final approval. The main methods include structured analysis, data flow diagrams and data dictionaries. The stage’s work follows the specification’s requirements: design the software system’s architecture, decompose the system into subsystems or modules, define the interfaces between them, design each subsystem concretely, and write the outline and detailed design specifications, the database or data structure design specification, and the integration test plan. At the start of any software or system development, user requirements must be fully grasped, so that which functions to implement, in what specification and under which limits are pinned down before the development that follows. Systems engineers then complete the design scheme on this basis, defining the subsequent program development and the description and limits of system functions and performance.

3. Design

Software design splits into outline design and detailed design. Its main task is to decompose the software into modules: a module is a unit of data and program description that realises some function and can execute, whether a function, procedure, subroutine, an independent program segment with its documentation, or a functional unit that can be combined, decomposed and replaced. Outline design is structural design, whose main goal is to give the software’s module structure, drawn as a software structure diagram. Detailed design’s first task is designing each module’s program flow, algorithms and data structures, with database design next; the common method remains structured programming.

4. Coding

Software coding converts the design into a program the computer accepts, that is, writing the source program listing in some programming language. Knowing the development language’s traits, the tools’ features and programming styles helps choose the tools and assures the product’s quality. Today, apart from special cases, the high-level languages of the 1980s are rarely used, replaced by object-oriented development languages, which mostly come integrated with their development environments, greatly raising development speed.

5. Testing

The aim of software testing is to find as many errors as possible at the smallest cost. The key is designing an excellent set of test cases (test data, functions and expected outputs together form a case), and the key to that is understanding test methods. Two methods are common. The white-box method tests the source program, finding the software’s coding, structural and data errors from the program’s internal logic structure; structural errors include logic, data flow and initialisation errors, and case design here means covering as much internal program logic as possible with fewer cases. The black-box method relies on the software’s function or behaviour description, finding interface, functional and structural errors; interface errors include internal and external interfaces, resource management, integration and system errors, and case design again means covering the module’s input and output interfaces with fewer cases.

6. Maintenance

Maintenance means the software engineering activities performed on the product after development (analysis, design, coding and testing) is complete and delivered: modifying the software appropriately as it runs, to meet new requirements and correct errors found in operation, and writing software problem reports and modification reports. A medium-sized piece of software needing one or two years to build may run for five to ten years in service, and its maintenance stage spans that whole period. During it, people must solve nearly every problem met during development, plus problems peculiar to maintenance itself. Good maintenance not only clears obstacles so the software runs normally, but extends its functions and raises its performance, bringing users obvious economic benefits. Regrettably, maintenance gets far less attention than development, though in fact its workload and cost both far exceed development’s. Nor does real development run from first step to last: at any stage there is usually one or several steps of backtracking before the next, since testing may force design changes and users may raise needs that revise the requirement specification.

XZS Tech is a Shenzhen-based development company. We build custom mini programs, WeChat and mobile apps, e-commerce systems and corporate websites, covering requirement analysis, design, development and after-sales support, and we hand over the source code at delivery.

If you are planning something along the lines of what this article describes, tell us the scenario and we will come back with an approach and a cost range. Call 0755-82494862, or reach us through the contact page at hk.xiaozhushoukeji.cn/en/contact-en/. The first conversation costs nothing.

Want to talk through what you just read?

We work end to end, from product design to launch. Tell us about your scenario and we can start there.

Shenzhen XZS Technology Co., Ltd. · Tel 0755-82494862 · 13760424861

Contact us

← Back to News