Talking about enterprise application software development projects - experience and lessons of a PRM system implementation: This article taken from the song Junsheng: IBM DW China May 20, 2003 the Japanese to a PRM project as an example, discusses the current domestic software development companies In software development, especially in the development of enterprise application system projects, the problems and how to use agile software development methods. I. Project and company background The project is a PRM (Partner Relationship Management) system that provides order management and other auxiliary functions for the world's famous fast consumer goods brands in mainland China. The system is originally based on PHP implementation, has been run for nearly 2 years, but due to system function issues, the system needs to be re-developed, and new systems are implemented based on J2EE framework. Project expectations: Project start time: July 1, 2002 Expected delivery time: September 1, 2002 Project Amount: 700,000 RMB Project Developers are Asian leading e-commerce solution suppliers, projects in J2EE architecture There is a wealth of experience in implementation, combined with RUP and Web Software Engineering forms its own e-commerce project implementation methodology, and successfully implemented in multiple projects. 2. Project implementation projects due to customer budget, the original soft, hardware system continues to use, and the application system platform also uses open source projects. The system is as follows: Hardware: Operating system: Solaris frequency: 400M memory: 1G hard drive: 20G application platform: web server: Apache 1.3.21 Application Server: Tomcat 4.0.6 Database Server: Oracle 8.1.7 project personnel Configuration and Project Size: Project Team Project Manager: 1 Technical Manager: 1 (Part) Account Manager: 1 Developer: 4 Tester: 2 HTML Personnel: 1 (Part) Project Scale USE Case: 32 Code Route: 65000 JSP Page : 198 Real implementation: Start Date: 2002/7/1 Delivery Date: 2002/9/8 Receipt Date: 2003/5/8 Maintenance Time: 230 Time Current Project Profit: 20000 At present, the project is still due to performance issues Without acceptance, the maintenance time is growing, there is still about 300,000 last payment without receiving; more serious is that the current project developer is bidding another fast consumer product industry's partners have a lot of customers. Overlap, therefore, for the tender of potential projects, there is a certain impact. Third, experience and lesson can be seen from the scale of the project, the time of the project is still more tense; on the other hand, project delivery is completed before the date of the contract, and has passed all function tests. From a sense, the development of the project has achieved a certain success. 3.1 Experience Before the project development, project developers have implemented some of the best practices of agile software development methods represented by XP, and have achieved great success through other projects.
Therefore, during the implementation of the project, the project developer continues to use XP partial practice and recommendation practices in other software development methods [1] [2]: A day: during the project implementation, development The team has to participate in a meeting last for 15 minutes, hosted by the project manager, listening to the progress of each member, and adjusting the progress and resources based on progress. Since the meeting is carried out every day, PM is easy to get real projects from it - "Eat on the carpet" [4], thus has better control over the risks. Cross review: The project team originally wanted to take "pair programming" in the initial time, but did not get physical and managed support, so only the cross-audit can be taken. Demand acquisition: PM and a developer familiar with the original system to obtain demand acquisition and writing of SRS (Software Requirement Specification). Technical manager and other developers have reviewed the review. Analysis and Design: The design of the system framework is designed by a developer. Other personnel is reviewed; during the system frame design, since the system removes other parts other than the order processing, the other modules are assigned to the developer. And the core partial intersection with technical manager analysis and design. The developer has finished the analysis and design after every iterative cycle, and each 2 people are reviewed. Encoding: Before you get off work, 2 people, REVIEW for the other party, and find problems in time. When the code REVIEW, the inspection of the syntax and rules is conducted through the tool of Check Style; the developer will review the focus of functionality and performance optimization. Test: After the demand document formation, two testers distribute the Test Case of the allocation module; while the two cruses the other party's modules and update documents when specific testing. In all stages of the system development verification, there are check letters, detailed information, please check the reference [3]. Test first: The important role of testing in software development has received more and more attention, but due to the influence of custom forces and the unfamiliarity of "Test-Driven Development", the development team does not implement a full-meaning test. First. For the core class design process of the system frame, the project team has taken TDD to develop. In subsequent system development, each developer first completed a function test list before developing, and the main business logic and associated logic to be completed are listed, and the tester is submitted. Developers need to ensure all options in the Function List prior to integrated testing. After each developer's module is completed and passed through the personal function test, the tester is integrated, and the test script is written and recorded by the AutoTeration Robot. Before you get off work, the tester will start the test tool and return to the regression test. The test report is submitted to the PM and the Technical Manager on the second day and BUG is submitted to the BUG TRAC QUEST, and BUG is performed by the PM. Each developer needs to correct the bug allocated within the previous iteration before completing the next iterative period. Continuous integration: On the basis of testing, develop a group of an average of the completed modules and the future system is integrated.
Integrated by specialized personnel, the developer will be performed later in the source CHECK IN to the source control system (ClearCase), after the deployment app is completed, and notify the tester for integrated testing. Small step: Project has a special test and publish server, and an integrated system is running and tested every day. Since there is no on-site customer, for the published system, it is reviewed by the "customer domain expert" (this project is to act as this role as this role). His opinions and discovery of the system, after reviewing the PM and Technical Managers, enter ClearQuest, allocated to the developer. Because the project pays attention to the inside of the organization and communicates and communicates with customers, the practice of many agile software development processes is used, and the project is delivered as scheduled. 3.2 Lesson projects After delivery, the original two order seasons did not have functional and performance issues. However, due to the provisions of the data migration in the contract, after the project delivery in February, after the project developers introduced the data in the old application system into the new system, in the next large order season, there is a continuous performance problem. After the code modification and hardware environment improve, system performance is currently achieved. From the increasing delay in the date of the project acceptance, we can see that there are still many places to do enough, for example: system secondary development effect: "Second system effect" is Brooks proposed in "Moon Myth" A common problem, in general, the second system will tend to over-design [4]. For this project, there is no such thing, but there is another situation: in the old system, for the order information and product information, no matter how small (the system page shows up to thousands of records), Displayed in a page. This is acceptable for PHPs that do not have a clear hierarchy, which calls Database records directly in Script. However, in the design of the new system, the customer puts forward the problem of considering system user habits, and simultaneously moves the page design of the old system; at the same time, in the architecture design, there is no sufficient consideration for this page displaying a lot of data. For later performance issues, I buried a film. Lessons 1: There is no impact of the new platform, and the function of moving the system and the page design. Non-functional demand: Mainly described in the project contract is the system functionality, without non-functional demand; at the same time, it is solved in demand, and there is no clear understanding of non-functional needs such as performance indicators. The main reason is that there is no experience in the development of large-scale business system before the project developers, and there is not enough attention to non-functional demand; at the same time, there is no testing for system load and performance. Therefore, after the project delivery, the amount of data has grown due to the amount of data of the old system, at the same time, there is a large number of concurrent users to visit in the autumn order: the database deadlock; a large amount of data The calculation and display page speed is slow, the page is 5 ~ 10 minutes to fully display; the above two cases are impossible in a small amount of load cell testing and integrated testing. Lessons 2: For enterprise applications, especially business systems, there is no non-functional demand such as load, performance.
Efficiency and design: In J2EE, the idea of many design patterns has been successfully used, providing a good frame for system development. However, in the architecture design of the project, in addition to the problem of maintainability, reusability, etc., it is necessary to consider the problem of code execution efficiency [5]. With the development of computer hardware technology, "Moore Law" has been verified by repeated verification, and the price of system hardware is gradually decreasing. For many projects using J2EE architecture or Java technology, solutions to performance and efficiency issues are to increase hardware input. In fact, the gap between the advantages and inferior algorithms during the software development process cannot be balanced by hardware. During the system maintenance, the project takes a lot of statements that have an impact on performance; at the same time, in the frame design, especially the database operation method, use the Cache principle to a certain extent, to a certain extent, the performance problem is solved to a certain extent. Lessons 3: System frame design only considers object-oriented and maintainability, no weighing between perfect design and high efficiency code. Database design: Java is a purely object-oriented language, using J2EE development project, also emphasizes the analysis of OOAD, first have objects, and then there is a database design. The role of DBA in the project has not been important in traditional structural programming. The actual situation is far apart: most of the business system, if you want to optimize the system's performance, optimize the database layer or SQL statement is a key step. For this PRM system, there is no development in the design of DBA in the design of the database; after performance issues, customers have added 512M memory, and they have not requested DBA to adjust the parameters of Oracle, resulting in Very large resource waste. During the project maintenance, relying on DBA help, developers have adjusted for database system parameters, indexing, stored procedures, and SQL statements, which have a great role in the improvement of system performance. Lesson 4: In an object-oriented software system building, neglecting the important role of DBA and DBA. Customer participation: In the traditional software development process, in general, after signing the contract, the project is rarely seen before the project is delivered, so that after the system is delivered, the customer complains about a lot of situation; Among the agile software development methods represented by XP, the important role in customers in software development is strengthened. XP is a "live customer" practice, and the customer as a project team, the customer's release plan, There are absolute control rights aspects and priorities. For this PRM project, due to the customer's reasons, it is impossible to adopt a "live customer" practice, but developers' BD is very familiar with the customer, it can be used as a customer representative to participate in the project, so developers will manage the customer manager As a member of the project group. The actual situation is: During the development process, the customer manager did not review how much time it was allocated on the project due to business expansion; and the customer did not spend a lot of time research system before delivery, and there were no many feedback reports. After the performance of the system is delivered, the customer manager and developers have reviewed the system requirements, and there are many reference views. If you enhance the best practice of "live customer" from the beginning, you can find problems very early. Lessons 5: Customers or customer managers are not enough for project participation.