1、1第二篇第二篇 软件工程软件工程n 软件工程的基本概念软件工程的基本概念n 软件开发各阶段的任务、技术、方法软件开发各阶段的任务、技术、方法n 主要的软件开发方法主要的软件开发方法 结构化分析和设计结构化分析和设计 面向对象分析和设计面向对象分析和设计n 软件测试(步骤、方法)软件测试(步骤、方法)n 软件维护(内容、策略)软件维护(内容、策略)主要内容:主要内容:2第一章第一章 软件工程概述软件工程概述n 软件技术软件技术n 软件危机软件危机n 软件工程软件工程n 软件工程环境软件工程环境主要内容:主要内容:3n 程序程序与与软件软件 程序:一系列程序:一系列指令序列的集合指令序列的集合,能
2、,能被计算机理解和执行被计算机理解和执行 软件:是计算机系统中软件:是计算机系统中与硬件子系统相互依存与硬件子系统相互依存的另一个的另一个 子系统子系统,是一个包含,是一个包含程序程序及其及其文档文档资料的完整集资料的完整集 合,提供了合,提供了用户与硬件子系统之间的接口用户与硬件子系统之间的接口n 软件软件 文档文档:与程序开发、维护和使用有关的图文材料:与程序开发、维护和使用有关的图文材料 程序程序:按事先设计的功能和性能需求执行的指令序列:按事先设计的功能和性能需求执行的指令序列 数据数据:是程序能正常操纵信息的数据结构:是程序能正常操纵信息的数据结构 1.1 1.1 软件技术概述软件技
3、术概述 41.1 1.1 软件技术概述软件技术概述 n 软件的发展历史软件的发展历史1 1 早期阶段(早期阶段(6060年代中期以前)年代中期以前) 关键词:面向批处理,有限的分布,自定义软件。关键词:面向批处理,有限的分布,自定义软件。2 2 第二阶段(第二阶段(6060年代中期年代中期7070年代中期)年代中期) 关键词:多用户,实时,数据库,软件产品。关键词:多用户,实时,数据库,软件产品。3 3 第三阶段(第三阶段(7070年代中期年代中期8080年代末)年代末) 关键词:分布式系统,嵌入关键词:分布式系统,嵌入“智能智能”,低成本硬件,消费者影响。,低成本硬件,消费者影响。4 4 第
4、四阶段(第四阶段(8080年代中期至今)年代中期至今) 关键词:桌面系统,面向对象,人工智能,网络,并行计算关键词:桌面系统,面向对象,人工智能,网络,并行计算个性化的程序个性化的程序 工程化的产品工程化的产品( (软件软件) )51.1 1.1 软件技术概述软件技术概述 n 大型软件的特点:大型软件的特点:n 规模大规模大(数据量大、占用内存大数据量大、占用内存大)n 复杂性高复杂性高(模块间关系、调用方式、数据、文件模块间关系、调用方式、数据、文件)n 开发周期长、涉及人员多开发周期长、涉及人员多n 开发、维护和使用人员不同开发、维护和使用人员不同n 多学科综合多学科综合(软件知识、领域知
5、识软件知识、领域知识)6n 软件技术的定义:软件技术的定义: 是开发计算机软件所需的所有技术的总称是开发计算机软件所需的所有技术的总称n 计算机软件技术的领域计算机软件技术的领域:n 软件工程技术软件工程技术n 程序设计技术程序设计技术n 软件工具环境技术软件工具环境技术n 系统软件技术系统软件技术n 数据库技术数据库技术n 实时软件技术实时软件技术1.1 1.1 软件技术概述软件技术概述 7n 软件复用的定义软件复用的定义 在构造新的软件系统的过程中,对已存在的软件产品在构造新的软件系统的过程中,对已存在的软件产品 ( (设计结构、源代码、文档等设计结构、源代码、文档等) )重复使用的技术重
6、复使用的技术n 三个层次三个层次:知识复用、方法复用、软件成分复用知识复用、方法复用、软件成分复用n 软件成分复用的三个级别软件成分复用的三个级别:n 代码复用(代码复用(剪贴、包含和继承剪贴、包含和继承)n 设计结果复用(设计结果复用(设计模型设计模型)n 分析结果复用(分析结果复用(分析模型分析模型)n 组件技术组件技术1.1 1.1 软件技术概述软件技术概述 8n 软件危机的定义软件危机的定义 计算机软件的开发和维护过程所遇到的一系列严重问题,计算机软件的开发和维护过程所遇到的一系列严重问题,如:如:开发周期长开发周期长、成本增加成本增加、可靠性降低可靠性降低等。等。 n 1979197
7、9年美国政府项目调查表年美国政府项目调查表1.2 1.2 软件危机软件危机 9 软件危机的表现软件危机的表现n 对软件开发成本和进度的估算很不准确对软件开发成本和进度的估算很不准确n 用户很不满意用户很不满意n 质量很不可靠质量很不可靠n 没有适当的文档,维护困难没有适当的文档,维护困难n 软件成本比重上升软件成本比重上升n 供不应求供不应求1.2 1.2 软件危机软件危机 10硬件的故障率曲线软件的故障率曲线1.2 1.2 软件危机软件危机 n 软件危机产生的原因软件危机产生的原因n 客观客观:软件本身特点:软件本身特点n 逻辑部件逻辑部件n 规模庞大规模庞大n 主观主观:不正确的开发方法:
8、不正确的开发方法n 忽视忽视需求分析需求分析n 认为认为“软件开发软件开发 = = 程序编写程序编写”,忽视,忽视设计设计和和文文档档n 轻视软件轻视软件测试测试和和维护维护成本昂贵、本质复杂、没成本昂贵、本质复杂、没有明显的制造过程,运行有明显的制造过程,运行期间存在退化问题。期间存在退化问题。11n 解决途径解决途径n 组织管理组织管理n 工程项目管理方法工程项目管理方法n 技术措施技术措施n 软件开发技术与方法软件开发技术与方法n 软件工具软件工具1.2 1.2 软件危机软件危机 12n 软件工程的定义软件工程的定义 是指用是指用工程的概念、原理、技术和方法工程的概念、原理、技术和方法来
9、来开发和维护开发和维护 软件,把软件,把经过时间考验证明经过时间考验证明正确的管理技术正确的管理技术和和当前能当前能 够得到的够得到的最好的技术方法最好的技术方法结合起来,指导计算机软件结合起来,指导计算机软件 的开发和维护的工程学科的开发和维护的工程学科n 指导计算机软件开发和维护的指导计算机软件开发和维护的工程学科工程学科 n 工程方法工程方法 + + 管理技术管理技术 + + 技术方法技术方法1.3 1.3 软件工程软件工程 131.3 1.3 软件工程软件工程 n 确保确保软件质量软件质量和提高和提高开发效率开发效率n 内容内容:n 严格按照计划进行管理严格按照计划进行管理n 坚持进行
10、阶段评审坚持进行阶段评审n 实行严格的产品控制实行严格的产品控制n 采用现代化的程序设计技术采用现代化的程序设计技术n 结果应能清楚地审计结果应能清楚地审计n 开发小组的人员应该少而精开发小组的人员应该少而精n 承认不断进行软件工程实践的必要性承认不断进行软件工程实践的必要性n B.W.Boehm的七条软件工程原理的七条软件工程原理n 软件生命周期的定义软件生命周期的定义 是一个软件从是一个软件从用户需求用户需求开始,经过开始,经过分析分析、开发开发、测试测试、运行维护运行维护的一系列相关活动的全周期。的一系列相关活动的全周期。14n 软件的生命周期过程软件的生命周期过程1.3 1.3 软件工
11、程软件工程 151.3 1.3 软件工程软件工程 n 软件工程方法学软件工程方法学 软件工程是软件工程是技术技术与与管理管理的紧密结合,技术是指方法学问题,的紧密结合,技术是指方法学问题,管理是指通过计划、组织和控制等活动,合理配置和使用各种资管理是指通过计划、组织和控制等活动,合理配置和使用各种资源,得到满足质量要求的工作产物(运行系统和支持文档)。源,得到满足质量要求的工作产物(运行系统和支持文档)。n 方法学的三个要素:方法学的三个要素:方法方法、工具工具和和过程过程方法方法:是完成软件开发各项任务:是完成软件开发各项任务的技术方法,是回答的技术方法,是回答“如何做如何做”的问题;的问题
12、;工具工具:为方法的运用提供自动的:为方法的运用提供自动的或半自动的软件支撑环境;或半自动的软件支撑环境;过程过程:一系列工作步骤。:一系列工作步骤。 16n 方法学的分类方法学的分类快速原型方法快速原型方法1.3 1.3 软件工程软件工程 结构化方法结构化方法起源于结构化程序设计思想,注重系统组成要素之间的起源于结构化程序设计思想,注重系统组成要素之间的相互作用关系,强调软件系统结构的合理性;相互作用关系,强调软件系统结构的合理性;提出一组提高软件结构合理性的准则:结构化分析、结提出一组提高软件结构合理性的准则:结构化分析、结构化设计、结构程序设计和结构化测试构化设计、结构程序设计和结构化测
13、试采用的过程模型采用的过程模型 : 瀑布模型、瀑布模型、原型模型原型模型螺旋模型、螺旋模型、增量模型增量模型面向对象方法面向对象方法采用的过程模型采用的过程模型 :OO 对象对象 类类 继承继承 消息通讯消息通讯 喷泉模型喷泉模型 :以算法和数据结构为核心以算法和数据结构为核心171 1 瀑布模型瀑布模型 n 特点特点n 阶段的阶段的顺序性顺序性和和依赖性依赖性n 推迟实现的观点推迟实现的观点n 文档驱动文档驱动的质量保证的质量保证n 存在问题存在问题n 不适合需求模糊的系统不适合需求模糊的系统n 结构化的软件过程模型结构化的软件过程模型1.3 1.3 软件工程软件工程 182 2 快速原型模
14、型快速原型模型 快速原型方法快速原型方法n 原型原型: 是系统的早期版本,是系统的物理模型,是系统的早期版本,是系统的物理模型,只实现了系统的一些最基本的功能,反映系统只实现了系统的一些最基本的功能,反映系统的行为特性,但不一定满足全部需求。的行为特性,但不一定满足全部需求。n 建立原型的步骤建立原型的步骤:n 确定用户的基本需求确定用户的基本需求n 建立工作原型建立工作原型n 试用原型试用原型n 修改补充原型修改补充原型n 特点特点:n 容易理解和沟通容易理解和沟通n 及早发现需求中的问题及早发现需求中的问题n 检查设计的可行性检查设计的可行性n 快速原型法快速原型法: 在软件生命周期的编码
15、阶段之前在软件生命周期的编码阶段之前插入一个建立系统原型的阶段。插入一个建立系统原型的阶段。1.3 1.3 软件工程软件工程 193 3 螺旋模型螺旋模型 螺旋模型将瀑布模型和快速原型模型结合起来,螺旋模型将瀑布模型和快速原型模型结合起来,强调强调了其了其他模型所忽视的他模型所忽视的风险分析风险分析,特别,特别适合于大型复杂的系统适合于大型复杂的系统。 四个象限四个象限分别代表了以下活动:分别代表了以下活动: (1 1)制定计划制定计划:确定软件目标,选定实:确定软件目标,选定实施方案,弄清项目开发的限制条件;施方案,弄清项目开发的限制条件;(2 2)风险分析风险分析:分析评估所选方案,考:分
16、析评估所选方案,考虑如何识别和消除风险;虑如何识别和消除风险;(3 3)实施工程实施工程:实施软件开发和验证;:实施软件开发和验证;(4 4)客户评估客户评估:评价开发工作,提出修:评价开发工作,提出修正建议,制定下一步计划。正建议,制定下一步计划。1.3 1.3 软件工程软件工程 204 4 增量模型增量模型 也称构件集成模型,也称构件集成模型,整个软件产品被分解成若整个软件产品被分解成若干个构件,每一个构件都干个构件,每一个构件都有设计、实现、集成和测有设计、实现、集成和测试等过程。开发人员逐个试等过程。开发人员逐个构件地交付产品。构件地交付产品。缺陷缺陷:需要软件具备开放式的体系结构需要
17、软件具备开放式的体系结构:新构件加入系统,必须不破坏:新构件加入系统,必须不破坏已构造好的系统部分。已构造好的系统部分。增量模型的灵活性能较好地适应需求的变化,但容易使软件过程增量模型的灵活性能较好地适应需求的变化,但容易使软件过程的控制的控制失去整体性失去整体性。 1.3 1.3 软件工程软件工程 215 5 过程模型之间的比较过程模型之间的比较 1.3 1.3 软件工程软件工程 221)1) 基本思想基本思想: 模拟人类习惯的思维方式,通过建立问题域的对象模型(不强调模拟人类习惯的思维方式,通过建立问题域的对象模型(不强调算法和数据结构),使得问题空间与解空间在结构上尽可能一致;算法和数据
18、结构),使得问题空间与解空间在结构上尽可能一致;开发过程渗透了开发过程渗透了演绎演绎(一般到特殊:对象分类一般到特殊:对象分类)和)和归纳归纳(特殊到特殊到一般:一般:“派生类派生类”对对“基类基类”的继承的继承)的渐进深化的思维过程。)的渐进深化的思维过程。2)2) 最主要特征最主要特征: 以对象模型为核心,整个生命周期使用相同的概念、表示法和策以对象模型为核心,整个生命周期使用相同的概念、表示法和策略,为动态模型和功能模型提供实质性得框架。略,为动态模型和功能模型提供实质性得框架。3)3) 组成组成:n面向对象分析(面向对象分析(Object-Oriented Analysis, OOA)
19、n面向对象设计(面向对象设计(Object-Oriented Design, OOD)n面向对象程序设计(面向对象程序设计(Object-Oriented Programming, OOP)n 面向对象方法学面向对象方法学1.3 1.3 软件工程软件工程 23n OOA:n 任务任务:分析问题域,用相应的符号系统建立系统的概念模型;:分析问题域,用相应的符号系统建立系统的概念模型;n 通常从三个方面建立系统模型:通常从三个方面建立系统模型:n 对象模型对象模型:描述系统数据结够:描述系统数据结够n 动态模型动态模型:描述系统控制结构:描述系统控制结构n 功能模型功能模型:描述系统功能:描述系统
20、功能n OOD:n 任务任务:决定如何将系统划分成子系统,:决定如何将系统划分成子系统, 每个子系统分成更小的子系统每个子系统分成更小的子系统n OOP:n 任务任务:将:将OODOOD的结果用一种程序设计语言实现的结果用一种程序设计语言实现1.3 1.3 软件工程软件工程 244)4) 采用的软件过程模型:采用的软件过程模型:喷泉模型喷泉模型 以以“无缝无缝”连接和连接和“迭代迭代”的方的方式,保证了各个式,保证了各个阶段工作的连续性阶段工作的连续性。 “圆圈圆圈”代表生命周期的阶段,代表生命周期的阶段,圆圈的重叠圆圈的重叠表示了阶段间的迭代表示了阶段间的迭代和无缝过渡,和无缝过渡,“向下箭
21、头向下箭头”代表代表了阶段内的了阶段内的迭代或求精迭代或求精。1.3 1.3 软件工程软件工程 25n 软件工具软件工具:n 定义:定义:可以用来帮助开发、测试、分析、维护可以用来帮助开发、测试、分析、维护 其它计算机程序的程序以及文档资料的其它计算机程序的程序以及文档资料的 集合,它可以实现软件生产过程自动化,集合,它可以实现软件生产过程自动化, 提高软件的生产率、可靠性,降低软件提高软件的生产率、可靠性,降低软件 生产成本。生产成本。n 软件工具是一种自动化系统软件工具是一种自动化系统n 用于软件生存周期的某一个阶段或某一个环节用于软件生存周期的某一个阶段或某一个环节1.4 1.4 软件工
22、程环境软件工程环境 26n 软件工程环境的定义软件工程环境的定义: 是用以支持需求定义、程序生成,以及软件维护是用以支持需求定义、程序生成,以及软件维护等整个软件生命周期全部活动的,并把方法、规模和等整个软件生命周期全部活动的,并把方法、规模和计算机程序集成在一起的整个体系。计算机程序集成在一起的整个体系。又称为软件开发环境,软件支撑环境,自动开发环境又称为软件开发环境,软件支撑环境,自动开发环境n 需求需求:n 集成化的系统集成化的系统n 通用的系统通用的系统n 可剪裁又可扩充的系统可剪裁又可扩充的系统n 实用的、经济合算的系统实用的、经济合算的系统1.4 1.4 软件工程环境软件工程环境
23、27n 计算机辅助软件工程计算机辅助软件工程 CASE( (Computer Aided Software Engineering) )n 将软件工程方法、工具与环境方面的新技术同将软件工程方法、工具与环境方面的新技术同 形式化语义理论有机地结合起来形式化语义理论有机地结合起来n 标志着软件开发技术的发展进入一个新阶段标志着软件开发技术的发展进入一个新阶段n 可以对软件生产过程的每一步提供辅助手段可以对软件生产过程的每一步提供辅助手段1.4 1.4 软件工程环境软件工程环境 281.1.软件的概念软件的概念、大型软件的特点、大型软件的特点2.2.计算机软件技术的概念和领域计算机软件技术的概念和领域3.3.软件复用的概念、级别软件复用的概念、级别4.4.软件危机的概念、表现、产生原因和解决方法软件危机的概念、表现、产生原因和解决方法5.5.软件工程的概念软件工程的概念6.6.软件生命周期的概念软件生命周期的概念, ,阶段划分阶段划分, ,瀑布模型特点瀑布模型特点7.7.三种开发方法的主要思想、各自的优缺点三种开发方法的主要思想、各自的优缺点8.8.软件工具和软件工程环境软件工具和软件工程环境课堂总结课堂总结(掌握,(掌握,了解了解)
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。