![UML系统建模及系统分析与设计完整版课件(全)_第1页](http://file4.renrendoc.com/view/832583a355809083d3f39a0b05c0791c/832583a355809083d3f39a0b05c0791c1.gif)
![UML系统建模及系统分析与设计完整版课件(全)_第2页](http://file4.renrendoc.com/view/832583a355809083d3f39a0b05c0791c/832583a355809083d3f39a0b05c0791c2.gif)
![UML系统建模及系统分析与设计完整版课件(全)_第3页](http://file4.renrendoc.com/view/832583a355809083d3f39a0b05c0791c/832583a355809083d3f39a0b05c0791c3.gif)
![UML系统建模及系统分析与设计完整版课件(全)_第4页](http://file4.renrendoc.com/view/832583a355809083d3f39a0b05c0791c/832583a355809083d3f39a0b05c0791c4.gif)
![UML系统建模及系统分析与设计完整版课件(全)_第5页](http://file4.renrendoc.com/view/832583a355809083d3f39a0b05c0791c/832583a355809083d3f39a0b05c0791c5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第1章 软件工程与面向对象开发方法学习目标知识目标技能目标 了解软件的概念。 了解软件危机产生的原因。 掌握软件工程的概念和基本原理。 了解软件开发模型与方法。 掌握面向对象的基本概念。 了解面向对象的典型开发方法。 了解可行性分析的内容。 了解可行性研究报告的书写格式。 能够进行系统可行性分析。 能够撰写可行性研究报告。知识结构 1978年,春天的Boston 一名26岁的Harvard University Business School MBA Student 正在进行案例分析直到深夜。在其他学生用纸计算它们的财务数据时,这名拥有MIT计算机学位的学生已经在一台DEC小型机上进行计算以节
2、省时间。不过,工作进展还是很慢。一旦他要在计算上做个小小的改变,他就得重写整个程序,从而需要在DEC机上花费更多的时间。这名MBA学生觉得应该有个更好的办法。他同一个来自MIT的好朋友一起,花了好几个月的时间在他们的“实验室”中寻求答案。 这两位年轻的革新家就是Dan Bricklin & Bob Frankston。 他们的答案就是电子表格。数字可以用行和列组成的矩阵显示在计算机屏幕上。一旦某个数字变化了,其他相关的数字将自动更新。他们将产品命名为VisiCalc。 1979年,引入到Apple型计算机。 1996年,IEEE 表彰Bricklin 为“我们今日所知的个人计算机市场兴起的催化
3、剂”。Business Weekly “软件:新的驱动力”21世纪带翼的软件公路上的代码健康软件当您启动BMW7系列时,您激活了20兆字节的计算能力这比阿波罗11号的登月之旅中所用的还要多。新冠肺炎中软件的应用软件已经成为一种驱动力进行商业活动的引擎现代科学研究和工程问题解决的基础区分现代产品和服务的关键因素现代社会中不可缺少的应用于:交通、医药、通讯、军事、娱乐、办公1.1 软件发展与软件工程1.2 软件开发模型与方法1.3 面向对象开发方法概述1.5 面向对象软件开发1.4 典型的面向对象开发方法小结目 录1.6 面向对象开发方法的特点1.7软件工程的最新发展动向1.1 软件的概念1.1.
4、1 软件的发展与特征1.1.2 软件危机与软件工程1.1.3 软件的分类1.1.1 软件的发展与特征软件(software)是计算机系统中与硬件(hardware)相互依存的另一部分 是一系列按照特定顺序组织的计算机数据和指令的集合。Software = Program + Data + Document软 件程序、软件与软件产品独唱-小合唱-合唱-万人大合唱 | | |简单程序 较复杂程序 软件软件包括程序:按事先设计的功能和性能需求执行的指令序列数据:是程序能正常操纵信息的数据结构文档:与程序开发、维护和使用有关的图文材料 软件 软件特征软件是一种逻辑实体,而不是具体的物理实体软件的生产与
5、硬件不同在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题磨合调整磨损用坏硬件失效率曲线时间失效率修改点实际曲线理想曲线时间失效率软件失效率曲线软件 软件特征软件的成本相当昂贵软件技术的发展落后于需求时间软件复杂性软件需求差距软件技术硬、软件成本比例的变化年份成本%软件1950197019851995硬件4.软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的依赖。5.软件的开发至今尚未完全摆脱手工业的开发方法。6.软件是复杂的,人类能够创造的最复杂的产物是计算机软件。7.软件成本相当昂贵。8.相当多的软件工作涉及到社会因素。软件 软件特征软件 软件的发展第一阶段面向批处
6、理有限的分布自定义软件第二阶段多用户实时数据库软件产品第三阶段分布式系统嵌入“智能”低成本硬件消费者的影响第四阶段强大的桌面系统面向对象技术专家系统人工神经网络并行计算网路计算机2000195019601970198019901960年代出现了软件危机软件工程被正式提出开始注重程序结构的研究程序设计语言和编译系统得到应用1970年代程序设计方法学成为研究热点出现了结构化分析和设计方法1980年代软件开发方法学成为研究热点CASE工具和环境的研制成为热点面向对象技术开始出现并逐步流行1990年代软件复用和构件技术受到关注软件复用和软件构件技术被视为解决软件危机的一条现实可行途径基于构件的软件开发
7、方法成为主流技术之一18软件工程技术呈多线、并行、交叉发展每个线路都有各自的里程碑过程工具软件开发工具软件管理工具软件工程环境开放的软件工程环境瀑布模型ISO 9000 (ISO9000-3软件开发企业实施指南 )CMM(组织)CMMI(集成)PSP(个体)TSP(团队)软件复用过程时间19701980199020002010模型面向对象中间件构件体系结构AspectSOA结构化软件 软件的特征第一阶段程序设计第二阶段软件设计第三阶段传统软件工程第四阶段现代软件工程 程序设计面向批处理; 个体手工生产方式自定义软件; 主要是汇编语言和机器语言; 无文档资料(除程序清单外),主要用于科学计算。
8、软件工程被正式提出,注重程序结构的研究 注重程序结构研究多用户。 小组软件作坊软件产品; 程序设计语言和编译系统的到了广泛的应用; 实时系统和DBMS出现 出现了结构化分析与设计方法。 CASE工具和环境的研制成为热点; 出现软件公司分布式系统; 结构化程序设计,软件产品化、标准化; 面向对象技术开始出现并流行; 软件开发度量受到重视。 Web成为主要应用; 异构环境下的分布式软件应用; 软件复用和软件构件技术应用; 软件技术成熟,人机物融合; 基于构件的软件开发方法成为主流技术之一。20构造性 软件 是 典型的知识产品 是 客观世界中 问题空间与解空间的 具体描述 软件 是有结构的 软件系统
9、 要 不断升级 不断演化软件的本质特性 演化性 软件 是 客观事物的一种反映 是 知识的提炼 体现 固化 客观世界 不断发展 新需求 新技术 不断出现构造性 是软件的本质结构 21 实质上,解决概念和处理逻辑之间的映射问题为屏蔽计算机硬件的异构性,发展了操作系统.NET/COMWeb ServicesJ2EE/EJBUNIXWindows操作系统LinuxC/C+语言Java语言支撑软件中间件为屏蔽操作系统和编程语言的异构性,发展了支撑软件和中间件Fortran语言为了弥补应用软件与开发平台之间的距离,发展了软件框架、设计模式等技术应用系统体系结构 软件框架 设计模式为屏蔽中间件的多样性和异构
10、性,发展了Web技术尽可能平滑地桥接异构性,增加互操作性软件技术的发展本身就是一个不断桥接异构性的过程1.1.2 软件危机与软件工程(1) 软件危机的定义(2) 软件危机产生的原因(3) 解决软件危机的途径1. 软件危机个体化软件环境软件作坊急剧膨胀软件危机产生(1) 软件危机Frederick P. Brooks, Jr.一本在软件领域绝无仅有,20余年畅销不衰的必读经典软件危机拉布雷阿的焦油坑(Mural of La Brea Tar Pits)过去几十年的大型系统开发就犹如这样一个焦油坑,很多大型和强壮的动物在其中剧烈地挣扎。在未来的十年内,无论是在技术还是管理方法上,都看不出有任何突破
11、性的进步,能够独自保证在十年内大幅度地提高软件的生产率、可靠性和简洁性。There is no single development, in either technology or management technique, which by itself promises even one order-of-magnitude improvement within a decade in productivity, in reliability, in simplicity.软件危机There Is a Silver Bullet “重用和交互的构件开发是解决软件根本困难的一种方法。” B
12、road Cox“复杂性是我们行业的属性,而且复杂性是我们的主要限制。软件开发式意见棘手的事情,前方并不会有魔术般的解决方案。现在是从业者研究和分析革命性进展的时候,而不是等待或希望他的出现“ Frederick Brooks软件危机定义:软件危机是计算机软件在它的开发和维护过程中所遇到的一系列严重问题。 主要包含两方面的问题: 如何开发软件,怎样满足对软件日益增长的需求; 如何维护数量不断膨胀的已有软件。(1) 软件危机的定义软件危机 介绍软件危机包含两方面问题:如何开发软件,以满足不断增长,日趋复杂的需求;如何维护数量不断膨胀的软件产品。Software depression (软件萧条)
13、Software affliction (软件困扰) “慢性的苦恼”软件危机主要有以下表现: 对软件开发成本和进度的估计常常不准确。开发成本超出预算,实际进度比预定计划一再拖延的现象并不罕见用户对“已完成”系统不满意的现象经常发生。 软件产品的质量往往靠不住。Bug一大堆,Patch一个接一个软件的可维护程度非常之低。 软件通常没有适当的文档资料。 软件的成本不断提高。 软件开发生产率的提高赶不上硬件的发展和人们需求的增长软件危机 介绍(2) 软件危机产生的原因软件开发和维护的不正确方法主要表现为忽视软件开发前期的需求分析开发过程没有统一的、规范的方法论的指导,文件资料不齐全,忽视人与人的交流
14、忽视测试阶段的工作,提交用户的软件质量差轻视软件的维护(2) 软件危机的原因一方面是与软件本身的特点有关另一方面是由软件开发和维护的方法不正确有关 软件开发工作量分配比例 40% 50%10% 20%测试程序其它引入同一变化付出的代价随时间变化的趋势费用分配比例55%70% 其它软件维护(3) 解决软件危机的途径组织管理工程项目管理方法技术措施软件开发技术与方法软件工具2. 软件工程(1) 软件工程的概念(3) 软件工程框架(2) 中国软件工程发展历程(4) 软件工程知识体系(5) 软件工程基本原理水利工程建筑工程机械工程 软件工程传统工程新兴工程气象工程生物工程工程工程是对技术(或社会)实体
15、的分析、设计、建造、验证和管理。(1) 软件工程概念软件工程的概念及范畴 “软件工程”Software Engineering于1968年 NATO 组织在德国召开的一次会议上提出 是把软件当作一种工业产品,要求 “采用工程化的 原理与方法对软件进行计划、开发和维护 ”。软件工程 范围(1)软件工程 经典定义“The establishment and use of sound engineering principles in order to obtain economically software that is reliable and works on real machines.”
16、 Fritz Bauer软件工程就是为了经济地获得可靠的且能在实际机器上高效运行的软件而建立和使用的完善的工程原理。软件工程 经典定义“The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software” IEEE 1990软件工程是将系统的、规范的、可度量的途径应用于软件的开发、运行和维护的过程,即将工程应用于软件中,并研究上述提到的途径。软件工程 经典定义(Cont.)“Software engineeri
17、ng is that form of engineering that applies the principles of computer science and mathematics to achieving cost-effective solutions to software problems.” CMU/SEI-90-TR-003软件工程就是应用计算机科学和数学的原理来经济有效的解决软件问题的一种工程。软件工程概念采用工程的概念、原理、技术和方法来计划、开发与维护软件把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来以较经济的手段获得能在实际机器上运行的可靠
18、软件的一系列方法。 简言之: 工程方法+管理技术+技术方法45(2)中国软件工程的发展历程为了满足中国软件产业发展需求,中国自1980年启动软件工程研究与实践,其过程和成果与国际发展趋势一致1980年代开展软件开发方法学研究CASE工具和环境的研发1980199020001990年代以构件技术为主线开展前沿研究建立较为全面的软件工程环境2000年以后展开网构软件技术体系的研究建设软件构件库体系建立标准和培养人才软件产业起步开发停留在手工作坊式软件企业开始使用软件工具软件企业开始尝试工业化生产技术来源:杨芙清:中国中国软件工程-二十六年46(1)软件自动化系统南京大学徐家福教授领导的科研团队从规
19、约到实现,开发了多个软件自动化系统软件自动产生系统NDHD软件自动化系统NDAUTO,NDAUTO/SUN元级转换系统NDTPS算法设计自动化系统NDADAS归纳程序综合系统NDIPS自学习软件自动化系统NDSAIL层次式面向对象需求模型NDHOOM及其支撑系统基于NDRDL语言的软件需求分析自动化系统面向对象软件需求分析支撑系统NDORASS 代表性研究工作47(2)XYZ系统 中科院唐稚松院士领导的科研团队XYZ系统是由一个时序逻辑语言XYZ/E,以及围绕该语言的一组软件工具组成XYZ/E:第一个可执行的时序逻辑语言主要特征是能直接表示自动机状态转换机制具有常见程序语言风格,可实际用于编程
20、运行它的统一框架既能表示抽象规范,又能表示各种新的范型,如面向对象程序设计、可视图形程序设计、多媒体、分布式程序设计等1990年获国家自然科学一等奖来源:杨芙清:中国中国软件工程-二十六年48(3)MLIRF系统 中科院董韫美院士领导的科研团队形式规约的获取与复用提出基于复用的文法推断方法提出一种新的递归函数理论:上下文无关语言上的递归函数CFRF研究开发了支持系统MLIRF Requirements Formal Specifications Computer vague informal incomplete precise complete consistent Specificatio
21、n knowledge Human-machine cooperation Validation 来源:杨芙清:中国中国软件工程-二十六年49(4)青鸟工程 北京大学牵头的科研团队软件生产手段的变革工业化生产观念创新机制创新技术创新青鸟工程的关键创 新基础研究工程化工业化生产技术实用化 产品化技术青鸟工程产业化道路“六五” 核心支撑环境BETA85“七五” 集成化软件工程支撑环境 青鸟I型系统(JB1)“八五” 大型软件开发环境 青鸟II型系统(JB2)“九五”(一) 青鸟III型系统(JB3)“九五”(二) 青鸟软件生产线系统基于构件构架应用系统集成组装环境(JBAIE)青 鸟 工 程 发
22、展 历 史工程化开发方法工业化生产技术标准规范体系支撑环境与工具手工作坊式TRDC模式市场技术工程生产、管理工具、标准软件产业建设的共性、基础性工作“十五”青鸟软件生产线系统基于Internet、以构件库为核心的软件开发平台50北京大学北京航空航天大学中科院软件所中科院数学所中科院计算所中科院自动化所清华大学中软公司吉林大学辽宁大学西北大学电子科技大学复旦大学上海软件中心上海交通大学南京大学东南大学中山大学“八五”青鸟工程共22家单位338人参与成都天津长春南京南开大学来源:杨芙清:中国中国软件工程-二十六年51青鸟工程概念模式图借鉴传统产业经验探索软件生产规律提出软件生产线概念支持软件工业化
23、生产改善软件开发过程提升软件企业能力促进软件产业合理分工1990年提出A1A2A3A4基础构件B1B2B3B4功能构件C1C2接口构件A1A2ABCDRA3A4B1B2B3B4C1C2D1D2DA1B1C1A2B2应用系统标准规范标准规范与与质量保证质量保证应用构架库应用构架库构件生产车间构件生产车间组装车间组装车间应用构架应用构架提取车间提取车间构件库构件库界面构件D1D2应用系统应用系统再工程再工程52资源管理层接口标准:UDDIBIDM构件库管理系统JBCLMS 基于Internet、以构件库为核心的开发平台(20012005)软件配置管理系统JBCM 公共软件构件库 企业软件构件库 构
24、件库互连机制Internet 构件化软件, Internet 计算环境软件质量评价、软件再工程构件化再工程工具FDReengineer 逆向工程工具PKU OBRET OO设计度量系统 PKU OODMS构件接口变异测试工具JUTO 软件变更管理系统JBCCM 软件复用项目管理系统PKU PM软件故障管理系统FRACAS软件复用过程管理模型交换 XMI 工具集成 MDA开发整体方法 ABC method集成环境软件建模组装部署特征建模工具PKU_FODM UML 2.0建模工具JBOO 4.0组装部署工具集元建模工具Memt外部工具集成Rational RoseEclipse青鸟工程成果举例本
25、平台包括16项支持系统/工具;涉及构件化软件开发的8个技术领域。53普适计算人机交互资源共享网 格软件形态网 构Internet环境及其应用:基础平台的开放性、动态性和多变性共享资源的多样性(信息、计算、服务)产业模式的服务化Internet平台和环境的出现 对软件形态 技术发展 理论研究 提供了 新的契机 提出了新的问题网构软件成为下一代软件的基本形态来源:杨芙清:中国中国软件工程-二十六年54传统软件形态分解确定目标、有序控制自顶向下 逐步分解软件运行平台站点元素站点元素站点元素站点元素站点元素服务服务无序有序服务无序有序动态目标、渐趋稳态新的软件形态自底向上 逐步组合网构软件的基本形态来
26、源:杨芙清:中国中国软件工程-二十六年55我国软件发展存在问题 我国软件企业 自主创新能力还不强 缺少品牌产品 还没有形成 面向领域的专业化软件企业集团2005年中美软件企业前三强软件销售额对比(单位:亿美元)中国软件企业 前三强 华为 海尔 中兴 19.0 9.5 7.9美国软件企业 前三强 IBM Microsoft EDS 613 339 206资料来源:中国软件产业年鉴2006来源:杨芙清:中国中国软件工程-二十六年56协调发展模式政产学研结合政府组织管理软件企业项目开发技术改造技术支持实践反馈管理监督经验、实践成果资源支持技术成果技术引入 扶持培养学术界软件产业结构模式软件产业组织模
27、式软件生产方式产学研软件人才需求软件人才结构软件人才培养科研投入体系自主创新体系政政策环境宏观管理来源:杨芙清:中国中国软件工程-二十六年 (3)软件工程框架开发范型设计方法支持过程管理过程需求设计实现确认支持可用性正确性合算性软件工程活动维软件工程目标维软件工程原则维软件工程的框架是由软件工程目标、软件工程活动和软件工程原则三个方面的内容构成的。软件工程目标目标:生产具有正确性、可用性以及开销适宜的软件产品。正确性:软件产品达到预期功能的程度。可用性:软件基本结构、实现及文档为用户可用的程度。开销适宜:软件开发、运行的整个开销满足用户要求的程度。目标决定了:软件过程、过程模型和工程方法的选择
28、。软件工程活动活动:生产一个最终满足需求且达到工程目标的软件产品所需要的步骤。1、需求: 问题分析:需求获取和定义,又称软件需求规约。 需求分析:生成软件功能规约。2、设计: 概要设计:建立整个软件的体系结构,包括子系统、模 块以及相关层次的说明、每一模块的接口定 义等。 详细设计:产生程序员可用的模块说明,包括每一模块 中数据结构说明及加工描述。3、实现: 把设计结果转换为可执行的程序代码。4、确认: 贯穿整个开发过程,对完成的结果进行确认,保证产品 满足用户的要求。5、支持: 修改和完善活动。软件工程原则软件工程的四条基本原则:采取适宜的开发模型:控制易变的需求;采用合适的设计方法:需要软
29、件模块化、抽象与信息隐藏、局部化、一致性以及适应性等,需要合适的设计方法的支持。提供高质量的工程支持:软件工具和环境对软件过程的支持。重视开发过程的管理:有效利用可用的资源、生产满足目标的软件产品、提高软件组织的生产能力等。软件工程层次图质量焦点过程方法工具软件工程层次图软件工程的基层过程定义了一组关键过程区域的框架(KPAs)关键过程区域构成了软件项目的管理控制的基础规定了技术方法的采用,工程产品(模型、文档、数据、报告等)的产生,checkpoint的设立、质量的保证以及变更的管理提供了建造软件在技术上需要“如何做”。方法涵盖了以下任务需求分析、设计、编程、测试、维护软件工程方法依赖于一组
30、基本原则,这些原则控制了每一个技术区域,包括建模技术和其他描述技术(4) 软件工程的基本原理著名的软件工程专家B.W.Boehm提出了软件工程的七条基本原理。1)这七条原理是确保软件产品质量和开发效率的原理的最小集合。2)这七条原理是互相独立的,缺一不可又是相当完备的。 用分阶段的生命周期计划严格管理 不成功的软件项目中有一半左右是由于计划不周造成的 。 坚持进行阶段评审 软件的质量保证工作不能等到编码阶段结束之后再进行。 实行严格的产品控制 在软件开发过程中不应随意改变需求,因为改变一项需求往往需要付出较高的代价。 采用现代程序设计技术 采用先进的技术既可提高软件开发的效率,又可提高软件维护
31、的效率。 (4) 软件工程的基本原理 结果应能清楚地审查 根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,从而使得所得到的结果能够清楚地审查。 开发小组的人员应该少而精 Adding manpower to a late software project makes it later 承认不断改进软件工程实践的必要性 不仅要积极主动地采纳新的软件技术,而且要注意不断总结经验。(4) 软件工程的基本原理软件工程项目的基本目标 付出较低的成本; 达到要求的软件功能; 取得较好的软件性能; 开发的软件易于移植; 需要较低的维护费用; 能按时完成开发工作,及时交付使用。软件工程的开发
32、原则抽象(abstraction)(2) 信息隐藏(information hiding)(3) 模块化(modularity) (4) 局部化(localization)(5) 一致性(consistency) (6) 完整性(completeness) (7) 可预测性(verifiability) 1.1.3 软件的分类1.基于软件的功能划分 系统软件 支撑软件 应用软件2.基于软件规模划分 微型软件 小型软件 中型软件 大型软件 甚大型软件 极大型软件3.基于软件工作方式划分 实时处理软件 交互式软件 分时软件 批处理软件1.1.3 软件的分类按软件的功能进行划分: 系统软件 操作系统
33、 数据库管理系统 设备驱动程序 通信处理程序等1.1.3 软件的分类 支撑软件文本编辑程序文件格式化程序磁盘向磁带向数据传输的程序程序库系统支持需求分析、设计、实现、测试和支持管理的软件1.1.3 软件的分类 应用软件 商业数据处理软件 工程与科学计算软件 计算机辅助设计制造软件 系统仿真软件 智能产品嵌入软件 医疗、制药软件 事务管理、办公自动化软件 计算机辅助教学软件按软件规模进行划分:类别 参加人员数 研制期限 源程序行数 微型 1 14周 0.5k 小型 1 16月 1k2k中型 25 12年 5k50k大型 520 23年 50k100k甚大型 1001000 45年 1M(=100
34、0k)极大型 20005000 510年 1M10M按软件工作方式划分: 实时处理软件 分时软件 交互式软件 批处理软件按软件服务对象的范围划分: 项目软件 产品软件按使用的频度进行划分: 一次使用 频繁使用按软件失效的影响进行划分: 高可靠性软件 一般可靠性软件75面向机器面向代数面向过程面向数据面向文件面向信息面向应用面向功能面向数据流面向对象软件科学的发展历程中出现过许多“面向”1.2 软件开发模型与方法1.2 软件开发模型与方法1.2.1 软件开发模型1.2.2 软件开发方法77什么是建模?建模就是认识现实世界客观世界主观世界认识世界改造世界世界是什么样的呢?78模型是对现实世界的认识
35、不同类型的人有不同的世界观持不同的世界观就会得到对现实世界的不同认识建立不同的模型模块,函数,功能类,关联,对象79模型体现现实世界只存在同一个现实世界模型没有对错、只有符合建模人目的多少之分1.2.1 软件开发模型2 快速原型模型(rapid prototype model)4 增量模型1 瀑布模型(waterfall model)5 喷泉模型3 螺旋模型(spiral model)6 智能模型7 V模型1.瀑布模型 瀑布模型的特点:阶段间具有顺序性和依赖性推迟实现的观点质量保证的观点1 瀑布模型1 瀑布模型的缺点各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;由于开发模
36、型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险;早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。2 快速原型模型2 快速原型模型3 螺旋模型需求计划操作概念软件需求提交部分确定目标方案限制条件费用累加风险分析风险分析风险分析原型1原型2原型3可操作原型详细设计编程模块测试组装测试确认测试运行评估方案,标识、解决风险软件产品设计设计验证和确认需求验证开发计划测试计划集成和计划下阶段工作开发验证下一级产品螺旋模型沿着螺线进行若干次迭代: (1) 制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件; (2) 风险分析:分析评估所选方案,考虑
37、如何识别和消除风险; (3) 实施工程:实施软件开发和验证; (4) 客户评估:评价开发工作,提出修正建议,制定下一步计划。3 螺旋模型特点瀑布模型+快速原型+风险分析迭代过程一个螺旋式周期 确定目标,选择方案,选定完成目标的策略 风险角度分析该策略 启动一个开发阶段 评价前一步的结果,计划下一轮的工作 3 螺旋模型螺旋模型也有一定的限制条件,具体如下: (1) 螺旋模型强调风险分析,但要求许多客户接受和相信这种分析,并做出相关反应是不容易的,因此,这种模型往往适应于内部的大规模软件开发。 (2) 如果执行风险分析会大大影响项目的利润,那么进行风险分析毫无意义,因此,螺旋模型只适合于大规模软件
38、项目。 (3) 软件开发人员应该擅长寻找可能的风险,准确地分析风险,否则将会带来更大的风险。3 螺旋模型增量时间增量1第1个增量发布增量2第2个增量发布增量n第n个增量发布分析设计编码测试分析设计编码测试分析设计编码测试4 增量模型缺陷: (1) 由于各个构件是逐渐并入已有的软件体系结构中的,所以加入构件必须不破坏已构造好的系统部分,这需要软件具备开放式的体系结构。 (2) 在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而使软件过程的控制失去整体性。4 增量模型 5 喷泉模型 5 喷泉模型6 智能
39、模型需求分析知识获取和表示知识库/专家系统推理机制软件原型系统体系结构设计软件实现6 智能模型7 V模型开发模型的选择传统的瀑布模型适于以下几种特点的软件开发在开发时期内没有或很少有需求变化;对应用领域很熟悉(例如,扩充已存在的系统);低风险项目(例如,对项目和开发环境很熟悉);除了在早期阶段,用户对开发工作参与很少;要求使用面向过程的编程语言。螺旋模型适于以下几种特点的软件开发:在项目开发的早期需求可能有变化;对应用领域较熟悉;中等风险项目(例如,对目标和开发环境较熟悉);用户不同程度地参与整个项目的开发过程;使用面向对象语言或第四代语言。开发模型的选择渐增模型适于以下几种特点的软件开发:在
40、整个开发过程中需求都可能有变化;对应用领域不熟悉;高风险项目;用户完全参与到整个开发过程中;使用面向对象语言或第四代语言。开发模型的选择1.2.2 软件开发方法2 面向数据结构的软件开发方法3 面向问题的分析方法4 原型化开发方法 1 结构化开发方法5 面向对象的软件开发方法1.2.2 软件开发方法1 结构化方法1978E.Yourdon和L.L.Constantine提出SASD方法,也称为面向功能的软件开发方法或面向数据流的软件开发方法建立在软件生命周期模型基础上基本要点自顶向下逐步求精模块化设计结构化方法总的指导思想自顶向下、逐步求精。它的基本原则是功能的分解与抽象。结构化开发方法的组成
41、结构化分析方法 SA法(Structured Analysis)结构化设计方法 SD法(Structured Design)结构化程序设计方法 SP法(Structured Program)SA,SD,SP 法相互衔接,形成了一整套开发方法。1.2.2 软件开发方法1.2.2 软件开发方法根据数据结构设计程序处理过程的方法影响程序的结构和程序的处理过程最终目标得出对程序处理的描述指导思想自顶向下逐步求精单入口、单出口基本原则-抽象和功能分解适合详细设计阶段-Jackson、warnier方法2 面向数据结构的开发方法1.2.2 软件开发方法基本思想是考虑到输入、输出数据结构,指导系统的分解,在
42、系统分析指导下逐步综合。步骤:从输入、输出数据结构中导出基本处理框;分析这些处理框之间的先后关系;按先后关系逐步综合处理框,直到画出整个系统的PAD图是综合的自底向上的方法,但在逐步综合之前已进行了有目的的分解,这个目的就是充分考虑系统的输入、输出数据结构。3 面向问题的分析方法1.2.2 软件开发方法4 原型化方法106面向对象是软件方法学的返璞归真:面向用户软件开发从过分专业化的方法、规则和技巧中回到了客观世界,回到了人们的日常思维,是软件理论的返朴归真面向对象1.2.2 软件开发方法5 面向对象的方法107沟通顺应人类思维习惯,让软件开发人员在解空间中直接模拟问题空间中的对象及其行为PU
43、SH EBXMOV EBX,EDXMOV EDX,EAXSHR EDX,16DIV BXAHare.Run;ALion.Catch(AHare);ALion.Kill(AHare);AHare.Dead;ALion.Eat;ALion.Happy;在计算机中模拟现实世界的事和物1.2.2 软件开发方法软件开发人员必须从 Think Procedurely转变为 Think Object-Orientedly10860年代后期:Simul67,基本思想70年代后期:Smalltalk80,实用化80年代:理论基础,C+等,商业化90年代:面向对象与设计方法学B.H. Sellers等提出喷泉模型
44、G. Booch提出面向对象开发方法等P. Coad和E.Yourdon提出OOA和OODJacobson提出OOSE1997年:UML1.2.2 软件开发方法5 面向对象的方法面向对象开发方法的组成 OOSD由三部分组成: OOA(Object-Oriented Analysis)面向对象的分析 OOD(Object-Oriented Design)面向对象的设计 OOP (Object-Oriented Program)面向对象的程序设计OOAOOA强调的是对一个系统中的对象特征和行为的定义。建立系统的三类模型。OODOODOOD与OOA密切配合顺序实现对现实世界的进一步建模。OOPOOP
45、OOP是面向对象的技术中发展最快的,使用面向对象的程序设计语言,进行编码。110 OO成为最重要的软件开发方法 OO在GUI、模拟系统、游戏开发、应用框架、软件构件化领域大显身手 Java、UML 与 RUP 构件技术 (CORBA、COM、EJB、.Net) 类库与设计模式。 OO构件、设计模式的丰富将进一步提高软件开发的效率和质量1.2.2 软件开发方法111面向对象方法是一种把面向对象的思想运用于软件开发过程,指导开发活动的系统方法,包括分析、设计和实现等活动面向对象技术基于对象概念,以对象为中心,以类、组合、继承为构造机制,充分利用接口和多态提供灵活性,来认识、理解、刻划客观世界和设计
46、、构建相应的软件系统面向对象=对象 + 类 + 消息 + 继承1.3 面向对象开发方法概述1.3 面向对象开发方法概述1.3.1 面向对象的基本概念1.3.2 面向对象方法的基本思想1.3.1 面向对象方法的基本概念1 对象2 类3 封装或信息隐蔽4 继承5 多态6 消息7 关联8 复用1 对象(object)对象是面向对象开发模式的基本成份每个对象可用它本身的一组属性和它可以执行的一组操作来定义。属性一般只能通过执行对象的操作来改变。操作又称为方法或服务,它描述了对象执行的功能,若通过消息传递,还可以为其它对象使用。1 对象(object)在应用领域中有意义的、与所要解决的问题有关系的任何事
47、物都可以作为对象具体的物理实体的抽象人为的概念任何有明确边界和意义的东西一名职工、一家公司、一个窗口、一座图书馆、一本图书、贷款和借款等,都可以作为一个对象。对象是对问题域中某个实体的抽象,设立某个对象就反映了软件系统保存有关它的信息,并具有与它进行交互的能力。1 对象(object)对象是封装了数据结构及可以施加在这些数据结构上的操作的封装体,这个封装体有可以唯一标识它的名字,而且向外界提供一组服务。属性表示对象的性质,属性值规定了对象所有可能的状态。对象的操作是指该对象可以展现的外部服务。例如,大型客机可视为对象,它具有位置、速度、颜色、容量等属性,对于该对象可施行起飞、降落、加速、维修等
48、操作,这些操作将或多或少地改变飞机的属性值(状态)。对象属性操作1 对象(object)对象就像一台录音机,当软件中使用一个对象的时候,只能通过对象与外界的界面即对象向外部公开的操作,来操作它。录音机中的磁带很像是一个对象中内部的状态数据。当录音机处于不同位置时按下“Play”所放的歌曲是不同的,同样当对象处于不同状态时作同样的操作所得到的效果是不同的!PlayStop1 对象(object)对象的特点以数据为中心:操作围绕对其数据所需要做的处理来设置,不设置与这些数据无关的操作,而且操作结果往往与当时所处的状态(数据的值)有关。对象是主动的:它与传统的数据有本质的不同,不是被动地等待对它进行
49、处理,相反,它是进行处理的主体。实现了数据封装:对象好像是一只黑盒子,它的私有数据完全被封装在盒子内。对私有数据的访问或处理只能通过公有的操作进行。本质上具有并行性:不同对象各自独立地处理自身的数据,彼此通过发送消息传递信息完成通讯。模块独立性好:对象是OO软件的基本模块。2 类(Class)类是具有相同数据结构和相同操作的一组相似对象的抽象,即表示某些对象在属性和操作方面的共同特征。例如:直升飞机、大型客机、轰炸机可归为飞行器类共同属性有:位置、速度和颜色等共同操作有:起飞、降落、加速和维修等类是在对象之上的抽象,有了类以后,对象则是类的具体化,是类的实例。把一组对象的共同特性加以抽象并存贮
50、在一个类中的能力,是面向对象技术最重要的一点!类是一组具有相同数据结构和相同操作的对象的集合。类的定义包括一组数据属性和在数据上的一组合法操作。类定义可以视为一个具有类似特性与共同行为的对象的模板,可用来产生对象。2 类(Class)在一个类中,每个对象都是类的实例 (Instance),它们都可使用类中提供的函数。对象的状态则包含在它的实例变量,即实例的属性中。2 类(Class) 类 两个四边形对象Quadrilateral类的每个对象有同样的一组实例变量和方法。类Quadrilateral提供了一个模板,表示了所有四边形对象。类常常可看做是一个抽象数据类型(ADT)的实现。但更合适的是把
51、类看做是某种概念的模型。 类 两个四边形对象类的实现常常使用其它类的实例,它们提供了该类所需要的服务。这些实例应当受到保护不被其它对象存取,包括同一个类的其它实例在四边形的例子中,定义4个point类的实例作为Quadrilateral类的实例的4个顶点。这些point对象不能被其它对象存取。 类 两个四边形对象实例(Instance)类是建立对象时使用的“样板”,按照这个样板所建立的一个个具体的对象,就是类的实例。实例是某个具体类所描述的一个个具体对象,如:“张三”、“李四”是类“中国人”的实例对象既可以是一个具体的对象,也可以泛指一般的对象;而实例只能是一个具体的对象。属性(Attribu
52、te)属性是类中对象所具有的数据值,是对客观世界实体所具有性质的抽象。如对象Person的属性有姓名、年龄、体重等不同对象的同一属性可以具有相同或不同的属性值。如张三的年龄为19,李四的年龄为20。张三、李四是两个不同的对象,他们共同属性“年龄”的值不同。方法(Method)方法就是对象所能执行的操作(Operation)。它描述了对象执行操作的算法,响应消息的方法。3 封装(Encapsulation)在面向对象的程序中,把数据和实现操作的代码集中起来放在对象内部一个对象好像是一个不透明的黑盒子,表示对象状态的数据和实现操作的代码与局部数据都被封装在黑盒子里面使用对象的时候只需要知道他向外界
53、提供的接口的形式,无须知道它的数据结构细节和实现操作的算法。对象具有封装的条件如下:有一个清晰的边界所有私有数据和实现操作的代码都被封装在这个边界内部,从外面看不见更不可能直接访问;有确定的接口这些接口就是对象可以接收的消息,只能通过向对象发送消息来使用它。受保护的内部实现。实现对象功能的细节(私有数据和代码)不能在定义该对象的类的范围外访问;封装也就是信息隐藏,通过封装对外界隐藏了对象的实现细节;类实质上是抽象数据类型。类把数据说明和操作说明与数据表达和操作实现分离开来,使用者只知道它的说明(值域及可对数据施加的操作),就可以使用它。3 封装(Encapsulation)3 封装(Encap
54、sulation)广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们。在面向对象技术中,继承是子类自动地共享基类中定义的数据和方法的机制。继承性是面向对象程序设计语言不同于其他语言的最主要的特点!4 继承(Inheritance)子类直接继承父类的数据和操作4 继承(Inheritance)家具桌子椅子衣柜床椅子的实例继承的传递性,单继承、多重继承把类组成一个层次结构的系统,即类等级:一个类可以有父类,下层可以有子类这种层次结构系统的一个重要特性就是继承!实现继承机制的实现原理。A的操作A的变量类A类AA的实例变量A的实例a1从A继承特性B的操作B的变量类B:A的子类类B继承来
55、的A的实例变量B的实例变量B的实例b14 继承(Inheritance)4 继承 (Inheritance)继承是使用已存在的定义做为基础建立新定义的技术。新类的定义可以是既存类所声明的数据和新类所增加的声明的组合。新类复用既存的定义,而不要求修改既存类。既存类可当做基类来引用,则新类相应地可当做派生类来引用。使用继承设计一个新类,可以视为描述一个新的对象集,它是既存类所描述对象集的子集合。这个新的子集合可以认为是既存类的一个特殊化。Quadrilateral类是Polygon类的特殊化Quadrilateral是限制为四条边的多边形。我们还可以进一步地把类Quadrilateral特殊化为R
56、ectangle4 继承 (Inheritance)类Quadrilateral的界面可以等同于类Polygon的界面Rectangle类的界面又与Quadrilateral类的界面相同。新类的界面还可以被看做是既存类界面的一个扩充界面。例如,从一个既存的车辆类派生的四轮驱动车类可能不仅是车辆类子集合定义的特殊化,而且还可能在新类的界面中引入新的能力。4 继承 (Inheritance)类的继承层次在类的继承层次中,Quadrilateral的实际参数可以替换Polygon的形式参数。类Quadrilateral的界面与类Polygon的界面是相容的Quadrilateral的界面可响应Pol
57、ygon界面的所有消息。 4 继承 (Inheritance)继承具有传递性如果类C继承类B,类B继承类A,则类C继承类A。单继承与多继承单继承:一个子类只允许有一个父类多继承:一个子类允许有多个父类4 继承 (Inheritance)继承使得相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余信息。继承使得对软件的修改变得比过去容易多了;继承使得用户在开发新的应用系统时不必完全重新开始,可以继承原有的相似系统或从类库中选取需要的类,在派生出新的类以实现所需要的功能;有了继承机制以后,还可以把已有的一般性的解加以具体化,来达到软件重用的目的。4 继承 (Inheritance)5
58、多态(Polymophism)多态即在类的等级的不同层次中可以共享(公用)一个方法的名称不同层次中的每个类却各自按照需要来实现这个行为当对象接收发送给他的消息时,根据该对象所隶属的类动态选用在该类中定义的实现算法多态机制增加了面向对象软件系统的灵活性,减少了信息冗余显著提高了软件的可重用性、可扩充性当扩充系统功能增加新的实体时,只须派生出与新实体类相对应的新的子类在新派生出的子类中定义符合该类需要的方法,完全无须修改原有的程序代码,甚至不需要重新编译原有程序。5 多态(Polymophism)6 消息(Message)对象之间进行通讯的一种构造叫做消息。 当一个消息发送给某个对象时,包含要求接
59、收对象去执行某些活动的信息。接收到消息的对象经过解释,然后予以响应。这种通讯机制叫做消息传递。发送消息的对象不需要知道接收消息的对象如何对请求予以响应。消息是对象之间建立的一种通信机制,它统一了数据流和控制流。消息是一个对象与另一个对象的通信单元是要求某个对象执行类中定义的某个操作的规格说明发送给一个对象的消息定义了一个方法名和一个参数表(可能是空的),并指定某一个对象。一个对象接收的消息则调用消息中指定的方法,并将形式参数与参数表中相应的值结合起来。6 消息(Message)通常一个消息由三部分组成:接收消息的对象消息标识符(即消息名)零个或多个变元访问一个方法的过程称为向这个对象发送一个消
60、息。例如:MyCircle.Show(Green)MyCircle是接收消息的对象的名字,Show是消息名,Green是消息的变元。6 消息(Message)如何要求对象完成一定的处理动作?对象间如何进行联系?所有这一切都只能通过消息传递来实现。传递消息的对象称为发送者,接受消息的对象称为接收者。消息中只包含传递者的要求,它告诉接收者需要哪些处理,但并不指示接收者应该怎样完成这些处理消息完全由接收者解释,接收者独立决定采用什么方式完成所需的处理,发送者对接收者不起任何控制作用。6 消息(Message)一个对象能够接收不同形式、不同内容的多个消息;相同形式的消息可以送往不同的对象,不同的对象对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 现代家居设计与生活品质的提升
- 现代办公环境中营销自动化策略的实施
- Unit2 An Accident(说课稿)-2024-2025学年北师大版(三起)英语六年级上册
- 3-1《百合花》(说课稿)高一语文同步高效课堂(统编版 必修上册)
- 2023二年级数学上册 七 分一分与除法第5课时 小熊开店说课稿 北师大版
- 3 天窗(说课稿)2023-2024学年部编版语文四年级下册
- 《8和9的加、减法的应用》(说课稿)-2024-2025学年一年级上册数学人教版
- Unit 1 Art Using language 2 说课稿 -2023-2024学年高中英语人教版(2019)选择性必修第三册
- Unit 5 Colours Lesson 1(说课稿)-2024-2025学年人教新起点版英语一年级上册
- 2023四年级数学上册 1 大数的认识第4课时 亿以内数的大小比较说课稿 新人教版
- 苏教版四年级数学下册第三单元第二课时《常见的数量关系》课件
- 2025年中考物理总复习《压强》专项测试卷含答案
- 《智能传感器技术》课件
- SaaS服务具体应用合同范本2024版版
- 山东省潍坊市2024-2025学年高三上学期1月期末 政治试题(含答案)
- 2025年幼儿园年度工作总结及工作计划
- 残疾人挂靠合作合同协议书范本
- 浙江省台州市2021-2022学年高一上学期期末质量评估政治试题 含解析
- 宁夏“8·19”较大爆燃事故调查报告
- 中国高血压防治指南(2024年修订版)解读课件
- 2024年员工规章制度具体内容范本(三篇)
评论
0/150
提交评论