当前位置:首页 >> 信息与通信 >>


Read My Lips: No New Models!1
Karl E. Wiegers
Process Impact 716-377-5110 www.processimpact.com Recently, I had dinner with James Bach, a thoughtful and well-known figure in the software quality industry. At one point, James began to tell me about a new testing model he was developing. I gently interrupted him and offered the opinion that, with a few exceptions, the software industry does not need any more models right now. We don’t need a lot of new formalisms for software development, new design methods, new life cycle approaches, new frameworks for process improvement, or new quality models. What we do need is for practitioners to routinely and effectively apply the techniques defined by our existing models and frameworks. Once we’ve reached the practical limit of these approaches, we can turn to improved models that provide guidance for working in better ways. To be sure, some current approaches may be unworkable, and projects on the bleeding edge of technology, business needs, or development approaches may find current methods inadequate. More sophisticated models may also benefit practitioners who have already pushed current methods to their limits. My sampling of audiences at conferences and training seminars suggests, though, that many organizations are not consistently applying existing approaches for software development excellence. I suggest here several sets of software engineering and management practices that, in my experience, are still not being routinely applied across the industry. The problem is not always a lack of suitable models to help us structure our thinking in these domains. The real problems often include: ? ? ? ? insufficient awareness of current best practices and published standards in software development, management, and quality; inadequate training of practitioners and managers in these established practices; resistance to change, as evidenced by Not Invented Here syndrome and an insistence that “our project is different and those things don’t apply”; and a shortage of discipline, rigor, and available time for individuals to continuously improve their personal software processes by applying a broad spectrum of superior techniques.

This paper was originally published in IEEE Software, September/October 1998. ? 1998 IEEE. Personal use of this material is permitted. However, permission to reprint/republish this material for advertising or promotional purposes or for creating new collective works for resale or redistribution to servers or lists, or to reuse any copyrighted component of this work in other works must be obtained from the IEEE.


Why Create New Models? New approaches to software development and management are promulgated for a variety of reasons. Some organizations have pushed the limits of current approaches and really need a better way. Early adopters like to create and try out new approaches, thereby serving as a valuable test bed for the rest of the industry. Sometimes it’s a matter of packaging old wine (e.g., scenarios) in new bottles (e.g., use cases). Often, frustration with the inability to apply a cumbersome current model in a sensible and practical way leads to the next generation of models in some domain. Other times, new approaches may be developed simply because the ones already available are not being adopted by the practitioner community. If a novel context helps a sound approach find more common acceptance and push our profession forward, that’s progress. Unfortunately, we sometimes find ourselves trying to sell a better mousetrap to people who don’t even realize they have mice. As an example, some 315 software engineering standards are currently available, of which those from the IEEE are perhaps the most widely known in North America.1 However, my informal conference samplings suggest that less than 10% of the audience members have access to the IEEE Software Engineering Standards Collection. It is difficult to conclude the standards are not useful, if you either aren’t aware of their existence or haven’t tried to follow them. Process Improvement A plethora of models have been developed to guide software process improvement programs and process assessments, including the Software Capability Maturity Model (CMM), Trillium, SPICE, Bootstrap, TickIT, and others. Recently, new models have been advanced to address personal and team software processes. Yet, many organizations do not have successful process improvement programs in place today. Many practitioners either have not heard of the CMM, or they hold large misconceptions about it. The Software Engineering Institute (SEI) has engaged in a multi-year effort to revise the CMM, but I don’t think this effort will result in more organizations applying it effectively. Managers and change agents should examine their current process improvement efforts. Are your teams applying any model effectively? Are they being sensible, not dogmatic, about implementing improvements? Are they fixing current problems and addressing risk areas, rather than chasing maturity levels and certifications? And, ultimately, are practitioners working in new, better ways (the bottom line in process improvement)? If the answers to these questions are “no,” the solution is not to concoct yet another process improvement model. Instead, those of us in the process improvement business need to educate our clients and cohorts on the intent and application of tools like the CMM. Using an established framework to guide your process assessment and improvement activities is highly valuable. But almost any of the existing choices will do. We need to be flexible and nondogmatic in our interpretation of these models. Use them as guidebooks of structured wisdom that can help us achieve our objectives of improved business and technical success through process improvement. Conforming to the model’s expectations should not become an end unto itself. If you try all these approaches and still find that none of the existing improvement models fits your needs, perhaps then we should search for new and innovative approaches.

Read My Lips: No New Models!

Page 2

Testing A software quality magazine recently published a series of columns delineating an elaborate model for system testing. Several “testing maturity models” have been proposed by leaders in the software quality industry. While some very large, very regimented projects may actually apply these complex testing models, I think the real testing issues are closer to home. Think about the developers in your organization who also do some testing. Do they have testing books on their desks? (My informal surveys of conference attendees suggests not.) Have they been trained in testing? (Ditto.) Do they write test plans? Are their tests documented and repeatable? Do they understand basic testing concepts? Can they describe the state of a program after testing is complete? If practitioners cannot answer such questions in the affirmative, a better testing model probably won’t help them. Some training on testing practices and concepts, test case design and documentation, and the use of automated testing tools will do more good than a new testing model. Experienced testers can enhance their effectiveness by following the dictates of a rigorous testing model. However, formulating ever more elaborate models of the testing process will do little to improve the way average software developers test their products. Design Methods A multitude of design methods have been hawked over the past decades. First we went through the structured methods revolution, which brought us useful techniques such as data flow modeling, entity-relationship diagrams, state-transition diagrams, Warnier-Orr diagrams, and others. This was followed by a series of object-oriented approaches, including CRC cards, ObjectModeling Technique, Unified Modeling Language, and various other methods named after various methodologists. Learning to model software systems through application of structured techniques was a turning point in my software development career, as I began to depict, understand, and improve systems in a disciplined way before constructing them. I certainly do not suggest that analysis and design modeling is anything less than a key element of solid systems development. But how does your team really do design today? Do team members spend much effort at all between requirements and code? Are their designs diagrammed in any formal way? Has the group standardized on the design notations to use? Do they use automated tools to draw design models? Are the designs improved through iteration? If not, will the next design methodology to come along get them to contemplate design before cutting code? A lack of suitable methods and modeling techniques is probably not the bottleneck to getting more development teams to perform rigorous design. More likely, it is the ability to understand any design approach well enough to make it useful, the willingness to invest in necessary training and tools, and an appreciation that improving design solutions through iteration is an effective route to higher quality, more robust systems. Inspection An industry guru once told me that formal inspections of software work products are being practiced by about 50% of software groups; several of my fellow consultants agree that 20% is a more likely figure. Many practitioners do not understand the differences between informal design reviews or code walkthroughs, and formal inspections. Reviews to communicate information are not differentiated from those intended to find defects. Three major books on inspections describe similar approaches, none in less than 350 pages. Purists debate the effectiveness of various
Read My Lips: No New Models! Page 3

inspection steps and methods, and new inspection methods are touted as superior with little empirical evidence. But does your team routinely inspect software work products of all types? Are they trained in inspections and reviews? Do your inspections actually find defects? Do you collect and use inspection metrics? Are inspections part of your software engineering culture? If not, is it because you’re waiting for a better inspection method to come along? Despite decades of strongly positive experience and recognition as an industry best practice, formal inspection remains an enigma to many software professionals.2 In most cases, new models for inspection are not required. Instead, let’s start with education about the process and benefits of inspections, and some guidance about how and when to use them. Pragmatic, readable books that help developers apply effective inspections as part of their standard software practice will go farther than debates over nuances of approach in one inspection variant or another. Risk Management Risk management is becoming appreciated as a major component of effective software project management and an industry best practice.2 The SEI has developed elaborate approaches for multi-day project risk assessments, a detailed taxonomy of project risks, models for Software Risk Evaluation, Continuous Risk Management, and Team Risk Management, and a Risk Management Map.3,4 But how do your projects perform risk management today? Do your project plans contain even a simple list of risks? If yes, have they been analyzed for probability and impact? If yes, do you have plans for mitigating the most severe? If yes, do you execute and track progress of those plans? If yes, are those plans effective? If yes, do you record the risk management lessons learned in a database for the benefit of future projects? If the answers to these questions are “no,” how badly do you need a different risk management model? My samplings suggest that many projects do not yet practice systematic risk management. Complex models that define comprehensive approaches to risk management will not address this shortcoming, although they can help those who already perform risk management reach the next level of sophistication. More projects, though, need to begin simply documenting their major risks and mitigation strategies, taking positive actions to control them, and tracking progress on risk control. Risk management should become a routine topic of discussion at software development conferences, not just those dealing with process improvement and project management. Metrics Several metrics leaders have suggested “dashboards” or “control panels” of key indicators that software organizations and projects should use to track status. We’re encouraged to develop “balanced scorecards” to monitor our projects and organizations, and yet religious wars are waged over precisely what to measure. Literally hundreds of aspects of software products, processes, and projects can be measured, and somewhere there’s probably a model that includes each of them. But what’s the state of software measurement where you work? Does your organization measure anything about its projects, products, and processes? Are you collecting reliable metrics in multiple areas? Do you use the data to understand, to take corrective actions, and to predict? Does your team have a healthy “measurement culture”? If not, will a better metrics model really get you started?
Read My Lips: No New Models! Page 4

Elaborate measurement models are of little help to groups that currently collect little data about their projects, lack a basic understanding of software metrics, or have a culture that avoids measurement because of a fear of data misuse. Such organizations need basic education in software measurement, simple tools to help them get started, and clear ties between their metrics and their business objectives. Less obtrusive ways to collect software measurements that are better integrated with the development process could reduce some of the barriers. Certainly, there are deficiencies in current metrics, such as those dealing with the sizes of software products, and collecting software metrics is often tedious. But I do not believe a lack of adequate measurement models is the limiting factor that prevents organizations from beginning to quantify certain aspects of the software work they do. Practice What We Preach I don’t think models are bad. I have found models that help structure my thinking and provide a framework for making sensible decisions to be extremely valuable. My point is that the software industry is not fully exploiting the models, standards, and frameworks we already have available. Before we invent new models, let’s help developers, managers, and quality professionals consistently and effectively apply the practices embodied in those that currently exist. As educators, let’s incorporate a solid foundation of software industry best practices, along with guidance about how to put them into action, into our curricula. As managers, let’s emphasize continuous learning in our organizations and reward those who apply better ways of working. As practitioners, let’s read the literature and commit to improving our personal software processes through effective application of what we’ve learned from others. And as industry leaders, let’s not clutter the market with Yet Another Model until we’re convinced the ones we have are truly not getting the job done. Acknowledgments I am grateful for the insightful comments made by reviewers James Bach, Johanna Rothman, Wolfgang Strigel, and Doris Sturzenberger. References 1. S. Magee and L.L. Tripp, Guide to Software Engineering Standards and Specifications, Artech House, Boston, Mass., 1997. 2. N. Brown, “Industrial-Strength Management Strategies,” IEEE Software, Vol. 13, No. 4, July 1996, pp. 94-103. 3. R.P. Higuera and Y.Y. Haimes, “Software Risk Management,” Technical Report CMU/SEI96-TR-012, Software Engineering Insitute, 1996. 4. E.M. Hall, Managing Risk: Methods for Software Systems Development, Addison-Wesley, Reading, Mass., 1998.

Read My Lips: No New Models!

Page 5

知识讲解 no与not的区别_图文.doc
知识讲解 no与not的区别 - no 与 not 的区别,no one 与 none 区别 答:no 与 not 在初中英语课本中出现的频率非常高,下面就浅析一下它们的用法与区别: 一...
no和none的用法 - no 和 none 的用法 no 是形容词,只能作定语表示,意思是 “没有” ,修饰可数名词(单数或复数)或不可数名词。 如: There is no time lef...
no和not的区别 - 一、No 的用法 1.No(没有)是形容词,常位于名词前,用 来否定这个名词。有时 no 否定名词时,可理解为这个名词的反 义词,意思是“并非”...
none,no one,nobody,nothing区别.doc
none 与 no one / nobody 及 nothing 区别 no one / nobody 常用来指人,作主语时谓语动词要用单数形式; nothing 常用来指物,作主语时谓语动词也要用单数...
分析no与not的区别 - 分析 no 与 not 的区别 最近 Elva 老师经常出入“小升初英语讨论区”,给同学们带来了一些语法小知识,比如 no 与 not 的区别: no 可...
no_one_nobody_none_的区别 - none/nobody (no, one)/nothing 辨析词语辨析 none 既可指人又可指物,意为“没有任何人或物;一个人也没有” ,后...
有关NO2,NO和O2反应的有关计算 - 学辅教育 成功就是每天进步一点点 有关 NO2,NO 和 O2 反应的有关计算 一.原理:因为这一反应过程是一个多步反应过程, ...
wh-+ever与_no_matter+wh-用法归纳 - wh- + ever 与no matter + wh用法归纳 1.wh- + ever 与no matter + wh- 的语义含...
Not better than与no better than的区别.doc
Not better than与no better than的区别_英语学习_外语学习_教育专区。Not better than 与 no better than 的区别 在形容词比较级前面可以加上 not 或 no ,但...
ip classless 和 no ip classless的作用.pdf
ip classless 和 no ip classless的作用 - 以实力讲
no less than 和 no more than 的区别.doc
no less than 和 no more than 的区别_天文/地理_自然科学_专业资料。no less than ,no more than,not less than ,not more than 的区别 ...
no one与none的用法区别与练习_图文.doc
no one与none的用法区别与练习_英语_高中教育_教育专区。no one /nobody 与none 的用法区别与练习,准确,针对性强 no one, nobody 与 none 的用法区别 1. ...
No_Drugs_Reading课件_高一英语_英语_高中教育_教育专区。Book2_Module2_No_Drugs_Reading课件 Jiaozhou No.1 High School opium poppies (罂粟) opium poppies (...
no more than 和not more than 的区别.pdf
no more than 和not more than 的区别_英语学习_外语学习_教育专区。简明扼要例句辨析了no more than 和 not more than 的词义。 ...
LOT No.管理原则.doc
LOT No.管理原则_化学_自然科学_专业资料。LOT No.管理,ISO管理,追溯性管理 LOT No.管理方法 制/修订记录 序号 1 制/修订 部门 品保部 版本/ 次 A0 修...
no longer 与 no more 用法区别.txt
no longer 与 no more 用法区别_英语学习_外语学习_教育专区。英语 no longer 与 no more 用法区别 1. Excuse me, is this Mr Brown's office? I'm...
no such还是no such a .doc
no such还是no such a - no such 还是 no such
英语作文no_pain_no_gain - No Pains,No Gains
no one, nobody 与 none 的用法区别.doc
no one, nobody 与 none 的用法区别英语学习 英语语法学习 英语词汇学习 http://www.9aixuexi.com/list-1.html one=nobody,两者均只能指人,不能指物;用作...
No one, none与nothing的区别.doc
No one, none与nothing的区别 - No one, none 与 nothing 的区别 1.no one 1) 只能指人,但不具体指什么人。不与 of 连用; 2)谓语动词用单...