Preface:
Anyone who knows about engineering projects in other fields other than the software field, such as chemical engineering and ships, should know that the scale of the project is expanded, and other corresponding labor costs and process computing are involved, the engineering cycle is not linear. More often, you will find that sometimes the scientific theoretical systems applicable to small projects and big projects are different.
Judging from the experience of small projects is a pure fantasy. What are the noteworthy or interesting laws in the software field?
Relationship between software scale and communication
The potential communication channels for multiplayer projects are N (N-1)/2. For example, if n = 10, there are 45 potential communication channels.
The more ways to communicate, the more time consumed, and the higher the possibility of communication errors.
Improvement path:
Break down the project team size whenever possible.
Reading and writing documents is one of the effective ways to reduce the number of interactions.
Relationship between software scale and bug
The software scale affects both the number of bugs and the type of bugs.
In small software projects, the developer's skills have the greatest impact on quality.
The larger the number of software projects, the greater the impact of incorrect requirements and architecture on quality. However, no matter how large a project is, developers still bring more than 50% of the total number of problems.
When other conditions are equal, the productivity of large software projects is lower than that of small software projects.
Project size [CodeLine] |
Number of lines of code per year [cocomo II mean in brackets] |
1 K |
2500-25000 [4000] |
10 K |
2000-25000 [3200] |
100 K |
1000-20000 [2600] |
1000 K |
700-10000 [2000] |
10000 K |
300-5000 [1600] |
When other conditions are equal, the bug rate of large software projects is higher than that of small software projects.
Project size [code line] |
Typical bug density [thousands of bugs] |
<2000 |
0-25 |
2000-16000 |
0-40 |
16000-64000 |
0.5-50 |
64000-512000 |
2-70 |
> 512000 |
4-100 |
A lightweight method is better than a heavyweight method.
With the increase of the project scale, the activities with the workload exceeding the linear growth include:
Communication
Plan
Management
Requirement Analysis
System Function Design
Interface design and specifications
Architecture
Integration
Eliminate Defects
System Test
Document generation
In addition, other activities are basically linear.