Sunday, March 27, 2011

Software Engineering

"Software Engineering" is that we learn in school to the theories, after years of practice development and exchange of technology, we have been in traditional software engineering theory for reflection. In software development is divided into three phases (requirements analysis, design and programming), we will naturally raises the question, "Software developers should continue to improve the professional level?" Besides, the division of labor is the basis of the industrial revolution. This is because the precise definition of the manufacturing sector into several smaller tasks, a group of worker productivity to be rapid. Therefore, we assume that: for software development, this "professional" approach would be equally effective.

This seems obvious, right? For some people to become professional analysts, special access and record the user's demand for some people to be designers, the demand for documents created from the design specification document; programmers responsible for coding in accordance with design specifications. Clearly, this must become a more efficient way to work, right? The answer is no.

Analysis problem

1. Ignoring communication costs

Segmentation with the task made more small steps, forward information between the people spend a greater amount of time. Therefore, the exchange does not require much work (for example, a lot of manual labor in the manufacturing sector), flow-type production line can run very well, but requires a lot of mental communication (mainly software development), a complete failure in this way.

Most of the software development work in the minds of team members is completed. If you want to force all people to specialize in one particular job, then every simple project should provide more additional intermediate products. Each delivery is a source of potential errors and defects, therefore, through their very expensive. Yes, everyone is prepared if a large amount of documentation needed, to reduce the others to the risk of misunderstanding or assumption, of course we can "exchange error because" the minimum possible. However, "to write more documentation," work load is also included in the cost of project entry As Fred Brooks said that if the factors that determine the success or failure of a task is communication between members of project team efficiency, then adding more people will only delay progress project.

When a request by developers to design and source code has a deep understanding, software developers will be able to get the best results. Steven Levy interviewed all the hackers that are designed independently and code. In the impact "of computer programmers (private) in 19 industries," interview, Susan Lammers also mentioned the same phenomenon. In the great programmers, there is no one using the style of the software engineering division of labor, they are usually alone in-depth throughout the design and coding. Very interesting is that almost everyone has their own unique style of work.

2. Lead confusion

Traditional division of labor imposed on software development, the result is leading analysts, designers, programmers, testers, user interface expert, document engineers, technical support engineers continue to convey information between. excessive exchange rate greatly reduces the efficiency of the project was kept pending. Change happens all the time, all information must be passed along the entire development chain down and cause chaos. Shortly after the end of the project, the software becomes a "legacy system", because no one knows exactly how it works.

Software works on the details of man-made technology, so that everyone can understand the overall application. Software Engineering to solve this problem does not re-cross-training among the developers so that they understand the situation, but stressed repeatedly that the myth of the document - the document that allows a person a good understanding of the entire application. Unfortunately, although the documents which could be a good choice for recording software and protocols, but it can not be effectively preserved, passed on the details of a specific problem, but this knowledge with a particular well is the most important.

Another glory at the expense of software engineering: the discredited documents Gaode. Many of the items actually do not have any documents, because the young developers instinctively reject such "software engineering products."

3. Lack of scientific means to measure

"Scientific management" to replace the rule of thumb with science. In the management of "scientific" approach, the amount of disposable everything. If you want to fix something, you first have to measure it. If something can not be measured, it is impossible to fix. Managers know it all. Every job must have the best possible way.

So, who created the software metrics of software development engineers a lot, we also do not feel too surprised. Even by the management of "scientific" to give time "- Action Research" (time-and-motion studies) have been used to study the use of the software. In some specific issues, has provided some quantitative rules, for example, move the cursor to the button, how long (Fitts law), the probability of choosing between the behavior of quite how long it takes (Hick law), etc. and so forth.

No comments:

Post a Comment

 
THANK YOU FOR VISITING