本书从管理和技术两个角度,以案例方式阐述了软件项目中与需求分析相关的各种问题,力图让读者能够对需求分析的框架体系和过程形成较为清晰的认识,在实践中准确了解客户的业务需求,正确调配各种资源,更加准确地把握项目的方向,保证整个项目的成功。\r\n\r\n 本书内容丰富翔实,实用性强,适合作为高等学校本科生和研究生的软件工程类教材,同时也可供软件企业对开发和项目管理人员进行培训使用。本书原版配有光盘,包括书中出现的部分插图和模板文件,读者如有需要,请与我社联系(电话:010-62622941)。\r\n
\r\n
List of Figures xi \r\n\r\n Foreword xv \r\n\r\n Preface xvii \r\n\r\n Acknowledgments xxiii \r\n\r\n PART I BACKGROUND 1 \r\n\r\n CHAPTER 1 INTRODUCTION 3 \r\n\r\n The State of the Industry Today 3 \r\n\r\n The Need to Use Effective Requirements Practices 6 \r\n\r\n The Requirements Process 7 \r\n\r\n What Is a Process? 7 \r\n\r\n What Is the Requirements Process? 9 \r\n\r\n Benefits of a Process Approach 11 \r\n\r\n Pitfalls of Using a Process Approach 12 \r\n\r\n About This Book 14 \r\n\r\n Roles 14 \r\n\r\n Key Terms 14 \r\n\r\n A Requirements Taxonomy 16 \r\n\r\n Systems and Software Engineers 17 \r\n\r\n Intended Audience 17 \r\n\r\n Recommended Mind-set for Readers of This Book 18 \r\n\r\n The 'Team,' the 'Project,' and the 'Project Manager' 18 \r\n\r\n Footnotes in This Book 19 \r\n\r\n Key References and Suggested Readings 19 \r\n\r\n Upcoming Topics 19 \r\n\r\n Summary 20 \r\n\r\n Key References and Suggested Readings 20 \r\n\r\n PART II RECOMMENDED REQUIREMENTS \r\n\r\n PRACTICES 25 \r\n\r\n CHAPTER 2 COMMIT TO THE APPROACH 27 \r\n\r\n What Do We Mean by Commitment? 28 \r\n\r\n How Can Commitment Be Attained and Maintained? 30 \r\n\r\n Recommendations to Assist in Evolving the Partnering Approach 37 \r\n\r\n Involve Managers with Authority in the Partnering Workshop 38 \r\n\r\n Develop a Requirements Plan 38 \r\n\r\n Utilize a Set of Mechanisms, Methods, Techniques, and Tools 40 \r\n\r\n Work Toward a Quality Culture 40 \r\n\r\n Summary 42 \r\n\r\n Key References and Suggested Readings 42 \r\n\r\n CHAPTER 3 ESTABLISH AND UTILIZE A JOINT \r\n\r\n TEAM RESPONSIBLE FOR THE \r\n\r\n REQUIREMENTS 45 \r\n\r\n What Is a'Joint Team'? 46 \r\n\r\n What Does the Joint Team Do? 47 \r\n\r\n How Is the Joint Team Created? 48 \r\n\r\n Who Should Be on the Joint Team? 48 \r\n\r\n How Often Should the Joint Team Meet? 49 \r\n\r\n What Metrics Need to Be Created and Tracked? 49 \r\n\r\n Calculating Return on Investment (ROI) from Using Effective \r\n\r\n Requirements Practices 50 \r\n\r\n Customer and Supplier Roles 50 \r\n\r\n Summary 53 \r\n\r\n Key References and Suggested Readings 54 \r\n\r\n CHAPTER 4 DEFINE THE REAL CUSTOMER NEEDS 57 \r\n\r\n Recommendations to Facilitate Getting to the Real Requirements 59 \r\n\r\n Invest More in the Requirements Process 60 \r\n\r\n Train PMs to Pay More Attention to the Requirements Process 62 \r\n\r\n Identify a Project Champion 63 \r\n\r\n Define the Project Vision and Scope 64 \r\n\r\n Identify a Requirements Engineer and Utilize Domain Experts to Perform \r\n\r\n Requirements Engineering Tasks 65 \r\n\r\n Train Developers Not to Make Requirements Decisions \r\n\r\n and Not to Gold Plate 74 \r\n\r\n Utilize a Variety of Techniques to Elicit Customer and User Requirements and \r\n\r\n Expectations 74 \r\n\r\n Use Cases 75 \r\n\r\n Train Requirements Engineers to Write Good Requirements 79 \r\n\r\n The Impact of Requirements Errors 79 \r\n\r\n The Importance of Requirements to Program Costs 80 \r\n\r\n What Is a Good Requirement? 82 \r\n\r\n Document the Rationale for Each Requirement 84 \r\n\r\n Utilize Methods and Automated Tools to Analyze, Prioritize, and \r\n\r\n Track Requirements 85 \r\n\r\n Approaches, Tools, and Methods for Prioritizing Requirements 87 \r\n\r\n Collect Requirements from Multiple Viewpoints 89 \r\n\r\n Consider the Use of Formal Methods When Appropriate 90 \r\n\r\n Pitfalls 90 \r\n\r\n Summary 91 \r\n\r\n Key References and Suggested Readings 92 \r\n\r\n CHAPTER 5 USE AND CONTINUALLY IMPROVE \r\n\r\n A REQUIREMENTS PROCESS 97 \r\n\r\n What Is a Process? 98 \r\n\r\n How Is a Process Designed? 99 \r\n\r\n Why Is a Requirements Process Needed? 103 \r\n\r\n Goals of Requirements Engineers 107 \r\n\r\n A Sample Requirements Process 110 \r\n\r\n How Can Organizations Create or Tailor a Requirements Process? 122 \r\n\r\n Tailoring of Processes 123 \r\n\r\n Web Support: An Organizational Process Asset Library 124 \r\n\r\n Summary 125 \r\n\r\n Key References and Suggested Readings 125 \r\n\r\n CHAPTER 6 ITERATE THE SYSTEM REQUIREMENTS \r\n\r\n AND ARCHITECTURE REPEATEDLY 131 \r\n\r\n The System Engineering Process 132 \r\n\r\n Recommendations 134 \r\n\r\n Consider the 'Designability' of the System When Addressing the Requirements 134 \r\n\r\n Allocate Requirements to Functional Partitions, Objects, People, or Support \r\n\r\n Elements to Support Synthesis of Solutions 136 \r\n\r\n Utilize a System Architecture Process 136 \r\n\r\n Consider Open Systems Standards 146 \r\n\r\n Guidelines for'Architecting' 151 \r\n\r\n Another View 153 \r\n\r\n Summary 154 \r\n\r\n Key References and Suggested Readings 154 \r\n\r\n CHAPTER 7 USE A MECHANISM TO MAINTAIN \r\n\r\n PROJECT COMMUNICATION 159 \r\n\r\n Setting the Stage 160 \r\n\r\n Natural Human Tendency 160 \r\n\r\n A Proactive Approach to Achieve Effective Communication 161 \r\n\r\n An Example Mechanism 162 \r\n\r\n When Negativism Shows Up 164 \r\n\r\n Another Valuable Mechanism--Brown Bags 165 \r\n\r\n Guidelines for Effective Meetings 165 \r\n\r\n Guidelines for Effective E-mail Communication 167 \r\n\r\n The Value of a Common Vocabulary 172 \r\n\r\n The Use of Vertical Experts 173 \r\n\r\n Avoid Multiple Locations 174 \r\n\r\n A Final Recommendation 174 \r\n\r\n Summary 174 \r\n\r\n Key References and Suggested Readings 175 \r\n\r\n CHAPTER 8 SELECT FAMILIAR METHODS AND \r\n\r\n MAINTAIN A SET OF WORK PRODUCTS 179 \r\n\r\n The Foundation for System Development 180 \r\n\r\n What Are the Candidate Methods and Techniques? 180 \r\n\r\n Which Methods and Techniques Are Best? 182 \r\n\r\n Use of Function Points for Software Estimation 189 \r\n\r\n Quality Function Deployment 190 \r\n\r\n What Comprises the Requirements Specification? 192 \r\n\r\n The Rationale for Prioritizing Requirements 193 \r\n\r\n Summary 195 \r\n\r\n Key References and Suggested Readings 196 \r\n\r\n CHAPTER 9 PERFORM REQUIREMENTS VERIFICATION \r\n\r\n AND VALIDATION 201 \r\n\r\n V&V Terminology 202 \r\n\r\n The Importance of V&V 203 \r\n\r\n V&V Planning 203 \r\n\r\n Verification Methods 207 \r\n\r\n V&V Techniques 208 \r\n\r\n Using Traceability to Support Verification 208 \r\n\r\n A Structured Approach to Testing 210 \r\n\r\n Recommendations 211 \r\n\r\n Pitfalls 211 \r\n\r\n Summary 213 \r\n\r\n Key References and Suggested Readings 214 \r\n\r\n CHAPTER 10 PROVIDE AN EFFECTIVE MECHANISM \r\n\r\n TO ACCOMMODATE REQUIREMENTS \r\n\r\n CHANGES 217 \r\n\r\n Why Such Emphasis? 218 \r\n\r\n Planning for Changes in Requirements 219 \r\n\r\n The Recommended Mechanism 221 \r\n\r\n Requirements Leakage 221 \r\n\r\n Focus on What Counts! 224 \r\n\r\n How Much Can Requirements Change? 224 \r\n\r\n A Way to Deal with Requirements Creep Contractually 225 \r\n\r\n Other Recommendations 227 \r\n\r\n Summary 229 \r\n\r\n Key References and Suggested Readings 229 \r\n\r\n CHAPTER 11 PERFORM THE DEVELOPMENT EFFORT \r\n\r\n USING KNOWN, FAMILIAR PROVEN \r\n\r\n INDUSTRY, ORGANIZATIONAL, AND \r\n\r\n PROJECT BEST PRACTICES 231 \r\n\r\n What's All the Fuss? 233 \r\n\r\n What Can We Do About It? 234 \r\n\r\n Recommendations 235 \r\n\r\n Provide to the Development Team an Understanding of the Relevant Policies, \r\n\r\n Processes, and Procedures to Be Used 235 \r\n\r\n Utilize a Practical, Effective Project Management Approach 235 \r\n\r\n Ensure That Selected Members of the Development Team Have Domain \r\n\r\n Knowledge 244 \r\n\r\n Perform the Development Effort Using Known (Trained), Proven Processes, \r\n\r\n Mechanisms, Methods, Techniques, and Tools 244 \r\n\r\n Provide and Utilize Mechanisms to Foster Effective Communications Throughout the \r\n\r\n Development Team 247 \r\n\r\n Utilize Peer Reviews and Inspections to Remove Defects from Processes and Work \r\n\r\n Products 248 \r\n\r\n Ensure That Configuration Management Is Effective 250 \r\n\r\n Foster an Independent QA Role That Proactively Assists and Supports the \r\n\r\n Development Team and Provides Value to the Project 251 \r\n\r\n Ensure That Subcontractors Are Managed So That Their Contributions Are \r\n\r\n Effective 252 \r\n\r\n Use Appropriate, Useful Metrics to Manage the Project 255 \r\n\r\n Ensure That a Systematic Approach to Involving the Customer in This Entire \r\n\r\n Effort ls Working 258 \r\n\r\n Manage Processes Quantitatively. Also, Use a Defect Prevention (DP) Process, a \r\n\r\n Technology Change Management (TCM) Process, and a Process Change \r\n\r\n Management (PCM) Process. Perform Extensive Reinsertion and Reuse \r\n\r\n Throughout the Organization 261 \r\n\r\n Musings on Project Management 262 \r\n\r\n Summary 265 \r\n\r\n Key References and Suggested Readings 266 \r\n\r\n PART III WHAT TO DO NEXT 271 \r\n\r\n CHAPTER 12 HOW TO PROCEED 273 \r\n\r\n Common Issues 273 \r\n\r\n Key Factors in Addressing These Issues 275 \r\n\r\n The Customer 275 \r\n\r\n Requirements as a Key Driver to Any Systems or Software Effort 275 \r\n\r\n Financing Improvements in the Requirements Process 275 \r\n\r\n Survival of the Fittest 276 \r\n\r\n Management Awareness and Expectations 276 \r\n\r\n Metrics 276 \r\n\r\n The Development Team 277 \r\n\r\n Where to Start 277 \r\n\r\n How to Prioritize Needed Efforts 284 \r\n\r\n Relationship of the Recommended Effective Requirements \r\n\r\n Practices to the CMM 289 \r\n\r\n But I Have So Many Things to Do... 291 \r\n\r\n What If We Are 'Further Along' on Our Project? 293 \r\n\r\n Summary 293 \r\n\r\n Key References and Suggested Readings 294 \r\n\r\n Epilogue 299 \r\n\r\n List of Acronyms 301 \r\n\r\n Glossary 309 \r\n\r\n Credits 321 \r\n\r\n Bibliography 325 \r\n\r\n Author Index 345 \r\n\r\n Subject Index 349 \r\n
\r\n
“软件工程”是自20世纪60年代起针对所谓“软件危机”而发展起来的概念. 它是指将工程化的方法应用到软件开发中, 以求优质高效地生产软件产品. 其中综合应用了计算机科学. 数学. 工程学和管理科学的原理和方法. 自从这一概念提出以来, 软件开发方法从60年代毫无工程性可言的手工作坊式开发, 过渡到70年代的结构化分析设计方法. 80年代初的实体关系方法, 直到当今所流行的面向对象方法, 经历了根本性的变革. 随着时代的发展, 软件项目管理人员越来越需要从系统和战略的角度来把握项目的方向, 引导开发向更高层次发展. 在这方面, 国外的知名企业和研究机构已经总结了相对成熟的一套知识和方法体系, 并在实践中获得了相当大的成功. 这里我们就从著名的培生教育出版集团(Pearson Education Group)选取了一些软件工程与方法类的有代表性的教材影印出版, 以期让国内的读者尽快了解国外此领域的发展动态, 分享国外专家的知识和经验. 以下对每本书的内容作一些简要的介绍, 以便读者选择.
在Internet广泛普及的今天, 软件承载着越来越重要的使命, 工程化的开发必须能够提供健壮性和普适性更好的产品. Scott E. Donaldson和Stanley G. Siegel合作编著的《成功的软件开发》(Successful Software Development)一书从“软件系统开发无定式”这一事实出发, 引入了一个灵活而成熟的开发过程模型——系统工程环境(Systems Engineering Environment, SEE). 该模型包含两个互相联系的基本要素:确定软件开发策略和规程, 以及可用于实现目标的技术. 围绕这一模型, 书中对开发过程中关系项目成败的各种关键问题进行了透彻的论述, 可作为软件开发团队的全程培训教材.
软件工程经过几十年的发展, 其关键环节——需求分析和管理终于得到了真正的重视. 伴随认识的深化和案例的丰富, 一系列实用的工程化需求分析方法应运而生. Ralph R. Young的《有效需求分析》(Effective Requirements Practices)一书从管理和技术两个角度阐述了关系项目成败的各种问题, 书中的案例分析让项目管理者能够对需求分析的框架体系和过程形成较为清晰的认识, 在实践中准确了解客户的业务需求, 正确地调配各种资源, 从而更加准确地把握项目的方向, 保证在整个项目周期中各种需求都能够得到应有的考虑和满足.
软件开发人员在系统组织方面通常会采用特定的模式, 但就大多数而言, 他们对体系结构的分析和判断在很大程度上都是出于自发而且并不规范. Mary Shaw和David Garlan的《软件体系结构》(Software Architecture: Perspectives on an Emerging Discipline)一书就对当前业界所公认的成功的系统设计思想进行了生动而全面的阐述. 两位作者对软件体系结构的发展状况及其对设计的影响作用有独到的见解, 相信各类读者都能从书中获得有用的信息:专业开发人员可能对书中所介绍的设计模式比较熟悉, 但从对这些模式的讨论和评价中也能够获得新的启发, 学生们能够从书中学到一些有用的技巧, 从较高的视角来了解系统的组织结构, 而不是仅仅追逐业界的潮流或是过时的方法, 对于教师而言, 本书可以作为“软件体系结构”课程的教材, 或者是“软件工程”或“软件设计”课程的补充教材.
对于现在已经或者将要从事软件项目管理的读者来说, Joel Henry的《软件项目管理》(Software Project Management: A Real-World Guide to Success)应该说是一本难得的好教材. 书中论述了软件项目的四个基本构成要素:人. 过程. 工具和评价体系, 并向读者提供每一领域中可以选用的合适方法, 使项目实施取得最满意的效果. 作者本人在软件行业工作多年, 积累了丰富的第一手材料, 他在书中用案例对技术. 管理和领导等多方面问题进行了透彻的讲解. 尽管他对这些问题的结论对业内人士而言已经是耳熟能详, 但不论是何种类型和水平的读者, 相信都能从本书中得到指导和启发.
软件开发中出现错误在所难免, 关键是要及早发现, 而不要让其扩散, 增加纠正的成本. 软件同级评审制度是任何高质量软件开发过程的重要环节, 然而受过这方面必要培训的专业人员却还是凤毛麟角. Karl E. Wiegers的《软件同级评审》(Peer Reviews in Software)就是针对这方面需求而编写的. 本书介绍了软件同级评审的全过程, 内容涉及各种正规和非正规的评审方法和质量保证技巧. 书中对大型项目及开发团队地域分散等情况下的同级评审进行了专门探讨. 对于项目管理者而言, 本书能够帮助他们以实用的资源启动同级评审计划, 增进开发人员间的沟通, 最终按期提交高质量的软件产品.
面向对象技术的应用已经越来越普遍, 而与此同时越来越多的管理者在项目进行中却要面对许多原本隐藏着的成本和意外情况. 对整个项目而言, 管理者在规划阶段是否有远见. 在进行过程中对各种情况反应是否得当, 这些都影响着项目的成败. 尽管市场上介绍对象技术的书很多, 但对于项目实施中所需进行的规划和预测却还缺乏系统的知识归纳. Alistair Cockburn的《对象软件项目求生法则》(Surviving Object-Oriented Projects)一书就以大量专家的知识和经验向读者提供成功管理对象软件项目的实用指导和建议, 帮助读者应对项目中的意外挑战, 使项目正常进行并最终获得成功. 书中指出了对象软件项目所面临的潜在风险, 并对时间安排. 预算. 人员安排以及成本合理化等重要问题进行了探讨, 提供了可操作的解决方案. 对于从事对象软件项目管理的读者而言, 本书是一本相当合适的参考书, 可以作为相关培训的教材.
以上就是目前这套影印版丛书的大致内容. 需要指出的是, 这套丛书并非一个封闭的体系. 随着软件工程的深入发展, 必将涌现出更多新的开发理念和方法, 我们也将尽己所能将更多新的优秀图书吸纳进来. 读者对于这套丛书目前的内容或未来的发展有何意见或建议, 望不吝赐之.
编 者
2003年11月