第01章软件工程学概述01_第1页
第01章软件工程学概述01_第2页
第01章软件工程学概述01_第3页
第01章软件工程学概述01_第4页
第01章软件工程学概述01_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1软件工程导论〔第6版〕

张海藩编著课程简介软件工程是支撑软件产业的新学科,主要研究软件结构、软件设计与维护方法、软件工具与环境、软件工程标准和标准、软件开发技术与管理技术的相关理论。本课程只能作为软件工程的入门,介绍一些根本概念、方法和根本原理。包括软件工程概论,软件方案,软件需求分析,软件总体设计,软件详细设计,软件编码,软件测试,软件维护以及面向对象方法学概述。初步具备开发小型系统的能力。软件工程课程说明软件工程涉及:软件生命周期(定义、设计、编码、测试、发布、维护、淘汰)各阶段的任务与内容软件开发生产中有关工艺、模式、方法和工具的管理与技术问题软件工程不涉及:程序语言的内容软件编程软件工程着力于解决软件危机,即软件经常不能按时按质地交付使用软件工程教育的定位我国软件工程的专业教育与软件人才链之间的关系可描述为如以下图:软件开发工程师架构设计师产品经理工程管理者系统分析师系统设计师程序员研究生教育本科教育大专教育中专教育二、教学与考查方法1.使用计算机辅助教学;2.理论联系实际,结合实际软件工程的例子教学;3.平时〔作业、考勤〕10%,大作业30%,考试60%。4.强调实际软件工程能力的培养,每个学生必须参加一个软件工程小组(每组3-4人〕,完成一个实际软件工程案例实习,并撰写软件开发文档;每组人员的角色可为:1.工程经理2.系统分析人员3.系统设计人员4.系统实施人员5.系统测试人员

体验软件工程各阶段的主要工作,特别注意吸取教训;

学会与他人合作,培养团队精神,单干户将得不到成绩。目的财富可以通过辛勤劳动获取,也可能由于喜中彩票大奖获得。但知识却必须是通过一点一滴努力学习逐渐积累珍惜每一天,每一节课,每一分钟参考书目8根本要求了解国外软件工程开展的技术和趋势理解软件工程的思想和方法掌握软件开发方法和工具学会按照工程化的方法开发和维护软件具有阅读软件工程方面资料的能力为实践及以后的软件开发打根底总目录第1章软件工程学概述 第2章可行性研究 第3章需求分析 第4章形式化说明技术 第5章总体设计 第6章详细设计 第7章实现第8章维护 第9章面向对象方法学引论 第10章面向对象分析 第11章面向对象设计 第12章面向对象实现 第13章软件工程管理总目录第1章软件工程学概述0.1软件的定义0.2软件的特点0.3软件的分类1.1软件危机1.2软件工程1.3软件生命周期1.4软件过程1.5小结

0.1软件的定义1、软件的开展〔1〕、程序设计阶段〔60年代中之前〕.特点:程序规模小,编写者与使用者往往是同一人,没有系统的方法可循,没有设计文档资料。生产方式是:个体手工方式。软件=程序〔2〕、程序系统阶段〔60‘中---70’中)特点:程序规模大,这个时期引入多道程序设计、多用户系统、数据库管理系统,软件产品大量销售,软件数量急增。生产方式是:由个体开展为软件车间。软件=程序+说明书这个时期软件维护耗资巨增,更严重是软件产品不可维护,导致软件危机。诞生了软件工程这个新兴学科(68年)。本钱高IBM360OS,5000多人年,耗时4年(1963-1966),花费2亿多美元美国空军:1955年软件占总费用(计算机系统)的18%,70年60%,85年到达85%美国全球军事指挥控制系统,硬件1亿美元,软件高达7.2亿美元计算机软件和硬件费用比0.1软件的定义(3)软件工程阶段:(70年代~现在)特点:打破软件设计的个体化特征,有了软件工程化的设计原那么、方法和标准。软件产业兴起了软件产品化、系列化、工程化和标准化。生产方式是:由软件车间联成软件工厂、公司。软件=程序+文档但是软件标准的标准不完善,软件危机仍然存在,必须加快促进软件工程的开展。现在正向着第四阶段开展,社会信息化、软件产业化的阶段过渡,从现在的技术性的软件工程阶段过渡到企业计算机,社会信息化的计算机系统工程阶段。0.1软件的定义2.根据《GB/T11457-89软件工程术语》中的定义:软件是指与计算机系统的操作有关的计算机程序、规程、规那么以及任何与之有关的文件。简单地说,软件包括程序和文档两局部。程序是指适合于计算机处理的指令序列以及所处理的数据;文档是与软件开发,维护和使用有关的文字材料。软件软件就是程序?×一定要纠正软件就是程序,开发软件就是编写程序的错误观念!

软件定义:软件是能够完成预定功能和性能的可执行的计算机程序和使程序正常执行所需要的数据,加上描述软件开发过程及其管理、程序的操作和使用的有关文档。程序的构成:面向过程的程序=算法+数据结构面向对象的程序=对象+消息面向构件的程序=构件+框架软件=程序+数据+文档程序、软件:独唱—>>小合唱—>>合唱—>>万人大合唱

|||

简单程序较复杂程序软件0.2软件的特点软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性软件的生产与硬件不同,在它的开发过程中没有明显的制造过程在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题硬件失效率曲线,是一U型曲线〔即浴盆曲线〕。软件失效率曲线,它没有U型曲线的右半翼。因为软件不存在磨损和老化问题,然而存在退化问题。故障率时间初期故障率磨损实际理想故障率时间修改软件故障曲线硬件故障曲线硬件软件故障图0.3软件的分类按软件的功能进行划分:系统软件〔OS,DBMS等〕支撑软件〔编译程序等〕应用软件〔办公软件等〕按软件的功能进行划分:系统软件使计算机系统各个部件、相关软件和数据协调、高效地工作的软件操作系统数据库管理系统〔?〕设备驱动程序通信处理程序等软件的分类软件的分类支撑软件

协助用户开发软件的工具软件文本编辑程序文件格式化程序磁盘向磁带进行数据传输的程序程序库系统支持需求分析、设计、实现、测试和支持管理的软件应用软件商业数据处理软件工程与科学计算软件计算机辅助设计/制造软件系统仿真软件智能产品嵌入软件医疗、制药软件事务管理、办公自动化软件计算机辅助教学软件软件的分类按软件工作方式划分:

实时处理软件分时软件交互式软件批处理软件软件的分类按软件规模进行划分:类别参加人员数 研制期限源程序行数微型1 1~4周0.5k小型1 1~6月1k~2k数值计算或数据处理,通常没有与其它程序的接口。需要按一定的标准化技术、正规的资料书写以及定期的系统审查。只是没有大题目那样严格。中型2~5 1~2年5k~50k软件人员之间、与用户之间的联系、协调的配合关系。因而方案、资料书写以及技术审查需要比较严格地进行。应用程序和系统程序。系统的软件工程方法是完全必要的。软件的分类大型5~20 2~3年50k~100k编译程序、小型分时系统、实时控制系统等。二级管理,假设干小组,每组5人以下。人员调整往往不可防止,新手的培训。采用统一的标准,实行严格的审查是绝对必要的。甚大型100~10004~5年1M(=1000k)假设干个子工程,每一个子工程都是一个大型软件。子工程之间具有复杂的接口。如远程通信系统、多任务系统、大型操作系统、大型数据库管理系统、军事指挥系统通常现有这样的规模。很显然,这类问题没有软件工程方法的支持,它的开发工作是不可想象的。极大型2000~50005~10年1M~10M军事指挥、弹道导弹防御系统。只是对软件工程技术依赖的程度不同而已。软件的分类1.1软件的危机1.1.1什么是软件危机软件危机是指计算机软件的开发和维护过程中所遇到的一系列严重的问题。软件危机包含两方面问题:一、如何开发软件,以满足不断增长,日趋复杂的需求;二、如何维护数量不断膨胀的软件产品。28

1962年6月,美国飞向金星的第1个空间探测器

(水手1号)飞行中偏移了航线,失败了.

原因:飞舱中的导航程序中的一个语句的语义错.精心设计并花费巨额投资的美国阿波罗8号太空飞船登月飞行方案的软件的错误,使存储器一局部信息丧失;阿波罗14号在10天的飞行中,出现18个软件错误.原因:软件的可靠性问题软件开发失败的例子

1963年美国飞往火星的火箭爆炸,造成1000万美元的损失。原因是FORTRAN程序:

DO5I=1,3

误写为:DO5I=1.

3

1967年苏联“联盟一号”载人宇宙飞船在返航时,由于软件忽略一个小数点,在进入大气层时因打不开降落伞而烧毁。软件危机30美国肯尼迪发射的一枚“阿脱拉斯火箭,当飞离地面几十英里高空时翻转.地面控制中心被迫下令炸毁,结果损失1850万美元原因:飞行方案程序漏掉一个连接字符1963~1966年IBM开发OS/360操作系统,投资几千万美元,共约100万条指令,工作5000多人年,经费达数亿美圆,而结果却令人沮丧,错误多达2000个以上,系统根本无法正常运行。原因:方案上的问题,无法控制进度拉布雷阿的焦油坑〔MuralofLaBreaTarPits〕OS/360系统的负责人Brooks这样描述开发过程的困难和混乱:“…像巨兽在泥潭中作垂死挣扎,挣扎得越猛,泥浆就沾得越多,最后没有一个野兽能够逃脱淹没在泥潭中的命运。…〞321.1.2软件危机的原因1、软件的规模越来越大,结构越来越复杂。 随着计算机应用的日益广泛,需要开发的软件规模日益庞大,软件结构也日益复杂。1968年美国航空公司订票系统到达30万条指令;IBM360OS第16版到达100万条指令,花了5000个人年;1973年美国阿波罗方案到达1千万条指令。Windows95有1000万行代码,Windows2000有5000万行代码.这些庞大软件的功能非常复杂,表达在处理功能的多样性和运行环境的多样性。有人曾估计,软件设计与硬件设计相比,其逻辑量要多达10~100倍。对于这种庞大规模的软件,其调用关系、接口信息复杂,数据结构也复杂,这种复杂程度超过了人所能接受的程度。〔软件工程的特殊性和人类智力的局限性〕2024/1/8331.1.2软件危机的原因2、软件开发的管理困难、无方案性。由于软件规模大,结构复杂,又具有无形性,导致管理困难,进程控制困难,质量控制困难,可靠性无法保证。3、软件开发费用不断增加。软件生产是一种智力劳动,它是资金密集、人力密集的产业,大型软件投入人力多,周期长,费用上升很快。2024/1/8341.1.2软件危机的原因4、软件需求不充分〔软件开发人员对需求的理解与用户的本来愿望有差异〕。5、软件开发技术落后〔缺乏有力的方法学和工具的支持〕。6、软件开发过程无评测手段。1979年美国财政部对美国联邦政府开发的软件工程进行了调查,结果为:投资后未能交付的软件占20-21%,交付后不能使用的软件占47%,需要经过修改才能使用的占29%,交付后可以使用的只占3-4%。原因:需求没有做好根据1999年StandishGroup对当年美国工程的统计数字说明,只有26%的工程是真正成功的,28%的工程是彻底失败的〔即中途夭折的工程〕,介于两者之间是完成了的、但“受到质疑的〞工程占46%,这些工程被定义为存在费用超支、超出工期的工程。这些存在问题的或是失败的工程带来的直接损失是970亿美元,占了美国当年全部IT投资〔2550亿美元,17.5万个工程左右〕的近40%,而由于这些工程所带来的间接损失是无法估量的。StandishGroup的CHAOS报告进一步证实了与成功工程最密切的因素是良好的需求管理,也就是工程的范围管理,特别是管理好工程的变更。2003年,TheStandishGroup年度报告指出,在他们调查的13522个工程中,有66%的软件工程失败〔34%成功〕、82%超出时程、48%推出时缺乏必需的功能,总计约550亿美元浪费在不良的方案、预算或软件估算上。目前,软件专业人员对软件开发和维护存有不少糊涂观念,在实践过程中或多或少地采用了错误的方法和技术,这是软件问题开展为软件危机的主要原因。与软件开发和维护有关的许多错误认识和作法的形成,可以归因于在计算机系统开展的早期阶段软件开发的个体化特点。错误的认识和作法主要表现为无视软件需求分析的重要性,认为软件开发就是写程序并设法使之运行,轻视软件维护等。对软件的常见误解用户的误解开发人员的误解管理者的误解误解先对软件需求做一般的说明,以后再逐步明确就可以了.需求本身就是不断变化的,软件容易改变可以很快调整适应这种变化.现实软件需求不明确是造成软件开发费用增加和延时交货的主要原因.软件开发费用随着开发阶段的后移而大大增加.用户的误解改正一个问题需付出的代价需求分析总体设计详细设计编码集成测试系统测试现场改正一个问题的估计费用改正一个问题估计的工作量20200200010005.02.50.050.5(美元)(人天)开发人员的误解误解一旦程序开发完毕工作正常,我的任务就完成了在程序工作之前,无法顾及软件的质量问题.对于一个成功的工程来说,唯一能够提供的就是可以工作的程序.现实一个软件的50%-70%的工作量耗在软件交付使用以后.对于某些错误软件审查比软件测试更加有效.一个完整的软件要包括程序、各种文件和各种数据.管理者的误解误解书上已经有各种软件开发的标准,拿来用就是了.已经有足够的软件开发工具可供使用.一旦工程的程序员不够可以随时增加.现实书上是有各种软件开发的标准,但不是过时就是不适用.软件工具不是一拿来就能用的.“工程后期增加程序员会使工程的完成更加推后."--Brooks了解产生软件危机的原因,澄清错误认识,建立起关于软件开发和维护的正确概念,还仅仅是解决软件危机的开始,全面解决软件危机需要一系列综合措施。1.1.3解决软件危机的途径:解决软件危机的途径就是软件工程学的生成过程。主要有:〔1〕采用工程化方法和工程途径来研制与维护软件。在定义、开发、维护的流程中,将软件设计与工程实践相结合,开发技术与管理技术相结合,到达低本钱、高质量、满足需求的软件开发目的。这就形成了软件工程的技术,把软件作为工程产品来处理,按照方案、分析、设计、实现、测试、维护的周期来进行生产。〔2〕采用先进的技术、方法与工具来开发与设计软件。技术是指生产管理技术。〔3〕采用必要的组织管理措施。软件工程工程管理是通过人员组织管理、工程方案管理、标准化量化管理、配置管理,保证软件产品按期高质量完成。总之,为了解决软件危机,既要有技术措施〔方法和工具〕,又要有必要的组织管理措施。1.2软件工程软件工程:采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。“软件工程〞一词是1968年北大西洋公约组织(NATO)在联邦德国召开的一次会议上首次提出。Boehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料IEEE:1.将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;2.在1中所述方法的研究。FritzBauer:建立并使用完善的工程化原那么,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法

软件工程定义软件工程本质特性:1〕软件工程关注于大型程序的构造。2〕软件工程的中心课题是控制复杂性主要考虑:如何分解和集成为什么要分解:G.Miller,“7±2〞原那么3〕软件经常变化4〕开发软件的效率非常重要5〕和谐地合作是开发软件的关键6〕软件必须有效地支持它的用户7〕在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品扩展定义:软件=知识+程序+数据+文档1.2.2软件工程的根本原理用分阶段的生命周期方案严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应该少而精成认不断改进软件工程实践的必要性P7-9案例分析1:A组和B组都有共同的目标:十一期间到云南丽江旅游.A组组员在组长带着下,制定了详细的出游方案,作好了准备.B组组员却什么都没有准备.通过分析,比较两个小组可能出现的结果.原理1:用分阶段的生命周期方案严格管理据统计,在不成功的软件工程中,50%左右是由于方案不周造成的应该把软件生命周期划分成假设干各阶段,并相应制定出切实可行的方案,然后严格地按照方案对软件的开发与维护工作进行管理案例分析2:A组做了出游的方案如下表所示:活动时间订车票9.22-9.24联系丽江旅行社订房间9.22-9.24买路上吃的食品9.25出发到丽江10.1游玩10.2-10.5返回学校10.6如果其中任何一个活动没有按照方案进行,将导致整个出游方案的失败如何解决?????原理2:坚持进行阶段评审软件的质量保证工作不能等到编码阶段结束后再进行,在每个阶段都应进行严格的审查据Boehm等人统计,设计错误占软件错误的63%,编码错误占37%HP公司:有1/3以上的错误是由于不熟悉用户对界面的需求而引起的,通过建立大量的原型和设计评审方案,减少产品发布后的缺陷数,在公布的四次缺陷数据中,前两次发布后的缺陷占25%,第三次降到10%以下,第四次那么为零案例分析3:A组做了出游的方案如下表所示:活动时间订车票9.22-9.24联系丽江旅行社订房间9.22-9.24买路上吃的食品9.25出发到丽江10.1游玩10.2-10.5返回学校10.6在定票期间,由于负责定票的人Lily在没有通知大家的情况下将返回学校的票定在10.7日,此时将造成什么影响?在整个活动中允许随意的变更吗?原理3:实行严格的产品控制加强配置管理建立严格的变更控制流程原理4:采用现代程序设计技术结构化分析〔SA〕结构化设计〔SD〕面向对象技术〔OOA/OOD〕实践说明:采用先进的技术既可以提高软件开发的效率,又可以提高软件维护的效率。原理5:结果应能清楚地审查根据软件开发工程的总目标和完成期限,规定开发小组的责任、产品标准及完成日期,从而使得所得到的结果能够清楚地审查。原理6:开发小组的人员应少而精软件开发小组成员的素质要高,而人数那么不宜过多。开发小组人员的素质和数量是影响软件产品质量和开发效率的重要因素。案例分析4:丽江活动结束了,A小组这时应该做些什么呢?原理7:不断改进软件工程实践不断改进软件工程的实践。软件工程不应该停留在已有的技术水平上,应该积极主动地采取或创造新的软件技术,要注意不断总结经验,收集工作量、进度、本钱等数据,并运行出错类型和问题报告的统计。几个关于软件工程本质特性和根本原理的问题问题一:软件工程适用范围?问题二:软件工程是如何控制系统开发的复杂性的?问题三:以你的经验,举例说明一个成熟的软件通常采用什么方法来适应现实世界的变化的?问题四:假设某软件公司,能为同一个用户开发两个不同层次的软件:一个层次的软件功能非常强大,在满足用户所有需求的根底上,还能提供大大超过用户需求的其他更多更强的功能;另一个层次的软件仅仅能满足用户需求,但没有提供其他额外的功能。请问如果你是工程负责人,你会选择为客户开发那个层次的软件?问题五:协同工作有什么重要性?几个关于软件工程本质特性和根本原理的问题问题六:怎样理解“在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品〞这句话?问题七:某软件开发,由于时间和资金都非常紧迫,在需求分析人员非常认真、仔细地做完需求分析之后,说:我们可以保证我们的需求分析正确性,不用花时间检查了,设计人员可以直接拿着这份分析报告,马上开始设计。如果你是工程负责人,你会如何决定?为什么?问题八:在需求分析完成并获得了用户的肯定,也通过了评审,进入软件设计阶段之后,用户的想法有了改变,提出了一个新的要求,此时如果你是工程负责人,应该怎样做?“现在大家都已认识到,如果有哪个工程不遵循软件工程原那么必定会受到实践的惩罚。〞“软件工程课是我们参加工作以后最能直接应用的一门专业课。〞——一位刚毕业参加工作的计算机专业学生1.2.3软件工程方法学通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学(methodology),也称为范型(paradigm)。在软件工程领域中,这两个术语的含义根本相同。软件工程方法学包含3个要素:方法、工具和过程。67软件工程三个要素

工具Softwareengineeringlayers图1-5软件工程三个要素方法(步骤、原那么)

过程(任务(活动))

质量焦点工具为软件开发提供自动或半自动的软件支撑环境,建立计算机辅助软件工程(CASE)的软件开发支撑系统为软件开发

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论