软件工程及软件方法学
-
实时设计模式(美)Bruce Powel Douglass著;麦中凡,陶伟译;麦中凡译本书是美国AddisonWesley公司出版的对象技术(最新2003年)丛书之一,旨在用面向对象技术开发实时和嵌入式系统软件。<br>众所周知,实时和嵌入式系统软件由于其开发层次较低,直接在硬件上开发时间紧要、安全紧要、高可靠性的系统,传统上是C语言和汇编语言的天下。传统的软件工程技术着重软件的可移植、可复用、可伸缩,易维护、低成本,借助于一个良好的平台,快速交付,支持业务过程的快速变革的高适应性系统。软件工程使平台以上的系统日臻完善,发展了面向对象技术、构件技术乃至于直接使用软件服务。“相信”实现服务的构件、支持构件实现的平台(操作系统、网络软件及数据库软件)都是最优或较优的。显然,与实时嵌入式系统要处处操心每个软件元件的性能、可靠性、安全性走的是两条路,他们“不相信”臃肿的通用平台能解决他们在有限资源下做出高性能系统所遇到的各种问题。所以,实时和嵌入式系统的业者一般不关心软件工程技术的最新进展,也很少在他们的工作中采用软件工程新技术,停留在提供完善的模块和子系统层次上,强耦合的过程式模块开发还是主流。<br>从系统的观点来看,实时嵌入式系统也是系统,特别是硬件技术的快速发展,实时嵌入式软件也有快速适应硬件型号升级问题,也有业务快速变更要求可伸缩、可修改(例如,军用导弹、飞机型号升级,民用产品换代)可复用问题。1975年,美国国防部开发的Ada语言系统就是为了在主机上开发适应变化的系统。通过交叉编译生成机载、弹载的目标系统嵌入到应用环境中,一切系统维护、伸缩均在Ada源代码级软件上完成。在某种意义上,今日的面向对象技术得益于Ada的数据抽象和模块封装。由于Ada为保证军用软件可移植性管得过严,面向对象技术蓬勃发展在C++上得以体现。于是实时嵌入式系统自然转向底层是C的C++。但对象化对实时性、可靠性并没有直接的好处,所以在小型实时嵌入式应用中,面向对象依然不占上风,仍然是过程式开发方法最后穿上C++外衣。尽管如此,有了C++这个桥,为实时嵌入式系统再一次和当前软件工程技术合流打下了良好的基础。<br>面向对象封装带来的松耦合,使它成为分布式可伸缩系统的首选技术,且随着当今网络的普及,对象成了应用的第一类公民,网络是对象交互和通信的世界。打包也好,请代理也好,不是对象只能窝在本机上做点实际工作。<br>为了参与网络上提供实时服务,为了支持应用系统的快速变更,快速提供嵌入式产品,大幅度降低成本提供标准化、构件化产品,实时嵌入式系统的对象化、构件化势在必行!当然,也应该看到,CPU速度大幅提高,减缓这类系统的开发者因实时对标准化、构件化的抵制,使他们乐于参加现代技术大合奏。<br>重新认识软件是有体系结构的。软件开发是一个软件过程,是近十年软件技术最重要的成就。过去的开发着眼于功能性能,无形中完成了一个软件过程,得到一个有体系结构的产品。当时并不在意过程好坏,体系结构是什么样的。通过验收能够满足使用的就是好产品。但情况并非如此顺利,“树欲静而风不止”,使用中不断发现新bug,用户一再要求改进(受其他新技术影响或总结出使用经验)。过程和体系结构在软件可适应、易维护性上显现出极大的威胁力。不良的体系结构使此处bug消除,彼处新bug又冒出,甚至导致整个系统崩溃。不良的过程找不到资以分析的文档、数据,一个不大的改进每步都从头试起,迟迟调不出来,大量窝工,成本飚升。于是,人们把软件开发从以功能性能为中心转而为以软件体系结构为中心,精心改进软件过程,从而软件在改变之中依然能保证符合需求的功能,并能保证高质量和低成本。<br>体系结构从总体上决定了软件可能达到的各项质量指标。例如,别墅、板楼、塔楼,在通风、抗震、舒适程度、方便性、成本方面各不相同,一经确定则影响终身。例如楼层太矮、电梯过少、没有绿地等。软件过程通过精心安排软件制作的各项活动切实保证软件质量。该有的活动没有或不能即时到位都会造成低质量、高成本,甚至项目失败。过程是产品质量最直接的保证。所以ISO9000系列就是所有人工制品的(过程)质量标准。美国CMM标准化更是以过程成熟度来衡量软件企业有无资质承担软件开发。软件体系结构和软件过程相辅相成,一为软件内在质量保证,一为过程质量保证。所以,以体系结构为中心的最优过程开发已为世界广泛接受。<br>过程是以时间为进程的各项软件活动。开发活动完成都凝聚成有体系结构的软件,即它的后果(体系结构)是可分析、可测试度量的。优秀的体系结构如前所述,正是软件设计的目标。于是人们研究分析体系结构并寻找设计实现的途径。<br>体系结构不外乎是实现各项功能、性能的元构件有机组合的集合。在面向对象的背景下,它们都是类对象,为了设计(有机组合)方便,把对象组成惯用的、不易出错的、可靠的、接近标准化的形式,则为模式(pattern)。最小的模式是几个类对象组成的构件,最大的模式是若干构件组成的子系统。<br>最早也是最基础的设计模式是Liskov提出的七种基本模式,并提出对象构成模式的五条基本准则,为面向对象设计模式奠定了理论基础。随后是“四人帮”(Gamma等四人)提出了常用的25种设计模式,为以模式设计软件体系结构提供了工程实践的基础。不过,“四人帮”讨论的模式作用域是局部的,我们把它们叫做机制式的设计模式(mechanisticdesignpattern),因为它们为对象的协作定义了各种机制。这种模式有较大的局限,只在单个的协作内。本书并不讨论机制式的设计模式,本书讨论的是体系结构设计模式(architecturedesignpattern)。<br>当然,各软件应用领域也都有本领域的模式,如果总结出来作为准规划,则本领域软件开发速度会成倍提高,而软件质量也较容易得到保证。本书就为实时嵌入式领域总结出了54种模式。<br>本书作者BrucePowelDouglass博士在实时嵌入式系统领域工作已有26年,是世界公认的领袖人物,目前是本书推荐的ROPES(嵌入式系统的快速面向对象过程)的创始人。他也即时转入到面向对象领域,成为ILogix公司的首席技术指导,实时系统开发工具的领导者,也是UML规范嵌入系统会议顾问委员会的成员。Douglass博士为多个公司和组织做过咨询,包括NASA。他还是OMG的RTDA(RealTimeAnalysisandDesignWorkingGroup)的副主席和面向对象杂志的专栏作家。<br>本书可以作为实时嵌入式系统的设计人员和开发人员的技术参考书,也可以作为计算机、自动化、机电一体化等专业的大学高年级学生学习操作系统、计算机控制系统等课程辅助教材。同时,本书对正在学习UML建模的设计人员也是一个很好的范例。此外,本书可以作为软件开发组织知识共享的模板,参考本书描述模式的方式把技术人员解决问题的经验抽象化、形式化,在组织范围内共享。<br>译者积极翻译并向业界推荐本书还有一个原因,这就是本书以对象模式的观点把计算机最底层的操作功能实现整个演示了一遍,如并发进程、内存管理、资源锁定、进程分布、安全性和可靠性。这对于欲深入理解计算实现本质的读者(不一定去做实时嵌入式应用),是一本很好的教材。在翻译过程中为减少混乱,我们厘定某些术语的译法,也算对业界的建议,如有不妥之处,欢迎指正。<br>实时设计模式〖〗<br>Broker译为“中介”,当前Broker、Proxy、Agent、Delegation均为“代理”,而Broker、Proxy在本书中也常出现在一页上,故Broker为“中介”(无授权),Proxy为“代理”(有授权),而Delegation干脆是“委派”,Agent在本书中出现极少,且不易冲突仍沿用“代理者”。<br>本书的前言、序和第1章至第3章由麦中凡教授翻译,第4章至第9章和附录由陶伟翻译。在成书过程中,吕庆中、程勇、胡斌、李晔参与了部分工作。麦中凡教授对全书做了细致的审校。<br>最后,我们感谢北航出版社在本书的成书过程中提供的大力帮助。<br>我们的电子邮件地址是:<br>mids@buaa.edu.cn<br>译者于北航<br>2003年6月 -
现代软件工程成奋华主编高职高专计算机专业规划教材。本书分为9章,讲述了软件的需求分析、软件的系统设计、面向对象设计方法、软件编码、软件测试、软件维护、软件管理等内容。 -
软件测试实用指南林宁,孟庆余主编;中国电子技术标准化研究所编著本书讲述了软件测试的基本理论和技术,以及软件测试主要要发展方向,特别是在软件开发过程中的测试、产品测试、标准符合性测试和互操作性测试等方面有独到之处,不但总结了当前一些软件工程的理论结果,还反映了我国在软件测试方面的技术水平以及实践经验。本书内容为软件测试的意义、软件测试方法的分类、软件测试技术、软件开发过程中的测试、产品测试、可靠性测试、标准符合性测试、互操作性测试、软件测试环境与工具和软件测试管理等。本书前言当前,我国正处在快速进入信息化社会的过程中,信息化社会的重要特点,就是信息技术应用进入社会和人们生活的各个方面。社会的运转依赖于各个信息化系统以及由各个系统共同组成的信息化平台,而支持此系统运转和提供各种应用功能的灵魂就是人们通称的软件。近年来,我国的软件业在政府以及各级主管部门的高度重视和大力支持下,得到迅速发展。自从2000年6月国务院颁布了“鼓励软件产业和集成电路产业发展的政策”后,可以说迎来了我国软件产业发展的春天。软件的地位十分重要,在各种应用系统中处于关键位置。就其自身发展和客观要求而言,软件的功能愈来愈强,规模愈来愈大,内部结构也愈来愈复杂。随着软件技术的发展和应用的广泛,软件的质量和软件的生产率难以适应发展需求的问题越来越突出,相应的软件产品测试、评价已提到重要议程。软件质量的提高,既依赖于软件过程的建立、控制、改进等软件过程工程的一些方法,如CMM,CMM-1,ISO9000,ISO/IEC15504等,也依赖于软件的测试。当前,软件测试不仅仅体现在测试的执行,而且贯穿在软件生存周期全过程。软件测试已越来越受到软件界和广大的软件用户的关注。没有测试过的软件,软件企业不会放行,软件用户也不会接受,即使通过了CMM-3,4,5级认定的软件企业,也不会不执行测试。软件测试技术一直在进行研究,不少专家创造了一些重要的理论和方法。软件测试技术内容覆盖范围广,一般认为软件测试应包含软件测试的基础理论和基本技术、软件测试的标准和规范、软件测试的环境和工具、软件测试的管理等四方面内容。本《指南》共分9章。就其技术内容而言可以分为四大部分,第一部分包括:第1、2、3、4、5、7章,介绍测试的理论和基础。其中:第1、2章介绍软件测试的基本概念,发展状况和基本技术;第3章介绍软件在开发过程中用到的测试方法和技术;第4章介绍软件产品的测试方法和技术;第5章介绍软件的可靠性测试的方法和技术;第7章介绍软件的互操作性测试的概念、方法和技术。第二部分包括第6章,介绍有关软件的国家标准及标准的符合性测试的基本技术和方法。第三部分包括第8章,介绍软件测试工具。第四部分包括第9章,介绍软件测试管理。本《指南》编写人员如下:朱三元上海计算机软件中心研究员第1、2章李洁北京工程设计研究总院研究员第3章许聚常北京软件评测中心高级工程师第4章孟庆余北京大学软件工程国家工程研究中心客座研究员第5、6章王欣中国电子技术标准化研究所工程师第6章叶东升航天软件测评中心研究员第8、9章最后由孟庆余研究员统稿和定稿。《指南》得到了信息产业部科技司副司长韩俊、国家标准管理委员会主任助理宿忠民、信息产业部电子信息产品管理司陈英处长、国家科技部梅建平处长等领导的指导,在此向他们表示衷心的感谢。《指南》内容深入浅出,适应面广。它既适应于软件工程和测试的有关管理人员和领导,又适应于技术人员;它既可作为培养专门软件测试人员的教材,又适合于作为高等院校计算机专业的本科生及大专生的参考书。由于软件和软件测试在技术上发展很快,再加上编者水平有限,本《指南》一定存在诸多不足之处,敬请读者批评、指正。 -
软件领导Murray Cantor著;朱剑平等译;朱剑平译软件开发团队对高效率开发的高需求,以及公司对高质量软件的需求,使得资深专业人士成为软件公司的宝贵资产。新一代的经理人必须快速掌握该职位所要求的关键技能,而资深专业人士也必须掌握能大大缩短软件一发周期的团队协作的新方法。本书对如何成为一个成功的经理人以及如何构建一支有竞争力的软件开发团队等方面提供了生动、实用的指导。本书适用于那些有一定软件背景的经理人以及资深的软件专业人士。本书是作者多年专业经验的结晶,对每个成功的团队领导人所必须掌握的知识和必须具备的技能做了精准而易懂的介绍。成功的软件领导必须理解的内容包括: ·软件质量 ·高效开发实践 ·团队动力学 ·适当的领导风格 -
信息检索技术孙建军等编著本书系统地介绍了信息检索的原理与技术。讨论的中心问题是如何能迅速地检索到相关信息。具体内容包括:信息检索的布尔模型、向量空间模型、概率模型,以及逻辑模型;文献自动处理技术:自动分类、自动聚类、自动文摘;查询的扩展与精化、相关性、Z3950,以及搜索引擎等。本书可作为高等院校信息管理与信息系统专业本科生和研究生教材,也可作为信息机构有关信息服务人员、咨询人员、管理人员的参考用书。 -
UML 2工具箱(美)Hans-Erik Eriksson等著;余安萍,俞俊平等译;余安萍译本书为广大读者能够体验UML 2提供了一个令人激动的机会,从对UML进行概念性介绍开始,全面讲述了面向对象的方法、建模,以及UML的方方面面,涵盖了UML 2.0的所有最新特性,最后讲述了一个实际案例,其中插入了作者丰富的实践经验。本书内容全面、示例清晰、文字诙谐,非常便于读者的阅读和理解。随书附带的光盘包含本书中所有的UML模型、Java代码,还有相关建模工具的链接,例如,Rational XDE,Visio和TogetherJ。本书非常适合于希望把UML应用到实际项目中的所有读者。 -
中文VISUAL FOXPRO精彩编程五十例王彬华,李建华编著本书精选五十个程序实例、运用简明的文字针对每一实例介绍如何建立一个VisualFoxPro程序、并讲解编写程序的步骤与方法。 -
统一过程精解(美)Kendall Scott著Many of the designations used by manufacturers and sellers to distinguish theri products are claimed as trademarks. Where those designatioins appear in this book, and Addison-Wesley was aware of a trademark claim, the designations have been printed with initial capital letters or in all cpitals.The author and publisher have taken care in the preparation of this book, but make no expressed or implied warranty of any kind and assume no responsibility for errors or omissions. No liability is assumed for incidental or consequential damages in connection with osr arising out of the use of the information or programs contained herein. -
软件工程齐治昌等编著《软件工程(第2版)》覆盖CC2001对软件工程课程的基本要求,内容包括:软件开发模型,软件项目管理,需求分析,软件设计,软件编码与测试,软件维护,配置管理,软件工程管理,软件工程工具和环境。《软件工程(第2版)》结合目前软件工程教学的需要,特别介绍了统一建摸语言UML,并依次为基础讨论面向对象的需求分析与软件设计方法;介绍集成化CASE环境,java与internet环境下的软件开发技术;介绍支持软件过程改进的“软件能力成熟度模型”(cmm)。《软件工程(第2版)》含有丰富的例题与习题,便于教学和自学。《软件工程(第2版)》强调软件工程的理论与实践相结合,技术与管理相结合,方法与CASE工具相结合。教材思路清晰,语言简练,具有实用性和可操作性,可作为高等院校计算机专业或信息类相关专业高年纪本科生或研究生教材,也可作为软件开发人员的参考书。 -
实用声纳工程(英)A.D.Waite著;王德石等译本书在声纳设计使用与研究开发之间搭起了一座桥梁。所以作为培训教材,本书为声纳的使用人员和学习人员提供了全面的基础知识与结论性规律,作为参考资料,本书从应用的角度阐述了声纳技术涉及的所有问题,为声纳设计者与研究人员以及从事声学研究的相关人员提供了宝贵的经验。
