软件工程及软件方法学
-
UML面向对象结构设计与应用施昊华,张朝辉编著统一建模语言(UML)是一种通用的可视化建模语言,用于对软件进行描述、可视化处理、构造和建立软件系统制品的文档。它记录了对必须构造的系统的决定和理解,可用于对系统的理解、设计、浏览、配置、维护和信息控制。UML适用于各种软件开发方法、软件生命周期的各个阶段、各种应用领域以及各种开发工具,是一种总结了以往建模技术的经验并吸收当今优秀成果的标准建模方法。本书按照从初级到高级、从基本概念到应用实例的顺序,逐渐由浅人深地对UML进行了详细地讲述,具有层次清楚、思路清晰、讲解透彻、实例丰富的特点。适合于广大软件开发人员、系统分析人员、开发人员以及相关专业的科技人员自学使用,同时也适合于广大高等院校的师生作为教材或自学参考使用。
-
使用统一过程的软件需求(美)Daniel R.Windle,(美)L.Rene Abreo著;韩柯等译;韩柯译如果你是负责描述构建软件系统需求分析的分析师,那么我们认为你将通过本书找到一种既能满足用户需求,又能满足需要你为其提交规格说明的开发人员、测试人员需求的,简明、有效的方法。如果你是负责根据需求规格说明构建软件系统的开发人员,那么我们认为你将发现一种以一致的、易用方式沟通所有软件需求的有效方法。如果你是负责根据需求规格说明测试软件系统的测试人员,那么我们认为你将发现本书所介绍的规格说明,提供了一种整个系统的完整、清晰的控制流模型,使读者能够系统化地开发测试。我们还相信你将发现本书所介绍的需求工作产品,使你能够快速、透彻地了解新系统。如果你是负责软件开发或测试的经理,那么我们认为你将发现建立和维护需求工作产品将确保能够将新人员结合到一起,加速系统的开发。我们还认为读者将发现一种实用方法,既能够缩短描述软件需求的时间,同时又能够维持机构的智力资源。本书提供一种建立有效需求的系统化、易于应用的方法论——使用统一过程的软件需求,介绍了全需求生命周期的实用解决方案,包括获取、分析、规格说明、检验和维护。本书通过正文5部分共18章内容,介绍了好的软件需求的关键特性,需求分析过程和工作产品,构建用户需求,问题域、参与者、使用用例、活动图和情节串联板,构建需求体系结构,实体与事件、类图、状态转换图和序列图,构建规格说明,软件需求、接口需求和检验,使用所构建的需求体系结构;并通过附录(第6部分)给出了一份实际的软件规格说明书。不管你是分析师、体系结构设计师、开发人员、测试人员、经理,还是软件客户,本书都会帮助你制定出准确反映自己需要的软件需求,并能够比以往更迅速、更经济地转换为实际软件。
-
面向对象软件构造?(美)Bertrand Meyer美国软件开发杂志获奖图书 为软件产业带来震撼与效率 奖项背景:从1990年开始,美国权威的软件开发杂志(《Software Development》)每年从图书、设计工具等6个类别的700多个候选产品中评选出每个类别的1~2个年度震撼大奖(Jolt Award,即产品优胜奖)和2~3个年度效率大奖(Productivity Award),以表彰这些产品在推动软件开发方面的杰出贡献。回顾这12年来的获奖名单,入选的无一不是对业界产生深远影响的里程碑式作品。(详情可参阅www.sdmagazine.com)This second edition is not an update but the result of a thorough reworking. Not a paragraph of the original version has been left untouched. (Hardly a single line, actually.) Countless new topics have been added, including a whole chapter on concurrency, distribution, client-server computing and Internet programming; another on persistence and databases; one on user interfaces; one on the software lifecycle; many design patterns and implementation techniques; an in-depth exploration of a methodological issue on which little is available in the literature, how to use inheritance well and avoid misusing it; discussions of many other topics of object-oriented methodology; an extensive presentation of the theory of abstract data types : the mathematical basis for our subject, indispensable to a complete understanding of object technology yet seldom covered in detail by textbooks and tutorials; a presentation of O-O analysis; hundreds of new bibliographic and Web site references; the description of a complete object-oriented development environment (also included on the accompanying CD-ROM for the reader's enjoyment) and of the underlying concepts; and scores of new ideas, principles, caveats, explanations, figures, examples, comparisons, citations, classes, routines.
-
实用软件测试指南(美)James A.Whittaker著;马良荔,俞立军译;马良荔译本书所给出的测试并非传统意义上基于书面测试计划实施的循规蹈矩的测试,也没有讨论艰深的测试理论,而是直接面向实际应用,使测试员进行“自由”的测试,提出了对软件进行攻击的思想,从软件的用户界面、文件系统接口和操作系统接口三个最易于攻击的方面来实施攻击,并利用了所开发的软件,帮助测试员简单地捕获异常并强制执行一般错误,最终能更快、更多地发现软件中的错误,改进软件,提高软件质量。本书可作为计算机专业高年级本科生、计算机专业研究生的软件测试教材或参考书,也可作为软件开发人员、软件测试人员和软件管理人员的参考手册。前言关于本书本书基本上没有包含测试理论。阐述测试理论的书很多,但讲述一个好的测试员如何开展实际测试的书基本上没有。所以我写了这样一本书。我试图进入我所遇到过的最佳测试员的大脑并把最好的技术形成文字,指出隐错在什么地方以及如何最有效地找到这些隐错的方式继而获得可发布的高质量产品。我写本书的第二个目的是使它阅读起来充满趣味性并且包含的技术应用起来也很有趣。我爱中断软件。我希望我的热情将为软件测试行业增添光彩的一页。关于本书读者听起来有点像推销,但每一个读者都可以从本书中获得一些他所需要的知识。它以一种吸引初学者的指导风格书写,而最老练的测试人员可能欣赏本书独特的内容。当然,目前我作为大学教授也意味着我在写作本书时要把学生放在心上。我把本书用于本科生和研究生测试课程。学会如何成为一个优秀的测试员并超越基础理论是很重要的。关于本书的例子本书给出了来自实际应用软件的真实错误消息和奇异行为(我敢说是“隐错”吗?)的屏幕显示。包含这些例子用来描述本书所讲述的攻击技术。其中有些是大隐错,而有些只是小麻烦。例子的主要目的是教学和说明。这并不意味着仅仅作为大隐错的例子(尽管其中的一些确实如此),也不意味着我们取笑生产该应用程序的公司。实际上,我精心选择了市场领头羊的应用程序,所以能够被绝大多数读者立即认可。更进一步,每个例子都来自我平常交往的、其开发实践和文化是我所推崇的公司生产的应用程序。我提醒读者在应用本书中的技术或再现屏幕显示的隐错时要谨慎。许多攻击会使应用程序崩溃。确信在尝试攻击之前保存了你的工作,确保不丢失任何重要的数据。关于本书的组织本书由四部分组成。第一部分是对软件中断研究领域的介绍,以适应讲授对软件和它所工作的复杂环境的理解。对软件测试人员而言,理解软件环境很重要,这样他们就注意到软件内部在做什么以及它是如何与环境交互的。没有这样的理解,很难成为一个成功的软件中断者。第二部分详细介绍了能通过用户接口应用的特定攻击。无论接口是GUI或是程序的API,这一部分将会给出如何从接口攻击软件,何时应用每个攻击,攻击在破坏软件时为什么会成功以及是怎样成功的。这一部分可能成为在对你的软件目标进行攻击行动时最常引用的部分。第三部分讨论了非人类系统接口的测试问题(即如何测试应用程序的文件系统、操作系统、软件接口)。讨论了攻击策略。介绍了一个新的称为HEAT的工具,即不利环境应用程序测试器(HostileEnvironmentApplicationTester)。你可以在本书选配光碟中找到“CannedHEAT”。CannedHEAT允许测试员以一种称为运行期故障植入的技术来测试系统接口。第四部分是结论,结论是软件测试永远不能真正地掌握。相反,它要求不断地学习并获取新的技能。这部分我们描述了在Florida技术学院发生的两件有趣的充满教训的事。你可以把它们用在你?氖笛槭依铩K潜Vつ馨蜒昂陀槔止餐谌氲饺魏稳砑馐苑绞街校?附录B~附录D为软件中断者提供了特定的资源。附录B讨论了运行期故障植入。附录C描述了CannedHEAT的使用,CannedHEAT是选配光碟上的一个易于使用的故障植入工具。附录D重印了在“IEEESoftware”上已发表过的一篇文章,它描述了一般的软件测试过程。这些附录补充了本书的内容,可以单独阅读或作为本书的附加材料阅读。附录A包含了常用编程术语的定义。关于本书的内容本书脱离了传统的测试。在传统测试中,测试员准备好书面测试规划并把它作为测试软件时的脚本,测试提前规划好并以一种机械的方式执行。本书中的测试技术是灵活的,而传统测试是严格的。如果在一个软件项目中,需求改变了,隐错变成特性,进度压力强制计划重新评估时,就需要灵活性。软件测试并不是可以预先确定测试什么、执行计划并按计划来实施的一门精确的科学,这需要上帝般的远见。不是靠计划,而是靠智能、洞察力、经验以及对隐错隐藏位置的敏锐判断等来指导测试人员。本书会帮助测试员开发这种洞察力。作为测试规划和自动测试执行的一个长期拥护者,我对这种自由形式测试的第一个感觉是怀疑。但是,事实简单地驳倒了我。聪明的人做的探索测试找到了所有我见过的最佳隐错。同样是这些聪明的人在最佳测试自动化上也做得更好,不是一个小的零头而是一个数量级。当项目需做困难的、认真的测试时,往往是调入最聪明的测试员而不是测试计划或测试自动化。当需要做出关键的运载决定时,聪明的管理员会忽略测试计划的部署而注重最有经验的测试员的意见。我不久就确信我那宏大的全自动测试研究议程需要认真地重新考虑。我对那些知道产品并找出了所有隐错的人表示出强烈的兴趣。我可以证实这些民间方法没有脚本并设法抛开了压在桌上文档下的正式的测试计划。被提问时,他们总是回答:“那份计划并未瞄准隐错所在之处。”本书中体现的技术不仅允许测试员脱离脚本,也鼓励他们这么做。不要盲目相信文档,它们可能是过期的或在产品可测试之前写的。相反,应该开动脑筋!睁大眼睛!想一点,测试一点,再想一点。但是,不要认为我反对计划或文档。本书简单地讲授测试中的紧张工作计划。不要认为测试自动化是令人沮丧的。有许多重复复杂的任务需要好的工具(确实,收录在本书选配光碟上的就是这样的工具)。但是,工具永远不能代替智能使用。测试员思考并使用工具收集数据,以帮助他们更加快速有效地探究应用程序。如果给本书一句题词,则可以是:熟悉你的产品,考虑你的步调,并让经验引导你。甚至可以更简单:开动脑筋,睁开眼睛……测试!我长期热衷于研究这样的测试。我通过观察人们以及研究他们的隐错来做这项工作。为找出隐错,最好的测试员在做些什么?最佳隐错有什么共同之处?有没有方法推广有经验的测试员的行动使得缺乏经验的测试员能做得更好?我的意图是捕捉我所遇到的最优秀的测试员的最好思想,并把这些思想形成文字,以这种方式使测试新手能够学到有用的知识并变得更好。如果本书内容未能达到这个目标,那只是因为我个人的沟通技巧不足所致,而不是我的研究主体本身的技巧的反映。本书中好的内容都出自同事们细致研究过的工作。我感谢他们公开了他们找出的隐错以及他们的洞察力。本书中的错误全都归咎于我。把测试的辉煌景象形成文字对于像我这样的凡人来说是很困难的事。关于本书的补充材料本书提供了一张选配光碟,它包含了两个非常有用的工具,它们是Florida技术学院的教员和学生编写的。CannedHEAT和HolodeckLite是运行期监视和故障植入工具,运行于WindowsNT系列的平台上。两个工具都很容易使用,在本书的第三部分和附录中有详细的解释。另外,www.HowToBreakSoftware.com是获得最近的工具更新、隐错故事和与破坏软件原理相关的技术公告等信息的在线通道。JamesA.WhittakerMelbourne,FloridaAugust2001
-
实时UML——开发嵌入式系统高效对象(美)Bruce Powel Douglass著;尹浩琼,欧阳宇译嵌入和实时系统变得日益复杂,因此需要一种预先计划周详的、成熟的设计方法,如此方可成功地实现。基于对象的统一建模语言(UML)可以描述对于实时系统极为关键的结构和行为方面,并且已成为有效设计的优秀媒介。就像畅销的上一版一样,第二版概述了实时系统的本质,并且介绍了侧重于设计和开发的UML。本书详细讲解了需求分析、对象结构和对象行为的定义、体系结构设计、机械设计、以及包含数据结构、操作和异常的更详细的设计。书中图文并茂,详细阐述了UML的设计技术,并且通过详细、直实的例子向读者展示了这些技术的应用。本书以UML标准为基础,涵盖了动作主义元模型的状态图,并且深入描述和演示了如何有效地应用用例,以及捕获对象模型和状态行为。本书还介绍了作者多年研究的心血——嵌入式系统的快速面向对象过程(ROPES),这是一个已得到证实的产品开发过程,以及一个新的UML扩展过程的补充。BrucePowelDouglass是实时系统开发工具的主流厂商i-Logix的技术总宣传师,对于UML最初规范的制订功不可没,并且还是对象管理组(OMG)的实时分析和设计工作组的主席之一。他还为很多公司和机构,包括NASA,提供建大规模、实时、安全临界系统方面的咨询。他还写了其他四本实时和嵌入式系统方面的书。
-
CMM实施指南(美)James R. Persse著;王世锦,蔡愉祖译你可以用提高预见性的方法来降低风险。又通过策划、精心的实施和相应的评价来提高预见性。CMM中便包括了有关策划、实施和评价的指南。开始时,风险的下降并不显著,随着不断的精化,你发现风险会持续减小,直到运作在一个高度可预见的环境中。这样,便形成了一种比较流畅的内部管理,计划与实际之间达到良好的平衡,从而提高客户的满意度,提高了整体质量。能力成熟度模型(CMM)是专门为软件工程设计的质量管理标准。本书系统地介绍了CMM基本内容,包括成熟度等级、关键过程域以及各关键过程域的目标与共同特征。本书指导读者一步一步地实现CMM等级2,进而达到等级3,对CMM实践者来说,是一本不可多得?摹⑹涤玫男卸改稀?本书适合于软件企业的管理和技术人员、项目经理阅读,也可作为计算机软件专业本科生和研究生的参考教材。
-
数据结构500题何军,胡元义编本书汇编了500多道数据结构课程的题目,覆盖了数据结构课程的各部分内容。每一章包括例题和自测题,例题部分根据题目考察的知识点进行了类别的划分,给出了较详细的分析和解答;在每章的最后布置了各种类型的自测题,并提供了参考答案。本书旨在帮助广大学习数据结构的读者更深入地掌握数据结构的知识和原理,提高运用这些知识解决实际问题的能力,从而为掌握程序设计的方法奠定扎实的基础。本书适合高等院校计算机专业的学生配合数据结构课程的学习使用,同时适用于报考计算机专业研究生的考生进行专业课的复习,也可作为广大相关领域的技术人员和自学读者学习的辅导书。
-
软件质量工程的度量与模型(美)Stephen H.Kan著;王振宇等译;王振宇译理论、技术和实例的结合是本书的显著特点。本书的重点是使用度量,而不只是描述度量。除详细讲述基本问题和技术,包括软件度量、软件可靠性模型和程序复杂性的模型和分析外,还讨论了诸如过程中度量、缺陷排除有效性、顾客满意度等问题。书中有众多活生生的例子,其中许多来自作者的经历,他曾是荣获Baldrige奖的1BMAS/400系统软件质量活动的中心人物。这些例子向你展示怎样把理论和技术用于工作中。此书还包括来自惠普、摩托罗拉和NASA软件工程实验室这些著名计算机公司的例子。 理论、技术和实例的出色平衡,使此书成为关于软件开发中最重要问题之一的高度指导性的和实用的著作。StephenH.Kan博士,ASQC资格认证的质量工程师和资格认证可靠性工程师,是AS/400产品开发中质量管理过程的过程经理。从1988年AS/400的最初发布版本起,他就已经成为其软件系统的软件质量活动的中心人物。 本书详细论述了软件质量工程中的基本问题和技术,除软件度量、软件可靠性模型和程序复杂性的模型和分析外,还讨论了过程中度量、缺陷排除有效性、顾客满意度等问题。理论、技术和实例的结合是本书的显著特点,书中有许多来自IBM、摩托罗拉等软件工程实验室的例子。通过这些实例,读者可进一步了解如何把书中所讲的理论和技术用于实际工作中,以测量和改进整个软件开发过程的质量。
-
软件技术基础实验刘云,史红星著本书是软件技术基础课程的教材,它与中央广播电视大学出版社出版、刘云教授主编的《软件技术基础》一书配套使用。实验教材根据软件技术基础的课程要求,给出了五个基本实验,内容涉及到局域网安装与使用、Internet接入与应用、Windows2000安装与配置、局域网交换机设置、路由器的基本设置等各个方面。每个实验由试验目的、实验要求、实验内容与步骤、实验报告和实验相关知识五个部分组成,目的是通过上述实验,使学生了解计算机网络的基本组件(包括传输介质、网卡、集线器等),掌握它们之间的连接,进一步掌握网络操作系统的安装和交换机、路由器的基本设置,从而对软件开发的网络环境平台有一个基本了解。
-
软件自动化测试(美) Elfriede Dustin等著;于秀山等译本书详细介绍了软件自动化测试生存周期方法学所包含的自动测试计划、分析、设计、开发、执行和管理六个部分的内容,详细说明了如何对客户机/服务器和因特网应用进行自动化测试,并提供了许多软件自动化测试的最佳做法实例。本书结构清晰,内容丰富,适用性强,适用于软件测试人员、软件开发人员、软件质量保证人员以及软件项目管理人员,也可以作为高等院校计算机专业师生的参考书。