版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 付宏,教授,软件与理论方向付宏,教授,软件与理论方向 软件工程软件工程-软件构架与软件中间件软件构架与软件中间件 计算机仿真与数值模拟计算机仿真与数值模拟联系方式:计算机楼联系方式:计算机楼 B2172022-2-211/1062022-2-21时间、能力、关系时间、能力、关系n时间时间5252* *5-30-35-12=1835-30-35-12=183天天上课上课 睡觉睡觉 吃饭吃饭 其它其它4.5 7 2 10.54.5 7 2 10.5n能力能力(985+211+(985+211+论文论文) )n坐下坐下n看看n想想n行动行动n关系关系= =讨论讨论+ +协
2、商协商+ +尊重尊重2/106中国软件企业十大品牌企业排名中国软件企业十大品牌企业排名 2022-2-213/106世界十大著名软件公司世界十大著名软件公司2022-2-214/1062022-2-215/1062022-2-216/106刘积仁刘积仁 2022-2-217/106张瑞敏 2022-2-218/106孙丕恕,山东人,山东大学无线电专业毕业 2022-2-219/1062022-2-2110/1062022-2-2111/106孙力斌孙力斌 2022-2-2112/106(七)(七) 经中国人民银行批准的其他相关服务业务。经中国人民银行批准的其他相关服务业务。中国银联股份有限公司
3、中国银联股份有限公司总裁许罗德总裁许罗德 2022-2-2113/1062022-2-2114/1062022-2-2115/1062022-2-2116/106吉大正元吉大正元n吉大正元信息技术股份有限公司(以下简称吉大正元信息技术股份有限公司(以下简称“吉大正元吉大正元”)是)是中国领先的信息安全专业服务提供商,成立于中国领先的信息安全专业服务提供商,成立于19991999年年2 2月,吉月,吉林大学为主要发起人,注册资本为人民币林大学为主要发起人,注册资本为人民币75007500万元,经过七年万元,经过七年发展,资产总额由发展,资产总额由16001600万元递增到万元递增到2.572.5
4、7亿元,年均增长速度为亿元,年均增长速度为215%215%。吉大正元运营中心位于北京中关村。吉大正元运营中心位于北京中关村, ,在东北、上海、深在东北、上海、深圳、武汉等圳、武汉等8 8个区域设有分公司、办事处,控股山西省数字证个区域设有分公司、办事处,控股山西省数字证书认证中心,参股国投安信数字证书认证中心。书认证中心,参股国投安信数字证书认证中心。n吉大正元主要从事信息安全产品的研发、生产、销售,并提供吉大正元主要从事信息安全产品的研发、生产、销售,并提供安全咨询、安全评估和安全集成等服务,同时参与制定多项国安全咨询、安全评估和安全集成等服务,同时参与制定多项国家和行业家和行业PKI/PM
5、IPKI/PMI标准,是国家信息安全标准技术委员会标准,是国家信息安全标准技术委员会WG4PKI/PMIWG4PKI/PMI标准组、标准组、WG3WG3密码算法和密码模块工作组的主要成密码算法和密码模块工作组的主要成员和子项目召集单位。吉大正元现已成为国内信息安全行业知员和子项目召集单位。吉大正元现已成为国内信息安全行业知名企业,是国内最大的公钥基础设施(名企业,是国内最大的公钥基础设施(PKIPKI)产品供应商。根)产品供应商。根据中国电子商务协会的统计数据:目前吉大正元在据中国电子商务协会的统计数据:目前吉大正元在PKIPKI电子证电子证书认证系统领域处于领先地位,市场占有率在书认证系统领
6、域处于领先地位,市场占有率在70%70%以上。以上。2022-2-2117/1062022-2-2118/106总 目 录第第1 1章章 软件工程学概述软件工程学概述第第2 2章章 可行性研究可行性研究第第3 3章章 需求分析需求分析第第4 4章章 形式化说明技术形式化说明技术第第5 5章章 总体设计总体设计第第6 6章章 详细设计详细设计第第7 7章章 实现实现第第8 8章章 维护维护第第9 9章章 面向对象方法学引论面向对象方法学引论第第1010章章 面向对象分析面向对象分析 第第1111章章 面向对象设计面向对象设计第第1212章章 面向对象实现面向对象实现第第1313章章 软件项目管理
7、软件项目管理2022-2-2119/106第第1 1章章 软件工程学概述软件工程学概述1.1 1.1 软件危机软件危机 理解理解 1.2 1.2 软件工程软件工程 掌握掌握1.3 1.3 软件生命周期软件生命周期 掌握掌握1.4 1.4 软件过程软件过程 掌握掌握2022-2-2120/106第第1 1章章 软件工程学概述软件工程学概述1.1 1.1 软件危机软件危机个体化的软件环境个体化的软件环境在在6060年代中期以前,通用硬件相当普遍年代中期以前,通用硬件相当普遍软件是为每个具体应用而专门编写的,通软件是为每个具体应用而专门编写的,通常是规模较小的程序,编写者和使用者往常是规模较小的程序
8、,编写者和使用者往往是同往是同一个一个( (或同一组或同一组) )人人软件设计通常是在人们头脑中进行的一个软件设计通常是在人们头脑中进行的一个隐含的过程,除了程序隐含的过程,除了程序清单清单之外,没有其之外,没有其他文档资料保存下来他文档资料保存下来2022-2-2121/106n软件的作坊式生产软件的作坊式生产n从从6060年代中期到年代中期到7070年代中期是计算机系统年代中期是计算机系统发展的第二代时期发展的第二代时期n随着计算机应用的日益普及,软件数量急随着计算机应用的日益普及,软件数量急剧膨胀剧膨胀n软件维护工作,以令人吃惊的比例耗费资软件维护工作,以令人吃惊的比例耗费资源。许多程序
9、的个体化特性使得它们最终源。许多程序的个体化特性使得它们最终成为不可维护的。成为不可维护的。n19681968年北大西洋公约组织的计算机科学家年北大西洋公约组织的计算机科学家在西德召开国际会议,正式提出并使用了在西德召开国际会议,正式提出并使用了“软件工程软件工程”这个名词,一门新兴的工程这个名词,一门新兴的工程学科就此诞生了。学科就此诞生了。2022-2-2122/1061.1.1 1.1.1 软件危机介绍软件危机介绍1 1 软件危机:是指在计算机软件的开发和维护软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。软件危机过程中所遇到的一系列严重问题。软件危机包含下述两方面的
10、问题:包含下述两方面的问题:n如何开发软件,满足对软件的日益增长的如何开发软件,满足对软件的日益增长的需求需求n如何维护数量不断膨胀的已有软件如何维护数量不断膨胀的已有软件 软件萧条、软件困扰软件萧条、软件困扰 2022-2-2123/106软件危机的一些表现:软件危机的一些表现:(1)(1)对软件开发成本和进度的估计常常很不准确对软件开发成本和进度的估计常常很不准确(2)(2)用户对用户对“已完成的已完成的”软件系统不满意的现象经常发软件系统不满意的现象经常发生。生。闭门造车闭门造车(3)(3)软件产品的质量往往靠不住。软件产品的质量往往靠不住。复查审查正确性证明复查审查正确性证明(4)(4
11、)软件常常是不可维护的。软件常常是不可维护的。 可重用软件可重用软件(5)(5)软件通常没有适当的文档资料。软件通常没有适当的文档资料。里程碑、工具开发、里程碑、工具开发、维护维护(6)(6)软件成本在计算机系统总成本中所占的比例逐年上软件成本在计算机系统总成本中所占的比例逐年上升。升。大量人力大量人力(7)(7)软件开发生产率提高的速度,远远跟不上计算机应软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。用迅速普及深入的趋势。供不应求供不应求2022-2-2124/106 1.1.2 1.1.2 产生软件危机的原因产生软件危机的原因 1 1 产生软件危机的原因产生软件危机的原
12、因 一方面与软件本身的一方面与软件本身的特点特点( (特性特性) )有关,有关,另一方面也和软件开发与维护的另一方面也和软件开发与维护的方法方法不正确不正确有关。有关。n软件特性软件特性 (1)(1)形态特性:无形、不可见的逻辑实体。形态特性:无形、不可见的逻辑实体。 (2) (2)智能特性:知识、实践经验、人类智慧的凝聚。智能特性:知识、实践经验、人类智慧的凝聚。 (3) (3)开发特性:个体劳动开发特性:个体劳动- -个人行为、个人因素。个人行为、个人因素。 (4) (4)质量特性:可参照物不明确、测试技术局限性、质量特性:可参照物不明确、测试技术局限性、 无问题软件难以确定(无法定量分析
13、无问题软件难以确定(无法定量分析系统的性能)系统的性能) (5) (5)生产特性:生产成本生产特性:生产成本= =设计开发成本设计开发成本2022-2-2125/106(6)(6)管理特性:对大规模知识型工作者智力劳动的管理管理特性:对大规模知识型工作者智力劳动的管理 - -培训、指导、激励、制度推行、过程培训、指导、激励、制度推行、过程 量化与监督、沟通、协调等。量化与监督、沟通、协调等。(7)(7)环境特性:依赖于计算机系统。环境特性:依赖于计算机系统。(8)(8)维护特性:与使用和时间无关,修正遗留、隐藏的维护特性:与使用和时间无关,修正遗留、隐藏的 缺陷。缺陷。(9)(9)废弃特性:它
14、不会因为使用时间过长而被废弃特性:它不会因为使用时间过长而被“用坏用坏” 维护不划算维护不划算- -废弃或退役。废弃或退役。(10)(10)应用特性:国民经济应用特性:国民经济+ +国防国防2022-2-2126/106n方法上存在的问题方法上存在的问题(1)(1)目前相当多的软件专业人员对软件开发和维护目前相当多的软件专业人员对软件开发和维护还有不少糊涂观念,在实践过程中或多或少地还有不少糊涂观念,在实践过程中或多或少地采用了错误的方法和技术,这可能是使软件问采用了错误的方法和技术,这可能是使软件问题发展成软件危机的主要原因,题发展成软件危机的主要原因,忽视分析、看忽视分析、看重开发、轻视维
15、护。重开发、轻视维护。(2)(2)对用户要求没有完整准确的认识就匆忙着手编对用户要求没有完整准确的认识就匆忙着手编写程序是许多软件开发工程失败的主要原因之写程序是许多软件开发工程失败的主要原因之一。一。(3)(3)缺乏软件开发的经验、开发数据的积累。缺乏软件开发的经验、开发数据的积累。(4)(4)软件人员与用户交流存在障碍软件人员与用户交流存在障碍- -文化差异、需求文化差异、需求工具。工具。(5)(5)软件开发过程不规范。软件开发过程不规范。(6)(6)软件规模增大,复杂性指数上升。()软件规模增大,复杂性指数上升。()xin(7)xin(7)缺少有效的软件评测手段。缺少有效的软件评测手段。
16、2022-2-2127/1062 2 生命周期生命周期 一个软件从定义、开发、使用和维护,直一个软件从定义、开发、使用和维护,直到最终被废弃到最终被废弃( (孕育、诞生、成长、成熟、衰孕育、诞生、成长、成熟、衰亡亡) ),要经历一个漫长的时期,通常把软件经,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生命周期历的这个漫长的时期称为生命周期( (生存周期生存周期) )。n问题定义问题定义n可行性研究可行性研究 软件定义软件定义n需求分析需求分析n设计设计( (概要设计、详细设计概要设计、详细设计) )n编写程序(编写程序(1010一一2020) 软件开发软件开发n测试测试n维护维护(
17、55%-70%) (55%-70%) 运行维护运行维护2022-2-2128/1063 3 变动的代价变动的代价n在早期引入变动,涉及的面较少,因而代价在早期引入变动,涉及的面较少,因而代价也比较低;也比较低;n在开发的中期引入一个变动要对所有已完成在开发的中期引入一个变动要对所有已完成配置成分都做相应的修改,不仅工作量大,配置成分都做相应的修改,不仅工作量大,而且逻辑上更复杂,因此付出的代价剧增;而且逻辑上更复杂,因此付出的代价剧增;n在软件在软件“已经完成已经完成”时再引入变动,则需要时再引入变动,则需要付出更高得多的代价。付出更高得多的代价。早早 中中 后后高高中中低低图图1.1 1.1
18、 引入同一变动付出的代价随时间变化的趋势引入同一变动付出的代价随时间变化的趋势2022-2-2129/106软件维护比硬件维护更复杂, 它与硬件的维护有本质差别2022-2-2130/1061.1.3 1.1.3 消除软件危机的途径消除软件危机的途径n集体集体。软件开发不是某种个体劳动的神秘技巧,。软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。同配合、共同完成的工程项目。n经验经验。必须充分吸取和借鉴人类长期以来从事各。必须充分吸取和借鉴人类长期以来从事各种工程项目所积累的行之有效的原理、概念
19、、技种工程项目所积累的行之有效的原理、概念、技术和方法,特别要吸取几十年来人类从事计算机术和方法,特别要吸取几十年来人类从事计算机硬件研究和开发的经验教训。硬件研究和开发的经验教训。n推广推广。应该推广使用在实践中总结出来的开发软。应该推广使用在实践中总结出来的开发软件的成功技术和方法件的成功技术和方法, ,并且研究探索更有效的技术并且研究探索更有效的技术和方法,尽快消除在计算机系统早期发展阶段形和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法。成的一些错误概念和做法。n工具工具。应该开发和使用更好的软件工具。正如机。应该开发和使用更好的软件工具。正如机械工具可以械工具可以“放
20、大放大”人类的体力一样软件工具可人类的体力一样软件工具可以以“放大放大”人类的智力。人类的智力。2022-2-2131/1061.2 1.2 软件工程软件工程 软件:软件:是程序、数据及相关文档的完整集合。是程序、数据及相关文档的完整集合。n程序程序是能够完成预定功能和性能的可执行的指令序列;是能够完成预定功能和性能的可执行的指令序列;n数据数据是使程序能够适当地处理信息的数据结构;是使程序能够适当地处理信息的数据结构;n文档文档是开发、使用和维护程序所需要的图文资料。是开发、使用和维护程序所需要的图文资料。软件分类软件分类n系统软件系统软件:与计算机硬件系统配合,使计算机各部件、:与计算机硬
21、件系统配合,使计算机各部件、 相关软件、数据相关软件、数据-协调和高效工作的软件。协调和高效工作的软件。n应用软件应用软件:在系统软件的支持下,在特定领域内开发,:在系统软件的支持下,在特定领域内开发, 为特定目的服务的一类软件。为特定目的服务的一类软件。n支撑软件支撑软件:工具软件:工具软件n纵向支撑:软件生命周期某阶段工具纵向支撑:软件生命周期某阶段工具-分析、设计、编分析、设计、编码、测试、维护等工具码、测试、维护等工具n横向支撑:软件生命周期活动工具横向支撑:软件生命周期活动工具-项目管理工具、配项目管理工具、配置管理工具置管理工具n可复用软件可复用软件:软件的各种标准库:软件的各种标
22、准库-厂商提供厂商提供2022-2-2132/1061.2.1 1.2.1 软件工程的介绍软件工程的介绍n19681968年在第一届年在第一届NATONATO会议上给出会议上给出“软件工程软件工程就是为了就是为了经济经济地获得可靠的而且能在实际机地获得可靠的而且能在实际机器上有效地运行的软件,而建立和使用完善器上有效地运行的软件,而建立和使用完善的的工程工程原理原理”。n19931993年年IEEEIEEE更全面更具体的定义:更全面更具体的定义:“软件工软件工程是:把系统的、规范的、可度量的途径程是:把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是应用于软件开发、运行和维护
23、过程,也就是把工程应用于软件;研究中提到的把工程应用于软件;研究中提到的途途径径。”North Atlantic Treaty OrganizationInstitute for Electrical and Electronics Engineers2022-2-2133/106n软件工程:是指导计算机软件开软件工程:是指导计算机软件开发和维护的一门工程学科。采用发和维护的一门工程学科。采用工程的概念、原理、技术和方法工程的概念、原理、技术和方法来开发与维护软件,把经过时间来开发与维护软件,把经过时间考验而证明正确的管理技术和当考验而证明正确的管理技术和当前能够得到的最好的技术方法结前能够得
24、到的最好的技术方法结合起来,以经济地开发出高质量合起来,以经济地开发出高质量的软件并有效的维护它。的软件并有效的维护它。2022-2-2134/106 软件工程具有下述本质特性:软件工程具有下述本质特性: 1 1 软件工程关注大型程序的构造软件工程关注大型程序的构造 2 2 软件工程的中心课题是控制复杂性软件工程的中心课题是控制复杂性 3 3 软件经常变化软件经常变化 4 4 开发软件的效率非常重要开发软件的效率非常重要 5 5 和谐地合作是开发软件的关键和谐地合作是开发软件的关键 6 6 软件必须有效地支持它的用户软件必须有效地支持它的用户 7 7 在软件工程领域中是由具有一种文化背景在软件
25、工程领域中是由具有一种文化背景 的人替具有另一种文化背景的人创造产品的人替具有另一种文化背景的人创造产品2022-2-2135/1061.2.2 1.2.2 软件工程的基本原理软件工程的基本原理 著名的软件工程专家著名的软件工程专家BWBoehm于于1983年在一篇论文中提出了软件工程的七条年在一篇论文中提出了软件工程的七条基本原理。基本原理。1 1 用分阶段的生命周期计划严格管理用分阶段的生命周期计划严格管理 生命周期划分若干阶段、制定可行的计划、按生命周期划分若干阶段、制定可行的计划、按计划开发、维护、管理计划开发、维护、管理2 2 坚持进行阶段评审坚持进行阶段评审n大部分错误是在编码之前
26、造成的,据大部分错误是在编码之前造成的,据BoehmBoehm等人等人的统计,设计错误占软件错误的的统计,设计错误占软件错误的6363,编码错,编码错误仅占误仅占3737;n错误发现与改正得越晚所需付出的代价也越高。错误发现与改正得越晚所需付出的代价也越高。2022-2-2136/1063 3 实行严格的产品控制实行严格的产品控制n改变需求时,为了保持软件各个配置成分的改变需求时,为了保持软件各个配置成分的一致性,必须实行严格的产品控制,其中主一致性,必须实行严格的产品控制,其中主要是实行基准配置管理。要是实行基准配置管理。n基准配置基准配置又称为基线配置,它们是经过阶段又称为基线配置,它们是
27、经过阶段评审后的软件配置成分评审后的软件配置成分( (各个阶段产生的文各个阶段产生的文档或程序代码档或程序代码) )。n基准配置管理基准配置管理也称为变动控制,一切有关修也称为变动控制,一切有关修改软件的建议,待别是涉及到对基准配置的改软件的建议,待别是涉及到对基准配置的修改建议,都必须按照严格的规程进行评审,修改建议,都必须按照严格的规程进行评审,获得批准以后才能实施修改。获得批准以后才能实施修改。2022-2-2137/1064 4 采用现代程序设计技术采用现代程序设计技术 人们一直把主要精力用于研究各种新人们一直把主要精力用于研究各种新的程序设计技术。的程序设计技术。 SA-SD-SPS
28、A-SD-SP技术技术,OOA-OOD-OOP,OOA-OOD-OOP技术。技术。2022-2-2138/1065 5 结果应能清楚地审查结果应能清楚地审查 软件产品是看不见摸不着的逻辑产品。软件产品是看不见摸不着的逻辑产品。软件开发人员软件开发人员( (或开发小组或开发小组) )的工作进展情况可的工作进展情况可见性差,难以准确度量,使得软件产品的开发见性差,难以准确度量,使得软件产品的开发过程比一般产品的开发过程更难于评价和管理。过程比一般产品的开发过程更难于评价和管理。为了提高软件开发过程的可见性,更好地进行为了提高软件开发过程的可见性,更好地进行管理,应该根据软件开发项目的总目标及完成管
29、理,应该根据软件开发项目的总目标及完成期限,规定开发组织的期限,规定开发组织的责任和产品标准责任和产品标准,从而,从而使得所得到的结果能够清楚地审查。使得所得到的结果能够清楚地审查。2022-2-2139/106 6 6 开发小组的成员应该少而精开发小组的成员应该少而精 开发小组人员的开发小组人员的素质和数量素质和数量是影响软件产是影响软件产品质量和开发效率的重要因素。素质高的人员品质量和开发效率的重要因素。素质高的人员的开发效率比素质低的人员的开发效率可能高的开发效率比素质低的人员的开发效率可能高几倍至几十倍,而且素质高的人员所开发的软几倍至几十倍,而且素质高的人员所开发的软件中的错误明显少
30、于素质低的人员所开发的软件中的错误明显少于素质低的人员所开发的软件中的错误。此外,随着开发小组人员数目的件中的错误。此外,随着开发小组人员数目的增加,交流情况讨论问题而造成的通信开销也增加,交流情况讨论问题而造成的通信开销也急剧增加。急剧增加。N(N-1)/2N(N-1)/2,可见随着人数,可见随着人数N N的增大,的增大,通信开销将急剧增加。因此,组成通信开销将急剧增加。因此,组成少而精少而精的开的开发小组是软件工程的一条基本原理,合理发小组是软件工程的一条基本原理,合理5-85-8人。人。2022-2-2140/106 7 7 承认不断改进软件工程实践的必要性承认不断改进软件工程实践的必要
31、性 BoehmBoehm提出应把承认不断改进软件提出应把承认不断改进软件工程实践的必要性作为软件工程的第工程实践的必要性作为软件工程的第七条基本原理。按照这条原理,不仅七条基本原理。按照这条原理,不仅要积极主动地采纳新的要积极主动地采纳新的软件技术软件技术,而,而且要注意不断且要注意不断总结经验,总结经验,积极收集各积极收集各种数据。种数据。2022-2-2141/1061.2.3 1.2.3 软件工程方法学软件工程方法学软件工程:技术软件工程:技术+ +管理管理技术技术:软件工程方法学包括:软件工程方法学包括3 3个要素:方法、工具和过程。个要素:方法、工具和过程。n方法:完成软件开发各项任
32、务的方法:完成软件开发各项任务的技术技术 n工具:运用方法提供的自动的或半自动的软件工程支工具:运用方法提供的自动的或半自动的软件工程支撑撑环境环境n过程:为了获得高质量的软件所要完成的一系列任务过程:为了获得高质量的软件所要完成的一系列任务框架,规定了完成各项任务的工作框架,规定了完成各项任务的工作步骤步骤n目前使用得最广泛的软件工程方法学分别是目前使用得最广泛的软件工程方法学分别是传统方法传统方法学学和和面向对象方法学面向对象方法学管理管理:通过计划、组织、控制等一系列活动,合理的配置和使:通过计划、组织、控制等一系列活动,合理的配置和使用各种资源,以达到既定的目标和过程。用各种资源,以达
33、到既定的目标和过程。 方法学方法学: :软件生命周期全过程使用的一整套技术和方法的集合。软件生命周期全过程使用的一整套技术和方法的集合。 2022-2-2142/1061 1 传统方法学传统方法学( (称生命周期方法学或结构化范型称生命周期方法学或结构化范型) )n从从时间时间角度对软件开发和维护的复杂问题进行分解,角度对软件开发和维护的复杂问题进行分解,把软件生命周期依次划分为若干个阶段,每个阶段有把软件生命周期依次划分为若干个阶段,每个阶段有相对独立的任务,然后逐步完成每个阶段的任务。相对独立的任务,然后逐步完成每个阶段的任务。n对于任何两个对于任何两个相邻相邻的阶段而言,前一阶段的结束标
34、准的阶段而言,前一阶段的结束标准就是后一阶段的开始标准。在每一个阶段结束之前都就是后一阶段的开始标准。在每一个阶段结束之前都必须进行正式严格的技术审查和管理复审,通过之后必须进行正式严格的技术审查和管理复审,通过之后这个阶段才算结束;如果检查不过,则必须进行必要这个阶段才算结束;如果检查不过,则必须进行必要的返工,并且返工后还要再经过审查。的返工,并且返工后还要再经过审查。n审查的一条主要标准就是每个阶段都应该交出审查的一条主要标准就是每个阶段都应该交出“最新最新式的式的” 高质量的高质量的文档文档资料,从而保证在软件开发工资料,从而保证在软件开发工程结束时有一个完整准确的程结束时有一个完整准
35、确的软件配置软件配置交付使用。交付使用。n这种方法历史悠久,为广大软件工程师所熟悉。这种方法历史悠久,为广大软件工程师所熟悉。n自顶向下顺序的完成软件开发各阶段的任务。自顶向下顺序的完成软件开发各阶段的任务。2022-2-2143/1062 2 面向对象方法学面向对象方法学n是一种以是一种以数据数据为主线,把数据和对数据的操作紧密为主线,把数据和对数据的操作紧密地结合起来的方法,把地结合起来的方法,把对象对象作为融合了数据及在数作为融合了数据及在数据上的操作行为的统一的软件构件据上的操作行为的统一的软件构件n把所有对象都划分成把所有对象都划分成类类n按照父类与子类的按照父类与子类的关系关系,把
36、若干个相关类组成一个,把若干个相关类组成一个层次结构的系统层次结构的系统n对象彼此间仅能通过发送对象彼此间仅能通过发送消息消息互相联系互相联系 面向对象方法学的出发点和基本原则是尽量模面向对象方法学的出发点和基本原则是尽量模拟人类习惯的思维方式,使开发软件的方法与过程拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,尽可能接近人类认识世界解决问题的方法与过程,从而使描述问题的问题空间与实现解法的解空间在从而使描述问题的问题空间与实现解法的解空间在结构上尽可能一致。结构上尽可能一致。n主动、多次、反复迭代的过程主动、多次、反复迭代的过程2022-2-2144
37、/1061.3 1.3 软件生命周期软件生命周期n一般说来,软件生命周期由软件定义、软件开发一般说来,软件生命周期由软件定义、软件开发和软件运行维护三个时期组成,每个时期又进一和软件运行维护三个时期组成,每个时期又进一步划分成若干个阶段。步划分成若干个阶段。n软件定义时期软件定义时期n问题定义问题定义n可行性研究可行性研究n需求分析需求分析n软件开发时期软件开发时期n总体设计总体设计n详细设计详细设计 系统设计系统设计n编码和单元测试编码和单元测试n综合测试综合测试 系统实现系统实现n软件运行维护时期(运维)软件运行维护时期(运维)2022-2-2145/1061 1 问题定义:要解决的问题是
38、什么问题定义:要解决的问题是什么2 2 可行性研究:确定问题有可行得通的解决办法吗可行性研究:确定问题有可行得通的解决办法吗? ?3 3 需求分析:目标系统必须具备哪些功能。用正式文需求分析:目标系统必须具备哪些功能。用正式文档准确地记录对目标系统的需求,产生规格说明书。档准确地记录对目标系统的需求,产生规格说明书。4 4 总体设计总体设计 概括地说,应该怎样实现目标系统,应设计出低成概括地说,应该怎样实现目标系统,应设计出低成本、中等成本、高成本本、中等成本、高成本3 3种方案,推荐最佳方案。种方案,推荐最佳方案。2022-2-2146/1065 5 详细设计详细设计 设计每个模块,确定实现
39、模块功能所需要的算法和设计每个模块,确定实现模块功能所需要的算法和数据结构。数据结构。6 6 编码和单元测试编码和单元测试 写出正确的容易理解、容易维护的程序模块。写出正确的容易理解、容易维护的程序模块。7 7 综合测试综合测试 通过各种类型的测试使软件达到预定的要求:通过各种类型的测试使软件达到预定的要求:n集成测试:根据设计的软件结构,把经过单元集成测试:根据设计的软件结构,把经过单元检验的模块按某种选定的策略结合起来,在装检验的模块按某种选定的策略结合起来,在装配过程中对程序进行必要的测试。配过程中对程序进行必要的测试。n验收测试:按照规格说明书的规定,由用户对验收测试:按照规格说明书的
40、规定,由用户对目标系统进行验收。目标系统进行验收。2022-2-2147/1068 8 软件维护,通常有四类维护活动:软件维护,通常有四类维护活动:n改正性维护:诊断和改正在使用过程中发改正性维护:诊断和改正在使用过程中发 现的软件错误现的软件错误n适应性维护:修改软件以适应环境的变化适应性维护:修改软件以适应环境的变化n完善性维护:根据用户的要求改进或扩充完善性维护:根据用户的要求改进或扩充 软件使它更完善软件使它更完善n预防性维护:修改软件为将来的维护活动预防性维护:修改软件为将来的维护活动 预先做准备预先做准备2022-2-2148/1062022-2-2149/106n经典软件过程模型
41、经典软件过程模型n瀑布模型瀑布模型nV模型模型n快速原型模型快速原型模型n阶段模型(增量模型与迭代模型阶段模型(增量模型与迭代模型)n螺旋模型螺旋模型n喷泉模型喷泉模型n现代软件过程模型现代软件过程模型nRational统一过程统一过程n敏捷过程与极限编程敏捷过程与极限编程n微软过程微软过程1.4 1.4 软件过程软件过程2022-2-2150/106软件过程:软件过程:是为了获得高质量软件所需要完成的是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工一系列任务的框架,它规定了完成各项任务的工作步骤作步骤。过程的特性过程的特性n过程使用一定的资源,受一定的限制,并生成一
42、定过程使用一定的资源,受一定的限制,并生成一定的中间及最终产品;的中间及最终产品;n过程中所包含的活动事先都规定好了;过程中所包含的活动事先都规定好了;n过程中每个活动的开始、结束有明确的规定;过程中每个活动的开始、结束有明确的规定;n每项活动都有相应的指导原则,用以明确其目标;每项活动都有相应的指导原则,用以明确其目标;n各活动之间以某种顺序组织;各活动之间以某种顺序组织;n过程可能包括若干相互关联的子过程;过程可能包括若干相互关联的子过程;n过程中的活动、资源以及产品都可能受到约束。过程中的活动、资源以及产品都可能受到约束。1.4 1.4 软件过程软件过程1.4.1 1.4.1 瀑布模型瀑
43、布模型1 1 特点特点(1)(1)阶段间具有顺序性和依赖性阶段间具有顺序性和依赖性 定义定义过程过程开发开发过程过程维护维护过程过程1 1问题的定义问题的定义2 2可行性研究可行性研究3 3需求分析需求分析4 4总体设计总体设计5 5详细设计详细设计6 6编码编码7 7测试测试8 8维护维护传统的瀑布模型传统的瀑布模型必须等前一阶段的工必须等前一阶段的工作完成之后,才能开作完成之后,才能开始后一阶段的工作。始后一阶段的工作。前一阶段的输出文档前一阶段的输出文档就是后一阶段的输入就是后一阶段的输入文档。文档。2022-2-2151/106(2)(2)推迟实现的观点推迟实现的观点n对于规模较大的软
44、件项目来说,编码开始得越早,对于规模较大的软件项目来说,编码开始得越早,最终完成开发工作所需要的时间反而越长。最终完成开发工作所需要的时间反而越长。n清楚地区分逻辑设计与物理设计,尽可能推迟程序清楚地区分逻辑设计与物理设计,尽可能推迟程序的物理实现,是瀑布模型开发软件的一条重要的指的物理实现,是瀑布模型开发软件的一条重要的指导思想(即设计之前的规约导思想(即设计之前的规约, ,编码之前的设计)。编码之前的设计)。传统的瀑布模型传统的瀑布模型定义定义过程过程开发开发过程过程维护过程维护过程1 1问题的定义问题的定义2 2可行性研究可行性研究3 3需求分析需求分析4 4总体设计总体设计5 5详细设
45、计详细设计6 6编码编码7 7测试测试8 8维护维护2022-2-2152/106(3)(3)质量保证的观点质量保证的观点 软件工程的基本目标是优质、高产。在瀑软件工程的基本目标是优质、高产。在瀑布模型的每个阶段都应坚持两个重要做法:布模型的每个阶段都应坚持两个重要做法:n第一,每个阶段都必须完成规定的文档。完整、第一,每个阶段都必须完成规定的文档。完整、准确的合格文档不仅是软件开发时期各类人员准确的合格文档不仅是软件开发时期各类人员之间相互之间相互通信通信的媒介,也是运行时期对软件进的媒介,也是运行时期对软件进行行维护维护的重要依据。的重要依据。n第二,每个阶段结束前都要对所完成的文档进第二
46、,每个阶段结束前都要对所完成的文档进行行评审评审,以便尽早发现问题,改正错误。,以便尽早发现问题,改正错误。 瀑布模型的成功在很大程度上是由于它基瀑布模型的成功在很大程度上是由于它基本上是一种本上是一种文档驱动文档驱动的模型。瀑布模型的本质的模型。瀑布模型的本质是是“一次通过一次通过”。2022-2-2153/106实际的瀑布模型实际的瀑布模型2022-2-2154/1062 2 优点与缺点优点与缺点优点:优点:n强迫开发人员采用规范的方法;强迫开发人员采用规范的方法;n严格规定了每个阶段必须提交的文档;严格规定了每个阶段必须提交的文档;n阶段产品必须经过质量保证小组的验证。阶段产品必须经过质
47、量保证小组的验证。缺点:缺点:n客户必须能够完整、正确和清晰地表达他们的需求;开发人客户必须能够完整、正确和清晰地表达他们的需求;开发人员一开始就必须理解需求。员一开始就必须理解需求。n缺乏灵活性。一旦软件需求存在偏差,就会导致开发出的软缺乏灵活性。一旦软件需求存在偏差,就会导致开发出的软件产品不能满足用户的实际要求。件产品不能满足用户的实际要求。n在一个项目的早期阶段,过分地强调了基线和里程碑处的文在一个项目的早期阶段,过分地强调了基线和里程碑处的文档档, ,可能要花费更多的时间,建立了一些用处不大的文档。可能要花费更多的时间,建立了一些用处不大的文档。n直到项目结束之前,都不能演示系统的能
48、力,增加了项目的直到项目结束之前,都不能演示系统的能力,增加了项目的风险。风险。3 3 瀑布模型适用的情况瀑布模型适用的情况n只适用于项目开始时需求就已确定的情况。需求变化小只适用于项目开始时需求就已确定的情况。需求变化小2022-2-2155/1062022-2-2156/106瀑布模型的历史功绩瀑布模型的历史功绩n在支持开发结构化软件、控制软件开发复在支持开发结构化软件、控制软件开发复杂度、促进软件开发工程化方面起了显著杂度、促进软件开发工程化方面起了显著作用;作用;n它为软件开发和维护提供了一种当时较为它为软件开发和维护提供了一种当时较为有效的管理模式,根据这一模式制定开发有效的管理模式
49、,根据这一模式制定开发计划、进行成本预算、组织开发人员,以计划、进行成本预算、组织开发人员,以阶段评审和文档控制为手段,有效地对软阶段评审和文档控制为手段,有效地对软件开发过程进行指导,从而对软件质量有件开发过程进行指导,从而对软件质量有一定程度的保证;一定程度的保证;n我国曾在我国曾在19881988年根据该模型制定并公布了年根据该模型制定并公布了“软件开发规范软件开发规范”国家标准。国家标准。 1.4.2 V 1.4.2 V模型模型 V V模型是瀑布模型的变体,它反映了模型是瀑布模型的变体,它反映了测测试试活动与活动与分析和设计分析和设计的关系(德国国防部的关系(德国国防部19921992
50、)。编码形成了)。编码形成了V V的顶点,分析和设计的顶点,分析和设计在左边,测试和维护在右边。在左边,测试和维护在右边。 2022-2-2157/106n 单元和集成测试针对的是程序的正确性单元和集成测试针对的是程序的正确性n系统测试验证系统设计系统测试验证系统设计n由顾客完成的验收测试把测试步骤与需求说明的由顾客完成的验收测试把测试步骤与需求说明的每一个元素联系起来,以此来确认需求被正确地每一个元素联系起来,以此来确认需求被正确地实现。实现。2022-2-2158/106 该模型中该模型中V V的左边和右边的边线意味着,如的左边和右边的边线意味着,如果在验证和确认的过程中发现了问题,那么继
51、果在验证和确认的过程中发现了问题,那么继续执行右边的测试步骤之前,重新执行续执行右边的测试步骤之前,重新执行V V 的左的左边以修正和改进需求、设计和编码。边以修正和改进需求、设计和编码。V V模型使模型使得某些迭代和重复工作更加清晰,而这些工作得某些迭代和重复工作更加清晰,而这些工作在瀑布模型中都是隐含的。在瀑布模型中都是隐含的。 瀑布模型的中心通常是文档和工件瀑布模型的中心通常是文档和工件,而而V V模模型的中心则是活动和正确性。型的中心则是活动和正确性。2022-2-2159/106n验证(验证(VerificationVerification)目标是确定系统中各项功能可以正常工目标是确
52、定系统中各项功能可以正常工作,实质上是检查实现的质量如何。作,实质上是检查实现的质量如何。n确认(确认(ValidationValidation)目标是确定系统实现了全部的需求,确目标是确定系统实现了全部的需求,确保开发方建造的是正确的、用户需要的保开发方建造的是正确的、用户需要的产品。产品。2022-2-2160/1062022-2-2161/106V V模型的改良之处与存在的问题模型的改良之处与存在的问题n本质是把瀑布模型中一些隐含的迭代过程明本质是把瀑布模型中一些隐含的迭代过程明确出来,使开发活动和验证活动的相关性更确出来,使开发活动和验证活动的相关性更加明显;加明显;nV V模型使抽象
53、等级的概念也更明显:所有从需模型使抽象等级的概念也更明显:所有从需求到实现部分的活动关注的是建立更多的系求到实现部分的活动关注的是建立更多的系统详细表述,而所有从实现到交付运行的活统详细表述,而所有从实现到交付运行的活动关注的是对系统的验证和确认。动关注的是对系统的验证和确认。n和瀑布模型一样,都是对软件开发过程过份和瀑布模型一样,都是对软件开发过程过份简单、理想化的抽象,对需求变化的适应性简单、理想化的抽象,对需求变化的适应性差。差。1.4.3 1.4.3 快速原型模型快速原型模型1 1 快速原型是快速建立起来的可以在计算机上运行的程序快速原型是快速建立起来的可以在计算机上运行的程序, ,它
54、所能完成的功能往往是最终产品功能的一个子集。它所能完成的功能往往是最终产品功能的一个子集。2 2 原型在开发中的作用:原型在开发中的作用: (1)(1)获得用户的真正获得用户的真正需求需求; (2)(2)可用于为一个项目或项可用于为一个项目或项 目中某些部分,确定目中某些部分,确定技术、技术、 成本和进度的成本和进度的可能性。可能性。3 3 快速原型模型中各主要部分快速原型模型中各主要部分 (1)(1)原型快速分析原型快速分析: :指在分析者和用户的紧密配合下指在分析者和用户的紧密配合下, ,快速快速 确定软件系统的基本要求确定软件系统的基本要求. . (2) (2)原型构造原型构造: :在原
55、型分析的基础上在原型分析的基础上, ,根据基本需求规格说根据基本需求规格说 明明, ,忽略细节忽略细节, ,只考虑主要特性,快速构造一个可运行只考虑主要特性,快速构造一个可运行 的系统。的系统。2022-2-2162/106(3)(3)原型运行与评价:软件开发人员与用户频繁原型运行与评价:软件开发人员与用户频繁通信、发现问题、消除误解的重要阶段,目通信、发现问题、消除误解的重要阶段,目的是发现新需求并修改原有需求。的是发现新需求并修改原有需求。(4)(4)原型修正:对原型系统,要根据修改意见进原型修正:对原型系统,要根据修改意见进行修正。行修正。(5)(5)判定原型完成:如果原型经过修正或改进
56、,判定原型完成:如果原型经过修正或改进,获得了参与者的一致认可,那么原型开发的获得了参与者的一致认可,那么原型开发的迭代过程可以结束迭代过程可以结束2022-2-2163/1062022-2-2164/106快速原型模型快速原型模型设计设计验证验证编码编码验证验证综合测试综合测试维护维护快速原型快速原型验证验证规格说明规格说明验证验证变化的需求变化的需求验证验证2022-2-2165/106优点优点l有助于满足用户的真实需求有助于满足用户的真实需求l文档能正确描述用户需求文档能正确描述用户需求l开发基本是线性顺序开发基本是线性顺序l通过原型进行学习通过原型进行学习l快速快速缺点缺点l可能会增加
57、成本可能会增加成本 原型系统的内部结构并不重要,重要的原型系统的内部结构并不重要,重要的是必须迅速构造原型,依据用户意见迅速的是必须迅速构造原型,依据用户意见迅速的修改原型,原型可以是最终产品的一部分,修改原型,原型可以是最终产品的一部分,也可以抛弃。也可以抛弃。2022-2-2166/1061.4.4 1.4.4 增量模型(渐增模型)增量模型(渐增模型)n增量模型有一个假设,即需求可以分段,成为一系列增量模型有一个假设,即需求可以分段,成为一系列增量产品,每一增量可以分别地开发。增量产品,每一增量可以分别地开发。n增量模型把软件产品作为一系列的增量模型把软件产品作为一系列的增量构件增量构件来
58、设计、来设计、编码和测试。每个构件由多个相互作用的模块构成,编码和测试。每个构件由多个相互作用的模块构成,能完成特定的功能。第一个增量构件往往实现软件的能完成特定的功能。第一个增量构件往往实现软件的基本需求,提供最核心的功能。基本需求,提供最核心的功能。n分解时必须遵守的约束条件是,当把新构件集成到现分解时必须遵守的约束条件是,当把新构件集成到现有软件中去时,所形成的产品必须是可测试的。有软件中去时,所形成的产品必须是可测试的。2022-2-2167/106图图1.5 增量模型增量模型概要设计概要设计验证验证需求分析需求分析验证验证规格说明规格说明验证验证针对每个构件,完成详细针对每个构件,完
59、成详细设计、编码和集成,经测设计、编码和集成,经测试后交付给用户试后交付给用户维护维护2022-2-2168/1062022-2-2169/1062022-2-2170/106规格说明规格说明设计设计编码和集成编码和集成交付客户交付客户规格说明规格说明设计设计编码和集成编码和集成交付客户交付客户规格说明规格说明设计设计编码和集成编码和集成交付客户交付客户构件构件1 1:构件构件2 2:构件构件n n:图图1.6 1.6 风险更大的增量模型风险更大的增量模型2022-2-2171/106优点优点1. 1. 是瀑布模型的变体,具有瀑布模型的优点,产品分是瀑布模型的变体,具有瀑布模型的优点,产品分期
60、交付。期交付。2. 2. 第一个可交付版本所需要的成本和时间是很少的;第一个可交付版本所需要的成本和时间是很少的;3. 3. 开发由增量表示的小系统所承担的风险是不大的;开发由增量表示的小系统所承担的风险是不大的;4. 4. 由于能很快发布第一个版本,可以减少用户需求的由于能很快发布第一个版本,可以减少用户需求的变更;变更;5. 5. 允许增量投资,即在项目开始时,可以仅对一个或允许增量投资,即在项目开始时,可以仅对一个或两个增量投资。两个增量投资。6. 6. 用户对产品有充裕的的时间进行学习和适应用户对产品有充裕的的时间进行学习和适应缺点缺点1. 1. 如果没有对用户的变更要求进行规划,那么
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年博物馆教育资源与多元智能对接
- 2026年餐饮业预防食物中毒关键控制点培训
- 2026年止痛药合理使用讲座课件
- 2026年小学生美术创造力培养的实践与效果评估
- 2026年文化金融支持绿色文化项目发展
- 2026年银行客户经理信贷业务入门与风控要点
- 2026年原辅料入厂检验标准制定与检验频次优化
- 肌内注射:中职护理案例分析
- 2026年平台经济下外卖骑手权益保障与职业发展困境调研
- 2026年银行突发公共卫生事件演练
- 教育局中小学考试命题管理方案
- 光大金瓯资产管理有限公司笔试
- 2025年中国邮政集团有限公司湖北省分公司招聘笔试备考试题及完整答案详解1套
- 2025年建筑施工特种作业人员考试建筑电焊工题库(附答案)
- 构建人类命运共同体+课件-2025-2026学年高中政治统编版选择性必修一
- 2025年善意的谎言辩论会材料及流程
- 2025年辽宁卷历史高考试卷(原卷+答案)
- 检验科个人防护培训课件
- 小儿骨科课件
- 2025年不动产登记业务知识试题及答案
- 2025年内部审计人员考试题库
评论
0/150
提交评论