hypothesis Website production 85% of the functions of the software applications in are in the form of standard reusable components, so the software development in 2049 will be very different from the line by line coding of the current unique applications. By 2049, the first step of software development will be to build up all existing reusable components, put them together in the working prototype, and provide placeholders for new functions to be added in the future. The prototype can be used to evaluate basic issues, such as ease of use, performance, safety, and quality. Since new features have been created and tested, they can be attached to the original working prototype. This approach is somewhat similar to agile development. However, in most cases, agile development does not start from mining the data of legacy applications.
Some logistics work of agile development is also very useful to us, such as daily progress meeting or Scrum meeting. However, since the purpose of development is to build usable objects rather than unique single use objects, other techniques that attach importance to and measure quality will also be used. For example, team software process and individual software process methods have demonstrated a very high level of quality control. Because new applications have very strict safety and quality requirements. Therefore, these reusable components must be certified to zero defect level. If such certification cannot be provided, the candidate reusable components must pass a series of very comprehensive inspections, including automatic static analysis, dynamic analysis, testing, and perhaps review. In addition, the history of all reusable components will be collected and analyzed. To evaluate any quality and security vulnerabilities that may have been previously reported.
Since the new functions of the application are not intended to be designed for single use, but to be designed as reusable components, it is obvious that developing these components requires extra care. For the development method used for new functions, team software process and individual software process seem to have strict requirements for creating reusable components. Some logistics methods such as agile development or other approaches can be used, but strictness and high quality are the main goals of successful reuse. Due to the need for high-quality components, automatic static and dynamic analysis, careful testing, on-site inspection and other methods are necessary. In particular, special types of reviews are also required, such as those focusing on security vulnerabilities and defects.
Due to security issues, for example, the E language that supports security may be used for development. However, some old reusable components are undoubtedly written in other languages, such as C, Java, C++, etc., so language conversion may be required. However, it is hoped that by 2049, all reusable components will have a corresponding security version for any language. In the example, we discussed a type of software cost assessment application, which generally had only about 2500 function points in 2009. It usually takes two and a half years to build and implement these applications, and the productivity is about I0-15 function points per person per month. The average number of potential defects in these applications is 4.5/function point, but the defect removal efficiency is only 87%. As a result, there were about 1400 defects in the software when it was delivered to users for the first time. Of the 1400 defects, about 20%, or 280, will cause serious problems when users use the software.