收藏 分享(赏)

软件工程导论(第六版)电子教案(第1-13章).doc

上传人:cjc2202537 文档编号:266632 上传时间:2018-03-25 格式:DOC 页数:105 大小:1,004.50KB
下载 相关 举报
软件工程导论(第六版)电子教案(第1-13章).doc_第1页
第1页 / 共105页
软件工程导论(第六版)电子教案(第1-13章).doc_第2页
第2页 / 共105页
软件工程导论(第六版)电子教案(第1-13章).doc_第3页
第3页 / 共105页
软件工程导论(第六版)电子教案(第1-13章).doc_第4页
第4页 / 共105页
软件工程导论(第六版)电子教案(第1-13章).doc_第5页
第5页 / 共105页
点击查看更多>>
资源描述

1、第一章 软件工程学概述教学目标与要求1.掌握程序软件、软件、软件危机与软件工程等基本概念内涵2.掌握软件工程的基本原理和方法3.了解生命周期方法,着重理解软件工程过程的实质4.会应用各种软件开发模型教学重点与难点重点:软件危机的相关概念、软件生命周期难点:软件生命周期、软件过程模型教 学 过 程 设 计 新课导入、新课教学、课堂讨论、作业讲评。教学方法 以多媒体讲授为主,适当结合提问、设问、讨论等方法。1.1 软件危机一、软件危机的介绍:1、计算机系统的发展历程:四个阶段2、软件危机的含义 软件的概念软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及其相关文档的完整集合。其中,程序

2、是按事先设计的功能和性能要求执行的指令序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发、维护和使用有关的图文材料。 软件的特点:7 个每个特点都显示在屏幕上 软件的分类从 6 个方面对软件进行分类 软件的发展四个阶段 软件危机的含义:软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题 软件危机的表现:7 个方面二、产生软件危机的原因与软件开发和维护有关的许多错误认识和作法的形成,可以归因于在计算机系统发展的早期阶段软件开发的个体化特点。错误的认识和作法主要表现为忽视软件需求分析的重要性,认为软件开发就是写程序并设法使之运行,轻在此详细介绍软件的概念、特点及分类

3、对每个特点进行详细阐述由上面计算机发展的四个阶段引出软件发展的四个阶段对每个方面进行阐述对 6 个原因进行阐述视软件维护等。从而引出产生软件危机的 6 个原因。6 种原因省略。三、消除软件危机的途径到了 20 世纪 60 年代末期,软件危机已相当严重。这促使计算机科学家们开始探索缓解软件危机的方法。他们提出了“软件工程”的概念,即用现代工程的原理、技术和方法进行软件的开发、管理、维护和更新。于是,开创了计算机科学技术的一个新的研究领域。软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。1.2 软件工程一、软件工程的概念概括地说,软件工程是指导计算机软件开发和维护的

4、工程学科。采用工程的概念、原理、技术和方法与维护软件,把经过时间考验而证明的管理技术和当前能够得到的最好技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。二、软件工程的基本原理著名的软件工程专家 B. W. Boehm 于 1983 年综合了软件工程专家学者们的意见并总结了开发软件的经验,提出了软件工程的 7 条基本原理。这 7 条原理被认为是确保软件产品质量和开发效率的原理的最小集合,又是相互独立、缺一不可、相当完备的最小集合。1用分阶段的生存周期计划严格管理2坚持进行阶段评审3实行严格的产品控制4采用现代程序设计技术5结果应能清楚地审查6开发小组的人员应少而精7承

5、认不断改进软件工程实践的必要性三、软件工程的目标软件工程的目标是在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并满足用户需求的软件产品。补充:1)可修改性(modifiability) ,允许对软件系统进行修改而不增加其复杂性。2)有效性(efficiency) ,指软件系统的时间和空间效率。3)可靠性(reliability) ,是指在给定的时间间隔内,程序成功运行的概率。4)可理解性(understandability) ,指系统具有清晰的结构,能直接反映问题的需求。5)可维护性(maintainabil

6、ity) ,是指软件产品交付使用后,在实现改正潜伏的错误、改进性能等属性、适应环境变化等方面工作的难易程度。由现实中出现问题就要想法找到这个问题的解决办法,引入消除软件危机的途径软件工程为了使学生对软件工程有一个更好的理解,引入软件工程的三种不同概念对每条原理给出详细阐述由前面的知识,让同学们自己总结出软件工程的目标适应本课程英语序列化的要求,对软件工程的目标进行解释,并给出一些英语词汇6)可重用性(reusability) ,是指软部件可以在多种场合使用的程度。7)可适应性(adaptability) ,是指软件在不同的系统约束条件下,使用户需求得到满足的难易程度。8)可移植性(portab

7、ility) ,是指软件从一个计算机系统或环境移植到另一个上去的难易程度。9)可追踪性(traceability) ,是指根据软件需求对软件设计、程序进行正向追踪,或根据程序、软件设计对软件需求进行逆向追踪的能力。10)可互操作性(interoperability) ,是指多个软件元素相互通信并协同完成任务的能力。四、软件工程的原则1抽象(abstraction) ,抽取各个事物中共同的最基本的特征和行为,暂时忽略它们之间的差异。2、信息隐藏(information hiding) ,将模块内部的信息(数据和过程)封装起来。3局部化(localization) ,即在一个物理模块内集中逻辑上相

8、互关联的计算资源。局部化支持信息隐藏,从而保证模块之间具有松散的耦合、模块内部有较强的内聚。4、一致性(consistency) ,整个软件系统(包括程序、数据和文档)的各个模块应使用一致的概念、符号和术语;程序内部接口应保持一致;软件与环境的接口应保持一致;系统规格说明应与系统行为保持一致;用于形式化规格说明的公理系统应保持一致。5完全性(completeness) ,软件系统不丢失任何重要成分,完全实现所需的系统功能的程度。为了保证系统的完全性,在软件的开发和维护过程中需要严格的技术评审。6可验证性(verifiability) ,开发大型软件系统需要对系统逐层分解。系统分解应遵循易于检查

9、、测试、评审的原则,以使系统可验证。五、软件工程方法学软件工程方法学包括三个要素,这就是方法、工具和过程。其中,方法是完成软件开发的各项任务的技术方法,回答“如何做”的问题;工具是为方法的运用提供自动的或半自动的软件支撑环境;过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学。1、 传统方法学传统方法学也称为生命周期方法学或结构化范型。2、面向对象方法学概括地说,面向对象方法具有下述四个要点:对象: 把对象(Object)作为融合了数据及在数据上的操作行为的统一的软对每个原则进行 阐述,为第

10、 5 章的学习打下基础当软件规模较大,或者对软件的需求是模糊的或随时间变化的时候,使用结构化范型开发软件往往不件构件。面向对象程序是由对象组成的,程序中任何元素都是对象,复杂对象由比较简单的对象组合而成。类:把所有对象都划分成类(Class)。每个类都定义了一组数据和一组操作,类是对具有相同数据和相同操作的一组相似对象的定义。数据用于表示对象的静态属性,是对象的状态信息,而施加于数据之上的操作用于实现对象的动态行为。 继承按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。 联系 对象彼此之间仅能通过发送消息互相联系。对象的所有私有信息都被

11、封装在该对象内,不能从外界直接访问,这就是通常所说的封装性。面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,从而使描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能一致。小结:本章对计算机软件工程学作了一个简短的概述。首先通过回顾计算机系统发展简史,说明开发软件的一些错误方法和观念是怎样形成的。然后列举了这些错误方法带来的严重弊病(软件危机),澄清了一些糊涂观念。为了计算机系统的进一步发展,需要认真研究开发和维护软件的科学技术。应总结计算机软件的历史经验教训,借鉴其他工程领域的管

12、理技术,逐步使软件工程这门新学科发展和完善起来。作业:P32 习题 1 1、3、4成功;此外,使用传统方法学开发出的软件,维护起来通常都很困难。由此引出面向对象方法。1.3 软件生命周期软件生命周期由软件定义、软件开发和软件维护三个时期组成,每个时期又进一步划分成三个阶段:软件定义、开发时期、维护时期。软件定义时期通常划分成三个阶段,即问题定义、可行性研究和需求分析。开发时期具体设计和实现在前一个时期定义的软件,它通常由下述四个阶段组成:总体设计,详细设计,编码和单元测试,综合测试。维护时期的主要任务是使软件持久地满足用户的需要。下面简单介绍软件生命周期每个阶段的基本任务。1 问题定义问题定义

13、阶段必须回答的关键问题是:“要解决的问题是什么?”2 可行性研究对于上一个阶段所确定的问题有行得通的解决办法吗?3 需求分析这个阶段的任务仍然不是具体地解决问题,而是准确地确定“为了解决这个问题目标系统必须做什么” ,主要是确定目标系统必须具备哪些功能。这个阶段的一项重要任务是用正式文档准确地记录对目标系统的需求,产生规格说明书。4 总体设计这个阶段必须回答的关键问题是:“概括地说,应该怎样实现目标系统” 。应设计出低成本、中等成本、高成本 3 种方案,推荐最佳方案。5 详细设计这个阶段的关键问题是“应该怎样具体实现这个目标系统。 ”设计每个模块,确定实现模块功能所需要的算法和数据结构。6 编

14、码和单元测试这个阶段的关键任务是写出正确的容易理解、容易维护的程序模块7 综合测试这个阶段的关键任务是通过各种类型的测试使软件达到预定的要求。集成测试:根据设计的软件结构,把经过单元检验的模块按某中选定的策略结合起来,在装配过程中对程序进行必要的测试。验收测试:按照规格说明书的规定,由用户对目标系统进行验收。8 软件维护,通常有四类维护活动:改正性维护:诊断和改正在使用过程中发现的软件错误适应性维护:修改软件以适应环境的变化完善性维护:根据用户的要求改进或扩充软件使它更完善预防性维护:修改软件为将来的维护活动预先做准备1.4 软件过程)一、瀑布模型开发前两个阶段又称为系统设计,后两个阶段又称为

15、系统实现。结合实例对每一个阶段进行阐述1 特点(1)阶段间具有顺序性和依赖性这个特点有两重含义;第一,必须等前阶段的工作完成之后,才能开始后一阶段的工作;第二,前一阶段的输出文档就是后一阶段的输入文档,因此,只有前一阶段的输出文档正确,后一阶段的工作才能获得正确的结果。(2)推迟实现的观点实践表明,对于规模较大的软件项目来说,往往编码开始得越早最终完成开发工作所需要的时间反而越长。瀑布模型在编码之前设置了系统分析与系统设计的各个阶段,分析与设计阶段的基本任务规定,在这两个阶段主要考虑目标系统的逻辑模型,不涉及软件的物理实现。清楚地区分逻辑设计与物理设计,尽可能推迟程序的物理实现,是按照瀑布模型

16、开发软件的一条重要的指导思想。(3)质量保证的观点软件工程的基本目标是优质、高产。在瀑布模型的每个阶段都应坚持两个重要做法:第一,每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。完整、准确的合格文档不仅是软件开发时期各类人员之间相互通信的媒介,也是运行时期对软件进行维护的重要依据。第二,每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。事实上,越是早期阶段犯下的错误,暴露出来的时间就越晚,排除故障改正错误所需付出的代价也越高。因此,及时审查,是保证软件质量,降低软件成本的重要措施。瀑布模型的成功在很大程度上是由于它基本上是一种文档驱动的模型。二、快

17、速原型模型1 快速建立起来的可以在计算机上运行的程序,能完成的功能往往是最终产品的一个子集。2 快速原型模型的特点是不带反馈环,基本上按线性顺序开发。原型系统已经通过与用户交互而得到验证,据此产生的规格说明文档正确地描述了用户需求,不会因为规格说明文档的错误而进行较大的返工。开发人员通过建立原型系统已经学到了许多东西,在设计编码阶段发生错误的可能性比较小,自然减少了反馈。三、增量模型又称渐增模型。使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码和测试。每个构件由多个相互作用的模块构成,能完成特定的功能。第一个增量构件往往实现软件的基本需求,提供最核心的功能。分解时唯一必须准守

18、的约束条件是,当把新构件集成到现有软件中去时,所课件上给出传统的瀑布模型课件上给出快速原型模型课件上给出增量模型,然后对其进行阐述形成的产品必须是可测试的。优点:1 能在较短的时间内向用户提交可完成部分功能的产品2 逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,减少一个全新的软件可能给客户带来的冲击困难:1 在把每个新的增量构件集成到现有的软件体系结构中时,必须不破坏原来已经开发的产品2 软件体系结构必须是开放的3 本身具有矛盾性,一方面要求开发人员把软件看作一个整体,另一方面要求开发人员把软件看作构件序列,且构件间彼此独立四、螺旋模型螺旋模型的基本思想是:使用原型及其他方法来尽量

19、降低风险。1 确定阶段目标,为完成阶段目标选择方案,设定这些方案的约束条件2 用建造原型的方法来排除上述方案中潜在的风险3 用瀑布模型开发4 评价该阶段工作,计划下阶段工作优点1 软件重用2 测试量减少3 维护是模型的另一个周期4 螺旋模型主要是用于内部开发的大规模软件项目,它是风险驱动的。五、喷泉模型迭代是软件开发过程中普遍存在的一种内在属性。使用面向对象方法学开发软件时,工作重点应该放在生命周期中的分析阶段。喷泉模型是典型的面向对象的软件过程模型之一。六、Rational 统一过程Rational(Rational Unified Process,RUP)统一过程是由 Rational 软

20、件公司推出的一种完整且完美的软件过程。1、 最佳实践(1) 迭代式开发(2) 管理需求(3) 使用基于构件的体系结构(4) 可视化建模(5) 验证软件质量(6) 控制软件变更2、 RUP 软件开发生命周期(1) 核心工作流课件上给出螺旋模型,然后对其进行阐述然后引导同学们给出完整的螺旋模型给出喷泉模型对其进行阐述对每个实践展开讲解,讲解过程中充分调动同学们的积极性RUP 有 9 个核心工作流,前 6 个为核心过程工作流,后 3 个为核心支持工作流。(2) 工作阶段RUP 把软件生命周期划分为 4 个连续的阶段:初始阶段、精化阶段、构建阶段、移交阶段。(3)RUP 迭代式开发七、敏捷过程与极限编

21、程1、敏捷过程(1)个体和交互胜过过程和工具(2)可以工作的软件胜过面面俱到的文档(3)客户合作胜过合作谈判(4)响应变化胜过遵循计划2、极限编程(1)极限编程的有效实践 客户作为开发团队的成员 使用用户素材 短交付周期 验收测试 结对编程 测试驱动开发 集体所有 持续集成 可持续的开发速度 开放的工作空间 及时调整计划 简单的设计 重构 使用隐喻(2)极限编程的整体开发过程(3)极限编程的迭代过程八、微软过程1、微软过程准则微软过程遵循下面的基本准则: 项目计划应该兼顾未来的不确定因素 用有效的风险管理来减少不确定因素 经常生成并快速地测试软件的过渡版本,从而提高产品的稳定性和预测性。 采用

22、快速循环、递进的开发过程 用创造性的工作来平衡产品特性和权威性对每个工作流和阶段进行阐述给出每个价值观,让同学们举例说明让学生试着对每个阶段进行阐述,然后点评对隐喻进行阐述把软件的基本准则和实际生活结合起来进行阐述 使用小型项目组并发地完成开发工作 在项目早期把软件配置项基线化,项目后期则冻结产品 使用原型验证概念,对项目进行早期验证 把零缺陷作为追求的目标。 里程碑评审会的目的是改进工作,切相互指责。2、微软软件生命周期微软过程把软件生命周期划分成 5 个阶段。(1) 规划阶段 确定产品目标 获取竞争对手的信息 完成对客户和市场的调研分析 确定新版本产品应该具备的主要特性 确定新版本应该解决

23、的问题和需要增加的功能(2) 设计阶段 根据产品编写系统的特性规格说明书 从系统高层出发,完成下述工作:简明扼要地描述整个系统的设计方案,绘制系统结构图、确定系统中存在的风险因素,分析系统的可重用性。 划分出系统中的子系统,给出各子系统和各个构件的规格说明 根据产品特性说明书制订产品开发计划(3) 开发阶段完成产品中所有构件的开发工作(4) 稳定阶段对产品进行测试和调试。(5) 发布阶段项目组发布产品或解决方案。3、微软过程模型图形略由微软的操作系统升级来阐述微软过程模型小结:本章对计算机软件工程学作了一个简短的概述。首先通过计算机系统发展简史,说明开发软件的一些错误方法和观念是怎样形成的。然后列举了这些错误方法带来的软件危机,澄清了一些糊涂观念。为了计算机系统的进一步发展,需要认真研究开发和维护软件的科学技术。就总结计算机软件的历史经验教训,借鉴其他工程领域的管理技术,逐步使软件工程这门新兴学科发展和完善起来。作业: P32 习题 1 7、10、11、12

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 教育学

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报