Introduction Most software projects fail. In fact, Standish Group reports show that over 80% of projects are unsuccessful, the reason is that you have exceeded the budget, failed to complete on time, missed functions, or because several of these problems occur simultaneously in a project. In addition, 30% of software projects were so poorly executed that they were abandoned halfway. Based on our experience, software projects using modern technologies (such as Java, J2EE, XML, and Web Services) cannot escape this rule. This article outlines the best practices for software development projects. Some industry leaders, such as Scott Ambler, Martin Fowler, Steve McConnell, and Karl wiegers, have written many of these best practices on the Internet. This article also references these best practices. See the related information section at the end of this article. The attached document software development project implementation guide describes the ten most important factors that can help improve the project success rate. Best practices 1. development Process (development process)-it is important to select an appropriate development lifecycle process for the project at hand (the largest cropping item in the third-level custom process of CMMS ), because all other activities are derived from this process. Most modern software development projects adopt a certain Spiral Method Based on the waterfall process. There are several methods to choose from, including Rational Unified Process (RUP), IBM Global Services method, and extreme programming (XP ). (More improved waterfall models and incremental models can be selected.) The process is certainly better than that at all, however, in most cases, process execution is more important than what process is used. The common methods listed above contain guidelines and component templates on how to execute the process. In addition, RUP has a series of books describing the best practices for using RUP [1] [2] [3] [4], even if you do not select, these books are also an excellent source for best practices. It is also possible to add a plug-in to the RUP. Download the WebSphere plug-in for WebSphere J2EE-based projects. (RUP is a good set of incremental Iteration Development methods. The RUP methodology can better change and reflect the dominant role of Architecture Design in the development process, but it is not easy to make good use of it) 2. requirement-collecting requirements to reach an agreement on requirements is the foundation for project success. This does not necessarily mean that all the requirements need to be identified before the architecture is established and the design and coding work is completed, but it is important for the development team to understand what needs to be built. There are two quality requirements: functional and non-functional. A good way to record functional requirements is to use cases ). Note: Use Cases are used for non-object-oriented projects. Armour and Miller have an authoritative book on the subject of use cases [5]. Non-functional requirements describe application performance and system features. Collecting non-functional requirements is important because they have a significant impact on the application architecture, design, and performance. See the list of non-functional requirements on the construxweb site. (Non-functional requirements are as important as functional requirements. It is difficult to collect the non-functional requirements of new products in the early stage. learn more from the experience of other products. Requirement development can adopt the structured analysis method or use case analysis method. The architecture design should also be designed based on the functional and non-functional requirements of the System) 3. Architecture-selecting an appropriate architecture for your application is critical. Several times IBM was asked to review problematic projects and found that the development team did not apply well-known industry architecture best practices. Contacting IBM is a good way to avoid such problems. Our consultants can work side by side with your development team to ensure that the project starts along the right track. It has been proved by experiments that reliable practices are called models, including the classic Gang of Four [6] mode, java mode [7], and EJB Design Mode [8]. Sun corresponds to the core J2EE pattern directory [9]. IBM has also released some best practices and reference application architecture [10]. The introduction says that many projects fail. Through the study of these failed projects, the concept of anti-pattern is put forward. These anti-patterns are of great value because they provide useful information on what went wrong and why. 4. Design-even with a good architecture, the design may be poor. Many applications are either too complex or too simple to design. There are two basic principles: "As simple as possible" and information hiding. For many projects, it is important to use UML for object-oriented analysis and design. There are many books on UML, but we recommend UML User Guide [11] and applying UML and patterns [12]. Reuse is a promising aspect of object-oriented development. Reuse often becomes impossible because additional work is required to create reusable assets. Code reuse is a form of reuse. Of course, there are other types of reuse that can improve efficiency. (Applying UML and patterns this book combines patterns. Many of the best practices and examples of RUP are in it, which is indeed worth recommending) 5. WebSphere Application Design-IBM has extensive knowledge about best practices and design patterns for WebSphere products. Every project is different. Our consultants have rich experience to help you. Even if you only hire our consultants for a short period of time, this return on investment (ROI) is also very large, because you can save costs in future projects. Our experts have also published a large number of articles on this kind of knowledge, including high-performance web site considerations and proprietary computing guidelines. 6. Code construction-although code construction is only a small part of the work of the entire project, it is often the most obvious part. Other equally important tasks include requirements, architecture, analysis, design, and testing. In projects that do not have a development process (the so-called "code plus correction"), these tasks will also be called "programming. Best practices for building code include daily build and smoke testing. Martin Fowler further proposed continuous integration, which also integrates the concepts of unit testing and self-testing code. Note that even if continuous integration and unit testing are popular with XP, you can use these best practices in all types of projects. I suggest using standard frameworks (such as Ant and JUnit) to automate building and testing. (The key aspect of Smoke Testing is to use the most typical test cases to test the most typical possible applications and processes. JUnit and nuunit The automation of smoke testing can be ensured after the testing framework. The concept of continuous integration is very important. The most important purpose of continuous integration is to discover and solve problems as soon as possible) 7. Peer Review-it is important to review others' work. Experience has proved that this approach can eliminate problems early, and review and testing are equally effective, even more effective than testing. Any component in the development process needs to be reviewed, including planning, requirements, architecture, design, code, and test case ). Karl wiegers's article seven deadly sins of software reviews illustrates the correct way to perform peer-to-peer reviews. Peer review helps improve software quality at the fastest speed. 8. Test-the test cannot be postponed or omitted even if the schedule is tight. Testing is an essential part of software development to be planned. Early testing is also important; this means that the test cases should be arranged before coding starts, and the development of the test cases should be carried out simultaneously with the design and coding of the application. There are also many existing test modes. 9. Performance Testing-testing is usually the last step to check application defects. It is labor-intensive and generally only checks for coding defects. Defects in architecture and design may be missed. One way to check for architecture defects is to simulate load testing for an application before it is deployed, and to handle it before the performance problem actually becomes a problem. (Most of the problems exposed by performance testing are due to the insufficient consideration of non-functional requirements in architecture design) 10. Configuration Management-configuration management involves understanding the status of all components that make up your system or project, managing the status of these components, and releasing different versions of the system. Configuration Management has more content than individual source code control systems (such as rational clearcase. There are also best practices and modes for configuration management [13]. 11. Quality and defect management-it is important to establish quality priorities and release standards for the project so that a plan can be developed to help the development team develop high-quality software. When coding and testing projects, the appearance and correction ratio of defects helps to Measure code maturity. It is also important to use the defect tracking system linked to the source code control management system. For example, a project using Rational clearcase can also use Rational ClearQuest. With defect tracking, you can measure a project (gauge) when preparing a release project ). (Small projects can use some open-source free defect management functions, such as bug tracker) 12. Deployment-deployment is the final stage of application release to users. If your project has taken this step-congratulations! However, errors may still occur. You need to develop a deployment plan, and you can use the deployment list on the Construx web site. (Hardware environment, software environment, deployment methods and steps) 13. system operations and support-new applications cannot be deployed and supported without an operation department. The scope of support is critical for answering and solving user problems. To alleviate the problem flow, the application defect tracking system introduces the support problem database. 14. data migration-most applications are not brand new, but existing applications that are improved or rewritten. Migrating data from an existing data source is usually a relatively large project. This is not what Junior programmers can do. It is as important as new applications. Generally, new applications have better business rules and higher data quality. Improving data quality is a complex topic and beyond the scope of this article. 15. Project Management-project management is the key to project success. Many other best practices described in this article are related to project management. Outstanding Project Managers already know these existing best practices. The recommended authoritative project management book is rapid development [14] written by Steve McConnell. If you take into account the number of other lists and techniques of project management, you will be surprised that there are so many project managers who do not know these skills, in addition, I did not learn from previous projects. For example, "if there is no plan, it means that the plan will fail." One way to manage difficult projects is to use timeboxing ). 16. success-you can use the Capability Maturity Model (CMM) of the industry-standard software Capability Maturity Model at the Software Engineering Institute at Carnegie Mellon University) to measure your development process. Most projects are in level 1 (Elementary ). If you follow the best practices described above and the accompanying articles, the software development project implementation guide, and the execution in, you can develop more mature software to make the project successful. (Can the Software Capability Maturity and project success be directly classified ?) Conclusion This article provides a series of best practices to help improve the success rate of software development projects. By following these best practices, your project will be more likely to succeed. Note: The red part is added to the Mythical Man-moon. |