A good software outsourcing company should have a rigorous software development process.
The software development process of each outsourcing company is similar, which can be divided into requirements analysis, design, coding, testing and maintenance. Among them, the handling of details can best reflect the quality of a software development company.
1, demand analysis
Software requirement analysis is the most important part of the whole software development, and requirement analysis is to answer the question of what this software does. It is a process of removing the rough and selecting the fine, removing the false and retaining the true, correctly understanding the user's requirements, and then using the software engineering development language (formal function specification, that is, requirement specification) to realize it. The basic task of this stage is to determine the problems to be solved by the software together with the users, establish the logical model of the software, and write the requirements specification document, which will finally be recognized by the users. The main methods of requirement analysis are structured method, data flow chart and data dictionary. The work in this stage is to design and establish the corresponding software system architecture according to the requirements of the requirement specification, decompose the whole system into several subsystems or modules, define the interface relationship between subsystems or modules, define the specific design of each subsystem, write the software outline design and detailed design specification, database or data structure design specification, and assemble the test plan.
Step 2 design
Software design can be divided into two stages: overall design and detailed design. In fact, the main task of software design is to decompose the software into modules, realize the data and program description of a certain function and the program unit of the executable program. It can be a function, a process, a subroutine, an independent program and data with program description, or it can be a functional unit that can be combined, decomposed and replaced. Module, and then module design. Summary design is structural design, and its main goal is to give the module structure of software and express it with software structure diagram. The primary task of detailed design is to design the program flow, algorithm and data structure of the module, and the secondary task is to design the database, common methods or structured programming methods.
Step 3 code
Software coding refers to converting software design into a computer-acceptable program, that is, writing a "source program list" expressed in Java, C, php and other programming languages. A full understanding of software development language, tool characteristics and programming style is helpful to choose development tools and ensure the development quality of software products.
At present, except for special occasions, the high-level language of the 1980s is rarely used in software development, and it is replaced by the object-oriented development language. Moreover, the object-oriented development language and development environment are mostly integrated, which greatly improves the speed of software development.
Step 4 test
The purpose of software testing is to find as many program errors as possible at a small cost. The key to achieve this goal is to design a set of excellent test cases (test data and expected output results constitute test cases). How to design a set of excellent test cases depends on the understanding of test methods. Different test methods have different test case design methods. Two commonly used testing methods are white-box method, which tests the source program and finds programming errors, structural errors and data errors according to the internal logical structure of the program. Structural errors include logic, data flow, initialization and other errors. The key of use case design is to cover as many internal program logic results as possible with fewer use cases. White box method and black box method are based on the description of software function or software behavior, looking for interface, function and structure errors of software. Interface errors include internal/external interfaces, resource management, integration and system errors. The key of black-box use case design is to cover the output and input interfaces of the module with fewer use cases. Black box method.
5. Maintenance
Maintenance refers to some software engineering activities of software products after software development (requirements analysis, design, coding and testing) is completed and delivered to customers for use. That is, according to the operation of the software, the software is modified appropriately to meet the new requirements and the errors found in the operation are corrected. Compile software problem report and software modification report.
If the customized development stage of a medium-sized software takes one to two years, the running or working time after it is put into use may last five to ten years. Then its maintenance phase is also during the five to ten years of operation. During this period, people almost need to solve all kinds of problems encountered in the development stage, but also need to solve some problems unique to the maintenance work itself. Doing a good job in software maintenance can not only remove obstacles and make the software work normally, but also expand functions, improve performance and bring obvious economic benefits to users. Unfortunately, however, the emphasis on software maintenance is often far less than that on software development. In fact, the workload and cost of software maintenance is much larger than that of software development.
In the actual development process, software development is not from the first step to the last step, but at any stage, there are usually one or several steps back before entering the next stage. Problems in the testing process may need to modify the design, and users may put forward some requirements to modify the requirements specification.