Mythical man-month-no silver bullet

Source: Internet
Author: User

Without any technical or administrative progress, we can independently promise an order of magnitude of progress in productivity, reliability, or simplicity over a decade. -No silver bullet

A conceptual structure of mutual restraint and association is an essential part of software entities, including data sets, relations between data entries, algorithms, and function calls. These elements are abstract, embodied in the same conceptual architecture, and may have different forms of representation. However, it is still rich in content and highly accurate. I think the difficult part of software development is the structure of the concepts of normalization, design, and testing, rather than expressing the concepts and verifying the degree of realism. Of course, we will still make some syntax errors, but they are insignificant compared to the Conceptual errors in most systems. If this is true, software development is always very difficult and there is no silver bullet in nature. Then, the complexity, consistency, variability, and invisibility of software development are analyzed in detail.

1. Complexity
Software systems are very different from computers, buildings, or automobiles. The latter often has a large number of duplicates. Due to the complexity of software products, it is very difficult for Members to communicate with each other, resulting in the progress, quality, and cost of software products. Especially when the scale of software increases, the complexity often doubles. At the same time, complexity not only leads to technical difficulties, but also causes many management problems. It makes it difficult to fully understand the problem and hinders conceptual integrity. (In the process of developing software products in factories, we should note that the secondary factors are still addressed, such as increasing public component development and building platforms and frameworks, the complexity caused by business functions is unavoidable .)

2. Consistency
In some cases, because it is developing the latest software, it must follow various interfaces. In other cases, the development goal of the software is compatibility. In all the above cases, a lot of complexity comes from maintaining consistency with other interfaces, and any re-design of the software cannot simplify these complex features.

3. Variability
The software in the system contains many functions, and functions are the most vulnerable part of the change pressure. All successful software changes. In real work, there are often two situations. When people find that the software is very useful, they will use the software at the boundary of the original application scope or beyond the boundary. The stress of function expansion mainly comes from users who like basic functions and have made many new usage of the software. In short, software products are rooted in the mother of culture, such as various applications, users, natural and social laws, and computer hardware. The latter is constantly changing, and these changes force the software to change. (In the process of software development, we must consider how to adapt to changes. In the process of demand, design, and coding, we must consider how to quickly respond to changes and improve the scalability of software products. We emphasize the idea of incremental iteration in the software development lifecycle model and the fundamental purpose of the idea of test-driven is to quickly respond to changes and reduce the risks brought by changes .)

4. Invisible
In addition to restrictions and simplification in the software structure, the software still maintains the inherent characteristics that cannot be visualized, thus depriving some conceptual tools with powerful functions of building ideas. This shortcoming not only limits the design process of individuals, but also seriously hinders communication between them. (We recommend the quick Prototyping Method to Solve the Problem of software visibility.

Feeling of no silver bullet

1. there are now many rapid development platforms, but the development platform that can complete business functions without writing code is basically not successful, especially in complex business scenarios, programming automation is basically impossible. The only breakthrough was the construction of a unified framework and technical platform. On the basis of the original framework, we built a product development platform that would have little to do with the business, the workflow engine is integrated to integrate common reusable components to accelerate development.

2. do not work hard in the pursuit of an automatic programming platform. You can work hard to enhance Component Reuse and technical platform construction.

3. It is necessary to improve the development model to solve various practical problems not raised by the silver bullet. Although it cannot be completely solved, efforts can be made to improve it. Such as incremental iterative development models, rapid prototyping, test-driven, advanced language and graphical programming.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.