Software development management best practices - on build and continuous integration
Japan to build on the role and significance of the network of books and articles have been introduced in this paper will not repeat them. This article assumes that readers have been fully aware of, or continuing to build on the benefits of integration, and is intended to apply to the development and management of enterprises to process, but on how to build and continuous integration, in terms of technical and management is still relatively confused , then there will be a pragmatic way to share with you some of what the relevant experience.
1.1. On the elements of construction
Summarize, the following day a number of construction elements:
1.1.1 Version management
Construction of all those involved in the development of the workpiece should be incorporated into the version management. With version management, in order to build a stable and reliable on the input. Version of management tools to build on the support only of a command-line client tool.
1.1.2 Process Automation
Construction of the processing on the complexity of the project dependent on the size and the actual process of accession to the number and content of different, but in any case, efforts to achieve the full automation of the process is built on a similar request. Process automation will help improve the operation of day to build efficiency and reduce errors introduced by human intervention possible.
1.1.3 Japanese management system to build customized
Japan to build a complete process involving not only to developers, the actual demand is also related to staff, design staff, test, and member of multiple roles such as project manager is the day the parties to the concentrated expression of the results of the work. Such an important activity and a number of responsibilities related to the main body is bound to have to draw up appropriate management systems to regulate the conduct of the various roles to protect the safety of the important activities of the orderly and effective.
1.2. On a number of strategies to build
1.2.1 Code management
Generally speaking, as long as the software development in all versions of management tools used to manage the development of the output of the workpiece, it has built on the elements. Practice, regardless of Microsoft's VSS, Rational's ClearCase, or open-source CVS, were able to pass through the client-specific tools to the command line to obtain the required form of the latest version of the project (or specific version) to the workpiece to build. (The reason here is the workpiece, rather than specific code, because the elements of the actual construction is not only code, but also may include participation in other parts of the compiler or run, for example, metadata.)
Japan is to build a software development and management of day-to-day business behavior, but it is generally based on the project as a build. Despite the different projects is not recommended, but still allow the Japanese to build different tools, processes.
In general, we will have a version of the first management tool to build further on the corresponding tool, and there may be a number of project management tools used in different versions. For example, an enterprise may also adopt different VB and Java development projects. Then the use of VB projects VirtualStudio based on the integration, may be a wider choice of the VSS as version management; and the use of Java development projects may choose to CVS as a version management. For a software company, the choice of different projects for different configuration management tool may be an upset, but in the choice of configuration management tools, the tool can build a good support on items should be a consideration.
The following table gives the structure can successfully build a system on a common model.
1.2.2 Process Automation
On building a simple process include: drop-down source code -> compile the code -> running tests.
Japanese to build a bit more complex processes may include:
1. Drop workpiece
Obtained from the version of source code management tools, the resources involved in running files (icons and images), configuration, metadata and so on.
2. Workpieces statistics (Statistic) / Audit (Audit)
Statistics of the effective number of lines code to measure productivity, personal workload.
Auditors audit the workpiece may include naming style naming convention, multi-language processing, exception handling and so on. Automatic audit function with the appropriate management system, will help standardize the development of enterprises.
3. Compilers or processing
Compiler is very easy to understand, here refers to the processing of a source code pre-processing, for example, according to the source code to generate configuration files and deployment descriptor files. In addition, a specific purpose may also include code to insert the replacement and testing coverage (SourceCodeInstrumentation).
4. To deploy, configure
A software up and running so that may need to configure and deploy. J2ee is a typical procedure, need to configure the client and the EJB application server deployment descriptor.
5. Run
So that software in accordance with the requirements of specific up and running. (Such as unit testing in accordance with the requirements of, or in accordance with the requirements of performance testing)
6. Test
Construction could be introduced on a variety of tests. The more common unit testing is, in fact, can be enough to verify the integration of automated testing and performance testing can join.
7. The test statistics and audit
After testing a number of test data may be left behind, such as the ratio of the success of unit testing, each unit test execution time, leaving the analysis of performance test data and so on, these data can be fully utilized in this step, and through analysis of a Conclusion.
8. Published reports and e-mail notification
Day after to build, in addition to a variety of work output components, it is important also to build the report date. To build a report on the best website in the form of a fixed place, as can Paul Vientiane, such as those responsible for module, compile the success of the deployment of the success of the number of unit testing, unit testing of the success rate, code coverage, statistics, etc. workpiece. In order to facilitate you see, can be attached to a brief e-mail notification.
According to experience, process automation will involve several difficulties:
First, the compiler how to resolve the cycle of dependence on the particle size and the issue of
For a small project, to build the entire project to participate in the parts together as a whole can be pulled down, and then compile. If the compiler does not, then on to build a whole unsuccessful. A typical example is the establishment of a src directory, different developers to share, all of the original code on the directory.
For large projects (in particular products), as hundreds of people involved in the development, it may be necessary to organize modules in accordance with the project development, this time there will be more than src directory. Construction in Japan can deal with all the src into a drop-down after the re-positioning to a src directory to compile. Compile such a program known as the largest. However, there is a problem of this program is that once a module is not compiled code, the compiler of the large projects also can not, unless the compiler can be an immediate solution to the problem, otherwise this will affect the construction of the normal daily output module and the functional verification . Although we may think that of course the compiler must be resolved immediately. However, this influence will become an obstacle to building a factor in automation. In fact, it will affect the success of the compiler to build and test to achieve one of the state of the impact of factors, such as the existence of meta-data may also be unsuccessful release, EJB, such as the deployment is unsuccessful. Once some of the factors which may in some special circumstances can not be a short period of time to resolve, this time on the following highlights the value of a program.
The basic principles of such a program is compiled separately for each module, metadata separate release. However, such programs have to face how to solve the problem of relying on the compiler modules chain and the chain ring is also likely to be problems. To share with you here is a first major implementation of the above-mentioned compiler and then compile the output of major projects as the other input of the compiler. This compiler can be resolved and the cycle of dependence on the order of issues which can determine the true success modules, those modules there are problems, in order to report for a single module to provide a basis.
Practice, once the No. 300 at the same time a development project has been divided into 60 modules. The early stages of the project, the general situation there will be individual modules to build on the same day can not be compiled through the day, and special factors that may arise can not be resolved immediately. However, the above program, the module in question and will not be too large to compile constraints during most other modules through the normal compiler.
Second, how to control large-scale projects for individual sub-modules of the overall impact of unsuccessful
In general, the existence of dependencies between modules, such as Module C dependent on Module B, Module B are also dependent ModuleA, then Module A as long as the issue of a compiler, ModuleB and on the same day ModuleC on output does not build on? This is a partial impact on the overall problem. The authors suggest it is, ModuleA submitted this problem if there is an immediate repair, special circumstances could not be saved by the Japanese to build the system automatically based on the results compiled to determine the history of the opening of ModuleA the success of a recent version.
Some people may ask whether this potential problem? Does exist, but the problem is not so terrible to imagine. As long as the interface change is not generally the issue of ModuleA will only affect the internal ModuleA and will not affect other modules rely on ModuleA. If today ModuleA done on constructing an interface change, and the changes it also informed the dependence of ModuleB, and to modify ModuleB do, then the opening of the ModuleA version of recent history does exist does not run-time interface for errors. For such cases, you can not deal with this problem waiting for the next re-build a solution the next day. The best way is to manage the day to request the compiler must address the issue of ModuleA.
The above-mentioned methods of collaboration in the development of hundreds of people, the demand for validation and testing of parallel scenes tested, it is worth promoting.
Third, the deployment of complex environment
Many people may think that the compiler to resolve the problem solved on the main issues to build. In fact, on the purpose of constructing a new, ready for testing the output. In order to achieve the output for the test, first of all, we should build as far as possible on self-test, with a view to the work product delivered to the test server, testers found there as much as possible before the problem. For example, if the entire product can be stabilized in the application server load? Module landing system can work properly? Menu items can normally read?
Based on the above-mentioned purposes, and Japan to build its own configuration of the physical environment can run in order to run the verification test procedure. For example, BVT (BuildVerificationTest). For J2EE applications, as we all know, depending on product model of the complexity of the deployment of this task can be very complicated.
The problem is not the environment for the deployment of a unified reference model. To my personal experience, building a system design in Japan, if able to do with the developers to test the server location of the deployment model and the deployment of consistent, it will greatly reduce the complexity of the environment, this time may be necessary to artificially create a unified environment .
1.2.3 reporting mechanism
Build in some degree on the project is equivalent to a "medical examination", the results of medical examinations and the natural need to tell the public. Notice is designed to illustrate the actual data, and enable the project to all members of the project reach a consensus understanding of the status quo, and this understanding is full of convincing. On the report can be done to build a very simple and can be very complex. Forms can be used web publishing, e-mail notification can also be used. From the project management sense, it is recommended to invest in this energy and resources as much as possible.
My participation in the design of a Japanese build a system as an example, its report on building a web form, about the structure of the framework. The left show the date, click on the right after that date, the report shows that specific. The course content includes:
According to the report module, the report showed that the module is the responsibility of people (usually in charge of the module's project manager)
Circumstances of each module of the compiler. Or did not pass through. Did not pass the compiler error message is displayed.
The deployment of each module. Success or failure. Showed the failure of the failure information.
Each module the number of the unit test, unit test time, the success rate, code test coverage statistics.
Each a few lines of code modules, EJB number of the classification of the various meta-data and Statistics
The style of each module code auditing, exception handling audit, audit naming convention, multi-language processing audit, etc.
1.2.4 Japanese management system to build customized
Construction of specialized equipment on
Must be special arrangements for the project on building a machine, but also a high performance machines, larger memory capacity. The current PC-processing performance, less than 150 projects, proved to the competent practice.
Construction on Time Management
Construction is not only on a day to build one. Constructed from a continuous sense, Japan can build a lot of times a day. On what time to build? Several times on a daily basis to build the best? Not the best answer. However, according to the experience of the early stages of the project, by adding large quantities as a result of the functional test has not yet fully carried out, a day to build it. As the project progresses, the system features full progressive, stable, testing and validation needs to roll out gradually, then twice daily or more times to build.
On the timing of building a better general in the afternoon, if the problems of individual modules, the relevant staff members can use at the time left to resolve. Microsoft to build the day occurred in the early morning, and the implementation of automatic scheduling. Developers to come the next day the first thing of concern is whether the module is responsible for his own construction in Japan was carried out smoothly.
Lunch break is also a day to build an alternative. For small projects, an hour can generate a general report on build, so developers can directly after lunch back to deal with the problem. The demand for testing and can also work on the morning of validation and testing products.
On building a rotating
Despite building a perfect day to run automatically through scheduling, but to cope with some unexpected events, such as temporary inspection products, developers found a major bug on the immediate repair, it may be necessary to build to run on man-made scheduling. Recommendations in principle on the establishment of a Construction Manager. Treatment is not sustained as a result of things that the administrator can be part-time.
Recommends that the administrator in the department or rotating the way the project team. This is conducive to strengthening the importance of Japan to build and handle the process of forming a common understanding, but also rely on the key could have been avoided.
Interface Change Management
That may exist between different modules interface dependence here refers specifically to the interface is not a programming language in the Interface, but all rely on the compiler and run-time components. Interface development and management of change management is a difficult process, even though from the perspective of software design, we can take a number of ways to try to avoid such dependence, for example, interface inversion, interface separation; but, in reality, it is difficult to avoid this problem. Continuous Integration is one of the main purposes of the solution to this problem.
Principles of interface changes required to inform the interface changes to the relying party, and asked to build in Japan prior to advance notice in order to have time-dependent interface in the integrated adjustment of the original compiler before the code calls the old interface. Very often, this administration needs to ensure that. Actual cases, the relying party can not be avoided interface interface changes have not received notice, or the situation too late to adjust the interface, this event will lead to interface the relying party can not compile the code, the problem out. Problems to be avoided as far as possible, but it does not have a terrible, which is embodied the role of continuous integration - allowing the issue of exposure as soon as possible.
Building on a code of conduct
Construction is the day on all products in a centralized authentication, and output components to influence the next day all the work carried out in order to ensure it is correct, the need to regulate the conduct of participants. This code of conduct, including developers in Japan to build pre-work, day after to build and handle the response. In order to facilitate us to understand, here in the form of, for example to everyone. For example:
1. Developers to build in Japan must be submitted 15 minutes before the code, to ensure the correct processing of the code can be drop-down.
Related Posts of Software development management best practices - on build and continuous integration
-
What is Agile Software Development
Interaction between people are complex, and its effect has always been unpredictable, but it is the work of the most important aspects. - Tom DeMacro and Timothy Lister Agile Software Development Declaration: n individual and interactive process and ...
-
What is Extreme Programming
ExtremeProgramming (Extreme Programming, or XP) are from KentBeck in 1996. KentBeck in the early nineties and worked WardCunningham, it has been to explore new software development method of software development will enable more simple and effective. ...
-
common flow compared Agile Development!
Common flow compared Agile Development! Time: January 13, 2009 Source: The original Author of this site : Net Northeast Training Views: <noscript src="/Article/GetHits.asp?ID=6462"> </ noscript> 11 Agile Development Model Projec ...
-
What is Agile development?
Agile development (agile development) is a people-centered, iterative, step-by-step development methodology. In Agile development, software project construction has been cut into multiple sub-project, the results of the various subprojects are tested ...
-
Ruby on Rails in the domestic use of
Shanghai Printing customer http://www.inker.com.cn Shanghai's current development plans of God's Web site at http://www.x-navi.cn At present, at trial. Choi upper http://www.caibangzi.com Music Box http://www.8box.cn/ http://www.elctech.com/ ...
-
AJAX file upload progress of implementation of control
dhtmlXVault User's Guide 1 Top 2 Step 13:33 Browser (41) Comments (0) Categories: ajax Related recommend Comments Comment yinxiangbing View: 1143 times Gender: From: Beijing Details book Search this blog Recent visitors xieqinghua yh_private Sky ...
-
Student candidates for software recommendations
Financial crisis has come, the project got worse, employees are brothers, should not because there is no project, on vacation or dismissal. However, small businesses, how many did not make money, can only help each other to tide over the difficulties ...
-
ruby on rails job
U.S. to discuss the discussion in Shanghai, Suzhou, Nanjing, Beijing, which companies have to do the ruby on rails?
-
Universal Data Access Control System Design
Figure II: general data rights management system database design Comparison of two maps, we can see that the main changes between them are: 1, increase system resources, information and operation type information, the system resources for the tree st ...
-
Process migration from tomcat to websphere changes
Process migration from tomcat to websphere changes Because customers use the web application server software used by different what tomcat5, tomcat6, websphere5.1, websphere6.1, weblogic8, and so on, and the software used inconsistent standards, ibm& ...













Leave a Reply