Lin Xing (Iamlinx@21cn.com) Reprinted from IBM DeveloperWorks in March 2004
The importance of software quality is self-evident, but when everyone realizes its importance, few people can clearly describe how software quality can be improved. The purpose of the software quality framework is to propose prototypes for evaluation to help us analyze whether a method and technology can improve software quality. This series of articles are built in day and day, test-driven development, establish a core framework, and assembling large-scale software architecture to conduct in-depth analysis.
What is a high quality software? Before discussing the software quality prototype, let us answer the first question first. A software is considered to be excellent quality, not because it has received a provincial or ministerial award, but its intrinsic has such a feature:
Meet the needs of users. This is the most important point. If a software cannot meet the needs of users, the design is better, and the technology adopted is advanced, and there is no meaning. So this is very simple, but it is the first evaluation standard for software quality. Reasonable progress, cost, functional relationship. All management in software development is aware of these elements in the articles, how to develop specific functions in specific costs, at a specific time. There is a subtle balance between the three. In Planning XP book, there is a chapter to discuss them. During a high-quality software development, project members must objectively treat these three factors, and make the three balances through effective planning, management, control, so that the top balance is guaranteed. With scalability and flexibility, it is possible to adapt to a certain degree of demand variation. Today's society has become a very fast design. Change will impact software, so a quality and excellent software should be able to adapt to this change to some extent, and maintain the stability of the software. Can effectively process exceptions. People who have written software know that the workload of implementing the main function is not large, and the real workload is dealing with various exceptions. Therefore, if a software can be strong enough, enough robust, it is possible to withstand the impact of various illegal conditions. This software is high quality. Maintain cost and performance balance. Performance is often derived from customer non-functional needs and is an important evaluation factor in software quality. But performance problems exist anywhere, so you need to look at it. For example, a good code of performance may be readable, this needs to be balanced. If this code's performance is the key to the entire software, then take high performance and abandon readability, and then take readability and discard high performance. An excellent software can maintain balance between cost and performance. Can sustainable development. Few software organizations only develop a software, so an excellent software can form a knowledge precipitation after the development is completed, contribute to the long-term development of software organizations. This is an excellent software that should be available.
Composition of software quality framework
The software quality framework is not theory, but an application of excellent software development ideas is a valid management practice of software development process. It is based on agile methodology and integrates advanced software development technology into it. You may have heard that I have learned, I have learned, I have tried various software technology, but lacks a unified overall understanding. Therefore, the purpose of the software quality framework is to further organize the ideas that exist in your mind, showing a full image (BIG PICTURE) in front of you. Software quality framework is applied, so it will not involve too many theories, but it is based on theory, so, in places that need theoretical support, we will simply describe the theory and give the necessary links for interested Readers are further read.
The software quality framework is not complicated. It consists of several parts, the first part is provided, indicating the scope of application of the software framework, as well as suitable environments, and methodology, no pana four seas, the methodology, Software quality A framework also requires a context environment. The second part is values, values illustrate the value emphasized in the software quality framework. In the structure and practice of the software framework, it will fully represent the value of our definition. The third part is the structure. The structure defines the components of the software quality framework and the relationship between the software quality framework and the development process. The fourth part is the largest part of the ink in the article, that is, excellent practices. Excellent practice through specific, actual analysis, example, and in-depth setup of the value and structure of the software quality framework. In the remaining spaces in this article, the first three parts will be elaborated and the practice of software quality development is simple description. In the remaining chapters, it will be detailed for these practices.
Prerequisite platform for software quality framework: Since the practice of software quality frameworks will involve specific technology and code, we first define platforms for the software quality framework. The software quality framework will run on the J2EE platform, using object analysis techniques (not necessarily object-oriented technology, we can use data-centric technology).
Organizational Premise: The implementation of the software quality framework needs to be put, it is necessary to pay, the software quality framework is not the study, but is executed. In one organization, it is necessary to evaluate how much investment needs to be applied, and how much help is the current development process. In general, the larger the scale of the organization, the more complex the development process and the product, the more suitable for the use of software quality frameworks.
Methodology Premise: In agile methodology, there are two different perspectives for rules and order. One is emphasizing rules and order, represented by XP. It has a request for the code; the other is not so emphasized. Adaptive software is developed as a representative, it does not require the specific behavior of the programmer. The software quality framework uses the first point of view that requires rigorous rules and order in the organization.
The value of the software quality frame is clearly concrete: the management of the software must be clear and specific. Software development is engineering, also art, requires close collaboration and communication, any vague instructions may cause errors in software development, so in software development, any instruction should be relatively clear. Why is it a relative? It is relative to the cost, the more clear the command, the higher the cost. For example, you can write a very specific specific specific document, but you need to pay the cost of making and maintain. So our clearness is a characteristic that considers cost premise.
It is clear that it should be considered from the consolidation. How to understand? For example, the user story in XP is very incorrect, and it is not clear, and it is not specific. However, throughout the development cycle, there will be multiple means of iteration, testing, and on-site users, so that the user story is clearly specifically, so it does not violate our values from the whole, it does not violate our values. Product quality is a system engineering, not only the work of the QA department,. This truth applies to the manufacturing industry and is also suitable for software development.
Fault tolerance: Software development is the work of people, people are unable to avoid mistakes. Therefore, it is allowed to make mistakes in the software quality framework. Because it is not mistaken, it is a night. Even if you do this, the mandatory provision cannot be avoided, but will cause other problems, such as concealing an error, or an additional cost caused by concealing errors. Therefore, the correct attitude is allowed to occur, and set a system of monitoring, management, feedback, and modifying the wrong system.
Specification: In the premise, we have mentioned that the norm is the basic attitude of the software quality framework. Therefore, it emphasizes the specification in the software quality framework and uses the specification to push the operation of the framework.
Test: The software quality framework emphasizes the test, and the test is the only way to ensure quality. Test should be as much as possible, as far as possible, the test results should feed back as fast as possible. This is the basic attitude of the software quality framework for testing. Test is a comprehensive, all workpieces in software development, requires the corresponding test workpiece. This is based on a simple concept. If you can't develop a completed standard for your work, how do you do your job?
Software quality frame structure
The figure above shows the structure of the software quality framework. In structure, the technical architecture and management architecture. The software quality frame is neither methodology, nor a software, more like a combination of both. The integration of technical architecture and management architecture reflects this feature. The software quality framework does not care about the efficiency of a single developer, which is concerned about the overall efficiency of the development team. Therefore, the meaning of the management architecture in the framework is that it defines a software management method that can manage developers and other work. From this point of view, its role and software engineering methodology are the same. However, in reality we find that software organizations will not stop before it is difficult to move towards software processes. One of the main reasons is that the production efficiency is lowered during the introduction of methodology, but causes the suspicion and dissatisfaction of organizational members.
Therefore, in addition to the management architecture, the software quality framework also provides a technical architecture that is aiming to define how to apply software technology involved in your organization, as well as methods of managing software technology. Technical architecture is specific code, compared to methodology, it is more specific, more easily understood by developers. The purpose of the technical architecture is to carry out technical accumulation, and on the other hand, it is also for managing architecture services.
The next layer of the technical architecture and management architecture is a support frame. The support frame includes code, components, documentation, with the aim of providing the underlying support for technical architecture and management architecture.
The topmost of the structure is the business architecture. This part is different for any software organization because the business of different software organizations is different. The purpose of the business architecture is to model and abstrafits business, extracting reusable parts to improve productivity of software organizations. This section does not involve this part.
Excellent practice of software quality frameworks A development team should improve efficiency, which requires what elements in current management activities can be improved: how to automate some transactional operations, saving manpower; how to find better ways Let the development process is more reasonable, pay more attention to the quality of the software; how to spread excellent ideas in the team, let the team members continue to learn and enter, spontaneously improve the process. These beautiful wishes are almost all methodology and all kinds of certification common voice, but it is too difficult to do it. In our article, some excellent practices are proposed, and excellent practices are from some new ideas and new theories in the software development community, which can achieve positive roles for the above desire. Incorporation of these practices is not an easy process in the organization, but they are really effective. Whether in cost control, it is still improved in quality.
Day creation: An organization should have a valid workflow, which can guide software development. This process should be specific and operable. An arbitrary plan and the progress never followed are never a valid workflow. Day creation practice puts forward a method of fine management of the development process, which is the basis for quantifying software management. With day creation, you will find a very easy thing to monitor the development and progress of the plan.
Test drive development: The root of software is coming from test, the test is done, and the software quality will be good. There is no doubt about this. The key to the problem is how to do tests to ensure that the investment of tests can bring effective improvement in software quality. Test driver development is to solve this problem. It is not a complete methodology that can be fused with any development process. Test driver development can not only improve the test effect, but also improve software design.
Establish a core framework: The framework is a software with high reused, which determines an effective means that it is ideal for intensive knowledge of software organizations. Traditional knowledge accumulation methods are documentation, but documents are prone to generation, developers often don't want to read and understand documents. The framework provides a comprehensive means including documents, models, and code. More important, more importantly, developers must use frameworks in daily work, which makes them familiar with knowledge in the framework and improves the framework according to the needs of work. Component programming: Effective organization is effective division of labor. The physical activity is easy to divide, and mental labor is more difficult, and software development seems to be more difficult. Therefore, we have used our best to use the coarse granularity of functional blocks. Component programming uses a more finely divided manner, and serves as a compact between components, not only defines the relationship between components and components, but also stipulates that component developers, component users, and component testers. obligation. Thus, the distribution, management, QA, etc. of software development work can be performed.
The above outstanding practices seem to have not much relationship, and their proposals are mostly different. But a little is common, that is, they can actively role in the improvement of software quality. In addition, they provide a clear implementation of the implementation of the software quality framework structure. From the perspective of software structure, day creation and test driver development seem to be biased towards the management architecture, and the establishment of core frameworks and component programming are biased toward technology architectures. In fact, they all contain technical architectures, also including management architectures, and interrelated between each other. For example, as component programming After reasonable partial components, you need an effective core framework to integrate components. Both test drive development methods are required to ensure quality, while day creation will be performed in units of components. The creation of the day provides valid data for progress estimation.
With the development of software design technology, new practices will appear and replace the old practice. Therefore, the above practices will be lost, and it is certain that the above practices and specific technologies have no direct relationship, more focused on development ideas, so their vitality will be very long. With the emergence of new technologies, they are more likely to integrate new technologies such as themselves, showing a new form. For example, a future likelihood is the popularity of UML2.0 and MDA technology, and several practices from code from code to design as core, and another possibility is AOP represented by aspectj. Technology's popularity and metadata mechanisms introduced in J2SE 1.5, as component programming will use Aspect as one of the components, and test drive development will also add relevant contents of the test aspect, and will also increase the corresponding processing AOP in day. A step of.
In the next few articles, we will conduct in-depth analysis for these practices.
About the author Lin Xing, is committed to studying agile theory and excellent software design ideas, and applies it to domestic software organizations. You can contact him through IAMLINX@21cn.com, you can also access http://www-900.ibm.com/developerworks/cn/linux/software_engineering/l-frmwk/www.qca.cn and http: // www -900.ibm.com/developerWorks/cn/linux/software_engineering/l-frmwk/www.aglichina.org to get more information.