第一章绪论—系统设计与集成概述_第1页
第一章绪论—系统设计与集成概述_第2页
第一章绪论—系统设计与集成概述_第3页
第一章绪论—系统设计与集成概述_第4页
第一章绪论—系统设计与集成概述_第5页
已阅读5页,还剩90页未读 继续免费阅读

下载本文档

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

文档简介

1、系统分析设计与集成系统分析设计与集成概述概述软件工程软件工程软件工程是计算机学科中一个年轻并且充满活力的研究领域。软件工程是计算机学科中一个年轻并且充满活力的研究领域。自自2020世纪世纪6060年代末期,人们为克服年代末期,人们为克服“软件危机软件危机”在这一领域做了大在这一领域做了大量工作,逐渐形成了系统的软件开发理论、技术和方法,它们在软量工作,逐渐形成了系统的软件开发理论、技术和方法,它们在软件开发实践中发挥了重要作用。今天,现代科学技术将人类带入了件开发实践中发挥了重要作用。今天,现代科学技术将人类带入了信息社会,计算机软件扮演着十分重要的角色,软件工程已成为信信息社会,计算机软件扮

2、演着十分重要的角色,软件工程已成为信息社会高技术竞争的关键领域之一。息社会高技术竞争的关键领域之一。 软件工程是指导计算机软件开发与维护的工程学科,它采用工软件工程是指导计算机软件开发与维护的工程学科,它采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以便经济地开发出高质量的软件并有效地维护它。,以便经济地开发出高质量的软件并有效地维护它。软件工程的主要内容软件工程的主要内容n方法与技术:方法与技术:软件

3、开发方法主要讨论软件开发的各种方软件开发方法主要讨论软件开发的各种方法及其工作模型。同时讨论具体实现的技术;法及其工作模型。同时讨论具体实现的技术;n工具及环境:工具及环境:软件工具为软件工程方法提供了支持,研软件工具为软件工程方法提供了支持,研究计算机辅助软件工程究计算机辅助软件工程CASE,建立软件工程环境;,建立软件工程环境;n管理技术:管理技术:软件工程管理是指对软件工程全过程的控制软件工程管理是指对软件工程全过程的控制和管理,包括计划安排、成本估算、项目管理和软件质和管理,包括计划安排、成本估算、项目管理和软件质量管理;量管理;n标准与规范:标准与规范:软件工程标准化与规范化,使得各

4、层工作软件工程标准化与规范化,使得各层工作有章可循,以保证软件生产率和软件质量的提高。有章可循,以保证软件生产率和软件质量的提高。软件软件的发展的发展n体系结构体系结构主机结构主机结构文件服务器结构文件服务器结构客户客户/服务器系统服务器系统服务器服务器/浏览器结构浏览器结构n编码语言编码语言机器代码机器代码汇编代码汇编代码高级程序语言高级程序语言人工智能语言人工智能语言n开发工具开发工具分离的开发工具分离的开发工具集成的可视化开发系统集成的可视化开发系统简单的命令行调试器简单的命令行调试器方便的多功能的调试器方便的多功能的调试器软件软件的发展阶段的发展阶段n程序程序n程序程序+文档文档n软件

5、工程软件工程独唱独唱小合唱小合唱合唱合唱万人大合唱万人大合唱 | | | | | 单程序单程序 较复杂程序较复杂程序 软件软件 软件定义软件定义 软件软件=程序程序+数据数据+文档文档q程序程序:为了解决某个特定问题而用程序设计语言描述:为了解决某个特定问题而用程序设计语言描述 的适合计算机处理的语句序列的适合计算机处理的语句序列q数据数据:使程序正常执行所需、能正常操纵信息的数据:使程序正常执行所需、能正常操纵信息的数据 结构结构q文档文档:与程序开发、维护和使用有关的图文材料,即:与程序开发、维护和使用有关的图文材料,即 软件开发活动的记录软件开发活动的记录什么是软件什么是软件软件是一个产

6、品 信息转换 - 显示 , 修改 , 查询 , 管理 , 产生或传递信息 显示由计算机硬件体现的能力 由可被本地硬件设备访问的计算机网络体现的计算潜力软件是产品生产载体 操作系统 ( 控制其它的程序) 网络软件 ( 信息通信) 环境 & 软件工具 ( 帮助构造其它软件) 软件的分类软件的分类1系统软件系统软件 应用软件应用软件科学软件科学软件 / 工程工程嵌入式软件嵌入式软件 产品线软件产品线软件 应用应用 web AI软件软件软件的分类软件的分类2通用软件(通用软件(Generic Software) 通用软件是由软件开发组织开发,面向市场用户公开销售的独立运行系统,有时也被称为套装

7、软件。 举例:操作系统、数据库系统、字处理软件等 定制软件定制软件 (Customized Software) 定制软件是由某个特定客户委托,软件开发组织在合同的约束下开发的软件。 举例:企业 ERP 系统、卫星控制系统、空中交通指挥系统磨损与失效磨损与失效磨损与失效磨损与失效软件变更软件变更为什么必须变更? 软件必须修补以消除错误 软件必须改进以实现新的功能或非功能性需求 从而可以满足新的计算环境或者技 , 软件需要修改其适应 性术的需求 软件必须根据新的业务需求进行升级 软件必须扩展以具有与更多现代系统和数据库的协作能力 软件架构必须进行改建以适应多样化的网络环景软件的特殊性软件的特殊性

8、No silver bullet: essence and accidents of software engineering Fred Brooks,IBM OS360项目经理 1999 年图灵奖获得者 “没有一种单纯的技术或管理上的进步,能够独立地承诺在十年内大幅度地提高软件的生产率”软件的特殊性软件的特殊性不可见性:一次不能观察到所有方面复杂性:由于组件的交互,一些可能的状态增长飞快一致性:必须与现有系统接口可变性: 必须模型化不断变更的真实世界(增加功能性,新硬件上运行)磨损性: 软件退化, 软件每次变更会引入新的错误 ,失效率陡然上升,新的变更会引起曲线又一次上升 ,不断的变更导致软

9、件退化 磨损的硬件部件可用备用部件替换,软件的错误暗示了设计的缺陷或者从设计转化到可执行代码的过程中产生的错误分类 程序规模子程序数开发时间开发人数极小 500行以下102014周1人小1K2K行255016月1人中5K50K行250100012年25人大50K100K行23年520人甚大 1M行45年1001000人极大 1M10M行510年20005000人技术技术/ /方法方法/ /工具工具/ /管理管理低低16n小程序设计是大程序设计的基础,二者都小程序设计是大程序设计的基础,二者都需要软件工程的指导。需要软件工程的指导。n“Why-What-How”开发过程。开发过程。软件神话软件神

10、话管理者的谣传管理者的谣传客户的谣传客户的谣传实践者的谣传实践者的谣传管理者的谣传管理者的谣传“ 我们已经有了一本写满软件开发标准和规程的宝典,它无所不包,囊括了我们能问到的任何问题 ” 事实:宝典也许存在,但它是否在实际中采用? 艺术状态下把工具作为解决方案 “使用工具的傻瓜仍旧是傻瓜 ” “如果我们未能按时完成计划,我们可以通过增加程序员人数,而赶上进度” 事实:为赶进度而增加人手,只能使进度更加延误 “如果我将一个软件外包给另一家公司则我可以完全放手不管” 事实:如果一个组织对软件项目的内部组织和控制毫无了解,那无一例外地在外包项目中失败客户的谣传客户的谣传 “有了对项目目标的大概了解,

11、便足以开始编写程序,我们可以在之后的项目中逐步了解细节.” 事实 虽然很难得到综合全面且固定不变的需求描述,但是对项目目标模糊不清的描述将为项目实施带来灾难 清晰的描述,要求客户和开发人员之间不断保持有效的沟通“虽然项目需求不断变更,但是因为软件是弹性的,因此可以很容易适应变更” 事实 发生变更是无法更改的 变更越迟,变更代价越昂贵实践者的谣传实践者的谣传当我们完成程序并将其交付使用后,我们的任务就完成了 事实:50-70%的工作耗费在软件首次交付客户使用之后直到程序开始运行,才能评估其质量 事实:检查与正式技术评审,从项目启动就开始实行对于一个成功的软件项目,可执行程序是唯一可交付的成果 事

12、实:软件配置包括很多内容,文档(维护 , 用户 )软件工程将导致我们产生大量无用的文档,并因此降低工作效率 事实:软件工程并非以创建文档为主要目的,而是为保障 软件开发的质量,好的质量可以减少返工,从而缩 短开发时间1 1、软件系统的发展、软件系统的发展软件工程软件工程“软件作坊软件作坊”个体化的软件环境个体化的软件环境上世纪上世纪60年代中期年代中期上世纪上世纪70年代年代上世纪上世纪80年代年代面向对象软件开发面向对象软件开发规模小,个人色彩,除代规模小,个人色彩,除代码外无其它文档。码外无其它文档。不断有新的软件工程不断有新的软件工程思想和方法产生。思想和方法产生。规模越来越大,逻辑越来

13、越复杂,功能规模越来越大,逻辑越来越复杂,功能不断更改和扩充。需要多个开发者一起不断更改和扩充。需要多个开发者一起,没有统一的标准可以遵循,以手工艺,没有统一的标准可以遵循,以手工艺的方式形成的方式形成“软件作坊软件作坊” 。1968年,正式提出年,正式提出“软件工程软件工程”。危机危机2 2、软件危机、软件危机n 软件危机软件危机是指在计算机软件开发和维护是指在计算机软件开发和维护过程中所遇到的一系列问题。过程中所遇到的一系列问题。 n软件危机的表现软件危机的表现(1)软件成本日益增长)软件成本日益增长 据美国空军不完全统计据美国空军不完全统计 1955年,软件费用约占总费年,软件费用约占总

14、费用的用的18%,1970年达到年达到60%,1975年达到年达到72%,1980年达到年达到80%,1985年达到年达到85%左右左右 (2)开发进度难以控制)开发进度难以控制 1995年,美国一研究机构对年,美国一研究机构对8000个软件项目做了调查,个软件项目做了调查,有有84软件计划无法于既定时间、经费中完成,超过软件计划无法于既定时间、经费中完成,超过30的计划于运行中被取消,预算平均超出的计划于运行中被取消,预算平均超出189。Windows 95有有1500万行代码,万行代码,Windows 98有有1800万行代码,万行代码,Windows XP则发展到则发展到3500万行。万

15、行。而到了而到了Vista系统,代码行数达到了的系统,代码行数达到了的5000万行,用了万行,用了5年年的开发周期耗资的开发周期耗资75亿美元,亿美元,6000多名研发人员,加入多名研发人员,加入2700多项新功能。多项新功能。Windows 8 比比Vista 和和win7 多多20%。(3)软件质量差)软件质量差 1963-1966 IBM360操作系统(操作系统(1000bug););1963-1970 阿脱拉斯火箭(阿脱拉斯火箭(“-”)、火星探测器)、火星探测器爆炸(爆炸(“,”“”“.”););1985-1987导致病人死于导致病人死于Therac-25医疗线性加速医疗线性加速器的

16、过量辐射(器的过量辐射(25000拉德);拉德);1996年年 亚利安五号原型爆炸;亚利安五号原型爆炸;1998年波音年波音Delta III火箭爆炸。火箭爆炸。(4)软件维护困难)软件维护困难 工业届为维护软件支付的费用占全部硬件和软件工业届为维护软件支付的费用占全部硬件和软件费用的费用的40%-75%。25n客观:软件本身特点客观:软件本身特点逻辑部件逻辑部件规模庞大规模庞大维护费用急剧上升维护费用急剧上升生产技术进步缓慢生产技术进步缓慢n主观:不正确的开发方法主观:不正确的开发方法忽视需求分析忽视需求分析错误认为:软件开发错误认为:软件开发=程序编写程序编写轻视软件维护轻视软件维护26n

17、修改程序困难,抽调大量人员,影响其他软件修改程序困难,抽调大量人员,影响其他软件开发等。开发等。n越晚发现错误,改正的成本就越高越晚发现错误,改正的成本就越高( (因此强调重因此强调重视需求视需求) )。27硬件硬件软件软件100%100%19551955197019701985198528软件技术进步落后于需求增长软件技术进步落后于需求增长借用借用G.Booch的一个著名的比喻:的一个著名的比喻:“开发一个复杂的软件系统和编写一个简单开发一个复杂的软件系统和编写一个简单程序大不一样。其间的差别,如同建造一座程序大不一样。其间的差别,如同建造一座大厦和搭一个狗窝的差别。大厦和搭一个狗窝的差别。

18、”软件危机必定爆发软件危机必定爆发需要软件工程来解决需要软件工程来解决但它但它解决不了解决不了所有问题所有问题n软件工程软件工程是一类求解软件的工程,它应用是一类求解软件的工程,它应用计算机计算机科学科学、数学数学(用于构造模型和算法)和(用于构造模型和算法)和管理科学管理科学(用于计划、资源、质量和成本等的管理)等原(用于计划、资源、质量和成本等的管理)等原理,借鉴理,借鉴传统工程传统工程(用于制定规范、设计范型、(用于制定规范、设计范型、评估成本、权衡结果)的原则和方法,创建软件评估成本、权衡结果)的原则和方法,创建软件以达到以达到提高质量、降低成本提高质量、降低成本的目的。的目的。n软件

19、工程软件工程是一门指导计算机软件设计开发和维护是一门指导计算机软件设计开发和维护的工程学科。的工程学科。3 3、软件工程、软件工程软件工程方法学包含软件工程方法学包含3 3要素:要素:过程模型、方法和工具过程模型、方法和工具n过程模型过程模型 为了获得高质量的软件所需要完成的一系列为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤;任务的框架,它规定了完成各项任务的工作步骤;n方法方法 完成软件开发的各项任务的技术方法,回答完成软件开发的各项任务的技术方法,回答“怎怎样做样做”的问题;的问题;n工具工具 为运用方法而提供的自动的或半自动的软件工程为运用方法而提供的

20、自动的或半自动的软件工程支撑环境。支撑环境。方法方法 methods工具工具 tools过程模型过程模型 process model用户目标用户目标 focus31n程序设计方法的两次飞跃程序设计方法的两次飞跃n面向对象程序设计的优势面向对象程序设计的优势n两类软件工程范例的简单比较两类软件工程范例的简单比较n结构化程序设计结构化程序设计程序程序=数据结构数据结构+算法算法认为程序由一组被动的数据和一组能动的过程认为程序由一组被动的数据和一组能动的过程所构成所构成n面向对象程序设计面向对象程序设计程序程序 = 对象对象 + 消息消息33n传统软件工程传统软件工程以结构化程序设计为基础以结构化程

21、序设计为基础软件分析软件分析 总体设计总体设计 详细设计详细设计 面向过程的面向过程的编码编码 测试测试 n面向对象软件工程面向对象软件工程以面向对象程序设计为基础以面向对象程序设计为基础软件分析与对象抽取软件分析与对象抽取 对象详细设计对象详细设计 面向对面向对象的编码象的编码 测试测试 n可以有效地降低软件的复杂性,简化程序的可以有效地降低软件的复杂性,简化程序的开发;开发;n使因修改程序而引发软件故障的机会大大减使因修改程序而引发软件故障的机会大大减少,令大型软件的维护更快、更简单。少,令大型软件的维护更快、更简单。35存款存款取款取款利息结利息结算算帐户帐户余额余额帐户余额帐户余额利息

22、结算利息结算存存 款款取取 款款面向过程的编码语言面向过程的编码语言 面向对象的编码语言面向对象的编码语言(程序与数据分离程序与数据分离) (操作与数据统一为一个整体操作与数据统一为一个整体)36传统软件工程与现代软件工程的关系传统软件工程与现代软件工程的关系n面向对象软件工程已成为软件开发的主流范面向对象软件工程已成为软件开发的主流范型,但传统软件工程的地位型,但传统软件工程的地位仍很仍很重要重要n原因原因在软件公司中仍在使用传统软件工程在软件公司中仍在使用传统软件工程两类软件工程范型存在许多共同点,传两类软件工程范型存在许多共同点,传统方法对面向对象方法仍有指导意义统方法对面向对象方法仍有

23、指导意义n软件工程原则有:软件工程原则有:1)1) 抽象与自顶向下、逐层细化抽象与自顶向下、逐层细化采用分层抽象的方法,有效控制软件开发的复杂性。采用分层抽象的方法,有效控制软件开发的复杂性。2)2) 模块化模块化把问题分解为若干较小的较易解决的模块,有助于信把问题分解为若干较小的较易解决的模块,有助于信息隐蔽和抽象。息隐蔽和抽象。3)3) 信息隐蔽和数据封装信息隐蔽和数据封装 将模块中的软件设计决策封装在模块内部,使得模块将模块中的软件设计决策封装在模块内部,使得模块实现与使用分离,有助于控制修改局部化。抽象与自实现与使用分离,有助于控制修改局部化。抽象与自顶向下、逐层细化顶向下、逐层细化4

24、 4、软件工程原则、软件工程原则4)4) 局部化局部化 在一个物理模块内集中逻辑上相互关联的计算机资在一个物理模块内集中逻辑上相互关联的计算机资源,促使聚合具有特定目的的事物。源,促使聚合具有特定目的的事物。5)5) 一致性一致性 整个软件系统的模块使用一致的设计策略、编程风整个软件系统的模块使用一致的设计策略、编程风格,保持程序内部接口的一致性、软件与硬件接口格,保持程序内部接口的一致性、软件与硬件接口的一致性、系统规格说明与系统行为的一致性。的一致性、系统规格说明与系统行为的一致性。6)6) 完备性完备性 软件系统中不丢失任何成分。软件系统中不丢失任何成分。7)7) 可验证性可验证性 系统

25、分解应当遵循易检查、易测试和易评审的原则,系统分解应当遵循易检查、易测试和易评审的原则,以保证系统的正确性。以保证系统的正确性。n软件工程的基本原理有:软件工程的基本原理有:1)1) 按软件生存期分阶段制定计划并认真实施按软件生存期分阶段制定计划并认真实施 把整个软件开发过程视为一项工程,把工程把整个软件开发过程视为一项工程,把工程划分为若干阶段,分别制定每个阶段的计划,划分为若干阶段,分别制定每个阶段的计划,逐个实施。逐个实施。2)2) 坚持进行阶段评审坚持进行阶段评审 前一阶段的结果将成为前一阶段的结果将成为下一阶段的依据。坚持阶段的评审才能保证下一阶段的依据。坚持阶段的评审才能保证错误不

26、传播到下一阶段。错误不传播到下一阶段。3)3) 坚持严格的产品控制坚持严格的产品控制 将影响软件质量的将影响软件质量的因素在整个过程中置于严格控制之下。因素在整个过程中置于严格控制之下。4)4) 使用现代程序设计技术使用现代程序设计技术 先进的程序设计先进的程序设计技术带来的是生产率和质量的提高。使用技术带来的是生产率和质量的提高。使用合适的开发模式和工具可以有效地建立功合适的开发模式和工具可以有效地建立功能强大的系统。能强大的系统。5)5) 明确责任明确责任 使得工作结果能够得到清楚的使得工作结果能够得到清楚的审查审查 开发组织严格划分责任并制定产品开发组织严格划分责任并制定产品的标准,使得

27、每个成员的工作有据可依,的标准,使得每个成员的工作有据可依,确保产品的质量。确保产品的质量。6)6) 用人少而精用人少而精 开发组织不在人多,在于每开发组织不在人多,在于每个人的技能适合要求。同时用人少而精,个人的技能适合要求。同时用人少而精,可减少沟通路径,提高生产率。可减少沟通路径,提高生产率。7)7) 不断改进开发过程不断改进开发过程 在开发的过程中不断在开发的过程中不断总结经验,改进开发的组织和过程,有效总结经验,改进开发的组织和过程,有效地通过过程质量的改进提高软件产品的质地通过过程质量的改进提高软件产品的质量。量。425 软件开发软件开发模型模型n传统开发模型瀑布模型(waterf

28、all model)快速原型模型(rapid prototype model)n演化开发模型增量模型(incremental model)螺旋模型(spiral model)n面向对象开发模型构件集成模型(component integration model) n形式化开发模型转换模型(transformational model)净室模型(cleanroommodel)43n定义定义n一个软件从开始计划起,到废弃不用止,称为软一个软件从开始计划起,到废弃不用止,称为软件的生存周期。件的生存周期。n包括计划、开发与运行三个时期。包括计划、开发与运行三个时期。n计划时期:问题定义、可行性研究计

29、划时期:问题定义、可行性研究n开发时期:需求分析、系统设计、编码和测试开发时期:需求分析、系统设计、编码和测试n运行时期:系统维护阶段运行时期:系统维护阶段划分阶段的意义:划分阶段的意义:简化每一步的工作内容,使因软件规简化每一步的工作内容,使因软件规 模增大而大大增加的软件复杂性变得模增大而大大增加的软件复杂性变得 易于控制和管理。易于控制和管理。44可行性研究可行性研究 ( (该问题是否有行得通的解决办法该问题是否有行得通的解决办法) )软件定义软件定义需求分析需求分析 ( (目标系统必须做什么目标系统必须做什么) )概要设计概要设计 ( (怎样实现目标系统怎样实现目标系统) )软件生软件

30、生命周期命周期问题定义问题定义 ( (要解决的问题是什么要解决的问题是什么) )详细设计详细设计 ( (应该怎样具体地实现这个系统应该怎样具体地实现这个系统) )编码和单元测试编码和单元测试 ( (写出正确的容易理解、写出正确的容易理解、 容易维护的程序模块容易维护的程序模块) )综合测试综合测试( (集成测试和验收测试集成测试和验收测试) )系统设计系统设计系统实现系统实现软件开发软件开发运行维护运行维护 ( (改正性维护、适应性维护、改正性维护、适应性维护、 完善性维护、预防性维护完善性维护、预防性维护) )( (系统分析系统分析) )45 在实际从事软件开发工作时,软件规模、种类、开在实

31、际从事软件开发工作时,软件规模、种类、开发环境及开发时使用的技术方法等因素,影响阶段的划发环境及开发时使用的技术方法等因素,影响阶段的划分。分。 生命周期模型生命周期模型规定了把生命周期划分成哪些阶段及规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。各个阶段的执行顺序,因此,也称为过程模型。 我国国家标准我国国家标准计算机软件开发规范计算机软件开发规范( (GB8566-88)GB8566-88)把软件生命周期的划分成把软件生命周期的划分成8 8个阶段:可行性研究与计划、个阶段:可行性研究与计划、需求分析、概要设计、详细设计、实现、组装测试、确需求分析、概要设计、详细

32、设计、实现、组装测试、确认测试、使用和维护。认测试、使用和维护。46问题定义问题定义可行性研究可行性研究需求分析需求分析软件设计软件设计编码编码测试测试维护维护计划时期计划时期开发时期开发时期运行时期运行时期 典型的软件生存周期典型的软件生存周期47n任务任务调查用户需求,分析新系统的主要目调查用户需求,分析新系统的主要目 标,分析开发该系统的可行性。标,分析开发该系统的可行性。n问题定义问题定义明确明确“用户需要计算机解决什么问题用户需要计算机解决什么问题”提出关于提出关于“系统目标与范围的说明系统目标与范围的说明”请用户确认。请用户确认。n可行性研究可行性研究明确明确“上一阶段确定的问题是

33、否有行得通的解决办法上一阶段确定的问题是否有行得通的解决办法”提出一套或多套在技术上可行、在经济上有较高效益提出一套或多套在技术上可行、在经济上有较高效益的可操作解决方案。的可操作解决方案。4849n需求分析需求分析概括地回答概括地回答“怎样实现目标系统怎样实现目标系统? ?”弄清楚用户对软件系统的全部需求;弄清楚用户对软件系统的全部需求;用用“需求规格说明书需求规格说明书”准确表达出来;准确表达出来;系统分析员必须和用户密切配合,充分交流信息系统分析员必须和用户密切配合,充分交流信息,以得出经过用户确认的系统需求。以得出经过用户确认的系统需求。50n软件软件设计设计将需求转变为软件的表示形式

34、将需求转变为软件的表示形式总体设计总体设计(概要设计概要设计)n建立软件系统的总体结构,形成系统的功能结构图;建立软件系统的总体结构,形成系统的功能结构图;n定义功能模块的接口,包括模块功能、关系及接口界面定义定义功能模块的接口,包括模块功能、关系及接口界面定义n设计全局数据库或数据结构设计全局数据库或数据结构n规定设计约束,定义软件系统的边界并给出约束说明规定设计约束,定义软件系统的边界并给出约束说明n编制概要设计文档编制概要设计文档 详细设计详细设计n模块详细设计,包括模块详细功能、算法、数据结构和接口模块详细设计,包括模块详细功能、算法、数据结构和接口信息的设计,拟定模块测试方案;信息的

35、设计,拟定模块测试方案;n编制模块的详细规格说明编制模块的详细规格说明51n编码编码选择一种程序设计语言;选择一种程序设计语言;写出正确的容易理解、容易维护的源程序模块;写出正确的容易理解、容易维护的源程序模块;产生可执行的目标程序。产生可执行的目标程序。52n测试测试-保证软件质量的重要手段保证软件质量的重要手段任务任务n保证输出与要求的一致;保证输出与要求的一致;n发现错误。发现错误。单元测试单元测试n验证模块功能及接口与文档的一致性验证模块功能及接口与文档的一致性综合测试综合测试n将经过单元测试的模块逐步进行组装和测试将经过单元测试的模块逐步进行组装和测试n生成可运行的系统源程序并编写组

36、装测试报告生成可运行的系统源程序并编写组装测试报告确认测试确认测试n软件系统测试软件系统测试n编制确认测试文档编制确认测试文档n软件评审,通过后交付用户使用软件评审,通过后交付用户使用系统测试系统测试533)3)、运行时期运行时期n使用使用将软件安装在用户确定的运行环境中使用将软件安装在用户确定的运行环境中使用n维护维护通过各种必要的维护活动使系统持久地满足用户通过各种必要的维护活动使系统持久地满足用户的需要。的需要。对所有的维护写出维护报告。对所有的维护写出维护报告。通常有四类维护活动通常有四类维护活动n改正性维护改正性维护n适应性维护适应性维护n完善性维护完善性维护n预防性维护预防性维护n

37、退役:软件一旦完成其使命,就要终止对软件产品的退役:软件一旦完成其使命,就要终止对软件产品的 支持,软件停止使用。支持,软件停止使用。54n软件开发模型软件开发模型为整个软件生存期建立的模型。为整个软件生存期建立的模型。n内容内容定义定义-What开发开发-How维护维护-Changen传统软件开发模型传统软件开发模型瀑布模型瀑布模型快速原型模型快速原型模型n又称线性顺序模型或生存周期模型又称线性顺序模型或生存周期模型nW.Royce于于1970年首次提出年首次提出n各个阶段的工作顺序展开各个阶段的工作顺序展开n重要的指导思想重要的指导思想把逻辑设计与物理设计划分开,尽可能推把逻辑设计与物理设

38、计划分开,尽可能推迟程序的物理实现迟程序的物理实现用户要求用户要求编码编码需求分析需求分析模块说明模块说明详细设计详细设计需求规格说明需求规格说明软件结构图软件结构图总体设计总体设计单元测试单元测试程序清单程序清单确认测试确认测试综合测试综合测试系统测试系统测试瀑瀑布布模模型型的的阶阶段段与与文文档档瀑布模型的瀑布模型的特点特点n阶段间的顺序性和依赖性阶段间的顺序性和依赖性相邻两个阶段有因果关系,要求严格顺序执行相邻两个阶段有因果关系,要求严格顺序执行上一阶段的变换结果是下一阶段变换的输入上一阶段的变换结果是下一阶段变换的输入每个阶段都要进行阶段性评审,确认后转下一阶段每个阶段都要进行阶段性评

39、审,确认后转下一阶段n推迟实现的观点推迟实现的观点尽可能推迟软件的编码时间尽可能推迟软件的编码时间n质量保证的观点(文档驱动性)质量保证的观点(文档驱动性)每个阶段都要完成规定的文档;每个阶段都要完成规定的文档;每个阶段都要对已完成的文档进行复审,尽早发现每个阶段都要对已完成的文档进行复审,尽早发现问题,消除隐患。问题,消除隐患。58同一变动同一变动付出的代价随时间变化的趋势付出的代价随时间变化的趋势带带“反馈环反馈环”的瀑布模型的瀑布模型修改修改设计设计的反的反馈馈维护维护追溯追溯的反的反馈馈n瀑布模型的优点瀑布模型的优点可强迫开发人员采用规范的方法可强迫开发人员采用规范的方法严格地规定了每

40、个阶段必须提交的文档严格地规定了每个阶段必须提交的文档要求每个阶段交出的所有产品都必须经过质量保要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证证小组的仔细验证n瀑布模型的缺点瀑布模型的缺点周期长:顺序推进,环环审查周期长:顺序推进,环环审查需求难以准确把握需求难以准确把握( (不能准确提出和沟通、不能不能准确提出和沟通、不能快速适应变化的需求快速适应变化的需求) ),导致返工甚至推倒重来,导致返工甚至推倒重来无法预测新引入模块的影响无法预测新引入模块的影响最终的形式难以预料最终的形式难以预料不适合需求模糊的系统不适合需求模糊的系统 快速原型模型的第一步是快速建立一个能反映用快速原型

41、模型的第一步是快速建立一个能反映用户主要需求的原型系统,让用户在计算机上试用它,户主要需求的原型系统,让用户在计算机上试用它,通过实践来了解目标系统的概貌。通常,用户试用原通过实践来了解目标系统的概貌。通常,用户试用原型系统之后会提出许多修改意见,开发人员按照用户型系统之后会提出许多修改意见,开发人员按照用户的意见快速地修改原型系统,然后再次请用户试用的意见快速地修改原型系统,然后再次请用户试用。一旦用户认为这个原型系统确实能做他们所需。一旦用户认为这个原型系统确实能做他们所需要的工作,开发人员便可据此书写规格说明文档,根要的工作,开发人员便可据此书写规格说明文档,根据这份文档开发出的软件可以

42、满足用户的真实需求。据这份文档开发出的软件可以满足用户的真实需求。 需求分析需求分析原型开发原型开发最终系统设计最终系统设计原型评价原型评价最终系统实现最终系统实现用户用户反馈反馈63 快速原型的本质是快速原型的本质是“快速快速”。开发人员应该尽。开发人员应该尽可能快地建造出原型系统,以加速软件开发过程,可能快地建造出原型系统,以加速软件开发过程,节约软件开发成本。原型的用途是获知用户的真正节约软件开发成本。原型的用途是获知用户的真正需求,一旦需求确定了,原型将被抛弃。需求,一旦需求确定了,原型将被抛弃。 适用于需求确定性不高的系统开发。适用于需求确定性不高的系统开发。64n怎样保证怎样保证“

43、快快”?原型模型仅包括未来系统的主要功能,以及系统的原型模型仅包括未来系统的主要功能,以及系统的重要接口。重要接口。开发原型系统时尽量使用能缩短开发周期的语言和开发原型系统时尽量使用能缩短开发周期的语言和工具。工具。n特点特点原型驱动型原型驱动型过程的交互性与迭代性过程的交互性与迭代性n优点优点用户在开发过程中可以完善对软件系统的需求;用户在开发过程中可以完善对软件系统的需求;开发周期相对缩短,成本较低;开发周期相对缩短,成本较低;有效发挥用户与开发人员之间的密切配合作用;有效发挥用户与开发人员之间的密切配合作用;充分体现逐步发展、逐步完善的原则。充分体现逐步发展、逐步完善的原则。n缺点缺点频

44、繁的需求变化会使开发过程难于管理和控制;频繁的需求变化会使开发过程难于管理和控制;原型的快速开发和修改对技术要求比较高,需要原型的快速开发和修改对技术要求比较高,需要较好的工作基础。较好的工作基础。n思想方法思想方法使所开发的软件在迭代中逐步达到完善使所开发的软件在迭代中逐步达到完善n种类种类增量模型增量模型螺旋模型螺旋模型n适用于大型软件的开发适用于大型软件的开发67n基本思想基本思想把软件产品作为一系列的增量构件来设计、实把软件产品作为一系列的增量构件来设计、实现、集成和测试。开发时分批逐步向用户提交现、集成和测试。开发时分批逐步向用户提交产品,每次提交一个满足用户需求子集的增量产品,每次

45、提交一个满足用户需求子集的增量构件,直到最后一次得到满足用户全部需求的构件,直到最后一次得到满足用户全部需求的完整产品为止。完整产品为止。n将软件分解成增量构件时的约束条件将软件分解成增量构件时的约束条件当把新构件集成到现有软件中时,所形成的产当把新构件集成到现有软件中时,所形成的产品必须是可测试的。品必须是可测试的。68 使用增量模型时,第一个增量构件往往实使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心现软件的基本需求,提供最核心的功能。的功能。69n优点优点能在较短的时间内向用户提交部分功能的构件;能在较短的时间内向用户提交部分功能的构件;逐步增加产品功能可以使用户有较充

46、裕的时间学习逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,减少一个全新软件可能给用户带来和适应新产品,减少一个全新软件可能给用户带来的冲击。的冲击。n缺点缺点增量构件的划分依赖于系统功能的构成和软件开发增量构件的划分依赖于系统功能的构成和软件开发人员的经验;人员的经验;要求软件系统的体系结构具有高度的可扩充性和开要求软件系统的体系结构具有高度的可扩充性和开放性。放性。70风险更大的增量模型显示出一旦确定了用户需求风险更大的增量模型显示出一旦确定了用户需求后,就着手拟定第一个构件的规格说明文档,完成规后,就着手拟定第一个构件的规格说明文档,完成规格说明文档后将转向第二个构件的规格说明

47、,与此同格说明文档后将转向第二个构件的规格说明,与此同时设计组开始设计第一个构件。时设计组开始设计第一个构件。规格说明规格说明设计设计实现和集成实现和集成交付客户交付客户规格说明规格说明设计设计实现和集成实现和集成交付客户交付客户规格说明规格说明设计设计实现和集成实现和集成交付客户交付客户构件构件1 1构件构件2 2构件构件n n71n基本思想基本思想 使用原型及其他方法来尽量降低风险。理解这种使用原型及其他方法来尽量降低风险。理解这种模型的一个简便方法,是模型的一个简便方法,是把它看作在每个阶段之前都把它看作在每个阶段之前都增加了风险分析过程的快速原型模型增加了风险分析过程的快速原型模型。

48、螺旋模型的每一个周期都包括螺旋模型的每一个周期都包括需求分析、风险分需求分析、风险分析、工程实现和评审析、工程实现和评审4 4个步骤个步骤。每迭代一次,过程完。每迭代一次,过程完成一个周期,软件开发前进一个层次,系统生成一个成一个周期,软件开发前进一个层次,系统生成一个新的版本。新的版本。72n每个螺旋周期的工作步骤及各步骤的任务每个螺旋周期的工作步骤及各步骤的任务需求分析需求分析n确定目标、方案和限制条件确定目标、方案和限制条件风险分析风险分析n评估方案、标识风险和解决风险评估方案、标识风险和解决风险工程实现工程实现n开发确认产品开发确认产品评审评审n评价该阶段的工作并计划下一个阶段的工作评

49、价该阶段的工作并计划下一个阶段的工作73n完整的螺旋模型完整的螺旋模型螺旋模型主要适用于内部开发的大规模软件项目螺旋模型主要适用于内部开发的大规模软件项目。当风险过大时,可方便的终止项目。当风险过大时,可方便的终止项目。74可把它看作在可把它看作在每个阶段之前每个阶段之前都增加了风险都增加了风险分析过程的快分析过程的快速原型模型速原型模型75n特点特点瀑布模型瀑布模型+快速原型快速原型+风险分析风险分析迭代过程迭代过程n优点优点强调可选方案和约束条件有利于已有软件的重用;强调可选方案和约束条件有利于已有软件的重用;有助于把软件质量作为软件开发的一个重要目标;有助于把软件质量作为软件开发的一个重

50、要目标;减少过多测试或测试不足带来的风险;减少过多测试或测试不足带来的风险;维护只是模型的另一个周期,在维护和开发之间并维护只是模型的另一个周期,在维护和开发之间并没有本质区别。没有本质区别。n缺点缺点需耗费大量资金和时间用于风险评估;需耗费大量资金和时间用于风险评估;要求开发人员具有丰富风险评估经验和有关知识;要求开发人员具有丰富风险评估经验和有关知识;开发过程比较复杂;开发过程比较复杂;给过程管理和控制带来了一定的难度。给过程管理和控制带来了一定的难度。n面向对象的基本概念面向对象的基本概念n构件集成模型构件集成模型n对象(对象(Object)n类(类(Class)n继承(继承(Inher

51、itance)n消息(消息(Message)n面向对象面向对象 = 对象对象+类类+继承继承+消息消息78n客观世界中的实体客观世界中的实体 属性(静态属性属性(静态属性 Attributes)操作(动态行为操作(动态行为 Methods)n对象对象:=Identifier:对象的标识或名字:对象的标识或名字Method Set:对象中的操作集合:对象中的操作集合Data Structure:对象的数据结构:对象的数据结构Message Interface:对象受理的消息名集合:对象受理的消息名集合(即对外接口)(即对外接口)n对象的特点对象的特点以数据为中心以数据为中心对象是主动的对象是主动

52、的实现数据封装实现数据封装本质上有并行性本质上有并行性模块独立性好模块独立性好80类类ClassClass和实例和实例InstanceInstancen类类相同属性和行为的对象的抽象相同属性和行为的对象的抽象n实例实例特定类所描述的一个具体对象特定类所描述的一个具体对象n对象是类的实例对象是类的实例n子类直接继承父类的数据和操作子类直接继承父类的数据和操作n继承的传递性,单继承、多重继承继承的传递性,单继承、多重继承n类之间可以存在继承关系类之间可以存在继承关系家具家具桌子桌子椅子椅子衣柜衣柜床床椅子的实例椅子的实例82n对象之间在交互中所传送的通信信息对象之间在交互中所传送的通信信息n形式:形式:Message:dest,op,paranDestination Object:接受消息的对象:

温馨提示

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

评论

0/150

提交评论