软件工程及软件方法学
-
UML高级应用(德)Sinan Si Alhir著;韩宏志译编辑推荐:UML是一种通用建模语言,得到多种工具的支持,已经被视为行业标准。UML用于指定,显现,构建和记录系统密集过程的工作。本书详细介绍了UML的相关知识,既可用作教材,也可作为参考书。路标是本书的一个重要主题,它提供了一个综合性架构来解决关键决策点及其关系,将UML和过程紧密联系在一起。本书重点讨论UML的使用规则,组合原理和实用示例。本书围绕UML结构分析使用UML、构建UML模型的基本准则。分析如何在路标上下文中有效使用UML,选出一个成熟方案,而不是过早采用特定过程。提供详细实例,以便您在系统开发生命周期建模时进行参考并作出正确决策。阐释UML元素之间的依赖方式,并分析UML如何支持生命周期过程的可跟踪性和可伸缩性。图表清晰明畅,有助您理解UML核心概念及技术。本书观点新颖,论述精辟,编排精当,内容翔实准确,既可作为软件工作及相关专业的教材,又可供UML软件项目的设计、开发和管理人员参考使用。 -
数据结构教程彭波编著数据结构是计算机专业的重要基础课程,也是该专业的核心课程之一,它足一门集技术性、理论性和实践性于一。体的课程。本书介绍了抽象数据类型和基本数据结构,阐述了各种数据结构内在的逻辑关系,讨论了各种数据结构在计算机中的存储表示,给出了在各种数据结构上的基本运算及算法实现。内容包括:数据结构概述、线性表、栈和队列、串、多维数组与广义表、二叉树与树、图、查找表、内部排序、外部排序、文件和数据结构程序设计方法。书中使用类C语言作为算法描述语言,且所有算法都可以在任何一种C语言的开发环境中实现。书中每一章后面都配有适量的习题,以供读者复习提高自身水平。本书可以作为高等院校计算机专业及相关专业的教材。对于计算机类专业的学生或从事计算机工程与应用:工作的科技工作者,本书也是一本实用的参考教材。 -
软件工程学教程周苏,王文编著软件工程学是一门理论性和实践性都很强的学科,它采用工程化的概念、理论、技术和方法来指导编程人员开发与维护计算机软件。本书是《软件工程学教程》(科学出版社,2002年)的修订版,系统、全面地介绍了传统软件工程的技术,在软件工程的概念、原理、方法及其应用等方面有较详尽的论述;并且详细地介绍了软件生存周期过程和软件过程工程的思想和实现方法,力图反映软件工程领域的最新发展,具有较强的系统性和可读性。按照一系列软件工程国家标准来表达和描述软件工程的知识,使软件工程技术具有很强的可操作性,是本书的主要特色之一。本书可作为高等院校"软件工程"课程的教材和教学参考书,也可供有一定实践经验的软件开发人员、管理人员参考和作为继续教育的教材,它还可以作为各个级别的计算机软件专业技术资格和水平考试中相关内容的学习辅导用书。欢迎教师索取为本书教学配套的"思考与习题解答",以及多媒体辅助教学课件。E-mail地址:zs@mail.hz.zj.cn。 -
UML业务建模Hans-Erik Eriksson,Magnus Penker著;夏昕,何克清译本书介绍如何利用UML技术进行业务建模,如何利用业务模型来明确业务支持软件的正确需求,如何构造业务模型,以及模型应当包含什么等等。另外,本书还提供许多业务模式,同时举例说明如何从不同角度进行业务建模,从而帮助读者了解如何利用业务模型提供的信息和知识来确定相应软件系统的正确需求,并了解在软件模型中如何重用这些信息和知识。本书适合软件开发人员、管理人员参考。对本书的赞誉“对于那些渴望将日常的业务过程工作记入文档的实践者而言,这是一本精彩的实践指南。这本清晰实用的书适合所有致力于业务过程映射、维护和改进的读者阅读。”——RichardMarkSoley,OMG主席及CEO“Eriksson和Penker并非只是撰写了一本关于模式的书,这是对融合业务—信息技术的关键领域的一个重大贡献。在讲述高深理论的同时,本书还包含大量示例,其严谨的风格也是本书的一大特色。”——PaulAllen,CBDStrategiesandArchitectures,SterlingSoftware公司负责人“UML是软件工程师为自己所设计的语言,但是Eriksson和Penker却将UML进行了扩展,以描述业务过程。这个扩展后的UML能与许多常见的通用业务模式结合使用。”——PhilippeKruchten,RationaI公司过程开发部“本书是经过验证的业务建模概念和UML技术之间的完美结合。它以一种综合了软件和业务专业技术的方式提供了开发大规模、任务为主的业务系统的实际策略。”——ScottW.Ambler,《ProcessPatterns》的作者 -
软件维护(美)Penny Grubb,(美)Armstrong A.Takang著;韩柯,孟海军译;韩柯译今天软件系统已经渗透到我们日常生活的每个领域。然而,我们却一直在努力建立真正能够领带的系统。如果我们想在软件系统的各个层次结构上工作,就必须掌握改进的方法。本书为读者提供了可靠的软件维护知识,并介绍了软件维护如何影响软件改进过程的各个方面。本书是一本有关软件维护的教材,全书结构组织和论述都很严谨,强调基本概念、基本原理、基本方法的阐述,全面论述了软件维护的影响因素和控制管理方法,给出比较多的案例研究和思考题,本书适合大学高年级学生阅读也适合各类软件工程人员阅读。软件维护是在软件新产品交付之后进行的修改工作。软件维护的目的是修改缺陷、提高性能或其他属性,或使该软件新产品适应经过修改后的环境。本书阐述了有关软件维护的基本概念、基本原理基本方法,并全面论述了软件维护的影响因素和控制管理方法。 -
数据结构习题解析与上机指导周云静编著本书共分四部分,分为习题与解析、上机实验指导、模拟全真试卷、参考答案等。 -
系统分析与设计教程(美)Gary B.Shelly等著本书全面讨论了系统开发生命周期的方方面面,从商业案例分析、需求建模、企业建模、开发策略、数据设计、用户界面设置、系统架构、系统实施和支持到最新的发展趋势,内容丰富,信息全面,完美地结合了理论和实践工具。本书的主要特点:■ 每章开篇采用学院书店的系统开发案例来生动说明每章主题,便于理解。■ “On the Web”提供了万维网链接,使学生可以了解重要课题的更多信息。■ “What Do You Think?”专栏提出多个问题,探讨不同的观点,鼓励批评性的思考,可作为课堂讨论的话题。■ “Learn It Online”小节提供了基于Web的练习、实践测试以及游戏。■ 每章都提供一组练习,包括复习题、讨论主题以及项目实践,以便学生实践该章所介绍的技巧和概念。■ 每章中的“Apply Your Knowledge”小节提供4个小型案例,让学生在真实的场景中使用该章介绍的技巧和知识。■ “Case-Sim:SCR Associates”小节是一个独特的、交互式的基于Web的案例分析,其中的“Web Preview”描述了有关该案例的在线内容。■ “Systems Analyst's Toolkit”包括跨阶段的多个工具,如交流工具、CASE工具、财务分析工具、项目管理工具、面向对象工具以及因特网资源工具。■ 附带光盘上的“Student Study Tool”为学生提供了一组资源,帮助他们理解和掌握各章的内容。 -
快速测试(美)Robert Culbertson等著市场驱动的快速测试软件市场激烈的竞争、令人无暇喘息的发展节奏不断要求产品以最快的速度进入市场。一方面产品要占领市场先机,但同时质量还要有所保证,这就要求采用新的测试策略。既然软件不可能完美无缺,那么快速测试的目标就是在软件开发的生命周期中集成软件测试的计划、执行与报告等活动,从而能够在开发过程中尽早发现软件中存在的主要问题。本书提供了一种方法,可以帮助你完善测试过程,提高软件质量,却不会浪费宝贵的时间。这种方法包含三个方面:·快速测试的原则和过程·快速测试技术、窍门与实例·一套完整的测试文档样例本书还重点介绍了在整个测试生命周期内的速度和集成问题,包括以下相关活动:·测试计划和测试案例的设计与开发·缺陷跟踪与报告·验证(Verification)和确认(Validation)技术·测试度量指标与资源估计·测量、报告、文档与评估本书可以作为参与测试过程的开发人员与管理人员的参考手册,尤其适用于测试工程师和测试经理。 -
软件质量工程洪伦耀,董云卫编著本书从软件工程的实际出发,详细介绍了有关软件质量管理、控制、保障及度量的程序、方法和技术。考虑到软件可靠性是软件质量中最重要的因素,本书对软件可靠性模型及其应用、软件可靠性测试、软件可靠性数据收集和处理进行了深入的论述。本书是在广泛参考了国内外有关资料的基础上,结合作者多年来在软件工程、软件质量和软件可靠性方面的研究成果,特别是近年来作者在软件公司任职期间的体验,精心写成的。全书内容具有理论联系实际、系统及简洁等特点,在软件开发、使用和维护方面具有较强的工程应用价值。本书可作为软件项目管理人员、开发人员、系统分?鋈嗽奔叭砑房突У牟慰际椋部勺魑扑慊蛉砑こ套ㄒ档母吣昙堆⒀芯可慕滩幕虿慰际椤?随着计算机与因特网的普及和社会信息化进程的加快,计算机软件的地位已发生了巨大的变化,它已成为支撑社会正常运行和发展的重要基础设施。软件变得越来越复杂,人们对软件的要求也越来越高,特别是对软件的可靠性、易用性、应变性和兼容性等各方面都提出了很高的要求。软件的生产方式也发生了巨大的变化。开始时是手工业生产方式,软件的质量依赖于软件编制者个人的技艺和才智。后来,演变为工业化的规模生产,软件成为软件公司一批开发人员共同协作的产品。这时,软件产品的质量在很大程度上取决于软件公司实施的开发过程的优化程度和具体的管理水平。现在,又进一步扩展为软件生产的社会化。一个软件系统常常要由不同软件专业公司生产的软件构件产品集成而成。于是为保证软件的质量,又要求有相关的统一标准和协议,以及按照标准进行的测试和认证。软件质量的控制和管理技术是一门实践的技术,它是根据软件开发的大量实践经验积累而来的。这其中有很多成功的经验,也不乏惨痛的失败教训。坦诚地讲,我们国家软件产业发展较晚,目前真正能称得上是有一定规模的,具有大型自主软件开发能力的软件公司还不多,还缺乏这种规模化开发软件的实践经验。因而,人们往往对软件质量管理的重要性和必要性认识不足,理解不深,同时也缺乏相应的量化的实际数据。大家知道,只有在大量数据的基础上才能做到软件开发过程的真正的优化,而数据要靠长期实践的积累。洪伦耀教授和董云卫高级工程师联合编写的这本《软件质量工程》一书,全面、系统地介绍了国内外流行的软件开发过程中实施的质量管理、控制、度量和保障技术。其内容大都是根据他们多年来的实践经验,从国?谕饨闲隆⒔铣墒於冶冉鲜涤玫募际踔芯《吹摹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研,究所的宋晓秋(博士)研究员,空军工程大学的王兴亮教授以及西安软件工程技术研究中心、西安协同数码软件股份有限公司的同仁对本书的编写和出版给予了热情的关心、帮助和支持,在此一并表示感谢。参加本书编写、审校、资料收集和其他辅助工作的还有:凌惠娟、孙训峰、姬伟锋、王海滨、杜宏、安宣、李水清等。由于作者知识水平和工作经验有限,书中难免有错误和不当之处,敬请读者指正。 -
机械系统控制软件(美)D.M.Auslander等著为复杂机械设备构建实时软件的完全指南! 机械系统的性能日益成为其控制软件的功能,因此,在系统设计和实现的每一个阶段,都必须考虑控制软件的计算能力及其所受到的限制。本书全面阐述了如何为今天日益复杂的机械设备构建实时控制软件。 本书介绍了实时软件开发的每一个步骤:性能说明书、设计文档、模拟、实验室和生产原型设计、生产系统的开发与维护等;讨论了在任何一种机电环境下,如何最大限度地保持实时软件的可靠性和一致性。本书涵盖以下主题: ·为机电系统构建实时软件所面临的挑战 ·如何有效实现实现任务内及任务间通信 ·状态转换逻辑计时、任务调度、多任务以及基于中断的调度 ·基于图形和字符的操作界面 ·直接实现系统控制软件,包括MATLAB模拟 ·分布式控制:多处理器体系结构、TCP/IP与UDP、应用层编程 ·详细的案例分析同时采用Java和C++语言 本书中的详细实例和案例分析同时采用Java和C++语言,所涉及的应用领域非常广泛,如皮带传动、炉温控制以及成型加工等。
