版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 付宏,教授,软件与理论方向付宏,教授,软件与理论方向 软件工程软件工程-软件构架与软件中间软件构架与软件中间件件 计算机仿真与数值模拟计算机仿真与数值模拟联系方式:计算机楼联系方式:计算机楼 B2172021-12-91/1062021-12-9时间、能力、关系时间、能力、关系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/10620152015201420142013201320122012华为华为华为华为华为华为 华为华为中兴中兴中兴中兴中兴中兴 中兴中兴浪潮浪潮浪潮浪潮神州数码神州数码 神州数码神州数码方正方正方正方正海尔海尔 海尔海尔南瑞南瑞南瑞南瑞I I方正方正 方正方正联创科技联创科技联创科技联创科技联创科技联创科技 熊猫熊猫东软东软东软东软浪潮浪潮 浙大网新浙大网新用友用友用友用友浙大网新浙大网新 浪潮浪潮浙大网新浙大网新浙大网新浙大网新同方电脑同方电脑 东软东软宝信宝信宝信宝信东软东软 清华同方清华同方中国软件企业十大品牌企业排名中国软件企业十大品牌企业排名 2021-12
3、-93/1061Microsoft19751986操作系统(操作系统(OA)和)和IT供应商供应商2Oracle19771989应用软件、数据库产品、开发工具、专业服务集成化供应商,应用软件、数据库产品、开发工具、专业服务集成化供应商,Oracl电子商务套件,电子商务套件, Oracle10g新一代电子商务平台新一代电子商务平台 3SAP1972德国德国1993用户用户/服务器企业管理软件及协同服务解决方案供应商(服务器企业管理软件及协同服务解决方案供应商(IBM4人)人)SAP ERP ,SAP 客户关系管理客户关系管理 ,SAP 产品生命周期管理,产品生命周期管理, SAP 供供应商关系管
4、理,应商关系管理,SAP 供应链管理供应链管理 首钢矿业首钢矿业4Compuware19731996应用生命周期管理软件供应商应用生命周期管理软件供应商控制成本、降低风险、增加收入控制成本、降低风险、增加收入中软中软5NAI19891997合合1998电子商务网络安全可用性解决方案供应商(美国网络联盟公司,反电子商务网络安全可用性解决方案供应商(美国网络联盟公司,反病病毒厂商)毒厂商)中国石化中国石化6BMC19801999企业管理解决方案供应商企业管理解决方案供应商从业务角度开发帮助企业有效管理从业务角度开发帮助企业有效管理IT,发布发布IT管理策略管理策略中国联通中国联通7BEA19952
5、003应用基础结构软件供应商(电信业软件、应用基础结构软件供应商(电信业软件、JAVA中间件)中间件)Bill oleman Ed scott Alfred Chuang(庄思浩庄思浩)东软东软8Infor20022005为努力进取公司提供商业解决方案软件供应商(中间件:企业资源为努力进取公司提供商业解决方案软件供应商(中间件:企业资源计计划、供应链计划和执行、客户与供应商关系管理、资产管理、产品划、供应链计划和执行、客户与供应商关系管理、资产管理、产品生生命周期管理、财务管理)命周期管理、财务管理)利安电光源利安电光源(香港香港)有限公有限公司、中兴汽司、中兴汽车、首钢实车、首钢实业公司业公
6、司 9Sybase19841991企业集成解决方案供应商(电信、证卷、金融、政府、交通、能源)企业集成解决方案供应商(电信、证卷、金融、政府、交通、能源)企业数据库管理系统、整合各种应用平台、企业信息流转换成经济企业数据库管理系统、整合各种应用平台、企业信息流转换成经济效效益益中国电信中国电信19661976成成中国移动中国移动中国工商中国工商银行银行 世界十大著名软件公司世界十大著名软件公司2021-12-94/1062021-12-95/1062021-12-96/106刘积仁刘积仁 2021-12-97/106张瑞敏 2021-12-98/106孙丕恕,山东人,山东大学无线电专业毕业 2
7、021-12-99/1062021-12-910/1062021-12-911/106孙力斌孙力斌 2021-12-912/106(七)(七) 经中国人民银行批准的其他相关服务业务。经中国人民银行批准的其他相关服务业务。中国银联股份有限公司中国银联股份有限公司总裁许罗德总裁许罗德 2021-12-913/1062021-12-914/1062021-12-915/1062021-12-916/106吉大正元吉大正元n吉大正元信息技术股份有限公司(以下简称吉大正元信息技术股份有限公司(以下简称“吉大正元吉大正元”)是)是中国领先的信息安全专业服务提供商,成立于中国领先的信息安全专业服务提供商,成
8、立于19991999年年2 2月,吉月,吉林大学为主要发起人,注册资本为人民币林大学为主要发起人,注册资本为人民币75007500万元,经过七年万元,经过七年发展,资产总额由发展,资产总额由16001600万元递增到万元递增到2.572.57亿元,年均增长速度为亿元,年均增长速度为215%215%。吉大正元运营中心位于北京中关村。吉大正元运营中心位于北京中关村, ,在东北、上海、深在东北、上海、深圳、武汉等圳、武汉等8 8个区域设有分公司、办事处,控股山西省数字证个区域设有分公司、办事处,控股山西省数字证书认证中心,参股国投安信数字证书认证中心。书认证中心,参股国投安信数字证书认证中心。n吉大
9、正元主要从事信息安全产品的研发、生产、销售,并提供吉大正元主要从事信息安全产品的研发、生产、销售,并提供安全咨询、安全评估和安全集成等服务,同时参与制定多项国安全咨询、安全评估和安全集成等服务,同时参与制定多项国家和行业家和行业PKI/PMIPKI/PMI标准,是国家信息安全标准技术委员会标准,是国家信息安全标准技术委员会WG4PKI/PMIWG4PKI/PMI标准组、标准组、WG3WG3密码算法和密码模块工作组的主要成密码算法和密码模块工作组的主要成员和子项目召集单位。吉大正元现已成为国内信息安全行业知员和子项目召集单位。吉大正元现已成为国内信息安全行业知名企业,是国内最大的公钥基础设施(名
10、企业,是国内最大的公钥基础设施(PKIPKI)产品供应商。根)产品供应商。根据中国电子商务协会的统计数据:目前吉大正元在据中国电子商务协会的统计数据:目前吉大正元在PKIPKI电子证电子证书认证系统领域处于领先地位,市场占有率在书认证系统领域处于领先地位,市场占有率在70%70%以上。以上。2021-12-917/1062021-12-918/106总 目 录第第1 1章章 软件工程学概述软件工程学概述第第2 2章章 可行性研究可行性研究第第3 3章章 需求分析需求分析第第4 4章章 形式化说明技术形式化说明技术第第5 5章章 总体设计总体设计第第6 6章章 详细设计详细设计第第7 7章章 实
11、现实现第第8 8章章 维护维护第第9 9章章 面向对象方法学引论面向对象方法学引论第第1010章章 面向对象分析面向对象分析 第第1111章章 面向对象设计面向对象设计第第1212章章 面向对象实现面向对象实现第第1313章章 软件项目管理软件项目管理2021-12-919/106第第1 1章章 软件工程学概述软件工程学概述1.1 1.1 软件危机软件危机 理解理解 1.2 1.2 软件工程软件工程 掌握掌握1.3 1.3 软件生命周期软件生命周期 掌握掌握1.4 1.4 软件过程软件过程 掌握掌握2021-12-920/106第第1 1章章 软件工程学概述软件工程学概述1.1 1.1 软件危
12、机软件危机 个体化的软件环境个体化的软件环境 在在6060年代中期以前,通用硬件相当普遍年代中期以前,通用硬件相当普遍 软件是为每个具体应用而专门编写的,通软件是为每个具体应用而专门编写的,通常是规模较小的程序,编写者和使用者往常是规模较小的程序,编写者和使用者往往是同往是同一个一个( (或同一组或同一组) )人人 软件设计通常是在人们头脑中进行的一个软件设计通常是在人们头脑中进行的一个隐含的过程,除了程序隐含的过程,除了程序清单清单之外,没有其之外,没有其他文档资料保存下来他文档资料保存下来2021-12-921/106n软件的作坊式生产软件的作坊式生产n从从6060年代中期到年代中期到70
13、70年代中期是计算机系统年代中期是计算机系统发展的第二代时期发展的第二代时期n随着计算机应用的日益普及,软件数量急随着计算机应用的日益普及,软件数量急剧膨胀剧膨胀n软件维护工作,以令人吃惊的比例耗费资软件维护工作,以令人吃惊的比例耗费资源。许多程序的个体化特性使得它们最终源。许多程序的个体化特性使得它们最终成为不可维护的。成为不可维护的。n19681968年北大西洋公约组织的计算机科学家年北大西洋公约组织的计算机科学家在西德召开国际会议,正式提出并使用了在西德召开国际会议,正式提出并使用了“软件工程软件工程”这个名词,一门新兴的工程这个名词,一门新兴的工程学科就此诞生了。学科就此诞生了。202
14、1-12-922/1061.1.1 1.1.1 软件危机介绍软件危机介绍1 1 软件危机:是指在计算机软件的开发和维护软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。软件危机过程中所遇到的一系列严重问题。软件危机包含下述两方面的问题:包含下述两方面的问题:n如何开发软件,满足对软件的日益增长的如何开发软件,满足对软件的日益增长的需求需求n如何维护数量不断膨胀的已有软件如何维护数量不断膨胀的已有软件 软件萧条、软件困扰软件萧条、软件困扰 2021-12-923/106软件危机的一些表现:软件危机的一些表现:(1)(1)对软件开发成本和进度的估计常常很不准确对软件开发成本和进度
15、的估计常常很不准确(2)(2)用户对用户对“已完成的已完成的”软件系统不满意的现象经常发软件系统不满意的现象经常发生。生。闭门造车闭门造车(3)(3)软件产品的质量往往靠不住。软件产品的质量往往靠不住。复查审查正确性证明复查审查正确性证明(4)(4)软件常常是不可维护的。软件常常是不可维护的。 可重用软件可重用软件(5)(5)软件通常没有适当的文档资料。软件通常没有适当的文档资料。里程碑、工具开发、里程碑、工具开发、维护维护(6)(6)软件成本在计算机系统总成本中所占的比例逐年上软件成本在计算机系统总成本中所占的比例逐年上升。升。大量人力大量人力(7)(7)软件开发生产率提高的速度,远远跟不上
16、计算机应软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。用迅速普及深入的趋势。供不应求供不应求2021-12-924/106 1.1.2 1.1.2 产生软件危机的原因产生软件危机的原因 1 1 产生软件危机的原因产生软件危机的原因 一方面与软件本身的一方面与软件本身的特点特点( (特性特性) )有关,有关,另一方面也和软件开发与维护的另一方面也和软件开发与维护的方法方法不正确不正确有关。有关。n软件特性软件特性 (1)(1)形态特性:无形、不可见的逻辑实体。形态特性:无形、不可见的逻辑实体。 (2) (2)智能特性:知识、实践经验、人类智慧的凝聚。智能特性:知识、实践经验、
17、人类智慧的凝聚。 (3) (3)开发特性:个体劳动开发特性:个体劳动- -个人行为、个人因素。个人行为、个人因素。 (4) (4)质量特性:可参照物不明确、测试技术局限性、质量特性:可参照物不明确、测试技术局限性、 无问题软件难以确定(无法定量分析无问题软件难以确定(无法定量分析系统的性能)系统的性能) (5) (5)生产特性:生产成本生产特性:生产成本= =设计开发成本设计开发成本2021-12-925/106(6)(6)管理特性:对大规模知识型工作者智力劳动的管理管理特性:对大规模知识型工作者智力劳动的管理 - -培训、指导、激励、制度推行、过程培训、指导、激励、制度推行、过程 量化与监督
18、、沟通、协调等。量化与监督、沟通、协调等。(7)(7)环境特性:依赖于计算机系统。环境特性:依赖于计算机系统。(8)(8)维护特性:与使用和时间无关,修正遗留、隐藏的维护特性:与使用和时间无关,修正遗留、隐藏的 缺陷。缺陷。(9)(9)废弃特性:它不会因为使用时间过长而被废弃特性:它不会因为使用时间过长而被“用坏用坏” 维护不划算维护不划算- -废弃或退役。废弃或退役。(10)(10)应用特性:国民经济应用特性:国民经济+ +国防国防2021-12-926/106n方法上存在的问题方法上存在的问题(1)(1)目前相当多的软件专业人员对软件开发和维护目前相当多的软件专业人员对软件开发和维护还有不
19、少糊涂观念,在实践过程中或多或少地还有不少糊涂观念,在实践过程中或多或少地采用了错误的方法和技术,这可能是使软件问采用了错误的方法和技术,这可能是使软件问题发展成软件危机的主要原因,题发展成软件危机的主要原因,忽视分析、看忽视分析、看重开发、轻视维护。重开发、轻视维护。(2)(2)对用户要求没有完整准确的认识就匆忙着手编对用户要求没有完整准确的认识就匆忙着手编写程序是许多软件开发工程失败的主要原因之写程序是许多软件开发工程失败的主要原因之一。一。(3)(3)缺乏软件开发的经验、开发数据的积累。缺乏软件开发的经验、开发数据的积累。(4)(4)软件人员与用户交流存在障碍软件人员与用户交流存在障碍-
20、 -文化差异、需求文化差异、需求工具。工具。(5)(5)软件开发过程不规范。软件开发过程不规范。(6)(6)软件规模增大,复杂性指数上升。()软件规模增大,复杂性指数上升。()xin(7)xin(7)缺少有效的软件评测手段。缺少有效的软件评测手段。2021-12-927/1062 2 生命周期生命周期 一个软件从定义、开发、使用和维护,直一个软件从定义、开发、使用和维护,直到最终被废弃到最终被废弃( (孕育、诞生、成长、成熟、衰孕育、诞生、成长、成熟、衰亡亡) ),要经历一个漫长的时期,通常把软件经,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生命周期历的这个漫长的时期称为生命周期
21、( (生存周期生存周期) )。n问题定义问题定义n可行性研究可行性研究 软件定义软件定义n需求分析需求分析n设计设计( (概要设计、详细设计概要设计、详细设计) )n编写程序(编写程序(1010一一2020) 软件开发软件开发n测试测试n维护维护(55%-70%) (55%-70%) 运行维护运行维护2021-12-928/1063 3 变动的代价变动的代价n在早期引入变动,涉及的面较少,因而代价在早期引入变动,涉及的面较少,因而代价也比较低;也比较低;n在开发的中期引入一个变动要对所有已完成在开发的中期引入一个变动要对所有已完成配置成分都做相应的修改,不仅工作量大,配置成分都做相应的修改,不
22、仅工作量大,而且逻辑上更复杂,因此付出的代价剧增;而且逻辑上更复杂,因此付出的代价剧增;n在软件在软件“已经完成已经完成”时再引入变动,则需要时再引入变动,则需要付出更高得多的代价。付出更高得多的代价。早早 中中 后后高高中中低低图图1.1 1.1 引入同一变动付出的代价随时间变化的趋势引入同一变动付出的代价随时间变化的趋势2021-12-929/106软件维护比硬件维护更复杂, 它与硬件的维护有本质差别2021-12-930/1061.1.3 1.1.3 消除软件危机的途径消除软件危机的途径n集体集体。软件开发不是某种个体劳动的神秘技巧,。软件开发不是某种个体劳动的神秘技巧,而应该是一种组织
23、良好、管理严密、各类人员协而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。同配合、共同完成的工程项目。n经验经验。必须充分吸取和借鉴人类长期以来从事各。必须充分吸取和借鉴人类长期以来从事各种工程项目所积累的行之有效的原理、概念、技种工程项目所积累的行之有效的原理、概念、技术和方法,特别要吸取几十年来人类从事计算机术和方法,特别要吸取几十年来人类从事计算机硬件研究和开发的经验教训。硬件研究和开发的经验教训。n推广推广。应该推广使用在实践中总结出来的开发软。应该推广使用在实践中总结出来的开发软件的成功技术和方法件的成功技术和方法, ,并且研究探索更有效的技术并且研究探索更有效
24、的技术和方法,尽快消除在计算机系统早期发展阶段形和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法。成的一些错误概念和做法。n工具工具。应该开发和使用更好的软件工具。正如机。应该开发和使用更好的软件工具。正如机械工具可以械工具可以“放大放大”人类的体力一样软件工具可人类的体力一样软件工具可以以“放大放大”人类的智力。人类的智力。2021-12-931/1061.2 1.2 软件工程软件工程 软件:软件:是程序、数据及相关文档的完整集合。是程序、数据及相关文档的完整集合。n程序程序是能够完成预定功能和性能的可执行的指令序列;是能够完成预定功能和性能的可执行的指令序列;n数据数据是使
25、程序能够适当地处理信息的数据结构;是使程序能够适当地处理信息的数据结构;n文档文档是开发、使用和维护程序所需要的图文资料。是开发、使用和维护程序所需要的图文资料。软件分类软件分类n系统软件系统软件:与计算机硬件系统配合,使计算机各部件、:与计算机硬件系统配合,使计算机各部件、 相关软件、数据相关软件、数据-协调和高效工作的软件。协调和高效工作的软件。n应用软件应用软件:在系统软件的支持下,在特定领域内开发,:在系统软件的支持下,在特定领域内开发, 为特定目的服务的一类软件。为特定目的服务的一类软件。n支撑软件支撑软件:工具软件:工具软件n纵向支撑:软件生命周期某阶段工具纵向支撑:软件生命周期某
26、阶段工具-分析、设计、编分析、设计、编码、测试、维护等工具码、测试、维护等工具n横向支撑:软件生命周期活动工具横向支撑:软件生命周期活动工具-项目管理工具、配项目管理工具、配置管理工具置管理工具n可复用软件可复用软件:软件的各种标准库:软件的各种标准库-厂商提供厂商提供2021-12-932/1061.2.1 1.2.1 软件工程的介绍软件工程的介绍n19681968年在第一届年在第一届NATONATO会议上给出会议上给出“软件工程软件工程就是为了就是为了经济经济地获得可靠的而且能在实际机地获得可靠的而且能在实际机器上有效地运行的软件,而建立和使用完善器上有效地运行的软件,而建立和使用完善的的
27、工程工程原理原理”。n19931993年年IEEEIEEE更全面更具体的定义:更全面更具体的定义:“软件工软件工程是:把系统的、规范的、可度量的途径程是:把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是应用于软件开发、运行和维护过程,也就是把工程应用于软件;研究中提到的把工程应用于软件;研究中提到的途途径径。”North Atlantic Treaty OrganizationInstitute for Electrical and Electronics Engineers2021-12-933/106n软件工程:是指导计算机软件开软件工程:是指导计算机软件开发和维护的一
28、门工程学科。采用发和维护的一门工程学科。采用工程的概念、原理、技术和方法工程的概念、原理、技术和方法来开发与维护软件,把经过时间来开发与维护软件,把经过时间考验而证明正确的管理技术和当考验而证明正确的管理技术和当前能够得到的最好的技术方法结前能够得到的最好的技术方法结合起来,以经济地开发出高质量合起来,以经济地开发出高质量的软件并有效的维护它。的软件并有效的维护它。2021-12-934/106 软件工程具有下述本质特性:软件工程具有下述本质特性: 1 1 软件工程关注大型程序的构造软件工程关注大型程序的构造 2 2 软件工程的中心课题是控制复杂性软件工程的中心课题是控制复杂性 3 3 软件经
29、常变化软件经常变化 4 4 开发软件的效率非常重要开发软件的效率非常重要 5 5 和谐地合作是开发软件的关键和谐地合作是开发软件的关键 6 6 软件必须有效地支持它的用户软件必须有效地支持它的用户 7 7 在软件工程领域中是由具有一种文化背景在软件工程领域中是由具有一种文化背景 的人替具有另一种文化背景的人创造产品的人替具有另一种文化背景的人创造产品2021-12-935/1061.2.2 1.2.2 软件工程的基本原理软件工程的基本原理 著名的软件工程专家著名的软件工程专家BWBoehm于于1983年在一篇论文中提出了软件工程的七条年在一篇论文中提出了软件工程的七条基本原理。基本原理。1 1
30、 用分阶段的生命周期计划严格管理用分阶段的生命周期计划严格管理 生命周期划分若干阶段、制定可行的计划、按生命周期划分若干阶段、制定可行的计划、按计划开发、维护、管理计划开发、维护、管理2 2 坚持进行阶段评审坚持进行阶段评审n大部分错误是在编码之前造成的,据大部分错误是在编码之前造成的,据BoehmBoehm等人等人的统计,设计错误占软件错误的的统计,设计错误占软件错误的6363,编码错,编码错误仅占误仅占3737;n错误发现与改正得越晚所需付出的代价也越高。错误发现与改正得越晚所需付出的代价也越高。2021-12-936/1063 3 实行严格的产品控制实行严格的产品控制n改变需求时,为了保
31、持软件各个配置成分的改变需求时,为了保持软件各个配置成分的一致性,必须实行严格的产品控制,其中主一致性,必须实行严格的产品控制,其中主要是实行基准配置管理。要是实行基准配置管理。n基准配置基准配置又称为基线配置,它们是经过阶段又称为基线配置,它们是经过阶段评审后的软件配置成分评审后的软件配置成分( (各个阶段产生的文各个阶段产生的文档或程序代码档或程序代码) )。n基准配置管理基准配置管理也称为变动控制,一切有关修也称为变动控制,一切有关修改软件的建议,待别是涉及到对基准配置的改软件的建议,待别是涉及到对基准配置的修改建议,都必须按照严格的规程进行评审,修改建议,都必须按照严格的规程进行评审,
32、获得批准以后才能实施修改。获得批准以后才能实施修改。2021-12-937/1064 4 采用现代程序设计技术采用现代程序设计技术 人们一直把主要精力用于研究各种新人们一直把主要精力用于研究各种新的程序设计技术。的程序设计技术。 SA-SD-SPSA-SD-SP技术技术,OOA-OOD-OOP,OOA-OOD-OOP技术。技术。2021-12-938/1065 5 结果应能清楚地审查结果应能清楚地审查 软件产品是看不见摸不着的逻辑产品。软件产品是看不见摸不着的逻辑产品。软件开发人员软件开发人员( (或开发小组或开发小组) )的工作进展情况可的工作进展情况可见性差,难以准确度量,使得软件产品的开
33、发见性差,难以准确度量,使得软件产品的开发过程比一般产品的开发过程更难于评价和管理。过程比一般产品的开发过程更难于评价和管理。为了提高软件开发过程的可见性,更好地进行为了提高软件开发过程的可见性,更好地进行管理,应该根据软件开发项目的总目标及完成管理,应该根据软件开发项目的总目标及完成期限,规定开发组织的期限,规定开发组织的责任和产品标准责任和产品标准,从而,从而使得所得到的结果能够清楚地审查。使得所得到的结果能够清楚地审查。2021-12-939/106 6 6 开发小组的成员应该少而精开发小组的成员应该少而精 开发小组人员的开发小组人员的素质和数量素质和数量是影响软件产是影响软件产品质量和
34、开发效率的重要因素。素质高的人员品质量和开发效率的重要因素。素质高的人员的开发效率比素质低的人员的开发效率可能高的开发效率比素质低的人员的开发效率可能高几倍至几十倍,而且素质高的人员所开发的软几倍至几十倍,而且素质高的人员所开发的软件中的错误明显少于素质低的人员所开发的软件中的错误明显少于素质低的人员所开发的软件中的错误。此外,随着开发小组人员数目的件中的错误。此外,随着开发小组人员数目的增加,交流情况讨论问题而造成的通信开销也增加,交流情况讨论问题而造成的通信开销也急剧增加。急剧增加。N(N-1)/2N(N-1)/2,可见随着人数,可见随着人数N N的增大,的增大,通信开销将急剧增加。因此,
35、组成通信开销将急剧增加。因此,组成少而精少而精的开的开发小组是软件工程的一条基本原理,合理发小组是软件工程的一条基本原理,合理5-85-8人。人。2021-12-940/106 7 7 承认不断改进软件工程实践的必要性承认不断改进软件工程实践的必要性 BoehmBoehm提出应把承认不断改进软件提出应把承认不断改进软件工程实践的必要性作为软件工程的第工程实践的必要性作为软件工程的第七条基本原理。按照这条原理,不仅七条基本原理。按照这条原理,不仅要积极主动地采纳新的要积极主动地采纳新的软件技术软件技术,而,而且要注意不断且要注意不断总结经验,总结经验,积极收集各积极收集各种数据。种数据。2021
36、-12-941/1061.2.3 1.2.3 软件工程方法学软件工程方法学软件工程:技术软件工程:技术+ +管理管理技术技术:软件工程方法学包括:软件工程方法学包括3 3个要素:方法、工具和过程。个要素:方法、工具和过程。n方法:完成软件开发各项任务的方法:完成软件开发各项任务的技术技术 n工具:运用方法提供的自动的或半自动的软件工程支工具:运用方法提供的自动的或半自动的软件工程支撑撑环境环境n过程:为了获得高质量的软件所要完成的一系列任务过程:为了获得高质量的软件所要完成的一系列任务框架,规定了完成各项任务的工作框架,规定了完成各项任务的工作步骤步骤n目前使用得最广泛的软件工程方法学分别是目
37、前使用得最广泛的软件工程方法学分别是传统方法传统方法学学和和面向对象方法学面向对象方法学管理管理:通过计划、组织、控制等一系列活动,合理的配置和使:通过计划、组织、控制等一系列活动,合理的配置和使用各种资源,以达到既定的目标和过程。用各种资源,以达到既定的目标和过程。 方法学方法学: :软件生命周期全过程使用的一整套技术和方法的集合。软件生命周期全过程使用的一整套技术和方法的集合。 2021-12-942/1061 1 传统方法学传统方法学( (称生命周期方法学或结构化范型称生命周期方法学或结构化范型) )n从从时间时间角度对软件开发和维护的复杂问题进行分解,角度对软件开发和维护的复杂问题进行
38、分解,把软件生命周期依次划分为若干个阶段,每个阶段有把软件生命周期依次划分为若干个阶段,每个阶段有相对独立的任务,然后逐步完成每个阶段的任务。相对独立的任务,然后逐步完成每个阶段的任务。n对于任何两个对于任何两个相邻相邻的阶段而言,前一阶段的结束标准的阶段而言,前一阶段的结束标准就是后一阶段的开始标准。在每一个阶段结束之前都就是后一阶段的开始标准。在每一个阶段结束之前都必须进行正式严格的技术审查和管理复审,通过之后必须进行正式严格的技术审查和管理复审,通过之后这个阶段才算结束;如果检查不过,则必须进行必要这个阶段才算结束;如果检查不过,则必须进行必要的返工,并且返工后还要再经过审查。的返工,并
39、且返工后还要再经过审查。n审查的一条主要标准就是每个阶段都应该交出审查的一条主要标准就是每个阶段都应该交出“最新最新式的式的” 高质量的高质量的文档文档资料,从而保证在软件开发工资料,从而保证在软件开发工程结束时有一个完整准确的程结束时有一个完整准确的软件配置软件配置交付使用。交付使用。n这种方法历史悠久,为广大软件工程师所熟悉。这种方法历史悠久,为广大软件工程师所熟悉。n自顶向下顺序的完成软件开发各阶段的任务。自顶向下顺序的完成软件开发各阶段的任务。2021-12-943/1062 2 面向对象方法学面向对象方法学n是一种以是一种以数据数据为主线,把数据和对数据的操作紧密为主线,把数据和对数
40、据的操作紧密地结合起来的方法,把地结合起来的方法,把对象对象作为融合了数据及在数作为融合了数据及在数据上的操作行为的统一的软件构件据上的操作行为的统一的软件构件n把所有对象都划分成把所有对象都划分成类类n按照父类与子类的按照父类与子类的关系关系,把若干个相关类组成一个,把若干个相关类组成一个层次结构的系统层次结构的系统n对象彼此间仅能通过发送对象彼此间仅能通过发送消息消息互相联系互相联系 面向对象方法学的出发点和基本原则是尽量模面向对象方法学的出发点和基本原则是尽量模拟人类习惯的思维方式,使开发软件的方法与过程拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过
41、程,尽可能接近人类认识世界解决问题的方法与过程,从而使描述问题的问题空间与实现解法的解空间在从而使描述问题的问题空间与实现解法的解空间在结构上尽可能一致。结构上尽可能一致。n主动、多次、反复迭代的过程主动、多次、反复迭代的过程2021-12-944/1061.3 1.3 软件生命周期软件生命周期n一般说来,软件生命周期由软件定义、软件开发一般说来,软件生命周期由软件定义、软件开发和软件运行维护三个时期组成,每个时期又进一和软件运行维护三个时期组成,每个时期又进一步划分成若干个阶段。步划分成若干个阶段。n软件定义时期软件定义时期n问题定义问题定义n可行性研究可行性研究n需求分析需求分析n软件开发
42、时期软件开发时期n总体设计总体设计n详细设计详细设计 系统设计系统设计n编码和单元测试编码和单元测试n综合测试综合测试 系统实现系统实现n软件运行维护时期(运维)软件运行维护时期(运维)2021-12-945/1061 1 问题定义:要解决的问题是什么问题定义:要解决的问题是什么2 2 可行性研究:确定问题有可行得通的解决办法吗可行性研究:确定问题有可行得通的解决办法吗? ?3 3 需求分析:目标系统必须具备哪些功能。用正式文需求分析:目标系统必须具备哪些功能。用正式文档准确地记录对目标系统的需求,产生规格说明书。档准确地记录对目标系统的需求,产生规格说明书。4 4 总体设计总体设计 概括地说
43、,应该怎样实现目标系统,应设计出低成概括地说,应该怎样实现目标系统,应设计出低成本、中等成本、高成本本、中等成本、高成本3 3种方案,推荐最佳方案。种方案,推荐最佳方案。2021-12-946/1065 5 详细设计详细设计 设计每个模块,确定实现模块功能所需要的算法和设计每个模块,确定实现模块功能所需要的算法和数据结构。数据结构。6 6 编码和单元测试编码和单元测试 写出正确的容易理解、容易维护的程序模块。写出正确的容易理解、容易维护的程序模块。7 7 综合测试综合测试 通过各种类型的测试使软件达到预定的要求:通过各种类型的测试使软件达到预定的要求:n集成测试:根据设计的软件结构,把经过单元
44、集成测试:根据设计的软件结构,把经过单元检验的模块按某种选定的策略结合起来,在装检验的模块按某种选定的策略结合起来,在装配过程中对程序进行必要的测试。配过程中对程序进行必要的测试。n验收测试:按照规格说明书的规定,由用户对验收测试:按照规格说明书的规定,由用户对目标系统进行验收。目标系统进行验收。2021-12-947/1068 8 软件维护,通常有四类维护活动:软件维护,通常有四类维护活动:n改正性维护:诊断和改正在使用过程中发改正性维护:诊断和改正在使用过程中发 现的软件错误现的软件错误n适应性维护:修改软件以适应环境的变化适应性维护:修改软件以适应环境的变化n完善性维护:根据用户的要求改
45、进或扩充完善性维护:根据用户的要求改进或扩充 软件使它更完善软件使它更完善n预防性维护:修改软件为将来的维护活动预防性维护:修改软件为将来的维护活动 预先做准备预先做准备2021-12-948/1062021-12-949/106n经典软件过程模型经典软件过程模型n瀑布模型瀑布模型nV模型模型n快速原型模型快速原型模型n阶段模型(增量模型与迭代模型阶段模型(增量模型与迭代模型)n螺旋螺旋模型模型n喷泉模型喷泉模型n现代软件过程模型现代软件过程模型nRational统一过程统一过程n敏捷过程与极限编程敏捷过程与极限编程n微软微软过程过程1.4 1.4 软件过程软件过程2021-12-950/10
46、6软件过程:软件过程:是为了获得高质量软件所需要完成的是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工一系列任务的框架,它规定了完成各项任务的工作步骤作步骤。过程的特性过程的特性n过程使用一定的资源,受一定的限制,并生成一定过程使用一定的资源,受一定的限制,并生成一定的中间及最终产品;的中间及最终产品;n过程中所包含的活动事先都规定好了;过程中所包含的活动事先都规定好了;n过程中每个活动的开始、结束有明确的规定;过程中每个活动的开始、结束有明确的规定;n每项活动都有相应的指导原则,用以明确其目标;每项活动都有相应的指导原则,用以明确其目标;n各活动之间以某种顺序组织;
47、各活动之间以某种顺序组织;n过程可能包括若干相互关联的子过程;过程可能包括若干相互关联的子过程;n过程中的活动、资源以及产品都可能受到约束。过程中的活动、资源以及产品都可能受到约束。1.4 1.4 软件过程软件过程1.4.1 1.4.1 瀑布模型瀑布模型1 1 特点特点(1)(1)阶段间具有顺序性和依赖性阶段间具有顺序性和依赖性 定义定义过程过程开发开发过程过程维护维护过程过程1 1问题的定义问题的定义2 2可行性研究可行性研究3 3需求分析需求分析4 4总体设计总体设计5 5详细设计详细设计6 6编码编码7 7测试测试8 8维护维护传统的瀑布模型传统的瀑布模型必须等前一阶段的工必须等前一阶段
48、的工作完成之后,才能开作完成之后,才能开始后一阶段的工作。始后一阶段的工作。前一阶段的输出文档前一阶段的输出文档就是后一阶段的输入就是后一阶段的输入文档。文档。2021-12-951/106(2)(2)推迟实现的观点推迟实现的观点n对于规模较大的软件项目来说,编码开始得越早,对于规模较大的软件项目来说,编码开始得越早,最终完成开发工作所需要的时间反而越长。最终完成开发工作所需要的时间反而越长。n清楚地区分逻辑设计与物理设计,尽可能推迟程序清楚地区分逻辑设计与物理设计,尽可能推迟程序的物理实现,是瀑布模型开发软件的一条重要的指的物理实现,是瀑布模型开发软件的一条重要的指导思想(即设计之前的规约导
49、思想(即设计之前的规约, ,编码之前的设计)。编码之前的设计)。传统的瀑布模型传统的瀑布模型定义定义过程过程开发开发过程过程维护过程维护过程1 1问题的定义问题的定义2 2可行性研究可行性研究3 3需求分析需求分析4 4总体设计总体设计5 5详细设计详细设计6 6编码编码7 7测试测试8 8维护维护2021-12-952/106(3)(3)质量保证的观点质量保证的观点 软件工程的基本目标是优质、高产。在瀑软件工程的基本目标是优质、高产。在瀑布模型的每个阶段都应坚持两个重要做法:布模型的每个阶段都应坚持两个重要做法:n第一,每个阶段都必须完成规定的文档。完整、第一,每个阶段都必须完成规定的文档。
50、完整、准确的合格文档不仅是软件开发时期各类人员准确的合格文档不仅是软件开发时期各类人员之间相互之间相互通信通信的媒介,也是运行时期对软件进的媒介,也是运行时期对软件进行行维护维护的重要依据。的重要依据。n第二,每个阶段结束前都要对所完成的文档进第二,每个阶段结束前都要对所完成的文档进行行评审评审,以便尽早发现问题,改正错误。,以便尽早发现问题,改正错误。 瀑布模型的成功在很大程度上是由于它基瀑布模型的成功在很大程度上是由于它基本上是一种本上是一种文档驱动文档驱动的模型。瀑布模型的本质的模型。瀑布模型的本质是是“一次通过一次通过”。2021-12-953/106实际的瀑布模型实际的瀑布模型202
51、1-12-954/1062 2 优点与缺点优点与缺点优点:优点:n强迫开发人员采用规范的方法;强迫开发人员采用规范的方法;n严格规定了每个阶段必须提交的文档;严格规定了每个阶段必须提交的文档;n阶段产品必须经过质量保证小组的验证。阶段产品必须经过质量保证小组的验证。缺点:缺点:n客户必须能够完整、正确和清晰地表达他们的需求;开发人客户必须能够完整、正确和清晰地表达他们的需求;开发人员一开始就必须理解需求。员一开始就必须理解需求。n缺乏灵活性。一旦软件需求存在偏差,就会导致开发出的软缺乏灵活性。一旦软件需求存在偏差,就会导致开发出的软件产品不能满足用户的实际要求。件产品不能满足用户的实际要求。n
52、在一个项目的早期阶段,过分地强调了基线和里程碑处的文在一个项目的早期阶段,过分地强调了基线和里程碑处的文档档, ,可能要花费更多的时间,建立了一些用处不大的文档。可能要花费更多的时间,建立了一些用处不大的文档。n直到项目结束之前,都不能演示系统的能力,增加了项目的直到项目结束之前,都不能演示系统的能力,增加了项目的风险。风险。3 3 瀑布模型适用的情况瀑布模型适用的情况n只适用于项目开始时需求就已确定的情况。需求变化小只适用于项目开始时需求就已确定的情况。需求变化小2021-12-955/1062021-12-956/106瀑布模型的历史功绩瀑布模型的历史功绩n在支持开发结构化软件、控制软件开
53、发复在支持开发结构化软件、控制软件开发复杂度、促进软件开发工程化方面起了显著杂度、促进软件开发工程化方面起了显著作用;作用;n它为软件开发和维护提供了一种当时较为它为软件开发和维护提供了一种当时较为有效的管理模式,根据这一模式制定开发有效的管理模式,根据这一模式制定开发计划、进行成本预算、组织开发人员,以计划、进行成本预算、组织开发人员,以阶段评审和文档控制为手段,有效地对软阶段评审和文档控制为手段,有效地对软件开发过程进行指导,从而对软件质量有件开发过程进行指导,从而对软件质量有一定程度的保证;一定程度的保证;n我国曾在我国曾在19881988年根据该模型制定并公布了年根据该模型制定并公布了
54、“软件开发规范软件开发规范”国家标准国家标准。 1.4.2 V 1.4.2 V模型模型 V V模型是瀑布模型的变体,它反映了模型是瀑布模型的变体,它反映了测测试试活动与活动与分析和设计分析和设计的关系(德国国防部的关系(德国国防部19921992)。编码形成了)。编码形成了V V的顶点,分析和设计的顶点,分析和设计在左边,测试和维护在右边。在左边,测试和维护在右边。 2021-12-957/106n 单元和集成测试针对的是程序的正确性单元和集成测试针对的是程序的正确性n系统测试验证系统设计系统测试验证系统设计n由顾客完成的验收测试把测试步骤与需求说明的由顾客完成的验收测试把测试步骤与需求说明的
55、每一个元素联系起来,以此来确认需求被正确地每一个元素联系起来,以此来确认需求被正确地实现。实现。2021-12-958/106 该模型中该模型中V V的左边和右边的边线意味着,如的左边和右边的边线意味着,如果在验证和确认的过程中发现了问题,那么继果在验证和确认的过程中发现了问题,那么继续执行右边的测试步骤之前,重新执行续执行右边的测试步骤之前,重新执行V V 的左的左边以修正和改进需求、设计和编码。边以修正和改进需求、设计和编码。V V模型使模型使得某些迭代和重复工作更加清晰,而这些工作得某些迭代和重复工作更加清晰,而这些工作在瀑布模型中都是隐含的。在瀑布模型中都是隐含的。 瀑布模型的中心通常
56、是文档和工件瀑布模型的中心通常是文档和工件,而而V V模模型的中心则是活动和正确性。型的中心则是活动和正确性。2021-12-959/106n验证(验证(VerificationVerification)目标是确定系统中各项功能可以正常工目标是确定系统中各项功能可以正常工作,实质上是检查实现的质量如何。作,实质上是检查实现的质量如何。n确认(确认(ValidationValidation)目标是确定系统实现了全部的需求,确目标是确定系统实现了全部的需求,确保开发方建造的是正确的、用户需要的保开发方建造的是正确的、用户需要的产品。产品。2021-12-960/1062021-12-961/106
57、V V模型的改良之处与存在的问题模型的改良之处与存在的问题n本质是把瀑布模型中一些隐含的迭代过程明本质是把瀑布模型中一些隐含的迭代过程明确出来,使开发活动和验证活动的相关性更确出来,使开发活动和验证活动的相关性更加明显;加明显;nV V模型使抽象等级的概念也更明显:所有从需模型使抽象等级的概念也更明显:所有从需求到实现部分的活动关注的是建立更多的系求到实现部分的活动关注的是建立更多的系统详细表述,而所有从实现到交付运行的活统详细表述,而所有从实现到交付运行的活动关注的是对系统的验证和确认。动关注的是对系统的验证和确认。n和瀑布模型一样,都是对软件开发过程过份和瀑布模型一样,都是对软件开发过程过
58、份简单、理想化的抽象,对需求变化的适应性简单、理想化的抽象,对需求变化的适应性差。差。1.4.3 1.4.3 快速原型模型快速原型模型1 1 快速原型是快速建立起来的可以在计算机上运行的程序快速原型是快速建立起来的可以在计算机上运行的程序, ,它所能完成的功能往往是最终产品功能的一个子集。它所能完成的功能往往是最终产品功能的一个子集。2 2 原型在开发中的作用:原型在开发中的作用: (1)(1)获得用户的真正获得用户的真正需求需求; (2)(2)可用于为一个项目或项可用于为一个项目或项 目中某些部分,确定目中某些部分,确定技术、技术、 成本和进度的成本和进度的可能性。可能性。3 3 快速原型模
59、型中各主要部分快速原型模型中各主要部分 (1)(1)原型快速分析原型快速分析: :指在分析者和用户的紧密配合下指在分析者和用户的紧密配合下, ,快速快速 确定软件系统的基本要求确定软件系统的基本要求. . (2) (2)原型构造原型构造: :在原型分析的基础上在原型分析的基础上, ,根据基本需求规格说根据基本需求规格说 明明, ,忽略细节忽略细节, ,只考虑主要特性,快速构造一个可运行只考虑主要特性,快速构造一个可运行 的系统。的系统。2021-12-962/106(3)(3)原型运行与评价:软件开发人员与用户频繁原型运行与评价:软件开发人员与用户频繁通信、发现问题、消除误解的重要阶段,目通信
60、、发现问题、消除误解的重要阶段,目的是发现新需求并修改原有需求。的是发现新需求并修改原有需求。(4)(4)原型修正:对原型系统,要根据修改意见进原型修正:对原型系统,要根据修改意见进行修正。行修正。(5)(5)判定原型完成:如果原型经过修正或改进,判定原型完成:如果原型经过修正或改进,获得了参与者的一致认可,那么原型开发的获得了参与者的一致认可,那么原型开发的迭代过程可以结束迭代过程可以结束2021-12-963/1062021-12-964/106快速原型模型快速原型模型设计设计验证验证编码编码验证验证综合测试综合测试维护维护快速原型快速原型验证验证规格说明规格说明验证验证变化的需求变化的需
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026燃气宣传面试题及答案
- 2026森林四库面试题及答案
- 2026少先队大队面试题及答案
- 2026石油银行面试题目及答案
- 文县离婚协议书
- 老公赠与镯子合同范本
- 小型水库转让协议书
- 领养收养寄养协议书
- 老人由子女抚养协议书
- 2026文旅模拟面试题及答案
- 2026云南昆明滇池国家旅游度假区政务服务局政务服务中心聘综合窗口辅助性人员1人考试备考题库及答案详解
- 摩根大通-第一性原理:AI电力基础设施:追踪电力需求-First Principles-AI Power Infrastructure:Following the Power-20260625
- 【中考真卷】台湾省2026年初中物理学业水平考试(含答案)
- 修订一单一库质量手册和程序文件参考文件
- 2026云南昆明医科大学第二附属医院面向社会招聘非事业编制人员29人备考题库带答案详解
- 焊工理论考试题及答案2026年
- 清华大学2026年强基计划招生笔试模拟试题及答案解析
- 空调器装配工班组考核水平考核试卷含答案
- 全省煤矿安全风险隐患专项整治行动必查事项清单
- 机械加工企业安全生产风险分级管控清单
- 2026年农商行面试题及答案
评论
0/150
提交评论