软件工程与项目管理_2

上传人:wt****50 文档编号:49791869 上传时间:2018-08-02 格式:PPTX 页数:54 大小:2.90MB
返回 下载 相关 举报
软件工程与项目管理_2_第1页
第1页 / 共54页
软件工程与项目管理_2_第2页
第2页 / 共54页
软件工程与项目管理_2_第3页
第3页 / 共54页
软件工程与项目管理_2_第4页
第4页 / 共54页
软件工程与项目管理_2_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《软件工程与项目管理_2》由会员分享,可在线阅读,更多相关《软件工程与项目管理_2(54页珍藏版)》请在金锄头文库上搜索。

1、软件工程与项目管理We cant run the modern world without software.第二部分 软件工程技术方法综述本部分主要介绍软件工程中2类基本的实践方法结构化方法面向对象方法另外描述一些常见的技术:软件复用敏捷开发软件工程方法比较软件工程是计算机学科中一个年轻并充满活力的 研究领域软件工程为建造软件提供了技术上的解决方法, 覆盖了需求建模、设计建模、编码、测试和维护 等方面总的来说,软件工程方法主要包含结构化方法和 面向对象方法软件工程方法比较软件开发的任务是构建软件系统,并将其部署到 现实世界中,通过软件系统与环境交互,解决现 实问题接 口软件 系统环 境现实世

2、界软件系统与外部世界的交互现实世界问题 域解系 统 接 口问题域与解系统的关系软件工程方法比较课堂讨论背景:你要开发一段程序,输入班级所有人的成绩,按 成绩由高到低的次序进行排序;你该如何去做?软件工程方法比较背景:你要开发一段程序,输入班级所有人的成绩,按 成绩由高到低的次序进行排序;你该如何去做?成绩排序 系统软件工程方法比较任何软件系统开发的共同本质在于:从现实空间的需求到计算机空间的软件代码之间的映射 与转换;现实空间的需求软件系统实现途径:映射与转换软件工程方法比较任何软件系统开发的共同本质在于:从现实空间的需求到计算机空间的软件代码之间的映射 与转换;现实空间的需求软件系统单步映射

3、中间状态1中间状态21/31/22/32/23/3软件工程方法比较现实空间的需求软件系统中间状态1中间状态2实际的实现途径正确的实现途径正确的实现途径实际的实现途径需求与 软件实现 的偏差需求与 软件实现 的偏差软件工程方法比较软件工程为建造软件提供了技术上的解决方法, 这些方法在分析阶段提供了一些对问题域进行分 析和认识的途径,从问题域逐步过渡到编程语言 的描述手段现实世界编程实现软件工程方法软件工程方法比较自然 语言问题域需求分析总体设计详细设计编程测试计算机编程 语言分析与设 计的鸿沟结构化软件工程方法问题域OOAOODOOPOOT计算机自然 语言OO 编程 语言面向对象软件工程方法结构

4、化软件工程方法最早、最传统的软件开发方法根据某种原理,使用一定的工具,按照特定步骤进 行工作的一种软件开发方法结构指系统内部各个组成要素之间的相互联系、相 互作用的框架提出了一套提高软件结构合理性的准则:分解与抽 象、模块独立性、信息隐蔽针对软件生存周期各个阶段,分别有:结构化分析 (SA)、结构化设计(SD)、结构化编程(SP) ,但各种方法存在不一致性结构化软件工程方法需求分析结构化需求分析发展成熟、简单实用、使用广泛Edward Nash YourdonTom Demarco结构化软件工程需求分析结构化需求分析主要解决的问题是:需要系统做什么常用的描述软件功能需求的工具有: 数据流图和数

5、据字典 结构化软件工程需求分析结构化需求分析主要解决的问题是:需要系统做什么常用的描述软件功能需求的工具有: 数据流图和数据字典 存在的弊端以数据或数据流进行分析,其结果不能直接映 射问题域,容易隐蔽一些对问题域的理解偏差 ,给后续开发阶段衔接带来困难其分析方式采用的数据流图中可能存在细节不 足和缺乏数据流控制方面的细节结构化软件工程概要设计和详细设计概要设计主要是将系统分解成模块,并表示模块 之间的调用和接口关系详细设计是进一步描述模块内部结构化软件设计最重要的原则是模块独立结构化设计的基本方法是从数据流图导出软件的 模块结构图结构化软件工程概要设计和详细设计原始数据机内数 据正确数 据解格

6、式化 解输出解逻辑输出逻辑输入(物理输入)(物理输出)P1读 入 数 据P2编 辑 数 据P3求 解P4编 辑 格 式P5打 印 输 出数据流图结构化软件工程概要设计和详细设计正确数据求解 编辑数据计算获得正确数据输出解编排格式打印解编辑数据读入数据正确数据原始数据 原始数据解格式化解解正确 数据格式化解解模块结构图结构化软件工程概要设计和详细设计转换转换分析模型 (逻辑模型)设计模型设计模型 (物理模型)(物理模型)需求分析和设计 之间的鸿沟:数 据流图和模块结 构图很难对应结构化软件工程结构化编码编码是软件设计的自然结果利用某种编程语言产生一个能被计算机理解并执 行出结果的系统结构化编程技

7、术相对比较成熟结构化软件工程结构化测试测试的目的在于识别出存在于软件产品中的缺陷测试提供了一种可以操作的方式来减少系统中的 缺陷,并增加用户对一个已经开发的系统的信心结构化软件工程结构化维护维护最大的难点是人们对软件的理解过程中所遇 到的障碍结构化方法中,各个阶段的文档表示不一致,给 维护带来一定困难结构化软件工程技术-总结从功能的观点设计系统自顶向下,逐步分解和细化将大系统分解为若干模块,主程序调用这些模块实现完 整的系统功能mainf1f2f3结构化软件工程技术-总结把软件视为处理数据的流,并定义成由一系列步骤 构成的算法;每一步骤都是带有预定输入和特定输出的一个过程结构化方法以功能分解和

8、数据流为核心,但是系 统功能和数据表示 极有可能发生变化面向对象软件工程方法Jacobson于1994年提出面向对象 软件工程方法包括OOA,OOD,OOP和OOT面向对象的方法将数据和对数 据的操作紧密结合起来,其基 本出发点是尽量模拟人类的思 维习惯和方式ivar jacobson面向对象软件工程方法 喷泉模型:在OO开发过程中,各阶段之间形成频繁的迭代OO各阶段均采用统一的“对象”概念,各阶段之间的区分变得不明显,形成“无缝”连接,从而容易实现多次反复迭代面向对象软件工程方法需求分析强调直接针对问题域中客观存在的各种事物建立 对象,用对象的属性和服务分别描述事物的静态 特征和行为 保留问

9、题越中事物之间的关系,将具有相同属性 和相同服务的对象归为一类,用继承关系描述一 般类与特殊类之间的关系分析过程不考虑与实现有关的问题分析过程的关键是识别出问题域内的对象,分析 其相互之间的关系面向对象软件工程方法需求分析面向对象软件工程方法需求分析面向对象软件工程方法面向对象设计将分析所得到的结果不经过变换(仅仅做必要的 修改和调整),直接转换为设计模型适当补充一些与实现相关的部分分析和设计过程采用相同的符号,没有明显的分 界线,一般都是反复迭代进行分析的过程时考虑做什么,设计的过程则考虑怎 么做面向对象软件工程方法面向对象设计将分析所得到的结果不经过变换(仅仅做必要的 修改和调整),直接转

10、换为设计模型适当补充一些与实现相关的部分分析和设计过程采用相同的符号,没有明显的分 界线,一般都是反复迭代进行分析的过程时考虑做什么,设计的过程则考虑怎 么做面向对象软件工程方法面向对象编程用面向对象语言,针对设计结果中的每个部分编 写出代码编程的实质就是用具体的数据结构来定义对象的 属性,用具体的语句来实现服务面向对象软件工程方法面向对象测试以对象为中心,进行软件测试查错范围主要是类定义之内的属性和服务,以及 有限度的对外接口所涉及的部分面向对象软件工程方法面向对象维护采用面向对象技术开发的软件,维护的难度大大 降低面向对象软件工程方法-总结系统被看作对象的集合每个对象包含一组描述自身特性的

11、数据以及作用在数据上 的操作(功能集合)在面向对象开发模式中优先考虑的是实体(问题论域的对象) ;对象对象对象对象结构化与面向对象本质区别 面向过程的结构化系统 = 功能 + 数据 面向对象的系统 = 对象 + 消息(软件=算法+数据结构)(对象=数据属性+操作)软件工程常见技术复用敏捷开发复用(Reuse)在一个新系统中,大部分的内容是成熟的,只有 小部分内容是全新的构造新的软件系统可以不必每次从零做起;直接使用已有的软构件,即可组装成新的系统;复用已有的功能模块,既可以提高开发效率,也 可以改善新开发过程中带来的质量问题;Dont re-invent the wheel基于构件的软件复用(

12、Reuse)产品线体系结构可复用资产库产品1产品2产品 n 主要过程: 需求分析; 体系结构设计; 构件获取(购买、重新开发); 构件修改与测试; 构件组装; 集成测试;基于构件的软件复用(Reuse)操作系统操作系统其他系统软件其他系统软件( (如数据库软件、如数据库软件、 网络软件等网络软件等) )基础构件基础构件框架、通用构件框架、通用构件领域构件领域构件专用构件专用构件专业产品组专业产品组其它产品组其它产品组构件库层次结构按照分层构件的思想,由三个层 次组成:1界面模型层:管理信息系统的界面 视图,支持不同的访问模式。2业务模型层:管理信息系统的功能 实现层,管理具体的业务逻辑。该 层

13、基于框架实现对业务逻辑对象的 全生命周期管理,同时实现与第三 方系统之间的集成。3数据模型层:管理信息系统的业务 数据存储层,利用关系数据库对业 务系统的数据进行存储和处理。平台另一个重要设计理 念是模块的可插拔,即构建 可插拔的模块化应用系统。 可插拔的模块化应用系统采 用了组合模式,通常会包含 一个 客户端应用程序骨架 (Shell),该 Shell 提供了整 个用户界面的框架及结构。 模块可动态插拔,各模块通 过 Shell展示相应的界面视 图。结合统一应用层次化模 型的指导思想及设计理念, 通常情况下,一个应用系统 就是由不同的层中的模块组 合而成。应用系统可以划分为不 同的层次,例如

14、技术架构 层、技术领域层、业务架构 层、业务领域层、行业解决 方案层及项目实施层; 不同层次的应用层次化 模型元素(包括服务、组 件、表等等) 可以按顺序覆 盖,即上层的模型元素可以 覆盖下层的模型元素; 每一层的应用层次化模 型元素 可独立修改及更新 ,不会对其他层造成影响。基于构件的软件复用(Reuse)系统在不同抽象层次上设计了各种解决方案,具有构件化的软件架构,形成了不 同层次构件,如基础层构件、中间层构件、领域级构件、子系统级构件等各种不同 粒度的构件。基础数据交换 EIBuffer信息转换组件 EITranslate履历跟踪组件 EDLog数据分发 配置不同平台间通 讯 EDXco

15、m应用权限 控制合同 处理计划 编制发货 管理物料跟踪 与 实绩管理订单 管理历史 数据仓库 管理生产 管理作业计划 管理质量 管理工器具与轧辊管理基础层构件中间层构件领域级构件子系统级构件基于构件的软件复用(Reuse)项目为什么失败? 软件工程试图解决这些问题 :对用户需求理解得不清楚,甚至 有错误; 用户需求变化; 软件很难维护或扩展; 在项目后期阶段发现很严重的设 计缺陷; 软件质量或性能不合格; Test - Build - Release过程的可操作 性、可维护性很差; 人员流动;1)为了规范化开发过程,引进传统工程 的概念(瀑布型);2)为了理解需求,提出原型法;3)为了提高设计

16、开发的效率和扩展性, 提出重用和面向对象等思想;4)为了让开发过程更灵活,提出了开发 框架的概念;5)为了降低风险,提出了风险评估、成 本控制和增量开发等思想;敏捷开发(Agile Development)敏捷开发(Agile Development)以过程为核心(而不是以人为核心)的软件组织为了少犯 错误,保证项目成功,而从项目开发经验中总结和定义了 许多过程,用于约束开发行为,避免重复相同的错误。由于项目的复杂性和多样性,这种过程定义会越来越多, 最终形成一个庞大的、笨重的过程集合,这样的过程集合 会降低开发效率和产品质量,增加开发成本。敏捷开发(Agile Development)上个世纪90年代2001年2004年以后萌芽-产生

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号