版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件工程与项目管理,We cant run the modern world without software.,第二部分 软件工程技术方法综述,本部分主要介绍软件工程中2类基本的实践方法 结构化方法 面向对象方法 另外描述一些常见的技术: 软件复用 敏捷开发 ,软件工程方法比较,软件工程是计算机学科中一个年轻并充满活力的研究领域 软件工程为建造软件提供了技术上的解决方法,覆盖了需求建模、设计建模、编码、测试和维护等方面 总的来说,软件工程方法主要包含结构化方法和面向对象方法,软件工程方法比较,软件开发的任务是构建软件系统,并将其部署到现实世界中,通过软件系统与环境交互,解决现实问题,软件系统
2、与外部世界的交互,问题域与解系统的关系,软件工程方法比较,课堂讨论 背景:你要开发一段程序,输入班级所有人的成绩,按成绩由高到低的次序进行排序; 你该如何去做?,软件工程方法比较,背景:你要开发一段程序,输入班级所有人的成绩,按成绩由高到低的次序进行排序; 你该如何去做?,成绩排序系统,软件工程方法比较,任何软件系统开发的共同本质在于: 从现实空间的需求到计算机空间的软件代码之间的映射与转换;,现实空间的需求,软件系统,实现途径:映射与转换,软件工程方法比较,任何软件系统开发的共同本质在于: 从现实空间的需求到计算机空间的软件代码之间的映射与转换;,软件工程方法比较,软件工程方法比较,软件工程
3、为建造软件提供了技术上的解决方法,这些方法在分析阶段提供了一些对问题域进行分析和认识的途径,从问题域逐步过渡到编程语言的描述手段,现实世界,编程实现,软件工程方法,软件工程方法比较,结构化软件工程方法,面向对象软件工程方法,结构化软件工程方法,最早、最传统的软件开发方法 根据某种原理,使用一定的工具,按照特定步骤进行工作的一种软件开发方法 结构指系统内部各个组成要素之间的相互联系、相互作用的框架 提出了一套提高软件结构合理性的准则:分解与抽象、模块独立性、信息隐蔽 针对软件生存周期各个阶段,分别有:结构化分析(SA)、结构化设计(SD)、结构化编程(SP),但各种方法存在不一致性,结构化软件工
4、程方法需求分析,结构化需求分析 发展成熟、简单实用、使用广泛,Edward Nash Yourdon,Tom Demarco,结构化软件工程需求分析,结构化需求分析 主要解决的问题是:需要系统做什么 常用的描述软件功能需求的工具有: 数据流图和数据字典,结构化软件工程需求分析,结构化需求分析 主要解决的问题是:需要系统做什么 常用的描述软件功能需求的工具有: 数据流图和数据字典 存在的弊端 以数据或数据流进行分析,其结果不能直接映射问题域,容易隐蔽一些对问题域的理解偏差,给后续开发阶段衔接带来困难 其分析方式采用的数据流图中可能存在细节不足和缺乏数据流控制方面的细节,结构化软件工程概要设计和详
5、细设计,概要设计主要是将系统分解成模块,并表示模块之间的调用和接口关系 详细设计是进一步描述模块内部 结构化软件设计最重要的原则是模块独立 结构化设计的基本方法是从数据流图导出软件的模块结构图,结构化软件工程概要设计和详细设计,原始数据,机内数据,正确数据,解,格式化解,输出解,逻辑输出,逻辑输入,(物理输入),(物理输出),数据流图,结构化软件工程概要设计和详细设计,正确数据,求解 编辑数据,计算,获得正确数据,输出解,编排格式,打印解,编辑数据,读入数据,正确数据,原始数据,原始数据,解,格式化解,解,正确数据,格式化解,解,模块结构图,结构化软件工程概要设计和详细设计,转换,设计模型 (
6、物理模型),需求分析和设计之间的鸿沟:数据流图和模块结构图很难对应,结构化软件工程结构化编码,编码是软件设计的自然结果 利用某种编程语言产生一个能被计算机理解并执行出结果的系统 结构化编程技术相对比较成熟,结构化软件工程结构化测试,测试的目的在于识别出存在于软件产品中的缺陷 测试提供了一种可以操作的方式来减少系统中的缺陷,并增加用户对一个已经开发的系统的信心,结构化软件工程结构化维护,维护最大的难点是人们对软件的理解过程中所遇到的障碍 结构化方法中,各个阶段的文档表示不一致,给维护带来一定困难,结构化软件工程技术-总结,从功能的观点设计系统 自顶向下,逐步分解和细化 将大系统分解为若干模块,主
7、程序调用这些模块实现完整的系统功能,结构化软件工程技术-总结,把软件视为处理数据的流,并定义成由一系列步骤构成的算法; 每一步骤都是带有预定输入和特定输出的一个过程 结构化方法以功能分解和数据流为核心,但是系统功能和数据表示 极有可能发生变化,面向对象软件工程方法,Jacobson于1994年提出面向对象软件工程方法 包括OOA,OOD,OOP和OOT 面向对象的方法将数据和对数据的操作紧密结合起来,其基本出发点是尽量模拟人类的思维习惯和方式,ivar jacobson,面向对象软件工程方法, 喷泉模型: 在OO开发过程中,各阶段之间形成频繁的迭代 OO各阶段均采用统一的“对象”概念,各阶段之
8、间的区分变得不明显,形成“无缝”连接,从而容易实现多次反复迭代,面向对象软件工程方法需求分析,强调直接针对问题域中客观存在的各种事物建立对象,用对象的属性和服务分别描述事物的静态特征和行为 保留问题越中事物之间的关系,将具有相同属性和相同服务的对象归为一类,用继承关系描述一般类与特殊类之间的关系 分析过程不考虑与实现有关的问题 分析过程的关键是识别出问题域内的对象,分析其相互之间的关系,面向对象软件工程方法需求分析,面向对象软件工程方法需求分析,面向对象软件工程方法面向对象设计,将分析所得到的结果不经过变换(仅仅做必要的修改和调整),直接转换为设计模型 适当补充一些与实现相关的部分 分析和设计
9、过程采用相同的符号,没有明显的分界线,一般都是反复迭代进行 分析的过程时考虑做什么,设计的过程则考虑怎么做,面向对象软件工程方法面向对象设计,将分析所得到的结果不经过变换(仅仅做必要的修改和调整),直接转换为设计模型 适当补充一些与实现相关的部分 分析和设计过程采用相同的符号,没有明显的分界线,一般都是反复迭代进行 分析的过程时考虑做什么,设计的过程则考虑怎么做,面向对象软件工程方法面向对象编程,用面向对象语言,针对设计结果中的每个部分编写出代码 编程的实质就是用具体的数据结构来定义对象的属性,用具体的语句来实现服务,面向对象软件工程方法面向对象测试,以对象为中心,进行软件测试 查错范围主要是
10、类定义之内的属性和服务,以及有限度的对外接口所涉及的部分,面向对象软件工程方法面向对象维护,采用面向对象技术开发的软件,维护的难度大大降低,面向对象软件工程方法-总结,系统被看作对象的集合 每个对象包含一组描述自身特性的数据以及作用在数据上的操作(功能集合) 在面向对象开发模式中优先考虑的是实体(问题论域的对象);,结构化与面向对象本质区别, 面向过程的结构化系统 =功能 +数据 面向对象的系统 =对象 +消息,(软件=算法+数据结构) (对象=数据属性+操作),软件工程常见技术,复用 敏捷开发,复用(Reuse),在一个新系统中,大部分的内容是成熟的,只有小部分内容是全新的 构造新的软件系统
11、可以不必每次从零做起; 直接使用已有的软构件,即可组装成新的系统; 复用已有的功能模块,既可以提高开发效率,也可以改善新开发过程中带来的质量问题;,Dont re-invent the wheel,基于构件的软件复用(Reuse),产品线体系结构,可复用资产库,产品1,产品2,产品 n, 主要过程:, 需求分析;, 体系结构设计;, 构件获取(购买、重新开发); 构件修改与测试; 构件组装; 集成测试;,基于构件的软件复用(Reuse),构件库层次结构,按照分层构件的思想,由三个层次组成: 1界面模型层:管理信息系统的界面视图,支持不同的访问模式。 2业务模型层:管理信息系统的功能实现层,管理
12、具体的业务逻辑。该层基于框架实现对业务逻辑对象的全生命周期管理,同时实现与第三方系统之间的集成。 3数据模型层:管理信息系统的业务数据存储层,利用关系数据库对业务系统的数据进行存储和处理。,平台另一个重要设计理念是模块的可插拔,即构建可插拔的模块化应用系统。可插拔的模块化应用系统采用了组合模式,通常会包含一个 客户端应用程序骨架(Shell),该 Shell 提供了整个用户界面的框架及结构。模块可动态插拔,各模块通过 Shell展示相应的界面视图。结合统一应用层次化模型的指导思想及设计理念,通常情况下,一个应用系统就是由不同的层中的模块组合而成。,应用系统可以划分为不同的层次,例如技术架构层、
13、技术领域层、业务架构层、业务领域层、行业解决方案层及项目实施层; 不同层次的应用层次化模型元素(包括服务、组件、表等等) 可以按顺序覆盖,即上层的模型元素可以覆盖下层的模型元素; 每一层的应用层次化模型元素 可独立修改及更新,不会对其他层造成影响。,基于构件的软件复用(Reuse),系统在不同抽象层次上设计了各种解决方案,具有构件化的软件架构,形成了不同层次构件,如基础层构件、中间层构件、领域级构件、子系统级构件等各种不同粒度的构件。,基础数据交换 EIBuffer,信息转换组件 EITranslate,履历跟踪组件 EDLog,数据分发 配置,不同平台间通讯 EDXcom,应用权限 控制,合
14、同 处理,计划 编制,发货 管理,物料跟踪与 实绩管理,订单 管理,历史 数据,仓库 管理,生产 管理,作业计划 管理,质量 管理,工器具与 轧辊管理,基础层构件,中间层构件,领域级构件,子系统级构件,基于构件的软件复用(Reuse),敏捷开发(AgileDevelopment),敏捷开发(AgileDevelopment),以过程为核心(而不是以人为核心)的软件组织为了少犯错误,保证项目成功,而从项目开发经验中总结和定义了许多过程,用于约束开发行为,避免重复相同的错误。 由于项目的复杂性和多样性,这种过程定义会越来越多,最终形成一个庞大的、笨重的过程集合,这样的过程集合会降低开发效率和产品质
15、量,增加开发成本。,敏捷开发(AgileDevelopment),上个世纪90年代,2001年,2004年以后,萌芽-产生敏捷方法,敏捷方法是从上个世纪90年代开始发展起来的一组方法学的总称,包括极限编程等等。这些方法学之间有一些差异,但是差异不是特别大,正规成立敏捷联盟,每种方法学的领导人共同起草了敏捷软件开发宣言,总结出方法之间的共同点,最终就是价值,并且用敏捷这个词给这种方法学一个统称,发展开始广为流行,500强公司中众多公司应用敏捷;如HP,Microsoft,IBM等,敏捷开发(AgileDevelopment),敏捷开发(Agile Development)是一种以人为核心、迭代、
16、循序渐进的开发方法。,核心理念: 适应和以人为本,客户合作胜过合同谈判,响应变化胜过遵循计划,可以工作的软件胜过面面俱到的文档,个体和交互胜过过程和工具,敏捷开发(AgileDevelopment),最高目标是能持续地、及早地向客户交付软件; 拥抱变化; 频繁地发布可运行的软件; 客户和开发人员在一起工作; 以人为本; 最重要的衡量开发过程的手段,是可工作的软件; 稳定的开发速度; 敏捷高效的设计; 简单有效; 重视Teamwork; 积极的调整。,敏捷开发(AgileDevelopment),知识和技能,文化和氛围,自组织团队,开放的心态,敏捷开发(AgileDevelopment),结对编程(Pair Programming) 所有
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年上饶卫生健康职业学院单招职业适应性考试题库及答案详解(有一套)
- 2026年云南特殊教育职业学院单招综合素质考试题库含答案详解(轻巧夺冠)
- 2026年上海杉达学院单招职业适应性测试题库含答案详解ab卷
- 2026年乐山职业技术学院单招职业倾向性考试题库带答案详解(完整版)
- 2026年三亚航空旅游职业学院单招综合素质考试题库附答案详解(典型题)
- 2026年云南省保山地区单招职业倾向性考试题库及参考答案详解一套
- 2026年云南城市建设职业学院单招职业技能考试题库附答案详解(巩固)
- 2026年上海应用技术大学单招职业适应性测试题库含答案详解(典型题)
- 2026年上海戏剧学院单招职业技能考试题库及答案详解(有一套)
- 2026年乌兰察布职业学院单招职业适应性测试题库附参考答案详解(研优卷)
- 常州市2025-2026学年第一学期高三期末质量调研政治+答案
- 【《拼多多平台生鲜农产品物流供应链情况的案例分析》8000字】
- 签字版离婚协议书范本
- 《神笔马良》:儿童读书分享
- 2025-2030中国精酿啤酒市场消费特征与渠道拓展战略研究报告
- 吊车承包合同2025年
- 餐饮楼面管理制度细则
- 外研版五年级英语下册单词表
- 《木兰诗》历年中考古诗欣赏试题汇编(截至2024年)
- 点亮小红书:获客增长实战指南
- 教材全解高中英语必修第一册人教版语境记单词
评论
0/150
提交评论