Introduction of project management software architecture issues
Many friends have had or are managing one or more software projects, so my article on this question: if just from the appearance, the software project management process in the exposure of the most important question?
Different people have different answers, but generally I think that the answer will be recognized by most people, that is, "the progress of delay." Delay in appearance of course, one of progress, and other relations such as quality, however, is not feature complete and so, I think are closely related and schedule delays. Many project managers who want to do something that is necessary, such as plans, testing, etc., but "no time." Why not have the time? Wait until the project summary, we always set out the reasons for trying to convince a lot of their own, persuade or convince the client company. However, if only from the limited project manager to find the reasons, I think the problem is not hard to find.
Here, I use "Toyota" and "Five Why" method to ask this question, and I think the answer may be:
First, why the progress of the project will be delayed? Because there is no plan in accordance with the project!
Second, why do not the implementation of the project plan? Because there is always progress delay buffer will always be used up.
Third, why not plan a more detailed plan when more realistic to do so? These could not always have extra work there.
Fourth, why not a full assessment of every job, so expect it as little as possible outside of work? Does not evaluate anymore because many believe that the work of the atomic level will have a variety of problems.
5, no other projects can reference the project plan? Difference because the two projects is very difficult to reuse.
Asked here, I think in general the core of the project also revealed in front of us. Now to not talk about this problem, we use a few simple examples to some of his more vivid.
We use a non-software things for example, for this example so that we make a detailed project plan and assess the most accurate time.
Example 1: Please assess each article of my time re-playing again.
The most simple example, take me, I typing speed of 30 characters per minute, so this article to play once again the time is the total number of words of articles 3000/30 = 100 minutes. With intermediate rest time, maximum is 120 minutes.
The answer quite accurate, I would like to not have too many people disagree with that, the next example may be a bit different.
Example 2: Please solve the following equation: x2 + px + q = 0, p = 2, q = 1
A junior formula, but many people may forget it's universal formula to solve, but we assume you know the formula to solve:-p / 2 ± sqrt (p2/4-q). Assessment on the time we first need to know the time we open the calculator, input data of the time, copy the result, and in order to ensure accurate calculation, we need checking. Ah, so that the authority estimates the time I am afraid that as convincing as Example 1, and we often need to re-calculated because of operator error, I am afraid that it would be difficult to avoid overtime.
Example 3: Members in accordance with my introduction, combined with their own projects practice, re-write it.
Ooh! If anyone can accurately estimate the time, they should be expert at this. Look at our example of 3 in order to complete the number we need to do it: to develop writing an outline, sketch writing content, assess typing speed and amount of each of the content ... In my opinion, not calculated, calculate more, the progress of this work will still been delayed.
These three examples there a difference? Of course! Example of an estimation method we have to master, and the implementation of the process variables at least, because we do not need any process of exploration (a word Wubi guess not, at least I use the Microsoft Pinyin). Examples of two different problem-solving approach is required the intervention of external factors, and this technique is not for everyone to grasp (or remember), the most important feature of every step we need to estimate the time required to complete it, We have calculated that if one was, of course, the second would be more accurate estimate. However, very few real-life projects will give you the chance to do it again. When you complete the project, with this particular project-related ways also lost its role, its only value is to sneak into your memory, a so-called "project experience," and that "experience" is often the next project will be acclimatized. In contrast, example 2 good or ill, some visible and tangible action to assess the up and will have some basis, but examples of three almost a pure movement of the mind to let you out of thin air assembled in a beautiful paper, I think this progress is also difficult to estimate, and who knows for a content, we have to speculate or even trance repeatedly how much time? !
We topic back to the first of five articles Why come. Software project or other projects can be completed on time and the most important thing is to do "plan", can plan a realistic project plan, the biggest barometer of success or failure of the project.
Let the project close to reality, first of all we need to project a list of all the work out, then work each step of a breakdown, so down to the "atomic", that is no longer sub-levels, from software project point of view, is assigned to "document", assigned to "class" or even assigned to "function" level. Then, these "atomic-level" assessment of the work time, total synthesis, the last multiplied by a coefficient (usually 2), is the final project to spend the time
Easier said than done! Required to work alone, down to the atomic level, it has been enough to spot a large number of project managers fainted.
We return to look at example 2, if people have forgotten that the problem solving formula for solving the case, the progress of the previous estimate whether adjustments? The answer is yes. This time they need to consider the time to find information, so long as to find the formula to calculate the result is not a problem, but the time it takes to find the formula, in a clear case of network connectivity, including Web search, ask colleagues and so on methods , an hour is enough!
If just looking for a formula on the need for additional one hour, then the examples of the subject changed to 2 computing "Fourier"
Transformation (non-programming computing) also how much time? Obviously the dual linear equation with the solution are not the work of an order of magnitude, we look for information in addition to, most people still need to learn, not based on fear of higher mathematics is more need to join the "study" the.
From Example 2 can be summed up as follows several phenomena: the work and working relationship between the levels can have a seemingly simple task is likely to imply a huge amount of work, or in some pre-conditions are not ready insufficient in particular. To accurately estimate the time used a work, first of all we should, "fold" up "working tree" as completely as possible, "start", followed by the need to stop work on the "learning" and "studies" or even "search query" workload. In short, when carried out in the actual project, we must as far as possible all the work is simple, predictable, and exclude those who do not control as much as possible, no reliable factors.
In other words, the project work and time of each relationship must be "linear". If you can not rule out the "nonlinear" work, it must be "controlled" within the scope of the project within the allowed "uncontrollable" and "nonlinear" factors exist.
Word: Quick on the more things done more slowly!
In the end the project, how many factors are "not controlled" mean? And which are "controllable"? What are "linear" factor? To answer this question, we first look at our current software development methods and processes it:
(A) contract orders
(B) needs research, analysis
(C) architecture design, general design
(D) detailed design
(E) coding, testing,
(Vi) delivery, maintenance
Roughly six steps, which is 345 and we talk about the development process associated with (the other part of my series of articles will be discussed later). First we look at the third point and fourth point, they are collectively referred to as "design", given in reference 2 "design" phase is to address four areas: data structures, software architecture, process details, interface properties .
Experienced readers I would like to have seen, and the traditional "design" would solve the problem, a considerable portion should be divided into the current "framework" range. The scope of software architecture include the following:
(A) application-level classification (eg, interface layer, storage layer, etc.)
(B) the division of the application module (such as initialization module, configuration module, security module, etc.)
(C) implementation of the application module (permissions, user, organizational management, etc.)
(D) function library implementation,
(E) module, the relationship between layers and communication mechanisms,
(F) the relevant part of the data structure definition.
Thus it is evident, above the third and fourth most important and basic work on the basis of "framework" within the remainder of the work, the basic is associated with a specific business.
In the above three "xx design" in architecture of the time most difficult to control and estimation, the outline design and detailed design for entries is evolved directly from the demand, and easy to refine (later I will have articles devoted to) So, even though they are all "design" this "nonlinear" work, but "controllable" than the "framework" much stronger. From personal experience, project maintenance, maintenance process issues arising from a considerable breakthrough in part because the original Schema user Xuqiu ability Suozhi, but it is this issue, is the longest delay, cause customer reflected in the strong, is also the most maintenance personnel the most painful headache. Therefore, the "architecture" I classified it to the "nonlinear" work, but "difficult" work.
I see a lot of company's software department called "R & D department," said English is the research and development of the sector, but I rarely see companies doing research and development of two separate departments. What does it do? From the above we can see that research is a very resource-intensive work, and risk (especially technical risk) is very large, probably because a small technical problem can not break through in the entire structure be reversed, and the risk of developing much smaller, more controllable; Another big difference is that research does not directly create value, while development is closely related with the company's revenue. These two reasons alone are enough to "research" and "development" completely separate into two departments. Of course there are many other differences, such as evaluation methods.
After separation of the distribution of work? It is simply the "software architecture" and other difficult "nonlinear" all work to the experts gathered in the "research" department to do; specific project-related business and to achieve ("linear" work) by "Development" department to do, because they are technically undemanding and low cost. Here, I am not advocating hand every company needs to "study" technology? On the contrary, I advocate the majority of companies do not need to set up a "research" department, at least most of the company not to develop or trying to develop so-called "own" software architecture. As compared to specific business software architecture has a certain independence, and not a "particularly suitable for" a particular class of business "software architecture" exists, even if it is should read N items of M occurs only after years of tests (N * M> 10 years). I believe that SAP will have such a structure, but the basic domestic companies will not have (may have, but please understand my doubt). Now there are many open-source framework for the market there, choose a bar, and then to train your employees, continuous training, guidance to become proficient in the application of this framework to the project to date, even so, your total costs are also far less than requested a "master" to develop a framework for input failure.
How to select an existing structure has not within the scope of the article, because I am going to talk about is "how to develop its own framework", but need not panic, if your development language is java, then I congratulate you many useful open source framework are java, such as spring MVC, struts / webwork, tapestry; if you're using. net platform, so Microsoft has to help you do a shallow package, or simply to use. net The petshop or the structure can be the Duwamish