软工重点总结.ppt_第1页
软工重点总结.ppt_第2页
软工重点总结.ppt_第3页
软工重点总结.ppt_第4页
软工重点总结.ppt_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

1、a,1,软件的特点,软件是一种逻辑实体,具有抽象性。 软件的生产与硬件的制造不同。 不会磨损和“老化” 软件的开发至今尚未完全摆脱手工艺的开发方式。 软件的开发和运行必须依附于特定的计算机系统环境,a,2,软件危机,两个方面的问题 如何开发 如何维护,高成本、低质量的软件不能适应日益增长的软件需求,从而引发的尖锐的矛盾即软件危机。,表现: 软件的规模大、复杂 软件的需求量增大 价格昂贵 软件文档不完备 开发速度慢 质量难以保证 软件产品修改维护困难,原因: 忽视需求分析 开发过程缺乏统一的、规范化的指导 文档资料不齐全或不准确 忽视交流 忽视测试的重要性。 不重视维护 专业人员认识不充分,缺乏

2、经验。 没有完善的质量保证体系。,启示,a,3,软件危机的几个解决途径,重视需求分析,明确与确切表达需求, 重视与客户沟通与交流 统一的、公认的方法论和规范指导,重视设计和实现过程的资料 充分的检测工作,a,4,软件工程目标和原则,软件工程要达到的基本目标包括: 达到要求的软件功能; 取得较好的软件性能; 开发出高质量的软件; 付出较低的开发成本; 需要较低的维护费用; 能按时完成开发工作,及时交付使用。,a,5,软件工程目标和原则,为了达到上述目标,软件工程设计、工程支持以及工程管理在软件开发过程中必须遵循一些基本原则。软件工程的七条基本原则: 用分阶段的生存周期计划进行严格的管理 坚持进行

3、阶段评审 实行严格的产品控制 采用现代程序设计技术 软件工程结果应能清楚地审查 开发小组的人员应该少而精 承认不断改进软件工程实践的必要性,a,6,软件生命周期,细分为六个阶段: 可行性研究 需求分析 软件设计(总体设计和详细设计) 编码 软件测试 软件维护,传统软件生存周期的各个阶段,把软件生命周期中各项开发活动的流程用开发模型来规范描述,这就是软件过程模型(软件生命周期模型),a,7,软件生存周期模型,常见的软件生存周期模型包括: 瀑布模型 原型模型 增量模型 演化模型 螺旋模型 面向对象过程模型(喷泉模型) 统一过程模型 敏捷过程模型,a,8,瀑布模型,瀑布模型提供了软件开发的基本框架。

4、 瀑布模型将软件生命周期划分为软件计划、需求分析和定义、软件设计、软件实现、软件测试、软件维护. 它是一个软件开发架构,开发过程是通过一系列阶段顺序展开的。 每个阶段都会产生循环反馈 各个阶段产生的文档是维护软件产品时必不可少的,没有文档的软件几乎是不可能维护的。,a,9,增量模型,增量模型(Incremental Model),是在项目的开发过程中以一系列的增量方式开发系统。 软件被作为一系列的增量构件来设计、实现、集成和测试,每一个构件是由多种相互作用的模块所形成的提供特定功能的代码片段构成. 增量方式包括: 增量开发:以一定的时间间隔开发部分工作软件 增量提交:以一定的时间间隔增量方式向

5、用户提交工作软件及相应文档,a,10,演化提交模型,它在瀑布模型的基础上,所有阶段都进行增量开发,也就是说不仅是增量开发,也是增量提交。,a,11,原型模型,建造/修改 原型,用户测试 运行原型,听取用 户意见,开始一个原型,完成部分主要功能,a,12,螺旋模型活动,四个象限分别代表了以下活动: 制定计划:确定软件目标,选定实施方案,确定项目开发的限制条件; 风险分析:分析评估所选方案,考虑如何识别和消除风险; 实施工程:实施软件开发和验证; 客户评估:评价开发工作,提出修正建议,制定下一步计划。 螺旋模型是风险驱动的模型,a,13,面向对象过程模型,面向对象是一种的程序设计方法,或者说它是一

6、种程序设计方法。 基本思想是使用对象,类,继承,封装,消息等基本概念来进行程序设计。 面向对象的要素: 抽象:强调实体的本质、内在的属性,忽略一些无关紧要的属性。类实现了对象的数据(即状态)和行为的抽象,是对象的共性的抽象。 封装性:指所有软件部件内部都有明确的范围以及清楚的外部边界。 共享性:同一个类,同一个应用等共享. 面向对象的特征:对象惟一性;分类性;继承性;多态性(多形性)。,a,14,例如:喷泉模型,进一步开发,实现和集成阶段,运行状态,实现阶段,面向对象设计阶段,计划阶段,面向对象分析阶段,需求阶段,维护期,a,15,统一过程模型,统一过程(Unified Process,UP)

7、 是以用例驱动的,以架构为中心,迭代和增量的过程。,a,16,统一过程五个核心工作流(了解),需求(Requirements Capture):致力于开发正确的系统 分析(Analysis):更精确地理解需求 设计(Design):深入理解与非功能性需求和约束相联系的问题 实现(Implementation):实现系统与集成 测试(Test):验证实现的结构,a,17,敏捷模型(过程),敏捷不是一个过程,是一类过程的统称。 敏捷方法的两大主要特征: 对“适应性”的强调 对“人”的关注 做法: 引入迭代式的开发手段 将整个软件生命周期分解为若干个小的迭代周期 获取切实有效的客户反馈 提出12条基

8、本原则,a,18,敏捷模型,敏捷过程模型中比较有代表性的是XP模型(eXtreme Programming)。它由一系列与开发相关的规则、规范和惯例组成。其规则和文档较少,流程灵活,易于小型开发团队使用。XP认为软件开发有效的活动是:需求、设计、编码和测试,并且在一个极限的环境下使它们发挥到极致,做到最好。XP偏重于软件过程的描述,表现为激进的迭代,组织模型和建模方法比较薄弱。 生存周期模型的选择要结合具体的项目特色,并在项目实施过程中予以改进。,a,19,软件开发方法,软件开发方法是一种使用定义好的技术集及符号表示组织软件生产的过程,它的目标是在规定的时间和成本内,开发出符合用户需求的高质量

9、的软件。因此,针对不同的软件开发项目和对应的软件过程,应该选择合适的软件开发方法。 常见的软件开发方法包括: 结构化方法 面向数据结构方法 面向对象方法 形式化方法,a,20,软件工程两大方法,传统的结构化方法 特征:结构化技术要么面向行为,要么面向数据 构成结构化方法的技术包括: 结构化分析、设计、编程、测试、维护 面向对象方法 特征:将对象视作一个融合了数据及在其上操作的行为的、统一的软件组件。 技术包括: 面向对象分析、面设计、编程、测试、维护 优势: 对象的概念符合业务或领域的客观实际 维护容易,a,21,结构化需求分析方法,一种考虑数据和处理的需求分析方法被称作结构化分析方法(Str

10、uctured Analysis,简称SA 法),是70年代由Yourdon Constaintine 及DeMarco 等人提出和发展,并得到广泛的应用。 它基于“分解”和“抽象”的基本思想,逐步建立目标系统的逻辑模型,进而描绘出满足用户要求的软件系统。,a,22,结构化分析模型结构,分析模型结构的核心是数据字典(DD,Data Dictionary),包含了软件使用或生产的所有数据对象描述的中心库。 分析模型结构的中间层有三种视图: 数据流图(DFD) 实体关系图(E-RD) 状态转换图(STD) 分析模型结构的外层是规约描述: 在实体关系图中每个数据对象的属性可以使用数据对象来描述。 在

11、数据流图中出现的每个加工/处理的功能描述包含在加工规约中。 软件控制方面的附加信息包含在控制规约中,a,23,功能建模,面向数据流的建模是结构化需求分析方法之一 采用自顶向下逐层分解,描绘满足用户要求的软件模型 表示: 数据流图:描述系统处理过程 数据字典:模型中的数据信息集合 加工规约,a,24,数据字典,数据字典是分析模型中出现的所有名字的一个集合,并包括有关命名实体的描述 数据字典有以下两个作用: 它是所有名字信息管理的有效机制 作为连接软件分析、设计、实现和进化阶段的开发机构的信息存储 数据字典主要由四类元素的定义组成: 数据流 数据项 数据存储 处理(加工),a,25,(1)PDL,

12、过程描述语言(PDL)是一种介于自然语言和形式化语言之间的语言 其基本控制结构有三种: 简单陈述句结构:避免复合语句; 重复结构:while_do 或 repeat_until 结构。 判定结构:if_then_else 或 case_of 结构; 过程描述语言的词汇表由 英语命令动词 数据词典中定义的名字 有限的自定义词 逻辑关系词 IF_THEN_ELSE、 CASE_OF 、 WHILE_DO、 REPEAT_UNTIL等组成。,a,26,项目立项概述,项目发起 项目论证 项目审核 项目立项,项目论证过程,也就是可行性研究过程。可行性研究就是指在项目进行开发之前,根据项目发起文件和实际情

13、况,对该项目是否能在特定的资源、时间等制约条件下完成做出评估,并且确定它是否值得去开发。可行性研究的目的不在于如何去解决问题,而在于确定问题是否值得去解决,是否能够解决。,可行性研究的结论有三种情况: 1、可行,按计划进行。 2、基本可行,需要对解决方案做出修改。 3、不可行,终止项目。,a,27,27,软件设计概述,软件设计阶段的基本目标是构造系统“怎么做”的模型描述。 “设计先于编码”,这是软件工程“推迟实现”基本原则 软件系统设计是把软件需求“变换”为用于构造软件的蓝图。 “输入”是需求分析各种模型元素 “输出”是软件设计模型和表示 软件设计的目标是对将要实现的软件系统的体系结构、系统的

14、数据、系统模块间的接口,以及所采用的算法给出详尽的描述。,a,28,28,软件设计两大类活动,概要设计(总体设计):将软件需求转化为数据结构和软件的系统结构。 分析需求规格说明 模块划分,形成具有预定功能的模块组成结构 表示出模块间的控制关系 给出模块之间的接口 详细设计:即过程设计。通过对结构表示进行细化,得到软件的详细的数据结构和算法。 设计模块细节 确定模块所需的算法和数据结构等,a,29,29,软件的模块化设计,把一个大型软件系统的全部功能,按照一定的原则合理地划分为若干个模块,每个模块完成一个特定子功能,所有的这些模块以某种结构形式组成一个整体,这就是软件的模块化设计(Modular

15、 Design)。 分解、抽象、逐步求精、信息隐蔽和模块独立性,是软件模块化设计的指导思想。,a,30,30,模块的独立性,模块(Module) “模块”,又称“组件”。是一个独立命名的,拥有明确定义的输入、输出和特性的程序实体。 它一般具有如下三个基本属性: 功能:描述该模块实现什么功能 逻辑:描述模块内部怎么做 状态:该模块使用时的环境和条件,即模块的调用与被调用关系,a,31,31,在描述一个模块时,还必须按模块的外部特性与内部特性分别描述 模块的外部特性 模块的模块名、参数表、其中的输入参数和输出参数,以及给程序以至整个系统造成的影响 模块的内部特性 完成其功能的程序代码和仅供该模块内

16、部使用的数据,外部特性是概要设计的任务,内部特性是详细设计的任务,a,32,32,模块独立性:是指软件系统中每个模块只涉及软件要求的具体的子功能, 而和软件系统中其它的模块的接口是简单的。 例如, 若一个模块只具有单一的功能且与其它模块没有太多的联系, 则称此模块具有模块独立性 一般采用两个准则度量模块独立性。即模块间耦合性和模块的内聚性,模块独立性,a,33,33,耦合是模块之间的互相连接的紧密程度的度量。 内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。 模块独立性比较强的模块应是高内聚低耦合的模块。 耦合性分类,a,34,34,c,模块内聚,内聚性也称块内联系,指模块

17、的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语句之间、程序段之间)联系的越紧密,则它的内聚性就越高。 内聚性分类:,a,35,编码风格,编码风格指一个人编制程序时所表现出来的特点、习惯、逻辑思路等。 良好的编码风格可以减少编码的错误,减少读程序的时间,从而提高软件的开发效率。 良好的编码风格(编码的基本原则)体现在源程序文档化、数据说明、语句构造、输入和输出及对效率的追求等几个方面。,a,36,源程序文档化,符号的命名:符号名即标识符,包括模块名、变量名、常量名、标号名、子程序名、数据区名以及缓冲区名等。 程序注释:夹在程序中的注释是程序员与日后的程序

18、读者之间通信的重要手段。分为序言性注释和功能性注释 程序的视觉组织:恰当地利用空格,可以突出运算的优先性,避免发生运算的错误。,a,37,数据说明,在设计阶段已经确定了数据结构的组织及其复杂性。在编写程序时,则需要注意数据说明的风格。 为了使程序中数据说明更易于理解和维护,必须注意以下几点。 1.数据说明的次序应当规范化 2.说明语句中变量安排有序化 3.使用注释说明复杂数据结构,a,38,语句结构,在设计阶段确定了软件的逻辑流结构,但构造单个语句则是编码阶段的任务。语句构造力求简单,直接,不能为了片面追求效率而使语句复杂化。,a,39,输入和输出,输入和输出信息是与用户的使用直接相关的。输入

19、和输出的方式和格式应当尽可能方便用户的使用。一定要避免因设计不当给用户带来的麻烦。 因此,在软件需求分析阶段和设计阶段,就应基本确定输入和输出的风格。系统能否被用户接受,有时就取决于输入和输出的风格。,a,40,效率,程序效率的是指程序的执行速度及程序所需占用的内存的存储空间。程序编码是最后提高运行速度和节省存储的机会,因此在此阶段不能不考虑程序的效率。 效率是一个性能指标 要先使程序正确、清晰,再提高效率(主要靠良好的数据结构和算法,而不是靠语句去调整),返回,a,41,软件维护概述,软件维护主要工作就是在软件运行和维护阶段对软件产品进行必要的调整和修改,a,42,软件可维护性,软件的可维护

20、性是衡量软件(产品)维护容易程度的一种软件质量属性 软件可维护性定义为软件的可理解、可测试、可修改性的难易程度 特性: 可理解性 可测试性 可修改性,3.软件的可维护性,可靠性 可移植性 可使用性 效率,a,43,43,五种测试:,单元测试:测试软件中的基本组成单位 采用白盒测试方法,尽可能发现模块内部的程序差错 工作量较大 单元测试越早越好 集成测试:是把多模块按照一定的集成方法和策略,逐步组装成子系统,进而组装成整个系统的测试 多模块集成方式一般都采用渐增式,有自顶向下、自底向上和混合式(“三明治”)三种 确认测试:确认已组装的程序是否满足软件需求规格说明书 系统测试:把软件纳入实际运行环境中,与其他系统成分组合在一起进行测试。 验收测试:保证所实现的系统确实是用户所想要的,分为和测试。,a,44,44,黑盒测试、白盒测试,黑盒测试: 只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。 黑盒测试又叫做功能测试或数据驱动测试。 白盒测试: 设计或选择测试用例,对程序所有逻辑路径进行测试。 因此白盒测试又称为结构测试或逻辑驱动测试。,a,45,黑盒测试有多种技术,比如等价类技术、边界值技术、错误推断法、因果图法、判定表法

温馨提示

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

评论

0/150

提交评论