《软件系统开发技术》课件第1章.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《软件系统开发技术》课件第1章.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件系统开发技术 软件 系统 开发 技术 课件
- 资源描述:
-
1、第一章绪言1.1 软件工程学的背景和目的1.2 软件和软件生命期模型1.3 软件质量的评价1.4 软件开发方法和软件自动工具习题一第一章绪言 计算机专业的学生在修完编程(Programming)等课程之后,对编写小型程序,例如字符编辑程序或报表打印程序等,一定是很有把握了。但是,如果需要研制一个大型的软件系统,例如飞机订票系统或学校管理系统(包括教务、财务、人事、物资等各系科的全面管理),相信会遇到许多困难,因此还必须学习“软件工程学”。“软件工程”(Software Engineering)是从“编程”演变过来的,后者一般考虑小型程序的编写,前者则考虑大型软件系统的研制。“软件工程学”出现至
2、今只有二十余年,是一门新的学科。本节先讨论软件工程学产生的背景及这门学科的目的。1.1 软件工程学的背景和目的软件工程学的背景和目的第一章绪言60年代以来,在一些技术领先的国家中,计算机的应用领域越来越广,它几乎涉及到社会生活的各个方面,如工厂管理、银行事务、病人监护、学校档案、图书馆流通、旅馆预订,这些系统的软件规模都相当大,逻辑很复杂,而且功能上需要不断更改和扩充。至于军事方面的导弹防御系统、宇航方面的飞行控制系统,其软件就更为庞大和复杂了。由于软件是非实物性、不可见的,开发软件本质上又是一个“思考”的过程,很难进行管理,开发人员可以按各自的爱好和习惯进行工作,没有统一的标准可以遵循,只能
3、以手工艺的方式进行。管理人员事前很难估计项目所需的经费和时间,技术人员在项目完成之前也难以预料系统是否能成功。第一章绪言 人们在开发上述大型软件系统时遇到了许多困难,有的系统最终彻底失败了;有的系统虽然完成了,但比原定计划迟了好几年,而且经费上大大超过了预算;有的系统未能完满地符合用户当初的期望;有的系统则无法进行修改维护。更糟的是,失败的系统往往无可挽回,除非再从头做起,但由于时间和经费的限制,这又是不可能的。IBM公司的OS360系统和美国空军某后勤系统在开发过程中遭受的挫折是众所周知的。以OS360为例:它由4000个模块组成,共约100万条指令,人工为5 000人年(一个人工作一年其工
4、作量相当于一个人年),经费达数亿美元,但结果却是令人沮丧的,人们在程序中发现的错误达2000个以上。第一章绪言 OS360系统的负责人Brooks曾生动地描述了开发过程中的困难和混乱:像巨兽在泥潭中作垂死挣扎,挣扎得越猛,泥浆就沾得越多,最后没有一个野兽能逃脱淹没在泥潭中的命运程序设计就像是这样一个泥潭一批批程序员在泥潭中挣扎没人料到问题竟会这样棘手”。人们发现,研制软件系统需要投入大量的人力和物力,但系统的质量却难以保证,也就是说,开发软件所需的高成本同产品的低质量之间有着尖锐的矛盾,这种现象就是所谓的“软件危机”(Software crisis)。第一章绪言 与此同时,由于新的电子元器件的
5、出现,计算机硬件的功能和质量在不断地提高,而价格却在大幅度地下降,因此同硬件投资相比,软件投资比例上升极快,图11是Boeh-m在l 976年对美国计算机总投资的统计和预测,从图中可以看出,在50年代,软件投资约占20,至70年代已超过60,当时预测到1985年软件投资将高达85。硬件价格的大幅度下降意味着计算机可以广泛使用,因此对软件的需求量将会迅速上升,但是软件危机的事实告诉人们:软件技术没有跟上硬件技术的高速发展,人们意识到计算机要推广使用,其关键在于软件开发技术的革新。第一章绪言图1.1第一章绪言 Parnas认真分析了开发大型软件和编制小型程序之间的差别,他发现,从所需人力来看,小型
6、程序从确定要求、编制、使用、直至修改往往是由同一个人完成的,因此只要他本人心里明白程序的构思就够了,而大型系统则必须由许多人(包括用户、项目负责人、分析员、高初级程序员、资料员、操作员等)组成一支开发队伍来协同完成,所以人与人之间必须准确地进行协商讨论;另外,从产品使用情况来看,小型程序往往是“一次性”的,意即如果需要作较大的修改,人们通常宁可丢弃旧的程序而重新编写,但大型系统的开发耗费了大量的人力与物力,所以人们一般不会轻易将其抛弃,而总是在旧程序的基础上一改再改,希望延长它的使用期,因而是“多个版本”的。第一章绪言 所以,Parnas将大型软件开发的特点总结为:由“多个人”来开发具有“多个
7、版本”的程序。大型软件系统的开发提出了许多新的问题,诸如:如何将一个系统分解成若干个部分,以便各人分工开发;如何精确地说明每个部分的规格要求;怎样才能使软件产品易于修改维护;。显然,传统的“编程”没有考虑这些问题。量变带来了质变,系统规模的增大使问题的性质发生了变化,人们认识到:正像不能用造独木船的手工艺方式来研制航空母舰一样,沿用50年代个人编写小型程序的那种手工艺方式来开发大型软件系统也是不行的,必须寻找新的技术来指导软件的大规模生产。第一章绪言 考虑到机械、建筑等领域都经历过从手工艺方式演变成严密完整的工程科学的过程,一些有识之士认为大型软件系统的开发也应该向“工程化”方向发展,逐步发展
8、成一门严格的工程科学。1968年在北大西洋公约组织的学术会议上有人第一次提出了“软件工程”这个词,还提出了一些软件工程化的技术并进行了讨论。第一章绪言 60 年代末至70年代初,“软件工程学”还处于学术研究阶段,但已对软件开发的实践产生了巨大的影响。l 971年IBM公司运用一些软件工程技术成功地研制了纽约时报情报库系统和空间实验室的飞行模拟系统。这也是两个著名的例子,尽管两个系统都很庞大,用户要求又有很多变化,并又减少了人力和削减了经费,但由于适当地采用了工程化的技术,还是按时、高质量地完成了,软件生产率比以前提高了一倍。第一章绪言 这些事实说明用“工程化”的思想作指导,可以大大减少软件开发
9、成本并提高软件质量,“工程化”为人们开辟了新的道路,“软件工程学”这门富有潜力的学科就此蓬勃地发展起来了。在我国,计算机领域近年来迅猛发展,前面讨论的种种问题和矛盾也就在国内暴露出来了。国内的软件工作者也意识到要进一步发展我国的计算机事业,软件工程学是个关键。目前国内、国外都有许多人在从事这一领域的研究,软件工程学已成为计算机学科中的一个重要分支。第一章绪言 作为一门学科,软件工程学研究的是:如何应用一些科学理论和工程上的技术来指导大型软件系统的开发,使其发展成一门严格的工程科学;软件工程学的最终目的是以较低的成本研制具有较高质量的软件。所以,研究软件工程学无疑将促进计算机推广应用的步伐,直接
10、或间接地产生巨大的社会效益和经济效益。第一章绪言表表 1.1第一章绪言 软件工程学包括的面很广,有基础理论研究,也有应用研究以及实际开发;除了技术问题之外,它还涉及与开发软件有关的所有活动,例如管理学、心理学、经济学法律、道德等方面。本书只讨论软件工程中的技术问题,重点是软件产业界近年来较流行的实用技术。第一章绪言 计算机领域从5 0年代到9 0年代有了突飞猛进的发展,人们对许多问题的看法也发生了根本的变化。所以,在学习具体的软件开发技术之前,我们有必要对软件的一些基本概念,如什么是软件、软件开发过程包括哪些活动、如何评价软件产品的质量等,重新进行讨论。读者将会看到目前的看法同传统的观点已有了
11、相当大的差别。软件和软件生命期模型是软件工程学中两个重要的概念。过去,人们一般认为所谓“软件”就是指“程序”,所谓“开发软件”也仅仅就是“编程序”而已。但是,对于大型软件系统而言,这样的理解是不合适的。1.2 软件和软件生命期模型软件和软件生命期模型第一章绪言众所周知,凡是工业产品都有其生命周期,即要经过分析要求、设计、制造、测试、运行(此时需要不断地维护)等几个阶段。软件也是一种产品,同样存在生命周期。那什么是软件生命期呢?一个软件从被提出开始研制至软件最终被废弃不再使用为止的全过程,称为软件生命期。软件生命期的划分应该适应软件生产工程化的需要,而不是千篇一律的。图1.2是一种典型的软件生命
12、期模型(software Life cycle Model)示意图,由于其形状似多级瀑布,常称为“瀑布模型”。这种模型把软件生命期划分为可行性研究与计划、需求分析、设计、编程、测试、运行与维护等六个阶段,每个阶段都有明确的任务,并需产生一定规格的文档资料交付给下一阶段,下一阶段在上阶段交付的文档的基础上继续开展工作。第一章绪言 图 1.2第一章绪言 在图1.2生命期模型中,第一个阶段有时又称为计划期,中间四个阶段总称为开发期,最后一个阶段称为运行期。表1.2概括地列出了每个阶段的基本任务、工作结果(即提交的文档)以及参加人员。第一章绪言第一章绪言 1.可行性研究与计划阶段可行性研究与计划阶段
13、当准备接受一个软件开发任务时,首先要确定是否值得去开发,如果不值得去开发,那么花费在这项开发工程上的任何时间、资源、人力和经费都是无谓的浪费。可行性研究与计划阶段的基本任务是搞清问题的性质,确定系统的目标和规模,从技术、经济和社会因素等方面分析论证本软件项目的可行性,并最终产生一份可行性分析报告。可行性研究的结果是使用部门负责人做出是否继续进行这项工程的决定的重要依据。第一章绪言 2.需求分析和规格说明阶段需求分析和规格说明阶段(简称需求分析阶段简称需求分析阶段)在设计软件系统之前,首先必须确定用户究竟要求软件系统做什么,所以分析阶段的基本任务是理解用户的需求,并将用户的需求用书面形式表达出来
14、。这一阶段产生的文档是需求规格说明书(简称需求说明书),它明确地描述了用户的要求。需求说明书是以后备阶段工作的基础。用户和软件人员双方都应有代表参加这一阶段的工作,需求说明书就是双方充分讨论交流后达成的协议。第一章绪言3.设计阶段设计阶段 在设计阶段,要在需求说明书的基础上建立软件系统的“结构,包括数据结构和模块结构。设计阶段一般又可分为两步:概要设计(或称为总体设计)和详细设计,前者主要考虑模块的分解,后者考虑每个模块内部的细节。本阶段产生的文档包括模块说明书、数据库或文件结构说明等。由于软件产品的质量在很大程度上取决于设计方案的质量,所以设计工作要由经验较丰富的高级软件人员来完成。第一章绪
15、言 4.编程阶段编程阶段 在编程阶段,按模块说明书的要求为每个模块编写程序。相对地说,这个阶段是最简单的,初级程序员可以参加编程阶段的工作。5.测试阶段测试阶段 由于前面三个阶段都可能产生各种各样的错误,所以测试阶段的任务就是发现并排除这些错误。静态检验工作实际上在上述每个阶段的最后就必须进行,而测试阶段则进行最后的动态检验。测试通常又可分为模块测试、集成测试和系统测试等几步。测试应该由另一个独立的部门(如不参加系统的设计或编程的人员)来完成。经过测试就得到了软件系统的第一个版本。第一章绪言 zelkowity对一些软件项目中各阶段的工作量进行了统计,图1.3是他给出的结果。图1.3(a)说明
16、在整个生命期中,开发期和运行期所占的工作量,可以看出维护工作量要占一半以上。图1.3(b)说明在开发期中各阶段所占的工作量,可以看出,测试工作量约占其中的一半。图1.3告诉我们,编程工作在整个生命期中只占很小的比例,所以“开发软件仅仅是编程”的想法显然是错误的。第一章绪言 图 1.3第一章绪言 图1.2的瀑布模型将软件生命期组织成六个阶段,这是比较有代表性的模式。也有人提出其他一些模式,表1.3列出了Freeman、Metzger、Boehm等人的模式,可以看出,各种模式基本上是类似的。第一章绪言第一章绪言 由于软件规模大、逻辑复杂,且生命期又长,而人的记忆力是有限的,所以有关软件系统的所有资
17、料,必须以书面文档的形式记录下来,这样开发人员就能以文档为基础协同工作,各阶段之间也可通过文档实现过渡。显然,文档健全与否直接影响着最终产品的质量。为了强调软件产品除程序之外还必须包括各种文档资料,Boehm为软件给出了新的定义:“软件是程序以及开发、使用和维护程序所需的所有文档”,因此,需求说明书、模块说明书、数据库和文件说明、程序、测试计划、测试用例、使用手册、维护手册各阶段交付文档的全体就是“软件”。第一章绪言 由此可见,作为一名称职的软件开发人员,光会编程是不够的,他还必须掌握分析、设计、测试等方法和工具,学会编写上述各种文档。培养学生掌握这些技术就是本书的目的。与传统的手工艺开发方式
18、相比,上述生命期模型有两个明显的长处,第一,由于强调要将每个阶段的工作结果用书面形式描述出来,这就使原来“不可见”的软件变成了“可见”的文档资料;第二,开发过程分阶段按步骤进行,以交付某种特定规格的文档作为标志某个阶段完成的里程碑,这就使原来“难以管理的思考过程”变为“可以管理的生产过程”了。第一章绪言显然,这两点长处为提高软件生产率和改进软件质量创造了极为有利的条件。必须指出的是,实际软件系统的开发不可能是理想化地按瀑布模型进行,由于人们理解问题总有一个反复的过程,所以从后阶段回复到前阶段是不可避免的。例如在设计阶段发现需求说明书有不完整或不正确之处,就必须进行“再分析”,测试阶段发现模块界
19、面有错误,就必须进行“再设计”,在运行阶段为了扩充系统的功能又要进行“再分析”、“再设计”、“再编程”等。另外,阶段之间也没有明确的界线,如分析阶段需要考虑系统的可行性,就一定会涉及一些设计方面的问题;又由于采用了模块化的技术,某些模块的编程有可能与另一些模块的测试并行进行。第一章绪言 软件工程学的最终目标是获得高质量的软件,所以如何评价软件质量是一个重要的问题。以前,对小型程序,人们一般比较强调程序的正确性和效率,近年来随着软件规模的增大和复杂性的上升,对问题的看法已发生了变化。目前,软件质量的定义还是非常模糊的,人们对此尚未形成一致的看法,但一般说来倾向于从可维护性、可靠性、可理解性和效率
20、等方面对软件作较全面的评价,下面分别讨论之。1.3软件质量的评价软件质量的评价第一章绪言 1.可维护性可维护性(Maintainability)软件在运行阶段尚需不断“修正”,因为软件虽经测试但不可避免地总还隐含着各种错误,这些错误在运行阶段会逐步暴露出来,因而就要进行排错。例如1BM公司的0s360系统,据说每个版本中约有成千个错误;又如某军事系统在运行初期,平均每月发现900个错误,纠正一个错误平均需修改l 7条指令。第一章绪言 软件在运行阶段尚需不断“完善”,因为系统经过一个时期的使用后,用户必然会逐步提出一些更改或扩充要求,软件就需要相应地不断作修改。软件在运行阶段往往还需作“适应性”
21、修改,因为近年来计算机业发展迅速,一般在3至5年内,硬件或系统软件就会出现更新换代的新产品,于是应用软件系统也就需要作相应的调整或移植。在运行期中,对软件所作的上述修正性、完善性和适应性修改,总称为“维护”,它涉及再分析、再设计、再编程、再测试等活动。考虑到大型软件系统的运行期可达10年以上,所以维护的工作量是极大的。第一章绪言 另外,维护工作也是相当困难的,由于软件逻辑上的复杂性,修改往往会带来新的错误。据统计,软件错误中有1 9是由于修改造成的;有人还统计出,如果一个修改涉及5至l0个语句,修改成功的可能性是50,如果一个修改涉及4 0至50个语句,则修改成功的可能性下降至2 0,因此软件
展开阅读全文