Now in a small business to develop. The main job is the architecture design (of course, it is still not called the architect ^ _ ^). Previously, the company had a architecture, the original architecture, a cow, although it is not very "advanced" (relative to the current use of the current use of depends on the injection of injection, the objectual relationship map, etc.), but generally calculate the specification, structure is still very Clear, also provide a lot of common functions, which can reduce many repetitive labor. There are not many people developed by the company, 3, 4 people, can be in the development of the previous section, due to poor management, personal development habits, the structure of the architecture has become a lot of destruction. Make the product deployment, maintenance, and transformation more and more difficult.
Now we are building a new architecture for the company, using the struts Spring Hibernate looks, using AcegiSecurity1.0.0 as the middleware management of Security. My goal is that the new architecture not only keeps the mainstream in technology and structures, but also explores a development management method suitable for small teams during the construction process.
The previous development is very lack of norms, lacks documents, lacks testing. The user complained that the project has been dragged. In order to solve these problems, try to introduce test driver development (TDD). Our small teams have not received very strict software engineering training, personal development habits are very different, as well as project progress, time, want to follow the waterfall model, RUP, almost impossible. Basic development models extract several specific functional modules from demand, and then everyone is responsible for the development of a separate functional module. There is no first design, re-encoding the project, and debugging is basically debugging after deploying, and there is no test case. Introducing TDD does not want to solve the problem of design, design or hand over the development process and design. Introducing TDD is to enhance the cohesiveness of each Class, and forced developers first consider what is the function of the component to complete, to achieve a sufficient test obtained by each component.
Just learning TDD, there are many still don't understand, you need to explore for a while, what lessons learned again :)