您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 1软件工程学概述(1)
信息工程大学电子技术学院软件工程SoftwareEngineering402教研室费晓飞办公室:1606电话:13523512977Email:fei_xf@sohu.com信息工程大学电子技术学院课程简介课程内容从系统工程角度讲述软件开发的过程、步骤、方法与技术软件开发与维护的原则、技术及方法帮助建立良好的软件工程观念思考:如果现在参加课题组,能胜任什么工作?如果现在负责项目,应该如何组织管理?信息工程大学电子技术学院课程知识结构Chp.1软件工程学概述Chp.2可行性研究Chp.5-6设计Chp.7编码与测试Chp.8维护Chp.3需求分析Chp.9面向对象方法引论Chp.13软件项目管理Chp.10面向对象分析Chp.11面向对象设计Chp.12面向对象实现补充CMMIPSP信息工程大学电子技术学院软件工程第1章软件工程学概述信息工程大学电子技术学院1.1软件危机1.2软件工程1.3软件生命周期1.4软件过程主要内容信息工程大学电子技术学院计算机系统的发展历程软件危机的内涵产生软件危机的原因解决软件危机的途径软件危机信息工程大学电子技术学院计算机系统的发展历程过程文档硬件人数据库软件系统输入输出基于计算机系统的系统元素信息工程大学电子技术学院计算机系统的发展历程早期(20世纪60年代中期以前)个体化的软件环境第2代(20世纪60年代中期到70年代中期)软件作坊第3代(20世纪70年代中期开始)微处理器出现第4代(20世纪70年代后期至今)更强大的硬件和软件信息工程大学电子技术学院软件危机的内涵来源1968年,北大西洋公约组织NATO的计算机科学家,在联邦德国召开国际会议,正式提出并讨论软件危机问题。定义软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。两方面问题如何开发软件──满足对软件日益增长的需求如何维护软件──维护数量不断膨胀的已有软件其它名称软件萧条(Softwaredepression)、软件困扰(Softwareaffliction)信息工程大学电子技术学院例:美国IBM公司在1963年至1966年开发的IBM360机的操作系统。这一项目花了5000人一年的工作量,最多时有1000人投入开发工作,写出了近100万行源程序。......据统计,这个操作系统每次发行的新版本都是从前一版本中找出1000个程序错误而修正的结果。......软件危机案例(1)信息工程大学电子技术学院这个项目的负责人F.D.Brooks事后总结了他在组织开发过程中的沉痛教训时说:“......正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。......程序设计工作正像这样一个泥潭,......一批批程序员被迫在泥潭中拼命挣扎,......谁也没有料到问题竟会陷入这样的困境......”。IBM360操作系统的历史教训成为软件开发项目的典型事例为人们所记取。软件危机案例(2)信息工程大学电子技术学院软件危机案例(3)⑴项目没有被很好地理解;计划不周,最终导致进度拖延。⑵没有充分的文档资料⑶软件可靠性缺少度量的标准,质量无法保证。而如何保证软件产品的质量,是非常复杂困难的问题。特别对于规模庞大的软件。⑷软件难以维护,不易升级。问题出在哪里?信息工程大学电子技术学院软件危机的内涵典型表现软件开发成本和进度的估计常常很不准确用户对“已完成的”软件系统不满意的现象经常发生软件产品的质量往往靠不住软件常常是不可维护的软件通常没有适当的文档资料软件成本在计算机系统总成本中所占的比例逐年上升软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的趋势信息工程大学电子技术学院产生软件危机的原因软件本身的客观特点软件是计算机系统中的逻辑部件,软件开发过程的进展情况较难衡量,软件开发的质量也较难评价,因此,管理和控制软件开发过程相当困难。同时,对软件的维护通常要修改原来的设计,困难很大。软件人员的主观原因早期阶段软件开发个体化的特点,导致许多与软件开发和维护有关的错误认识和作法,主要表现为忽视软件需求分析的重要性,轻视维护。软件人员进行软件开发与维护的方法不正确。软件产品需要分阶段的定义、设计和开发,严格的产品质量控制,完整的文档记录。信息工程大学电子技术学院软件的特点(1)软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性。可记录,但看不到。软件的生产与硬件不同,在它的开发过程中没有明显的制造过程。在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。磨合调整磨损用坏t失效率硬、软件产品失效率曲线信息工程大学电子技术学院软件的特点(2)软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性软件的开发至今尚未完全摆脱手工艺的开发方式。软件本身是复杂的实际问题的复杂性程序逻辑结构的复杂性软件成本相当昂贵。相当多的软件工作涉及到社会因素。信息工程大学电子技术学院软件的特点(3)信息工程大学电子技术学院软件的正确认识(1)软件≠程序软件开发不是纯粹的个人行为软件从定义、开发、使用和维护,直到最终被废弃,要经历一个漫长的时期,称为生命周期。(1)定义阶段问题定义可行性研究需求分析(2)开发阶段(3)维护编码总体设计详细设计测试信息工程大学电子技术学院软件的正确认识(2)0.05改进工作量(人.天)需求分析详细设计编码集成测试系统测试现场结构设计改正一个问题需要付出的代价(越在早期代价越小)信息工程大学电子技术学院解决软件危机的途径正确认识计算机软件:程序、数据及相关文挡的完整集合。充分认识到:软件开发不是个体劳动的神秘技巧,而是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。推广使用在实践中总结出来的开发软件的成功的技术和方法,研究、探索更好、更有效的技术和方法。开发和使用更好的软件工具有必要的组织管理措施软件工程是从管理和技术两方面研究如何更好地开发和维护计算机软件的学科。信息工程大学电子技术学院1.1软件危机1.2软件工程1.3软件生命周期1.4软件过程主要内容信息工程大学电子技术学院基本概念软件软件由三部分组成:程序:在运行时能提供所希望的功能和性能的指令集。数据:使程序能够正确运行的数据结构。文档:描述程序研制过程、方法及使用的文档资料。“软件就是程序”的观念是错误的!信息工程大学电子技术学院基本概念计算机应用发展软件数量多规模大个体化软件开发方法软件维护困难软件危机软件工程软件成本高质量低软件工程学诞生了!(1968NATO)复杂性高生产率低两种典型定义(1968NATO、1993IEEE)信息工程大学电子技术学院基本概念人们普遍认为,软件工程具有下列本质特性:软件工程关注大型程序的构造软件工程的中心课题是控制复杂性软件经常变化开发软件的效率非常重要和谐地合作是开发软件的关键软件必须有效地支持它的用户在软件工程领域中,是由具有一种文化背景的人替具有另一种文化背景的人创造产品信息工程大学电子技术学院基本原理著名软件工程专家B.W.Boehm在1983年提出7条基本原理:用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应该少而精承认不断改进软件工程实践的必要性信息工程大学电子技术学院软件工程的7条基本原理(1)用分阶段的生命周期计划严格管理应该把软件生命周期划分成若干个阶段,并相应地制定出切实可行的计划,然后严格按照计划对软件的开发与维护工作进行管理。(Boehm认为应该严格执行六类计划:项目概要计划;里程碑计划;项目控制计划;产品控制计划;验证计划;运行维护计划。)信息工程大学电子技术学院软件工程的7条基本原理(2)坚持进行阶段评审软件的质量保证工作不能等到编码阶段结束之后再进行。大部分错误是编码之前造成的:根据Boehm等的统计,设计错误占软件错误的63%,编码错误仅占37%。错误发现与改正得越晚,所付出的代价也越高。信息工程大学电子技术学院软件工程的7条基本原理(3)实行严格的产品控制当需求改变时,必须实行严格的产品控制,其中主要是实行基准配置管理(也称变动控制)。基准配置又称基线配置,是经阶段评审后的软件配置成分(各个阶段产生的文档或程序代码)。一切有关修改软件的建议,特别是涉及到基准配置的修改建议,都必须按照严格的规定进行评审,获得批准后才能实施修改。信息工程大学电子技术学院软件工程的7条基本原理(4)采用现代程序设计技术应该把软件生命周期划分成若干个阶段,并相应地制定出切实可行的计划,然后严格按照计划对软件的开发与维护工作进行管理。(Boehm认为应该严格执行六类计划:项目概要计划;里程碑计划;项目控制计划;产品控制计划;验证计划;运行维护计划。)信息工程大学电子技术学院软件工程的7条基本原理(5)结果应能清楚地审查软件开发人员工作进展情况可见性差,难以准确度量,难于评价和管理。应该根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,从而使得结果能够清楚地审查。信息工程大学电子技术学院软件工程的7条基本原理(6)开发小组的人员应该少而精开发小组人员的素质和数量是影响软件产品质量和开发效率的重要因素。小组人员增加,交流情况和讨论问题而造成的通讯开销也急剧增加,人数为N,可能的通讯路径有N(N-1)/2。信息工程大学电子技术学院软件工程的7条基本原理(7)承认不断改进软件工程实践的必要性仅有上述六条原理并不能保证软件开发与维护的过程赶上时代前进步伐,跟上技术的不断进步。不仅要积极主动的采纳新的软件技术,而且要不断总结经验。信息工程大学电子技术学院软件工程方法学软件生命周期:一个软件从定义、开发、使用和维护到最终废弃所经历的一个漫长的时期。方法学三要素方法:完成软件开发的各项任务的技术方法工具:为方法提供自动、半自动的软件支撑环境过程:获得高质量软件的任务框架、工作步骤方法学分类传统方法学(生命周期方法学、结构化范型)面向对象方法学信息工程大学电子技术学院传统方法学问题定义软件定义可行性研究需求分析总体设计生命周期软件开发详细设计编码和单元测试综合测试软件维护软件维护划分生命周期的基本原则:使各阶段的任务彼此间尽可能相对独立;同一阶段各项任务的性质尽可能相同,有利于软件开发工程的组织管理。信息工程大学电子技术学院面向对象方法学面向对象方法=对象+类+继承+消息通信面向对象方法学尽可能模拟人类的思维方式,符合人类认识客观世界解决实际问题的过程。降低了软件产品的复杂性,提高了可理解性,简化了软件的开发和维护工作。提高了可重用性。信息工程大学电子技术学院1.1软件危机1.2软件工程1.3软件生命周期1.4软件过程主要内容信息工程大学电子技术学院软件生命周期软件定义:确定开发总目标、工程可行性、采用的策略、系统的功能、所需资源及成本、工程进度表。软件开发:具体设计、实现。软件维护:使软件持久满足用户需要。软件生命周期(SoftwareLifeCycle):信息工程大学电子技术学院软件生命周期可行性研究与计划需求分析总体设计详细设计实现集成测试确认测试使用和维护——根据国标《计算机软件开发规范》信息工程大学电子技术学院生命周期各阶段任务问题定义•问题是什么?•关于规模和目标的报告书可行性研究•有可行解吗?•高层逻辑模型+DFD+成本/效益分析需求分析•必须作什么?•逻辑模型:DFD+数据字典+算法描述•规格说明书概要设计•如何解•系统流程图+成本/效益分析•层析图或结构图详细设计•具体实现方法•编码规格说明HIPO/PDL•模块设计编码与单元测试•正确的程序模块•Code+测试方案和结果综合测试•符合要求的软件•方案和结果+完整一致的软件配置软件维护•持久地满足用户需要•完整准确的维护记录•改正性、适应性、完善性和预防性。信息工程大学电子技术学院1.1软件危机1.2软件工程1.3软件生命周期1.4软件过程主要内容信息
本文标题:1软件工程学概述(1)
链接地址:https://www.777doc.com/doc-3683429 .html