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

下载本文档

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

文档简介

1、12l软件的定义与及分类软件的定义与及分类 l 软件工程的定义和基本思想软件工程的定义和基本思想l 软件生存周期思想软件生存周期思想l 软件生存期模型软件生存期模型l 面向对象软件工程的基本思想和面向对象软件工程的基本思想和OOA,OOD,OOP的基本内容的基本内容 3(1)易用性易用性:指软件产品对用户来说有效、易学、高效、好记、少错和令人满意的程度 。 (2)可靠性可靠性:指在给定的时间内,计算机软件系统能实施应有功能的能力。 (3)可维护性可维护性:指软件维护人员对该软件进行维护的难易程度。 (4)安全性安全性:确保软件系统不会被内部或外部因素危及的能力。 软件的评价因素软件的评价因素软

2、件是人们写给计算机的一系列指令指令以及相关文档相关文档的集合。 软件由以下三部分组成:(1)在运行中能提供所希望的功能和性能的指令集指令集(即程序)。(2)使程序能够正确运行的数据数据。(3)描述程序研制过程、方法所用的文挡文挡。 软件的定义软件的定义4软件发展的四个阶段出现的典型技术和主要特点软件发展的四个阶段出现的典型技术和主要特点 1程序设计阶段(程序设计阶段(20世纪50至60年代)2程序系统阶段(程序系统阶段(20世纪60至70年代)3软件工程阶段(软件工程阶段(20世纪70年代中后期) 4第四阶段(第四阶段(约20世纪90年代以来) 软件的发展软件的发展51抽象性抽象性 指软件生产

3、无明显制造过程,软件是一种逻辑实体,而不是具体的物理实体 。2可复制性可复制性 指软件是通过人们的智力活动,把知识与技术转化成信息的一种产品,是在研制、开发中被创造出来的,它可以很简单的制作副本。 3不会磨损不会磨损 在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题,而只有版本更新和升级的问题。4依赖性依赖性 软件的开发和运行经常受到计算机系统的限制,对计算机系统和用户需求有着不同程度的依赖性。5开发效率低开发效率低 软件的开发至今尚未完全摆脱手工的开发方式,软件也很难象其它工业产品一样实现标准化、自动化生产。6开发费用高开发费用高 随着社会的发展和信息化进程的推进,在计算机系统中,软

4、件费用占有的比例越来越大。 软件的特点软件的特点6软软件件的的分分类类7 指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象 (始于20 世纪60年代 )。 从宏观上,主要是指(1)软件的发展赶不上计算机硬件的发展,(2)软件的发展赶不上社会对软件需求的增长。 从具体的的软件来说(1)软件往往不能按时完成,按预算、按时完成。(2)已开发的软件不能很好地使用,甚至很快就不能用。什么是软件危机什么是软件危机8(1)软件开发费用和进度失控软件开发费用和进度失控 丹佛新国际机场 。(2)软件的可靠性差软件的可靠性差 “阿丽阿娜”运载火箭 (3)生

5、产出来的软件难以维护生产出来的软件难以维护 典型例子-IBM360的操作系统 软件危机的特征软件危机的特征(1)与软件本身的特点有关(2)与软件开发人员本身的弱点有关 用户需求不明确 缺乏正确的理论指导 软件开发规模越来越大 软件开发复杂度越来越高 软件危机的原因软件危机的原因9(1)用分阶段的生命周期计划严格管理(2)坚持进行阶段评审(3)实行严格的产品控制(4)采用现代程序设计技术软件工程的软件工程的7 7条基本原理条基本原理 软件工程的理解:l 软件工程学科是一门指导计算机软件开发和维护的工程工程学科;l 软件工程不是科学,其目的是创造创造而不是发现;l 软件工程不是传统意义的工程:没有

6、成熟的系统化方法。 软件工程的定义软件工程的定义(5)结果应能清楚地审查 (6)开发小组的人员应该少而精 (7)承认不断改进软件工程实践的必要性 10(1)抽象抽象 指抽取事物最基本的特性和行为,忽略非基本的细节。采用分层次抽象,自顶向下,逐层细化的办法控制软件开发过程和复杂性。(2)信息隐蔽信息隐蔽 指将模块设计为“黑箱”,实现的细节隐藏在模块内部,不让模块的使用者直接访问,使用与实现分离。(3)模块化模块化 通过对象、类等模块化手段实现信息隐藏和抽象,有助于表示复杂的系统。(4)局部化)局部化 是在一个物理模块内集中逻辑上相互关联的计算机资源,保证模块之间具有松散的耦合,模块内部具有较强的

7、内聚,这有助于控制模块的复杂性。 新的思想方法新的思想方法11(1)确定性确定性 是指软件开发过程中所有概念的表达应是确定的,无歧义性的,规范的。(2)一致性一致性 指整个软件系统(包括程序,文档和数据)的各个模块应使用一 致的概念。(3)完备性完备性 指软件系统不丢失任何重要成分,可以完全实现系统所要求功能的程度。为了保证系统的完备性,在软件过程中需要严格的技术评审。(4)可验证性可验证性 指开发大型的软件系统需要对系统自顶向下,逐层分解,系统分解应遵循系统易于检查,测试,评审的原则,以确保系统的正确性。新的设计原则新的设计原则12 了解软件生存周期模型及软件生存周期的了解软件生存周期模型及

8、软件生存周期的阶段划分及各阶段的主要任务阶段划分及各阶段的主要任务任务目标任务目标l 资料查询法资料查询法l 类比学习法类比学习法学习方法学习方法13软软件件生生存存周周期期定定义义时时期期开开发发时时期期维维护护时时期期软件生存周期模型和各阶段文档14“对于上一个阶段所确定的问题有行得通的解决办法吗?” 系统分析员需要在较抽象的高层次上进行的分析和设计的过程,可以通过系统流程图系统流程图、数据流图和数据字典进行描述。 (1)技术可行性技术可行性:使用现有的技术能实现这个系统吗?(2)经济可行性经济可行性:这个系统的经济效益能超过它的开发成本吗?(3)操作可行性操作可行性:系统的操作方式在这个

9、用户组织内部行得通吗? 2-2-可行性研究可行性研究“要解决的问题是什么要解决的问题是什么?” 系统分析员应该提出关于问题性质、工程目标和规模的书面报告。并组织认真讨论这份 书面报告。问题定义阶段是软件生存周期中最简短的阶段,一般只需要一天甚至更少的时间。 1-1-问题定义问题定义152-2-可行性研究可行性研究( (系统流程图系统流程图) )161什么是软件需求什么是软件需求 IEEE软件工程标准中关于需求的定义l 用户解决问题或达到目标所需的条件或权能。l 系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或权能。l 一种反映上面两条所描述的条件或权能的文档说明。 3-3

10、-需求分析需求分析2需求的特点需求的特点 (1)需求是根本的(2)需求是变化的 (3)需求是多层次的173需求的层次需求的层次 3-3-需求分析需求分析4需求的标准需求的标准 (1)明确性明确性 (2)完整性完整性 (3)一致性一致性 (4)可测试性可测试性 (5)可跟踪性和可修改性可跟踪性和可修改性 18 需求分析阶段通常借助于数据流图数据流图描述对现有系统的认识或对目标系统的设想。 3-3-需求分析需求分析19 “概括地说,应该如何解决这个问题?”通常用层次图层次图或结构图描绘软件的结构。 (1)低成本的解决方案。 (2)中等成本的解决方案。 (3)高成本的完美的解决方案。 4-4-总体设

11、计总体设计20 “应该怎样具体地实现这个系统呢?” 通常用HIPO图或PDL语言或程序流程图程序流程图描述详细设计的结果 。5-5-详细设计详细设计21 通过各种类型的测试及相应的调试,保证软件达到预定的的要求。最基本的测试是集成测试集成测试和验收测试验收测试。 8-8-综合测试综合测试也称为软件的实现,也是程序员的主要工作。(1)选择程序设计语言(2)养成程序设计风格(3)遵循编码规范(4)进行单元测试7-7-编码和单元测试编码和单元测试(1)改正性维护 (2)适应性维护 (3)完善性维护 (4)预防性维护 9-9-软件维护软件维护22(1)通过学习讨论和上网查询资料形式完成。(2)结合自己

12、的软件开发实践,进一步理解软件生命周期及各阶段的任务。 操作提示操作提示(1)怎样理解软件生存周期模型?(2)软件生存周期模型中各阶段的主要描述工具有哪些? (3)需求分析在软件生存周期过程中处于怎样的地位?(4)查找一份需求规格说明书,通过阅读该说明书准确的获取系统的需求。(5)查找一份总体设计说明书 (6)查找一份详细设计说明书 操作要求操作要求23 比较常用软件过程模型的特点,能根据实比较常用软件过程模型的特点,能根据实际软件开发需要选择过程模型际软件开发需要选择过程模型任务目标任务目标l 资料查询法资料查询法l 对比学习法对比学习法学习方法学习方法24 核心思想是采用“工序工序”的思想

13、将复杂的软件开发问题简化。将软件设计与软件功能的实现分开由不同的阶段完成,便于分工协作。采用结构化的分析与设计方法,将逻辑实现与物理实现分开。 瀑布模型瀑布模型瀑布模型25主要特点主要特点:(1)上一阶段活动的成果作为本阶段活动的输入;(2)利用这一输入实施本阶段活动应完成的内容;(3)得到本阶段活动的工作成果,再传递传给下一阶段活动;(4)在每一阶段活动结束时,对阶段活动的工作成果进行评审,如果工作成果得到确认,则继续下一项活动,否则返回前一阶段,甚至更前阶段的活动进行返工。瀑布模型瀑布模型主要缺点:主要缺点:(1)由于开发模型呈线性,所以当开发成果尚未经过测试时,用户无法看到软件的效果。这

14、样,软件与用户见面的时间间隔较长,增加了一定的风险。(2)在软件开发前期末发现的错误传到后面的开发活动中时,可能会扩散,进而可能会造成整个软件项目开发失败。(3)在软件需求分析阶段,要完全确定用户的所有需求是比较困难的,甚至可以说是不太可能的。 26 将瀑布模型和演化模型结合起来,融合了两个模型的优点,而且还强调了其他模型均忽略了的风险分析和评价风险分析和评价。 螺旋模型螺旋模型螺旋模型27主要特点主要特点: 在“瀑布模型”的每一个开发阶段前,引入一个非常严格的风险识别、风险分析和风险控制。它把软件项目分解成一个个小项目,每个小项目都标识一个或多个主要风险,直到所有的主要风险因素都被确定。 螺

15、旋模型支持用户需求的动态变化,为用户参与软件开发的所有关键决策提供了方便,有助于提高目标软件的适应能力,为项目管理人员及时调整管理决策提供了便利,从而降低了软件开发风险。 螺旋模型螺旋模型主要缺点:主要缺点:(1)过多的迭代次数会增加开发成本,延迟提交时间。(2)采用螺旋模型,需要具有相当丰富的风险评估经验和专门知识。在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失。 28 以用户需求用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。喷泉模型认为软件开发过程自下而上自下而上周期的各阶段是相互重叠和多次反复的 喷泉模型喷泉模型喷泉模型29主要特点主要特点:(

16、1)软件的某个部分(如:组件)通常被重复工作多次 ;(2)可以实现并行开发,提高软件项目开发效率,节省开发时间 ;(3)适应于面向对象的软件开发过程 ;喷泉模型喷泉模型主要缺点:主要缺点:(1)由于喷泉模型在各个开发阶段是重叠的,因此,在开发过程中,需要大量的开发人员,不利于项目的管理;(2)喷泉模型要求对文档的管理较为严格,审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料。30 融合了瀑布模型的基本成分和原型实现的迭代迭代特征。采用随着时间的进展而交错的线性序列,每一个线性序列产生软件的一个可发布的“增增量量”。 增量模型增量模型增量模型31主要特点主要特点:(1)人员分配灵活,刚

17、开始不用投入大量人力资源,如果核心产品很受欢迎,则可增加人力实现下一个增量 。 (2)当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径,这样就可以先发布部分功能给客户,以满足客户的局部需求 。 (3)能够有计划地管理技术风险 增量模型增量模型主要缺点:主要缺点: 如果增量包之间存在相交的情况且不能很好地处理,就必须做全盘的系统分析。 32可以通过上网查阅相关资料获取软件过程模型更为详细的信息。 操作提示操作提示 (1)讨论瀑布模型的主要特点,并举例说明在哪些类型的软件系统开发中可以采用瀑布模型。 (2)讨论螺旋模型的主要特点,并举例说明在哪些类型的软件系统开发中可以采

18、用螺旋模型。 (3)讨论喷泉模型的主要特点,并举例说明在哪些类型的软件系统开发中可以采用喷泉模型。 (4)讨论增量模型的主要特点,并举例说明在哪些类型的软件系统开发中可以采用增量模型。 操作要求操作要求33 是从需求收集需求收集开始,在获得一定的需求后,进行“快速设计快速设计”,在此基础上创建软件系统的原型,并由用户对原型进行评估并进一步精精化化待开发软件的需求。 原型模型原型模型原型模型34 是一个增量型增量型的软件开发过程模型,强调极短的开发周期。RAD模型是瀑布模型的一个“高速”变种,通过大量使用可复用构件,采用基于构件基于构件的建造方法实现快速开发。 RADRAD模型模型快速开发模型3

19、5主要特点主要特点:(1)采用基于构件的开发方法,复用已有的程序结构或使用可复用构件和或是创建可复用的构件。 (2)通过大量使用可复用构件加快了开发速度,对信息系统的开发特别有效。 RADRAD模型模型主要缺点:主要缺点:(1)RAD模型对模块化要求比较高,如果软件系统中有哪一项功能不能被模块化,那么创建RAD所需要的构件就会有问题。因此,并非所有应用都适合RAD。 (2)开发者和客户必须在很短的时间完成一系列的需求分析,任何一方配合不当都会导致RAD项目失败。 (3) RAD只适用于信息系统开发,不适合技术风险很高系统的开发。36 一种轻量级轻量级的开发方法,敏捷方法强调适应性适应性而非预测

20、性,强调以人为中心人为中心而非以流程为中心,强调对变化的适应和对人性的关注。 XP/XP/敏捷模型敏捷模型XP/敏捷模型37 一种重量级重量级的开发方法,又是文档化的软件工程产品 。 统一软件开发过程统一软件开发过程统一软件开发过程38 RUP有6个核心工作流和3个核心支持工作流,采用迭代式迭代式开发 。 统一软件开发过程统一软件开发过程39主要特点主要特点:(1)用例驱动 (2)以体系结构为中心 (3)迭代式开发统一软件开发过程统一软件开发过程 通过以上各种软件过程模型的分析,我们可以看到:软件过程模型随着软件设计思想的改变而发展,经历了由最初的以结构化程序设计结构化程序设计思想为指导的瀑布

21、模型等,到以面向对象思想面向对象思想为指导的喷泉模型等,到以构件开发构件开发思想思想为指导的基于体系结构的开发模型等,到基于UML的RUP,到现在的4GT技术。每次新的软件设计思想的突破都会出现新的软件开发过程模型,以达到提高软件的生产效率和质量为目标,提出新的解决“软件危机”问题的方案。 软件开发过程小结软件开发过程小结40可以通过上网查阅相关资料获取软件过程模型更为详细的信息。 操作提示操作提示 (1)讨论原型模型的主要特点,并举例说明在哪些类型的软件系统开发中可以采用原型模型。 (2)讨论RAD模型的主要特点,并举例说明在哪些类型的软件系统开发中可以采用RAD模型。 (3)讨论XP/敏捷

22、方法的主要特点,并举例说明在哪些类型的软件系统开发中可以采用XP/敏捷方法。 (4)讨论统一软件开发过程的主要特点,并举例说明在哪些类型的软件系统开发中可以采用统一软件开发过程。 (5)使用Word工具,分别绘制原型模型、RAD模型、XP/敏捷方法和统一软件开发过程的基本模型图。 操作要求操作要求41 了解面向对象软件工程的基本思想和了解面向对象软件工程的基本思想和OOA、OOD、OOP和和OOT的基本内容的基本内容任务目标任务目标l资料查询法资料查询法学习方法学习方法42 “对象对象”,指的是解决信息领域内所遇到问题的方法,特别是应用软件技术来解决问题的方法。如:面向对象的分析(Object

23、-Oriented Analysis)、面向对象的设计(Object-Oriented Design)和面向对象的编程(Object-Oriented Programming)等 。 面向对象方法面向对象方法(Object-Oriented Method)是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO(Object-Oriented)方法,是建立在“对象”概念基础上的方法学。 面向对象方法的发展面向对象方法的发展 60年代中后期,Simula语言; 80年代以来,人们将面向对象的基本概念和运行机制运用到其它领域,获得了一系列相应领域的面向对象的技术 ; 1986年

24、在美国举行了首届“面向对象编程、系统、语言和应用(OOPSLA86)”国际会议 。 面向对象思想面向对象思想43(1)对象)对象 对象是要研究的任何事物。从一本书、一个人、一家图书馆、一家极其复杂的自动化工厂、架航天飞机都可看作对象,它不仅能表示有形的实体,也能表示无形的(抽象的)规则、计划或事件。对象由数据(描述事物的属性)和作用于数据的操作(体现事物的行为)构成一独立整体。从程序设计者来看,对象是一个程序模块,从用户来看,对象为他们提供所希望的行为。(2)类)类 类是对象的模板。即类是对一组有相同数据和相同操作的对象的定义,一个类所包含的方法和数据描述一组对象的共同属性和行为。类是在对象之

25、上的抽象,对象则是类的具体化,是类的实例。类可有其子类,也可有其它类,形成类层次结构。(3)消息)消息 消息是对象之间进行通信的一种规格说明。一般它由三部分组成:接收消息的对象、消息名及实际变元。 面向对象基本概念面向对象基本概念44(1)封装性)封装性封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。 (2)继承性)继承性 继承性是子类自动共享父类数据和方法的机制。它由类的派生功能体现。一个类直接继承其它类的全部描述,同时可修改和扩充。 (3)多态性)多态性 对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。 面向对象主要特征面向对象主要特征45了解问题域所涉及的对象、对象间的关系和作用(即操作),然后构造问题的对象模型,力争该模型能真实地反映出所要解决的“实质问题”。 OOA基本步骤基本步骤: (1)确定对象和类 (2)确定结构 (3)确定主题(subject) (4)确定属性(a

温馨提示

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

评论

0/150

提交评论