第1章 软件工程学概述.ppt

上传人:qwe****56 文档编号:91032490 上传时间:2023-05-21 格式:PPT 页数:54 大小:1.09MB
返回 下载 相关 举报
第1章 软件工程学概述.ppt_第1页
第1页 / 共54页
第1章 软件工程学概述.ppt_第2页
第2页 / 共54页
点击查看更多>>
资源描述

《第1章 软件工程学概述.ppt》由会员分享,可在线阅读,更多相关《第1章 软件工程学概述.ppt(54页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、软件工程导论 天津市大学软件园天津市大学软件园 本章学习目标:本章学习目标:了解软件危机的发生原因和典型表现 识记软件工程的概念和基本原理 识记软件生命周期和软件过程的概念 识记常用的生命周期模型第1章 软件工程学概述第1章 软件工程学概述 1.1 软件危机 1.2 软件工程 1.3 软件生命周期第1章 软件工程学概述 1.1 软件危机 1.2 软件工程 1.3 软件生命周期1.1.1 软件的定义 软件的经典定义:软件软件=“完成特定功能的程序完成特定功能的程序+数据结构数据结构+文档文档”软件的特征:1、软件是开发的,而不是制造的;2、软件不磨损,但退化;3、自定义。1.1.1 软件的定义

2、软件发展中的相关问题:硬件的发展超过软件;现有软件与用户的要求矛盾;软件失败导致“灾难性后果”;需要高质量、高可靠性的软件;设计的问题使升级和维护十分困难。1.1.1 软件危机的定义 定义定义 “在计算机软件的开发和维护过程在计算机软件的开发和维护过程中所遇到的一系列严重的问题。中所遇到的一系列严重的问题。”1.1.2 软件危机的表现(1)对软件开发成本和进度的估计常常很不准确。)对软件开发成本和进度的估计常常很不准确。实际成本往往大大超过估计成本,或开发进度比计划推迟几个月或一年以上。这种现象极大地影响了软件开发组织的信誉,也会引起用户的强烈不满。(2)软件产品质量较差,可靠性低。)软件产品

3、质量较差,可靠性低。软件开发过程中不能坚持严格的审查、复审和测试,使得软件可靠性差、质量问题多。1.1.2 软件危机的表现(3)用户对开发出来的软件产品不满意。)用户对开发出来的软件产品不满意。开发人员与用户之间的交流不充分,仅对用户需求有了一个模糊的认识就匆忙开始写程序。这样的结果就是用户对于所谓已经完成的软件很不满意。(4)软件常常是不可维护的。)软件常常是不可维护的。在实际项目中,很多程序的错误往往难以修改,而且不能适应软硬件环境的变化,也无法添加用户需要的一些新功能。1.1.2 软件危机的表现(5)软件产品缺少应有的文档资料。)软件产品缺少应有的文档资料。软件=程序+数据+文档。开发人

4、员对文档认识不足,不能保证在开发过程中文档的完整性和准确性。缺少文档资料会造成软件开发、管理、审查、用户交流、软件维护等方面的诸多问题。(6)软件产品的供不应求。软件产品的供不应求。软件开发的生产率远远低于计算机硬件发展速度和用户的需求,造成了软件产品的供不应求。1.1.3 产生软件危机的原因客观原因:客观原因:软件与硬件产品不同,软件是“开发的”而非“制造的”。其开发过程难以管理和控制,产品质量也不好把握。软件没有“磨损”,但是它会不断“退化”。软件系统无法适应不断变化的环境和功能需求。软件都规模庞大,而程序的复杂性是随其规模的扩大呈指数增加。主观原因:主观原因:对用户要求没有完整和准确的认

5、识就匆忙编写程序。对软件的开发过程的认识不准确。生命周期的每个阶段都有特定的工作和特点,都是不可逾越的。只有上一阶段工作完成,才能开始下一阶段的工作。对软件质量的重视不够是造成软件开发成本激增的主要原因。注意软件开发过程中错误的“放大效应”。轻视软件维护将是一个重大的错误。软件开发时期各阶段的关键目标都是提高软件的可维护性。1.1.3 产生软件危机的原因第1章 软件工程学概述 1.1 软件危机软件危机 1.2 软件工程软件工程 1.3 软件生命周期 1.4 软件过程1.2 软件工程 为了更有效地开发与维护软件,软件工作者在20世纪60年代后期开始认真研究消除软件危机的途径,从而逐渐形成了一门新

6、兴的工程学科计算机软件工程学计算机软件工程学(简称为软件工程软件工程)。1.2.1 软件工程的概念 定义指导软件开发与维护的工程科学指导软件开发与维护的工程科学 采用工程的概念、原理、技术和方法来开发和维护软件,综合运用正确的管理技术和最好的技术方法,以经济地开发出高质量的软件并有效维护它。1.2.1 软件工程的概念 IEEE的定义 软件工程是把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;对这些途径加以研究。1.2.1 软件工程的概念 诸多软件工程的定义所揭示的软件工程软件工程的本质的本质认识是一致的:软件工程一般更关注于大型软件系统的开发;其中心任务是

7、控制整个软件系统的复杂性,提高软件开发的效率,加强人员和技术的管理,更好地满足用户的需要。1.2.2 软件工程的基本原理(1)用分阶段的生命周期计划严格管理)用分阶段的生命周期计划严格管理 应该将软件开发和维护的漫长生命周期划分成若干个阶段,并针对每个阶段制定切实可行的计划,然后严 格按照计划对软件的开发和维护工作进行管理。(2)坚持进行阶段评审)坚持进行阶段评审 错误发现的越早,改正错误所付出的代价就越小。因此,开发人员应该坚持在每个阶段都进行严格的评 审,以便更早地发现和改正错误。1.2.2 软件工程的基本原理(3)实行严格的产品控制)实行严格的产品控制 在软件开发的过程中不应随意修改需求

8、,当改变需 求时,必须实行严格的产品控制以保持软件各个配置成 分的一致性。(4)采用现代程序设计技术)采用现代程序设计技术 采用先进的技术不仅可以提高软件开发和维护的效率,而且还能有效地提高软件产品的质量。1.2.2 软件工程的基本原理(5)结果可以清楚地审查结果可以清楚地审查 应规定每个开发阶段的产品标准和文档要求,使得到的结果可以清楚地审查。(6)开发小组成员少而精)开发小组成员少而精 软件开发小组人员要求素质高,而人数不宜过多。随着人数n的增加,通信路径也急剧增加。1.2.2 软件工程的基本原理(7)承认不断改进软件工程实践的必要性)承认不断改进软件工程实践的必要性 软件开发和维护的过程

9、也需要随之改进。要主动采用最新的软件技术,而且还要不断总结经验和教训、收集历史数据帮助开发人员改进软件工程实践。1.2.3 软件工程方法学 软件生命周期全过程中使用的一整套技术方法的集合称为方法学。软件工程方法学主要包含3个要素:方法、工具方法、工具和过程和过程。目前使用最为广泛的软件工程方法学是传统方法传统方法学学和面向对象方法学面向对象方法学。1.2.3 软件工程方法学1.传统方法学传统方法学 -也称为生命周期方法学或结构化范型。-它采用结构化技术(包括结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务。-这种方法学将软件生命周期划分为若干个阶段,然后顺序完成各个阶段的任务。每个

10、阶段依赖上一个阶段产生的结果,并将上一阶段工作进一步具体化。1.2.3 软件工程方法学2.面向对象方法学面向对象方法学 -以数据为主线,将数据和其上的操作紧密结合起来。面向对象方法学的四要素:类+对象+继承+消息传递。-面向对象的方法学是尽量模拟人类习惯的思维方式,使软件开发过程更接近人类认知模式,做到问题空间与解空间在结构上一致。-运用面向对象方法学开发出来的软件产品一般是由很多较小的独立对象组成,从而降低了软件产品的复杂性,增强了可理解性,使得开发和维护更为简单有效。第1章 软件工程学概述 1.1 软件危机软件危机 1.2 软件工程软件工程 1.3 软件生命周期软件生命周期1.3.1 软件

11、生命周期的概念 定义 一个软件从定义、开发、使用和维护,直至最终被废弃,要经历的漫长的时期称为软件生命周期。1.3.1 软件生命周期的概念 构成3个时期:软件定义、软件开发和运行维护 各时期任务:软件定义时期:确定软件开发的总目标和工程的可行性;导出实现策略和系统必须完成的功能;进行成本效益的估算;制定开发计划等。软件开发时期:具体设计和实现前一个时期定义的软件。维护时期:使软件持久地满足用户的需要。1.3.1 软件生命周期的概念 构成3个时期:软件定义软件定义、软件开发软件开发和和运行维护运行维护8个阶段:问题定义问题定义 可行性研究可行性研究 需求分析需求分析 总体设计总体设计 详细设计详

12、细设计 编码和单元编码和单元 测试测试 综合测试综合测试 软件维护软件维护阶段1:问题定义“需要需要解决的问题是什么?”确定问题的性质确定问题的性质 软件目标和规模软件目标和规模 形成书面报告。形成书面报告。1.3.2 各阶段的基本任务阶段2:可行性研究“确定软件系统是否值得去解”高层次的系统分析和设计高层次的系统分析和设计 估算系统的成本和效益估算系统的成本和效益 可行性研究报告可行性研究报告1.3.2 各阶段的基本任务阶段3:需求分析 “解决这些问题需要系统做什么?”与用户的交流与用户的交流 生成系统的逻辑模型生成系统的逻辑模型 软件需求规格说明书软件需求规格说明书1.3.2 各阶段的基本

13、任务阶段4:总体设计(概要设计)“应该怎样实现目标系统?”设计出实现目标系统的方案设计出实现目标系统的方案 设计软件结构,确定模块及之间关系设计软件结构,确定模块及之间关系 概要设计说明书概要设计说明书1.3.2 各阶段的基本任务阶段5:详细设计(模块设计)“如何具体地实现这个系统?”详细的设计每个模块的算法和数据结构详细的设计每个模块的算法和数据结构 1.3.2 各阶段的基本任务阶段6:编码和单元测试“写代码,测试每个模块!”选取程序设计语言选取程序设计语言 写出写出容易理解和维护的程序模块容易理解和维护的程序模块 对每一个模块进行严格的测试对每一个模块进行严格的测试1.3.2 各阶段的基本

14、任务阶段7:综合测试“通过各类测试和调试来完善软件”集成测试集成测试 +验收测试验收测试(用户参加用户参加)保存测试计划、测试方案和测试结果保存测试计划、测试方案和测试结果1.3.2 各阶段的基本任务阶段8:软件维护“通过各种必须的维护活动使系统持久地满足用户的需要!”改正性维护改正性维护 适应性维护适应性维护 完善性维护完善性维护 预防性维护预防性维护1.3.2 各阶段的基本任务1.3.3软件生命周期的模型 定义 在软件开发过程中,人们通常使用生命周期模型来简要地描述软件过程。生命周期模型规定了生命周期各个阶段和它们执行的顺序,因此也被称为过程模型。1.瀑布模型线性模型之一 在20世纪80年

15、代之前,瀑布模型一直是惟一被广泛采用的生命周期模型。传统软件工程方法 学的软件过程,基本上可以用瀑布模型来描述。瀑布模型 1.瀑布模型线性模型之一瀑布模型的特点:(1 1)各阶段之间有依赖性和严格的顺序性。)各阶段之间有依赖性和严格的顺序性。(2 2)推迟实现。)推迟实现。典型特点典型特点(3 3)严格的阶段质保。)严格的阶段质保。(4 4)文档文档驱动驱动。瀑布模型的问题:(1 1)实际的项目很少顺序严格)实际的项目很少顺序严格(2 2)用户往往难以给出具体、正确、完整的要求)用户往往难以给出具体、正确、完整的要求(3 3)开发人员)开发人员“阻塞状态阻塞状态”严重严重1.瀑布模型线性模型之

16、一 2.原型模型 原型模型是一个快速开发的过程,首先和用户沟通进行主要功能的需求分析和快速设计,然后建立一个原型,再请用户进行评价和反馈。开发人员根据用户的反馈进一步细化需求,改进原型系统的设计,如此反复直至用户满意。快速需求分析(用户沟通)构建/修改模型(快速设计)用户使用评价(运行测试)原型模型 2.原型模型快速原型模型的特点:快速原型模型的特点:(1)(1)出品速度快。出品速度快。(2)(2)逐步求精。逐步求精。(3)(3)开发阶段迭代。开发阶段迭代。快速原型模型的问题:快速原型模型的问题:(1)(1)实现过程中不应有的折衷方案。实现过程中不应有的折衷方案。(2)(2)开发者急于完成原型

17、而忽略了整体设计和可维护性;开发者急于完成原型而忽略了整体设计和可维护性;(3)(3)用户的参与过多也造成了软件开发管理的混乱。用户的参与过多也造成了软件开发管理的混乱。2.原型模型 增量模型也称为渐增模型。使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。分析设计编码测试交付增量交付增量1分析设计编码测试交付增量交付增量2 项目时间分析设计编码测试交付增量交付增量n增量模型 3.增量模型软件系统3.增量模型增量模型 增量模型的特点:(1)(1)结合了线性模型和原型模型的特点;结合了线性模型和原型模型的特点;结合了线性模型和原型模型的特点;结合了线性模型和原型模型

18、的特点;(2)(2)每个增量可以结合原型法;每个增量可以结合原型法;每个增量可以结合原型法;每个增量可以结合原型法;(3)(3)系统的问世提前系统的问世提前系统的问世提前系统的问世提前“增量增量增量增量1”1”增量模型的问题:开放的软件体系结构开放的软件体系结构 中心思想:中心思想:“渐进开发,逐步完善渐进开发,逐步完善”3.增量模型-使用增量模型开发时,第一个增量往往是系统中的核心构件,同时,要求产品分解成增量构件的规模应当适中。-如何不破坏已经开发的构件将新的构件集成到一个产品中是增量模型的一个难点。-增量模型的提出很好地解决了线性模型中的人员阻塞问题,尤其是在项目开始初期开发人员不足的时

19、候,能有效地规避技术风险。3.增量模型 喷泉模型是喷泉模型是典型的面向对象的软件过典型的面向对象的软件过程模型之一程模型之一,“喷泉喷泉”较好地体现了面向较好地体现了面向对象软件开发过程对象软件开发过程迭代迭代和和无缝无缝的特性。的特性。4.喷泉模型4.喷泉模型(1)假设要求你开发一个软件,该软件的)假设要求你开发一个软件,该软件的功能是把读入的浮点数开平方,所得到的功能是把读入的浮点数开平方,所得到的结果应该精确到小数点后结果应该精确到小数点后4位。一旦实现位。一旦实现并测试完之后,该产品将被抛弃。你打算并测试完之后,该产品将被抛弃。你打算选用哪种软件生命周期模型?请说明你做选用哪种软件生命

20、周期模型?请说明你做出选择的理由。出选择的理由。问题讨论问题讨论情景分析情景分析解:解:对这个软件的需求很明确,实现开平方功能的算法也很成熟,因此,既无须通过原型来分析需求也无须用原型来验证设计方案。此外,一旦实现并测试完之后,该产品将被抛弃,因此也无须使用有助于提高软件可维护性的增量模型或螺旋模型来开发该软件。问题讨论问题讨论情景分析情景分析(2)假设你被任命为一家软件公司的项目)假设你被任命为一家软件公司的项目负责人,你的工作是管理该公司已被广负责人,你的工作是管理该公司已被广泛应用的字处理软件的新版本开发。由泛应用的字处理软件的新版本开发。由于市场竞争激烈,公司规定了严格的完于市场竞争激

21、烈,公司规定了严格的完成期限并且已对外公布。你打算采用哪成期限并且已对外公布。你打算采用哪种软件生命周期模型?为什么?种软件生命周期模型?为什么?问题讨论问题讨论情景分析情景分析解解:对这个项目的一个重要要求是,严格按照已对外公布了的日期完成产品开发工作,因此,选择生命周期模型时、应该着重考虑哪种模型有助于加快产品开发的进度。使用增量模型开发软件时可以并行完成开发工作,因此能够加快开发进度。这个项目是开发该公司已被广泛应用的字处理软件的新版本,从上述事实至少可以得出3点结论:第一,旧版本相当于一个原型,通过收集用户对旧版本的反映,较容易确定对新版本的需求,没必要再专门建立一个原型系统来分析用户的需求;第二,该公司的软件工程师对字处理软件很熟悉,有开发字处理软件的丰富经验,具有采用增量模型开发新版字处理软件所需要的技术水平;第三,该软件受到广大用户的喜爱,今后很可能还要开发更新的版本,因此,应该把该软件的体系结构设计成开放式的,以利于今后的改进和扩充。问题讨论问题讨论情景分析情景分析 The End

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 项目管理

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com