How much does it cost to develop a software?

The price of developing a software depends on whether you are a big company, a small company or an individual. Generally, the cost of software is calculated from the developer's quality level and development cycle. You must first know the value of developers. Ordinary programmers are about 5000- 10000 yuan/month, and senior programmers or system analysts 10000-20000 yuan/month. This is the algorithm of a big company. For example, if there is a software to be developed now, it is estimated that it will take five people (a system analyst, a senior programmer and three ordinary programmers) about two months, then the calculated software cost is: (2 ×15000+3 × 8000) × 2 =108000, so the external. If it is a small company, the standard is different. At the time of quotation, a senior programmer is about 5000/ month. If it is an individual, it may be even less. However, as long as you have the ability, you think the value of the software you make is the least.

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.