软件工程及软件方法学
-
软件质量工程洪伦耀,董云卫编著本书从软件工程的实际出发,详细介绍了有关软件质量管理、控制、保障及度量的程序、方法和技术。考虑到软件可靠性是软件质量中最重要的因素,本书对软件可靠性模型及其应用、软件可靠性测试、软件可靠性数据收集和处理进行了深入的论述。本书是在广泛参考了国内外有关资料的基础上,结合作者多年来在软件工程、软件质量和软件可靠性方面的研究成果,特别是近年来作者在软件公司任职期间的体验,精心写成的。全书内容具有理论联系实际、系统及简洁等特点,在软件开发、使用和维护方面具有较强的工程应用价值。本书可作为软件项目管理人员、开发人员、系统分?鋈嗽奔叭砑房突У牟慰际椋部勺魑扑慊蛉砑こ套ㄒ档母吣昙堆⒀芯可慕滩幕虿慰际椤?随着计算机与因特网的普及和社会信息化进程的加快,计算机软件的地位已发生了巨大的变化,它已成为支撑社会正常运行和发展的重要基础设施。软件变得越来越复杂,人们对软件的要求也越来越高,特别是对软件的可靠性、易用性、应变性和兼容性等各方面都提出了很高的要求。软件的生产方式也发生了巨大的变化。开始时是手工业生产方式,软件的质量依赖于软件编制者个人的技艺和才智。后来,演变为工业化的规模生产,软件成为软件公司一批开发人员共同协作的产品。这时,软件产品的质量在很大程度上取决于软件公司实施的开发过程的优化程度和具体的管理水平。现在,又进一步扩展为软件生产的社会化。一个软件系统常常要由不同软件专业公司生产的软件构件产品集成而成。于是为保证软件的质量,又要求有相关的统一标准和协议,以及按照标准进行的测试和认证。软件质量的控制和管理技术是一门实践的技术,它是根据软件开发的大量实践经验积累而来的。这其中有很多成功的经验,也不乏惨痛的失败教训。坦诚地讲,我们国家软件产业发展较晚,目前真正能称得上是有一定规模的,具有大型自主软件开发能力的软件公司还不多,还缺乏这种规模化开发软件的实践经验。因而,人们往往对软件质量管理的重要性和必要性认识不足,理解不深,同时也缺乏相应的量化的实际数据。大家知道,只有在大量数据的基础上才能做到软件开发过程的真正的优化,而数据要靠长期实践的积累。洪伦耀教授和董云卫高级工程师联合编写的这本《软件质量工程》一书,全面、系统地介绍了国内外流行的软件开发过程中实施的质量管理、控制、度量和保障技术。其内容大都是根据他们多年来的实践经验,从国?谕饨闲隆⒔铣墒於冶冉鲜涤玫募际踔芯《吹摹1臼榈某霭娑杂谥傅嘉夜砑档穆蚣纳迫砑返闹柿浚俳夜砑档姆⒄箍隙ɑ崞鸬椒浅V匾淖饔谩M蔽乙财谕樗孀盼夜砑档男纬珊头⒄梗夜萍既嗽蹦茉谖铡⑾獾娜砑⒓际醯幕∩希ü陨泶罅咳砑⒌氖导欢系刈芙帷⑻岣吆痛葱拢徊轿夜砑⒓际醯姆⒄棺龀鲇τ械墓毕住?自从第一台计算机诞生以来,信息技术革命无疑成为当今世界最快的技术变革。今天,计算机的应用已渗透到了人类现代生活的各个方面,人们对它的依赖程度与日俱增,因计算机系统故障而引起危机的可能性也逐渐增大。同时,在计算机的发展与应用中,存在着严重的软/硬件不均衡发展的现象,软件的质量、性能、生产率及耗费等,都无法与硬件同步。随着人们对软件需求的日益增大,软件产品的功能复杂性和结构复杂性越来越高,因软件系统失效造成计算机系统失败和瘫痪的重大事故屡见不鲜。例如:(1)在美国宇航局的''''旅行者''''计划中,天王星探测器就是因为深度太空网络软件发送信息迟缓和能力衰竭而处于危险之中。(2)软/硬件干扰问题是使一些航天飞机经常推迟发射时间的主要原因。(3)在美国国防部某项工程中,事先设计好的先进程序无一可用,从而导致AFTI/F-16的首航时间耽搁了一年。关键软件系统的失败也影响了大量民用项目和科学工作。例如:如果不是数据分析程序由于''''越界溢出''''而隐藏了异常数据,南极上空的臭氧空洞本来可以更早引起科学界的注意。软件失效也可导致巨大的经济损失。例如:1990年1月15日,美国一通信中转系统新投入使用的软件发生了错误,导致主干线远程网大规模崩溃;1991年夏季,美国一系列局域电话网由于软件问题而中断。这些严重事故使?郧Ъ埔揽康缪豆驹擞滴竦墓舅鹗Я司薅钭式稹?出错的软件还会危及人们的生命安全。例如:(1)美国的Therac-25放射性治疗仪曾以其安全性著称于世,但有一次由于其软件出错而使其控制系统失灵,导致多名病人失去生命。(2)据专家们统计后指出,软件控制系统对飞行员在异常飞行期间发出的紧急查询反应不当,是发生飞行事故以致造成机毁人亡的主要原因。这一切表明:软件中哪怕是很微小的差错,都可能导致生产、生活和其他各项活动中的质量事故,如产品报废,商业停顿,甚至是人员伤亡。面对这样一些问题,在要求软件质量越来越高的情况下,应该怎么办呢?答案只有一个:因为软件产品是人类智力活动的产物,所以软件的质量问题,也只有用人类的智力活动来解决!本书就是考虑到目前人们对高质量软件的迫切需要而撰写的,它集中讨论了与软件产品质量密切相关的质量管理、质量控制、质量度量和质量保障等问题。本书的内容实际上就是人们为了解决软件的质量问题,在总结长期的开发实践经验的基础上逐渐形成的智力成果。另外,从软件产品在质量范畴内区别于硬件产品的特殊性来说,撰写本书还有如下的理由:(1)软件质量是在开发过程中构建(需求分析、设计、编码和集成等)人软件产品之中的,开发过程完成之后是加不进去的。(2)软件产品是由许多人通过集约式作业方式,在绞尽脑汁的智力活动中开发出来的,而人的思维活动是非常易变的,集约在一起的众多人的思维更难保持协调一致。(3)导致软件产品质量低下的差错和缺陷,是随着软件开发的进展而向后面阶段传播的。值得注意的是,这些差错和缺陷的危害程度,随着从它发生到被纠正的时间间隔的增加而成倍地增长。(4)通过智力活动开发出来的产品,它的质量也只有通过智力活动来确认和检验,而不能像硬件产品那样,可以用有关的测量仪器来检验。相应地,针对质量方面的上述特殊性,软件的质量管理、质量控制、质量度量和质量保障要解决的主要问题有:(1)如何建立必要的标准、规范、条例及程序,使开发人员和开发过程保持以下三个方面的一致性:横向的,人与人之间的一致性;纵向的,一个开发阶段与另一个开发阶段的一致性;产品(含阶段性产品)的输入与输出的一致性。(2)如何将一个软件产品的整个开发过程分解为若干个可实现并可管理的部分;对每个部分,应用相应的、有效的技术和方法,展开软件的开发活动并对其阶段性产品的质量进行验证和确认,保证其高质量;最终组合成整个软件产品,并验证和确认其质量是否达到要求。(3)如何尽可能地避免在开发中产生差错;如何尽可能多地检测出并纠正已经产生的差错;当差错不可避免地残留在软件中时,如何容差。(4)当差错不可避免地引入到软件中时,如何保证自它们引入时起,尽可能早地发现并纠正它们。(5)软件这个无形的智力产品,它的质量究竟如何定义,又如何度量。(6)如何控制软件的开发过程、开发资源和产品,使得产品质量、工期和费用实现最佳的折中。进行质量管理、质量控制、质量度量和质量保障的目的就在于:在开发过程中,在有限的资源限制下和规定的时间内,把软件产品的质量构建人软件产品之中。当读者在阅读这本书的时候,抓住上述问题,就可以更好地理解书中各章节的内容。同时,在读完了书中各章节之后,对上述问题也就会有更实质性的把握。本书作者洪伦耀教授,在软件可靠性和软件质量方面,有着近二十年的研究和教学经验;作者董云卫高级工程师,曾就职于西安协同软件股份有限公司、西安软件工程技术研究中心等单位,一直从事软件项目的组织、管理和软件的实际开发工作以及软件工程理论与应用的研究。2003年,本书的两位作者先后就职于国家863软件专业孵化器西安基地(西安软件工程技术研究中心),参加863计划相关课题的研究工作。西安软件工程技术研究中心是西安市科学技术局批准设立的独立的科学研究与技术开发机构。它围绕西安软件产业的发展和国家863软件专业孵化器的建设,专门从事技术开发及测试评估、质量咨询等软件工程技术服务。在此期间,课题组对软件质量管理、控制、度量以及软件质量保障的各种技术和方法的深入探讨,使作者长期积累的有关软件质量管理的研究与教学经验以及软件开发经验得到了系统升华,拓展了作者的视野,并使作者坚信:科学的软件质量管理、控制、度量和保障的方法和手段是可以形成一种面向软件产业发展的服务能力的,一旦这种能力与软件产业结合并广为产业界所接受,它将对软件产业的发展起到巨大的推动作用。这也就是作者写作本书的用意所在。本书是面向软件项目开发领导部门、管理机构、质量组织、开发人员和软件项目的购置者、使用者和维护者的工程实用性读物。同时,本书也面向培养上述人才的大专院校教师、高年级学生、研究生。因此,本书不追求冗长、复杂的理论叙述,而着重于''''做什么''''、''''为什么做''''、''''怎样做''''、''''结果是什么''''等这样一些实用性软件工程的内容。本书共分7章。第1章作为基础,叙述了软件与硬件之间的区别及质量、软件质量等一般性的概念,并叙述了造成软件质量低下的根源:软件中的差错。第2章、第3章和第4章分别介绍了软件质量管理、质量控制和质量度量。由于软件可靠性是软件质量中最重要的质量因素,因此第5章专门对软件可靠性、软件可靠性模型及其应用进行了专门的论述。由于上述各质量活动不能无序、无计划自动进行,而是要在强有力的监督和保障之下,落实到开发过程的每一个阶段和每一个环节,因此,第6章安排了这样的内容:软件质量保障。第7章对近期软件工程和软件可靠性研究的某些问题做了简单的提示。作者特别要感谢863计划计算机软硬件技术主题专家组和西安市科学技术局领导富有远见的支持;还要感谢西安软件工程技术研究中心楼文晓主任和西安协同软件股份有限公司前任总经理苏新雷先生,正是有了他们对软件质量在软件产品开发过程中及软件产业发展中重要地位的深层次理解,才使我们有机会尝试、应用和实践软件质量管理、控制、度量和保障的理论和方法;更要感谢郝克刚教授在写作过程中给予作者的指导,他还在百忙之中给本书撰写了序言。武汉大学软件工程研究所的徐仁佐教授,中国航天总公司204研,究所的宋晓秋(博士)研究员,空军工程大学的王兴亮教授以及西安软件工程技术研究中心、西安协同数码软件股份有限公司的同仁对本书的编写和出版给予了热情的关心、帮助和支持,在此一并表示感谢。参加本书编写、审校、资料收集和其他辅助工作的还有:凌惠娟、孙训峰、姬伟锋、王海滨、杜宏、安宣、李水清等。由于作者知识水平和工作经验有限,书中难免有错误和不当之处,敬请读者指正。 -
快速测试(美)Robert Culbertson等著市场驱动的快速测试软件市场激烈的竞争、令人无暇喘息的发展节奏不断要求产品以最快的速度进入市场。一方面产品要占领市场先机,但同时质量还要有所保证,这就要求采用新的测试策略。既然软件不可能完美无缺,那么快速测试的目标就是在软件开发的生命周期中集成软件测试的计划、执行与报告等活动,从而能够在开发过程中尽早发现软件中存在的主要问题。本书提供了一种方法,可以帮助你完善测试过程,提高软件质量,却不会浪费宝贵的时间。这种方法包含三个方面:·快速测试的原则和过程·快速测试技术、窍门与实例·一套完整的测试文档样例本书还重点介绍了在整个测试生命周期内的速度和集成问题,包括以下相关活动:·测试计划和测试案例的设计与开发·缺陷跟踪与报告·验证(Verification)和确认(Validation)技术·测试度量指标与资源估计·测量、报告、文档与评估本书可以作为参与测试过程的开发人员与管理人员的参考手册,尤其适用于测试工程师和测试经理。 -
软件工程方法与实践李芷等编著软件工程学将计算机科学理论与现代工程方法论相结合,着重研究软件过程模型、设计方法、工程开发技术和工具,是指导软件生产和管理的一门新兴的、综合性的应用科学。本书以传统的软件工程和面向对象的软件工程为主线,根据软件开发“工程化”思想,结合大量的应用示例,系统地介绍软件工程学的基本原理、软件过程、开发方法、应用技术和实用工具。本书适合作为高等院校计算机科学与技术专业学生的教科书,也可以作为通用软件工程课程,或者需求工程学、软件设计、高级程序设计和软件管理等软件工程学专题的教科书,还可以作为从事计算机软件系统研究和项目开发等应用型技术/管理人员的参考书。 -
机械系统控制软件(美)D.M.Auslander等著为复杂机械设备构建实时软件的完全指南! 机械系统的性能日益成为其控制软件的功能,因此,在系统设计和实现的每一个阶段,都必须考虑控制软件的计算能力及其所受到的限制。本书全面阐述了如何为今天日益复杂的机械设备构建实时控制软件。 本书介绍了实时软件开发的每一个步骤:性能说明书、设计文档、模拟、实验室和生产原型设计、生产系统的开发与维护等;讨论了在任何一种机电环境下,如何最大限度地保持实时软件的可靠性和一致性。本书涵盖以下主题: ·为机电系统构建实时软件所面临的挑战 ·如何有效实现实现任务内及任务间通信 ·状态转换逻辑计时、任务调度、多任务以及基于中断的调度 ·基于图形和字符的操作界面 ·直接实现系统控制软件,包括MATLAB模拟 ·分布式控制:多处理器体系结构、TCP/IP与UDP、应用层编程 ·详细的案例分析同时采用Java和C++语言 本书中的详细实例和案例分析同时采用Java和C++语言,所涉及的应用领域非常广泛,如皮带传动、炉温控制以及成型加工等。 -
软件补丁集锦马文刚,李斌编著目前用户使用软件已不仅满足软件功能的强大,更重要的是安全性已成为用户非常关心的问题。本书从软件补丁方面着手,分门别类地进行介绍。第一章介绍了Win-dows补丁;第二章介绍了Office软件补丁;第在章介绍了其他类软件的补丁;第四章则介绍了补丁的相关知识。本书针对每个补丁以实例形式向用户介绍了补丁的安装和使用,全书内容丰富、易学易用,适合使用Win-dows操作系统以及Windows平台应用软件的各个层次用户阅读。 -
软件项目管理(美)克里斯·F.克默勒(Chris F.Kemerer)著;李玉英等译本书提供了大量比较前沿的实用性和应用性资料及案例,而且文章的内容非常适时和重要。全书重点在于讲授模型的开发,目的是使人们更好地了解软件的开发和工具的使用,提高过程的生产率和质量,为项目管理的相关内容提供了完整的知识体系。 本书适合可作为软件管理课程的主要必备教材,以及系统分析和设计、信息系统管理、信息系统项目课程的补充教材,在向信息系统和计算机科学专业的研究生和高年级本科生,实际软件开发人员和软件管理人员。 -
UML风格(加)Scott W.Ambler著;王少锋译;王少锋译从这本书中你能体会到什么叫;小而精;!本书包含了很多关于UML图的风格和描述的专家级建议。我向所有刚开始使用UML的人推荐这本小书,很多有经验的对象建模者都有其自己的建模习惯,但他们仍会得益于作者提供的这套建模规则,作者是一位经验丰富的建模专家并能有效地把自己的经验与大家分享、交流。——GaryK.Evans,fromColumbia,SCUnitedStates这是一本特别的小册子。它不讲概念,它假设您已经懂了概念。它简单地告诉您"在递归关联上指明角色名",不告诉您什么叫"递归"、"关联"和"角色"。这方面的知识,可以去看"UMLDistilled"。它不讲过程,它假设您已经了解某种开发过程。UML提供了9种图,Ambler根据自己的实践为各种图提出了一些准则。这些准则的使用,不受某种开发过程的约束。想了解更多这方面的知识,可以去看Ambler的"TheObjectPrimer"和"AgileModeling"。它不讲工具,它假设您已经了解某种工具。Ambler提出的这些准则,适用于各种UML工具,包括白纸和铅笔。如果想学习某种主流工具,可以去看"……从入门到精通"之类的书。由此可见,这本书有别于以前出版过的UML书籍。它在您已经了解方法、过程和工具的基础上,告诉您在绘制UML图时需要注意的一些细节。UML实现了模型可视化表示的统一,大大有助于开发团队内部、开发团队与客户之间的交流。本书则又向前迈出了一步,致力于帮助开发团队寻找并遵循一种良好的UML绘图实践,实现UML绘图风格的统一――整齐漂亮的图纸和杂乱肮脏的图纸在团队的内部交流和给客户的印象上将会有天壤之别。在这本小册子中,Ambler提出了200多条准则,它们将会在您画龙的同时,帮助您点上龙的眼睛。 -
软件工程学教程周苏,王文编著软件工程学是一门理论性和实践性都很强的学科,它采用工程化的概念、理论、技术和方法来指导编程人员开发与维护计算机软件。本书是《软件工程学教程》(科学出版社,2002年)的修订版,系统、全面地介绍了传统软件工程的技术,在软件工程的概念、原理、方法及其应用等方面有较详尽的论述;并且详细地介绍了软件生存周期过程和软件过程工程的思想和实现方法,力图反映软件工程领域的最新发展,具有较强的系统性和可读性。按照一系列软件工程国家标准来表达和描述软件工程的知识,使软件工程技术具有很强的可操作性,是本书的主要特色之一。本书可作为高等院校"软件工程"课程的教材和教学参考书,也可供有一定实践经验的软件开发人员、管理人员参考和作为继续教育的教材,它还可以作为各个级别的计算机软件专业技术资格和水平考试中相关内容的学习辅导用书。欢迎教师索取为本书教学配套的"思考与习题解答",以及多媒体辅助教学课件。E-mail地址:zs@mail.hz.zj.cn。 -
数据结构张晓静主编数据结构是计算机专业教学计划中的一门核心课程,也是信息管理、通信电子等与计算机技术关系密切的专业的一门基础课程。本书对C++语言作了简单介绍,叙述了抽象数据类型,介绍了线性表、栈、队列、数组、广义表、树和图等数据结构,并且介绍了查找和排序方法。对大多数算法和算法的应用给出了相应的C++程序,每章后面附有大量的习题,便于教学。本书是为高等院校开设数据结构课程编写的教材,可作为计算机专业及相关专业本科、专科学生的教材使用,也可供从事计算机软件开发和应用的工程技术人员阅读。 -
软件工程杨文龙,古天龙编著本书是1997年出版的高等学校规划教材《软件工程》的修订版。全书共5篇10章,系统地介绍了软件、软件工程与软件工程模式,软件开发方法,质量与质量保证,计划与管理,工具与环境等最新内容。各章附有习题。读者将从本书中纵览软件工程发展的全貌,了解和掌握软件工程各领域重要的原理、方法、技术、应用和关系,为研究软件工程的理论和从事软件工程实践,以及更深入的学习打下良好的基础。本书适合大学计算(机)学科各子学科(软件工程、计算机科学、计算机工程和信息系统)研究生、本科生、高职高专学生及在职的技术和管理专业人员用作教材或参考书。
