软件工程导论第1章 软件工程概述
软件工程导论第1章 软件工程概述
–软件工程是①把系统的、规范的、可度量的途 径应用于软件开发、运行和维护过程,也就是把 工程应用于软件;②研究①中提到的途径。
2020/6/26
软件工程定义
1.2 续
• 概括地说,软件工程是指导计算机软件开发 和维护的一门工程学科。采用工程的概念、 原理、技术和方法来开发与维护软件,把经 过时间考验而证明正确的管理技术和当前能 够得到的最好的技术方法结合起来,以经济 地开发出高质量的软件并有效地维护它。
– 计算机软件:与计算机系统操作有关的程序、规 程、规则及任何与之有关的文档和数据。
– 软件: 程序及有关数据—机器可执行; 文档—不可执行。
– 程序:能够完成预定功能和性能的可执行的指令 序列。
– 数据:使程序能够适当地处理信息的数据结构。 – 文档:开发、使用和维护程序所需的图文资料。
2020/6/26
• 软件的特点
1.1 续
– ⑴软件开发更依赖于开发人员的业务素质、智力 、人员的组织、合作和管理。
– ⑵软件存在潜伏错误,硬件错误一般能排除。
– ⑶软件开发成功后,只需对原版进行复制。
– ⑷软件在使用过程中维护复杂。
– ⑸软件不会磨损和老化。
2020/6/26
• 软件的发展
1.1 续
– 第一阶段:20世纪60年代中期以前,个体化生产 ;
上升。 – ⑺开发生产率提高的速度远跟不上软件需求。
2020/6/26
100% 80% 60% 40% 20%
硬件
1.1 续
软件开发 软件维护
2020/6/26
1955年
1970年
软件、硬件成本变化趋势
1985年
软件工程导论第六版课后习题答案完整版
软件工程导论第六版课后习题答案完整版首先,感谢您对软件工程导论课后习题答案的需求。
以下是软件工程导论第六版课后习题的完整答案。
第一章:软件工程概述1.1 问题1. 什么是软件工程?答:软件工程是一种应用工程原理、方法和工具来开发和维护高质量软件的学科。
1.2 问题1. 什么是软件?答:软件是一系列按照特定顺序组织的计算机数据和指令。
第二章:软件过程模型2.1 问题1. 软件过程模型有哪些类型?答:常见的软件过程模型包括瀑布模型、迭代模型、螺旋模型和敏捷开发模型等。
2.2 问题1. 瀑布模型的特点是什么?答:瀑布模型是一种线性顺序模型,以阶段划分为基础,每个阶段的任务在进入下一个阶段前必须完成。
第三章:需求分析与规格说明3.1 问题1. 软件需求描述包括哪些方面的内容?答:软件需求描述需要包括功能性需求、非功能性需求、用户需求和系统需求等。
3.2 问题1. 什么是需求跟踪?答:需求跟踪是指在软件开发过程中,通过建立需求和软件项目中其他相关工件之间的关联,确保需求的准确实现和变更的有效管理。
第四章:软件设计4.1 问题1. 软件设计的目标是什么?答:软件设计的目标是通过确定软件的整体结构和组成部分,确保软件满足需求并具有良好的可维护性和可重用性。
第五章:软件测试与维护5.1 问题1. 什么是软件测试?答:软件测试是一种评估和改进软件质量的过程,目的是发现错误并提高软件的可靠性和可用性。
5.2 问题1. 什么是软件维护?答:软件维护是指在软件交付后的整个生命周期中对软件进行修改和改进,以满足用户需求和修复错误。
第六章:软件配置管理6.1 问题1. 软件配置管理的目标是什么?答:软件配置管理的目标是确保软件在开发和维护过程中的可控性和可追踪性,以及保持软件配置的稳定性和一致性。
6.2 问题1. 软件版本控制是什么?答:软件版本控制是指对软件的不同版本进行管理,包括版本的创建、检出、合并和更新等操作。
至此,我们完成了软件工程导论第六版课后习题的完整答案。
第1章软件工程学概述
1.2.1 软件工程的概念
诸多软件工程的定义所揭示的软件工程 的本质认识是一致的:
软件工程一般更关注于大型软件系统的开发; 其中心任务是控制整个软件系统的复杂性,提高软 件开发的效率,加强人员和技术的管理,更好地满 足用户的需要。
1.2.2 软件工程的基本原理
(1)用分阶段的生命周期计划严格管理
(2)软件产品质量较差,可靠性低。
软件开发过程中不能坚持严格的审查、复审和测试, 使得软件可靠性差、质量问题多。
1.1.2 软件危机的表现
(3)用户对开发出来的软件产品不满意。
开发人员与用户之间的交流不充分,仅对用户需求 有了一个模糊的认识就匆忙开始写程序。这样的结果就 是用户对于所谓已经完成的软件很不满意。
1.1.1 软件危机的定义
➢ 定义
“在计算机软件的开发和维护过程 中所遇到的一系列严重的问题。”
1.1.2 软件危机的表现
(1)对软件开发成本和进度的估计常常很不准确。
实际成本往往大大超过估计成本,或开发进度比计 划推迟几个月或一年以上。这种现象极大地影响了软件 开发组织的信誉,也会引起用户的强烈不满。
1.1.1 软件的定义
➢ 软件的经典定义:
软件=“完成特定功能的程序+数据结构+文档”
➢ 软件的特征:
1、软件是开发的,而不是制造的; 2、软件不磨损,但退化; 3、自定义。
1.1.1 软件的定义
➢ 软件发展中的相关问题:
硬件的发展超过软件; 现有软件与用户的要求矛盾; 软件失败导致“灾难性后果”; 需要高质量、高可靠性的软件; 设计的问题使升级和维护十分困难。
(4)软件常常是不可维护的。
在实际项目中,很多程序的错误往往难以修改,而 且不能适应软硬件环境的变化,也无法添加用户需要的 一些新功能。
软件工程导论复习重点总结很全第六版
第1章软件工程学概述1.1 软件危机1.1.1 软件危机旳简介软件危机(软件萧条、软件困扰): 是指在计算机软件旳开发和维护过程中所碰到旳一系列严重问题。
软件危机包括下述两方面旳问题:怎样开发软件, 满足对软件日益增长旳需求;怎样维护数量不停膨胀旳已经有软件。
软件危机旳经典体现:(1)对软件开发成本和进度旳估计常常很不精确;(2)顾客对“已完毕旳”软件系统不满意旳现象常常发生;(3)软件产品旳质量往往靠不住;(4)软件常常是不可维护旳;(5)软件一般没有合适旳文档资料;(6)软件成本在计算机系统总成本中所占旳比例逐年上升;(7)软件开发生产率提高旳速度, 远远跟不上计算机应用迅速普及深入旳趋势。
1.1.2 产生软件危机旳原因(1)与软件自身旳特点有关(2)与软件开发与维护旳措施不对旳有关1.1.3 消除软件危机旳途径对计算机软件有对旳旳认识。
认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完毕旳工程项目。
应当推广使用在实践中总结出来旳开发软件旳成功技术和措施, 并继续研究探索。
应当开发和使用更好旳软件工具。
总之, 为了处理软件危机, 既要有技术措施(措施和工具), 又要有必要旳组织管理措施。
1.21.2.1 软件工程旳简介软件工程: 是指导计算机软件开发和维护旳一门工程学科。
采用工程旳概念、原理、技术和措施来开发与维护软件, 把通过时间考验而证明对旳旳管理技术和目前可以得到旳最佳旳技术措施结合起来, 以经济地开发出高质量旳软件并有效地维护它, 这就是软件工程。
(期中考)软件工程旳本质特性:软件工程关注于大型程序旳构造软件工程旳中心课题是控制复杂性软件常常变化开发软件旳效率非常重要友好地合作是开发软件旳关键软件必须有效地支持它旳顾客在软件工程领域中是由具有一种文化背景旳人替具有另一种文化背景旳人发明产品1.2.2 软件工程旳基本原理用分阶段旳生命周期计划严格管理坚持进行阶段评审实行严格旳产品控制采用现代程序设计技术成果应能清晰地审查开发小组旳人员应当少而精承认不停改善软件工程实践旳必要性1.2.3 软件工程措施学软件工程包括技术和管理两方面旳内容。
软件工程导论 第1章 软件工程概述
述问题的问题空间(也称为问题域)与实现解法的解空间
(也称为求解域)在结构上尽可能一致。
优点:
降低了软件产品的复杂性,提高了软件产品的可理 解性,简化了软件的开发和维护工作。 促进了软件重用。
24
设计:设计软件的结构,即确定程序由哪些模块组
成以及模块间的关系,及模块内部的算法结构。 编码:按照选定的语言,把模块的过程性描述翻译 为源程序。 测试:通过各种类型的测试(及相应的调试)使软件 达到预定的要求。
30
1.3
软件运行时期
软件生命周期
是软件生存周期的最后一个时期。软件人员在这 一时期的工作,主要是做好软件维护。维护的目的, 是使软件在整个生存周期内保证满足用户的需求和延 长软件的使用寿命
第 1 章 软 件 工 程 概
1.0
1.1 1.2 1.3 1.4 1.5 习题
5
软件
软件危机 软件工程 软件生命周期 软件过程 小结
1.0
1.0.1 软件的概念
软件
软件是计算机系统中与硬件相互依存的另一部 分,它是包括程序、数据及其相关文档的完整 集合。
程序是按事先设计的功能和性能要求编写的指令序 列;
40
图 1.5 快速原型模型
(图中实线箭头表示开发过程, 虚线箭头表示维护过程)
41
1.4.2 快速原型模型
主要优点:
软件产品的开发基本上是线性顺序进行的。 原型系统已经通过与用户交互得到验证,据此产生的规格说明文 档正确地描述了用户需求,因此不会进行较大的返工。 开发人员通过建立原型系统已经学到了许多东西,因此,在设计 和编码阶段发生错误的可能性也比较小,减少了在后续阶段需要 改正前面阶段错误的可能性。
软件工程导论_第1章
软件工程
7
王素红
中北大学电子与计算机科学技术学院
3. 软件经常变化 绝大多数软件都模拟了现实世界的某一部
分。现实世界在不断变化,软件为了不被很快 淘汰,必须随着所模拟的现实世界一起变化。 因此,在软件系统交付使用后仍然需要耗费成 本,而且在开发过程中必须考虑软件将来可能 的变化。
软件工程
8
王素红
中北大学电子与计算机科学技术学院
软件工程
6
王素红
中北大学电子与计算机科学技术学院
2. 软件工程的中心课题是控制复杂性 通常,软件所解决的问题十分复杂,以致
不能把问题作为一个整体通盘考虑。人们不得 不把问题分解,使得分解出的每个部分是可理 解的,而且各部分之间保持简单的通信关系。 用这种方法并不能降低问题的整体复杂性,但 是却可使它变成可以管理的。注意,许多软件 的复杂性主要不是由问题的内在复杂性造成 的,而是由必须处理的大量细节造成的。
中北大学电子与计算机科学技术学院
第1章 软件工程学概述
1.1 软件工程
一、为什么要学习软件工程? 软件开发技术限制 开发方法不规范 软件人员本身素质 在软件开发过程中存在着难以解决的
问题,因此研究出的软件产品不能够满足 要求,由此产生了软件危机。
软件工程
1
王素红
中北大学电子与计算机科学技术学院
为解决软件危机,解决开发过程中的高成 本、低质量,提出了“软件工程”。 软件工程的主要思想:
王素红
中北大学电子与计算机科学技术学院
5. 结果应能清楚地审查 软件产品不同于一般的物理产品,它是
看不见摸不着的逻辑产品。 软件开发人员(或开发小组)的工作进展情
况可见性差,难以准确度量,从而使得软件产 品的开发过程比一般产品的开发过程更难于评 价和管理。
软件工程导论课件全张海藩
利用大数据技术分析和监控软件系统的运行状态,发现性能瓶颈并 进行优化,提高软件系统的稳定性和效率。
软件故障预测与预防
通过分析历史故障数据和系统日志,预测可能出现的故障并提前采取 预防措施,降低软件维护成本。
云计算在软件工程中的应用
云计算平台开发
基于云计算平台开发软件应用,实现资源的动态分配、弹性扩展和按需付费,降低软件开发和运 维成本。
和输出。
在瀑布模型中,软件开发过程被划分为需求分析、设 计、编码、测试和维护等阶段,每个阶段都必须在前
一个阶段完成后才能开始。
瀑布模型的优点是易于理解和管理,适用于需求稳定、 变更较少的情况。但是,它缺乏灵活性,难以应对需 求变更和快速变化的市场环境。
螺旋模型
螺旋模型是一种迭代式的软件开发过程 模型,它将开发过程划分为多个循环, 每个循环包括需求分析、设计、编码和 测试等阶段。
在敏捷开发模型中,开发团队会按照短周期(通常是一到四周)进行迭代开发,每个周期都会交付可用 的软件产品。
敏捷开发模型的优点是能够快速响应变化、降低开发风险、提高软件质量。但是,它需要更多的沟通和 协作能力,同时也需要更加灵活的管理方式。
其他过程模型
除了上述三种常见的软件开发过程模 型外,还有其他一些过程模型,如原 型模型、增量模型等。
缺陷分析
对缺陷进行分析,找出根本原因,避免类似缺陷再次出现。
质量评估指标
缺陷密度
衡量软件质量的重要指标,表示每千行代码 中的缺陷数。
回归测试通过率
评估软件修复缺陷后,原有功能是否正常的 重要指标。
测试覆盖率
评估测试用例对软件产品功能的覆盖程度。
用户满意度
反映用户对软件产品质量和服务的满意程度。
软件工程导论第一章
软件工程的发展经历了多个阶段,从早期的手工作坊式开发到结构化方法、面 向对象方法,再到现在的敏捷开发方法和DevOps等,不断推动着软件产业的快 速发展。
软件工程的研究对象与范围
研究对象
软件工程的研究对象包括软件开发过程中的各种技术、方法、工具和管理等方面 ,旨在提高软件开发的效率和质量,降低开发成本。
研究范围
软件工程的研究范围涵盖了软件开发的各个阶段,包括需求分析、设计、编码、 测试和维护等,同时也涉及到软件项目管理、软件质量保证和软件测试等方面。
软件工程的重要性
提高软件质量
通过采用先进的软件工程方法和工具,可以显著提高软件的质量,减 少软件中的缺陷和错误,提高软件的稳定性和可靠性。
降低开发成本
针对软件的最小可测试单元进行测试,确保每个单元的功能正 确无误。
将多个单元组合在一起进行测试,验证它们之间的接口和功能 是否正常。
对整个软件系统进行全面的测试,包括功能测试、性能测试、 安全测试等,确保软件满足需求和设计要求。
记录和管理测试过程中发现的缺陷,跟踪缺陷的修复进度和结 果,确保软件质量得到持续改进。
软件开发模型介绍
瀑布模型
瀑布模型是一种线性的软件开发模型,按照固定的顺序进行开发,每个阶段都有明确的输入和输出。它的优点是易于 理解和管理,但缺点是缺乏灵活性,难以应对需求变更。
螺旋模型
螺旋模型是一种迭代式的软件开发模型,强调风险分析和控制。它在每个迭代周期中都包括需求定义、风险分析、工 程实现和评审等步骤,适用于大型、复杂的软件项目。
将软件划分为独立的模块,降低 模块间的耦合度,提高代码的可 重用性和可维护性。
02
版本控制工具
使用版本控制工具(如Git)管理 代码,记录代码的变更历史,方 便团队协作和代码回溯。
软件工程导论重点内容
第一章软件工程概述重点掌握的内容:软件和软件工程的基本概念一.什么是软件1.满足功能要求和性能的指令或计算机程序集合;2.处理信息的数据结构;3.描述程序功能以及程序如何操作和使用所要求的文档;软件的特点:软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性;软件是通过人们的智力活动,把知识与技术转换成信息的一种产品,是在研制、开发中被创造出来的在软件运行和使用的期间,没有硬件那样的机械磨损、老化问题软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖性软件的开发至今尚未完全摆脱手工的开发方式软件的开发费用越来越高,成本相当昂贵;二.软件危机以及产生软件危机的原因1.软件开发生产率提高的速度,远远跟不上计算机迅速普及的趋势;软件产品“供不应求”;2.软件成本在计算机系统总成本中所占的比例逐年上升;3.软件开发人员和用户之间的信息交流往往很不充分,用户对“已完成的”的软件系统不满足的现象经常发生;4.软件产品的质量不容易保证;5.软件产品常常是不可维护的;6.软件产品的重用性差,同样的软件多次重复开发;7.软件通常没有适当的文档资料;产生软件危机的原因可归结为两个重要的方面:软件生产本身存在的复杂性;软件开发所使用的方法和技术;三、软件危机1、软件危机定义:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题;2、软件危机的两个主要问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件;3、软件危机的典型表现:1对软件开发成本和进度的估计常常很不准确;2用户对“已完成的”软件系统不满意的现象经常发生;3软件产品的质量往往靠不住;4软件常常是不可维护的;5软件通常没有适当的文档资料;6软件成本在计算机系统总成本中所占的比例逐年上升;7软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势;软件工程1、软件工程定义:软件工程是指导计算机软件开发和维护的一门工程学科;采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地、高效的开发出高质量的软件并有效地维护它,这就是软件工程;软件工程准则可以概括为7条基本原则:用分阶段的生命周期计划严格管理;坚持进行阶段评审实行严格的产品控制采用现代程序设计技术应能清楚地审查结果合理安排软件开发小组的人员承认不断改进软件工程实践的必要性3、软件工程方法学,三要素:方法、工具和过程4、软件生命周期概念、三时期,八阶段软件生命周期由软件定义、软件开发和运行维护也称为软件维护3个时期组成;软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析;软件开发时期分为4阶段:总体设计、详细设计、编码和单元测试、综合测试五、软件开发模型:软件开发模型是跨越整个软件生存周期的系统开发、运作、维护实施的全部工作和任务的结构框架;1瀑布模型采用结构化的分析与设计方法,将逻辑实现与物理实现分开;特点阶段的顺序性和依赖性规范化推迟实现的观点系统化质量保证阶段评审存在问题不适合需求模糊的系统需求的迷糊性和不确定性适用于操作系统、编译系统、数据库管理系统等系统软件的开发快速原型模型:所谓快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集;快速原型模型的第一步是快速建立一个能反映用户主要需求的原型系统,让用户在计算机上试用它,通过实践来了解目标系统的概貌3增量模型:是瀑布模型的顺序特征与快速原型法德迭代特征相结合的产物;这种模型把软件看成一系列相互联系的增量,在看法过程的各次迭代中,每次完成其中的一个增量;4喷泉模型5微软过程六、思考:你认为“软件就是程序”这一个观点正确吗如果不正确,请批驳之;1.请从以下几个方面结合自己的经验实例加以论述;软件就是程序的观点是不正确的,因为软件等于程序加文档加数据;1文档是软件的一个非常重要的组成部分,在软件的开发过程中起着非常重要的作用;2在软件开发的每一个阶段都应有相应的文档;它是开发人员与用户以及开发人员与项目管理人员之间交流的媒介3文档是软件在不同阶段的表现形式;4程序与文档必须一致,文档才有价值;5文档质量直接决定软件质量的高低;6文档也是软件测试和维护的依据;在没有文档或文档不全的情况下对大型软件进行测试与维护是不可思议的事情;7文档是软件可重用的依据;2、有人说:软件开发时,一个错误发现得越晚,为改正它所付出的代价就越大;对否请解释你的回答;答:对,第二章可行性研究重点掌握的内容:可行性研究的系统流程图一般内容:可行性研究的任务和步骤,成本效益分析一、可行使研究:1、可行性研究的任务:是用最小的代价在尽可能短的时间内确定问题是否能够解决;一般来说,应从经济可行性、技术可行性、运行可行性、法律可行性和开发方案等方面研究可行性可行性研究的目的:在明确了所要研究问题定义之后,分析员应该在明确目标系统所有限制和约束的前提下,去确定该问题是否值得去解决;或就是用最小代价在尽可能短的时间内确定问题是否能够解决;2、可行性研究过程:1)复查系统规模和目标2)研究目前正在使用的系统3)导出新系统的高层逻辑模型4)进一步定义问题5)导出和评价供选择的解法6)推荐行动方针7)草拟开发计划8)书写文档提交审查3、系统流程图的定义和作用:可行性研究对现有系统做概括的物理模型描述,如用图形工具表示则更加直观简洁;系统流程图是描绘物理系统的传统工具,它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件程序、文件、数据库、表格、人工过程等;系统流程图表达的是部件的信息流程,而不是对信息进行加工处理的控制过程;在可行性研究过程中,利用系统流程图来描述所建议系统的物理模型;4、数据流程图的定义和作用:数据流程图有两个特征:抽象性和概括性;抽象性指的是数据流程图把具体的组织机构、工作场所、物质流都去掉,只剩下信息和数据存储、流动、使用以及加工情况;概括性则是指数据流程图把系统对各种业务的处理过程联系起来考虑,形成一个总体5、数据流程图的组成元素数据流图可以用来抽象地表示系统或软件;它从信息传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程,同时可以按自顶向下、逐步分解的方法表示内容不断增加的数据流和功能细节;因此,数据流图既提供了功能建模的机制,也提供了信息流建模的机制,从而可以建立起系统或软件的功能模型;6、数据流程图的组成:外部实体外部实体是指系统之外的人或单位,它们和本系统有信息传递关系数据流,处理、数据存储;如何绘制数据流程图1识别系统的输入和输出,画出顶层图2画系统内部的数据流、加工与文件,画出一级细化图3加工的进一步分解,画出二级细化图4其它注意事项7、数据流程图的注意点1每个处理都必须有流入的数据流和流出的数据流,如果没有,是错误的;数据守恒2每个数据存储应该有流入的数据流和流出的数据流,如果缺了一种,是Warning的;缺两种就错了;3、数据流只能在处理与处理、数据存储或者外部实体之间流动;、数据存储到数据存储、外部实提到外部实体、外部实提到数据存储之间的数据流都是错误的;4、一个处理可以细分成多个子处理,分成若干个层次均匀分解5、良好命名系统流程图与数据流程图有什么区别答:1系统流程图描述系统物理模型的工具,数据流程图描述系统逻辑模型的工具;2系统流程图从系统功能的角度抽象的描述系统的各个部分及其相互之间信息流动的情况;3数据流程图从数据传送和加工的角度抽象的描述信息在系统中的流动和数据处理的工作状况;三、数据流图:1、组成符号:4中基本图形符号正方形、圆角矩形、开口矩形2、数据流图的基本要点是描绘“做什么”,而不是考虑“怎么做”;3、一套分层的的数据流图由顶层、底层、和中间层组成;4、画分层数据流图基本原则与注意事项:a.自外向内,自顶向下,逐层细化,完善求精;b.保持父图与子图的平衡;也就是说,父图中某加工的输入数据流中的数据必须与它的子图的输入数据流在数量和名字上相同;c.保持数据守恒;也就是说,一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工能产生的数据;d.加工细节隐藏;根据抽象原则,在画父图时,只需画出加工和加工之间的关系,而不必画出各个加工内部的细节;e.简化加工间关系;在数据流图中,加工间的数据流越少,各加工就越相对独立,所以应尽量减少加工间输入输出数据流的数目;f.均匀分解;应该使一个数据流中的各个加工分解层次大致相同;g.适当地为数据流、加工、文件、源/宿命名,名字应反映该成分的实际意义,避免空洞的名字;h.忽略枝节;应集中精力于主要的数据流,而暂不考虑一些例外情况、出错处理等枝节性问题;i.表现的是数据流而不是控制流;j.每个加工必须既有输入数据流,又有输出数据流.在整套数据流图中,每个文件必须既有读文件的数据流又有写文件的数据流,但在某一张子图中可能只有读没有写或者只有写没有读;小结:一个软件系统,其数据流图往往有多层;如果父图有N个加工Process,则父图允许有0~N张子图,但是每张子图只能对应一张父图;在一张DFD图中,任意两个加工之间可以有0条或多条名字互不相同的数据流;在画数据流图时,应该注意父图和子图的平衡,即父图中某加工的输入输出数据流必须与其输入输出流在数量和名字上相同;DFD信息流大致可分为两类:交换流和事务流;9、数据字典1.数据字典是在数据流程图的基础上,对数据流程图中的各个元素进行详细的定义与描述,起到对数据流程图进行补充说明的作用;2.数据字典的内容包括:数据流、数据流分量即数据元素、数据存贮、处理逻辑和外部实体;3.数据字典的作用是什么对用户来讲,数据字典为他们提供了数据的明确定义;对系统分析员来讲,数据字典帮助他们比较容易修改已建立的系统逻辑模型;数据字典的实现:P4910、成本效益分析:成本/效益分析的目的是要从经济角度分析开发一个特定的新系统是否可行,从而帮助使用部门负责人正确地做出是否投资与这项开发工程的决定;几种度量效益的方法:货币的时间价值、投资回收期、纯收入第三章需求分析一、重点掌握的内容那:需求分析的方法和面向数据流的分析方法二、一般掌握的内容:需求分析的任务和原则三知识点:1、为什么要做需求分析可行性分析研究阶段已经粗略的描述了用户的需求,甚至还提出了一些可行的方案,但是,许多细节被忽略了,在最终目标系统中是不能忽略、遗漏任何一个微小细节的,所以,可行性研究不能代替需求分析;2、需求分析的方法:需求分析方法由对软件的数据域和功能域的系统分析过程及其表示方法组成,它定义了表示系统逻辑视图和物理视图的方式,大多数的需求分析方法是由数据驱动的,也就是说,这些方法提供了一种表示数据域的机制,分析员根据这种表示,确定软件功能及其特性,最终建立一个待开发软件的抽象模型,即目标系统的逻辑模型;3、需求分析的任务:它的基本任务是准确地回答“系统必须做什么”这个问题;需求分析所要做的工作是深入描述软件的共能和性能,确定软件设计的限制和软件同其它系统元素的接口细节,定义软件的其它有效性需求;需求分析的任务不是确定系统如何完成它的工作,而是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求;其实现步骤如下图所示:一般说来需求分析阶段的任务包括下述几方面:1)确定对系统的综合需求对系统的综合需求主要有:系统功能需求、系统性能需求、可靠性和可用性需求、错处理需求、接口需求、约束、逆向需求、将来可能提出的需求:2)分析系统的数据需求就是在理解当前系统“怎样做”的基础上,抽取其“做什么”的本质,明确目标系统要“做什么”,可以导出系统的详细的逻辑模型;具体做法:首先确定目标系统与当前系统的逻辑差别;然后将变化部分看作是新的处理步骤,对功能图一般为数据流图及对象图进行调整;最后有外及里对变化的部分进行分析,推断其结构,获得目标系统的逻辑模型;通常用数据流图、数字字典和主要的处理算法描述这个逻辑模型;3)导出系统的逻辑模型4)修正系统开发计划在经过需求分析阶段的工作,分析员对目标系统有了更深入更具体的认识,因此可以对系统的成本和进度做出更准确地估计,在此基础上应该对开发计划进行修正;5开发原型系统:使用原型系统的主要目的是,使用户通过实践获得关于未来的系统将怎样为他们工作的更直接更具体的概念,从而可以更准确地提出他们的要求;4、需求分析的步骤:1调查研究2分析与综合3书写文档4需求分析评审5、需求分析的原则:1、必须能够表达和理解问题的数据域和功能域2、按自顶向下、逐层分解问题3、要给出系统的逻辑视图和物理视图6、软件需求的验证:需求分析阶段的工作结果是开发软件系统的重要基础,大量统计数字表明,软件系统中15%的错误起源于错误的需求;为了提高软件质量,确保软件开发成功,降低软件开发成本,一旦对目标系统提出一组要求之后,必须严格验证这些需求的正确性;一般说来,应该从下述4个方面进行验证:1一致性所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾;2完整性需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能;3现实性指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的;对硬件技术的进步可以做些预测,对软件技术的进步则很难做出预测,只能从现有技术水平出发判断需求的现实性;4有效性必须证明需求是正确有效的,确实能解决用户面对的问题;7、状态转换图:指明了作为外部事件结果的系统行为;为此,状态转换图描绘了系统的各种行为模式称为“状态”和在不同状态间转换的方式;状态转换图是行为建模的基础;思考:利用DFD图进行需求分析:在结构化分析方法中,用以表达系统内数据的运动情况的工具有A;供选择的答案:A.数据流图B.数据词典C.结构化英语D.判定表与判定树在结构化分析方法中用状态―迁移图表达系统或对象的行为;在状态―迁移图中,由一个状态和一个事件所决定的下一状态可能会有A个;供选择的答案:多个D.不确定五、总体设计概要设计重点掌握的内容:概要设计的过程和方法一般掌握的内容:概要设计的文档和评审考核知识点:一、总体设计:1、总体设计的目的:总体设计的基本目的就是回答“概括地说,系统应该如何实现”这个问题,因此,总体设计又称为概要设计或初步设计;1、面向结构设计SD2、面向对象设计OOD2、总体设计的任务:1系统分析员审查软件计划、软件需求分析提供的文档、提出最佳推荐方案,用系统流程图,组成物理元素清单,成本效益分析,系统的进度计划,供专家沈顶峰,审定后进入设计2去顶模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块;确定模块之间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略;3编写概要设计说明书,用户手册,测试计划,选用相关的软件工具来描述软件结构,结构图是经常使用的软件描述工具;选择分解功能与划分模块的设计原则,例如模块划分独立性原则,信息隐蔽原则等3、总体设计过程通常由两个主要阶段组成:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构;4、典型的总体设计过程包括下述9个步骤:1、设想功选择的方案2、选取合理的方案3、推荐最佳方案4、功能分解5、设计软件6、设计数据库7制定测试计划8、书写文档:系统说明、用户手册、测试计划、详细的实现计划、数据库设计结果;9、审查和复审二、设计原理分析模块化,在模块化程序设计中,按功能划分模块的原则是,模块化和软件成本关系:模块具有输入和输出参数传递、功能、内部数据结构局部变量和程序代码四个特性1、模块化:就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求.2、模块化的根据:把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了. 模块化和软件成本关系:根据总成本曲线,每个程序都相应地有一个最适当的模块数目M,,使得系统的开发成本最小.3、模块设计的准则:1改进软件结构,提高模块独立性:在对初步模块进行合并、分解和移动的分析、精化过程中力求提高模块的内聚,降低藕合;2模块大小要适中:大约50行语句的代码,过大的模块应分解以提高理解性和可维护性;过小的模块,合并到上级模块中;3软件结构图的深度、宽度、扇入和扇出要适当;一般模块的调用个数不要超过5个;4尽量降低模块接口的复杂程度;5设计单入口、单出口的模块;6模块的作用域应在控制域之内;4、抽象的概念:抽出事务的本质特性而暂时不考虑它们的细节.5、信息隐蔽:模块中所包括的信息不允许其它不需这些信息的模块调用信息局部化:是把一些关系密切的软件元素物理地放得彼此靠近6、什么是模块独立性答:模块独立性概括了把软件划分为模块时要遵守的准则,也是判断模块构造是不是合理的标准;7、模块独立性:是软件系统中每个模块只涉及软件要求的具体子功能,而和软件系统中的其它的模块接口是简单的;模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果;8、为什么模块的独立性很重要答:1有效的模块化的软件比较容易开发出来2独立的模块比较容易测试和维护;总之,模块独立是好设计的关键,而设计又是决定软件质量的关键环节;9、衡量模块独立的两个标准是什么它们各表示什么含义10、答:衡量模块的独立性的标准是两个定性的度量标准:耦合性和内聚性;1耦合性;也称块间联系;指软件系统结构中各模块间相互联系紧密程度的一种度量;模块之间联系越紧密,其耦合性就越强,模块的独立性则越差;模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息;2内聚性;又称块内联系;指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量;若一个模块内各元素语句之间、程序段之间联系得越紧密,则它的内聚性就越高;耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础;模块的高内聚、低耦合的原则称为模块独立原则,也称为模块设计的原则;10、启发规则:1)改进软件结构提高模块独立性2)模块规模应该适中3)深度、宽度、扇出、、和扇入都应适当深度表示软件结构中控制的层数,它往往能粗略地标志一个系统的大小和复杂程度;宽度是软件结构内同一个层次上的模块总数的最大值;一般来说,宽度越大系统越复杂;对宽度影响最大的因素是模块的扇出;一个模块的扇入是指直接调用该模块的上级模块的个数;一个模块的扇出是指该模块直接调用的下级模块的个数;设计原则:低扇出、高扇入;4)模块的作用域应该在控制域内5)力争降低模块接口的复杂程度6)设计单入口和单出口的模块7)模块功能应该可以预测三、概要设计的方法:1、面向数据流的设计方法把信息流映射成软件结构,信息流的类型决定了映射的方法;面向数据流的设计要解决的任务,就是上述需求分析的基础上,将DFD图映射为软件系统的结构;2、数据流图的类型:交换型结构和事务型结构交换型结构:由3部分组成,传入路径,变换中心,输出路径系统的传入流经过变换中心的处理,变换为系统的传出流;事务型结构:有至少一条接受路径,一个事务中心与若干条动作路径组成;当外部信息沿着接受路径进入系统后,经过事务中心获得某个特定值,就能据此启动某一条动作路径的操作;四、结构化设计1、结构化设计方法:是一种面向数据流的设计方法,中心任务就是把用DFD图表示的系统分析模型转换为软件结构的设计模型,确定软件的体系结构域接口;2、结构化方法的步骤:1复审DFD图,必要时刻再次进行修改或细化:2鉴别DFD图所表示的软件系统的结构特征,确定它所代表的软件结构是属于变换型还是事务型;3按照SD方法规定的一组规则,吧DFD图转换为初始的SC图;变换型DFD图初始SC图事务型DFD图初始SC图3、结构设计的优化规则:1对模块分割、合并和变动调用关系的指导规则:以提高模块独立性为首要标准,除此之外,适当考虑模块的大小;2保持高扇/入低扇出原则3作用域/控制域规则:作用域不要超出控制域的范围;软件系统的判定,其位置离受它控制的模块越近越好;六、详细设计重点掌握的内容:详细设计的任务和方法一般掌握的内容:详细设计的原则和详细设计的规格与评审。
软件工程导论1概述PPT课件
1968年10月,北大西洋公约组织(NATO)的科学家在德 国召开的学术会议上正式提出了软件危机问题。
14
(2)软件危机 A.软件危机的表现 B.产生软件危机的原因 C.解决软件危机的途径
15
A.软件危机的表现
成本高
IBM 360 OS, 5000多人 年,耗时4年(1963- 1966),花费2亿多美元
美国空军:1955年软件占 总费用(计算机系统)的 18%,70年60%,85年 达到85%
美国全球军事指挥控制系统, 硬件1亿美元,软件高达 7.2亿美元
计算机软件和硬件费用比
90 80 70 60 50 40 30 20 10 0
60年代
80年代
16
计算机软件 计算机硬件
A.软件危机的表现
24
1.2 软件工程定义(1)
The establishment and use of sound engineering principles (methods) in order to obtain economically software that is reliable and works on real machines. (1968- Fritz Bauer)
维护成本越来越高
55%到70%
维护带来的问题
13
软件的发展
早期 •面向批处理 •有限的分布 •自定义软件
第二阶段 •多用户 •实时 •数据库 •软件产品
第三阶段 •分布式系统 •嵌入“智能” •低成本硬件 •消费者的影响
第四阶段 •强大的桌面系统 •面向对象技术 •专家系统 •人工神经网络 •并行计算 •网路计算机
软件质量得不到保证
软件应用面的扩大:科学计算、军事、航空航天、工业控制、 企业管理、办公、家庭
软件工程导论第1章(第4版)
软件工程导论 (第4版)
张海藩 编著
总目录
第1章 软件工程学概述 第8章 维护
第2章 可行性研究
第9章 面向对象方法学引论
第3章 需求分析
第10章 面向对象分析
第4章 形式化说明技术 第11章 面向对象设计
第5章 总体设计
第12章 面向对象实现
第6章 详细设计
第13章 软件项目管理
测试、综合测试又称为系统实现。 设计出实现目标系统的方案,设计程序的体系结构。 确定实现模块功能所需要的算法和数据结构; 设计出程序的详细规格说明; 用适当的程序设计语言写出正确的容易理解、容易维护的
程序模块并进行单元测试; 根据设计的软件结构,把各模块装配起来并进行测试; 通过对软件测试结果的分析预测软件的可靠性; 写出测试计划和详细测试方案并记录实际测试结果; 按照规格说明书的规定,由用户对目标系统进行验收。
第7章 实现
第1章 软件工程学概述
软件成为独立的商品 计算机应用的普及,促使人们对软件的品种、
数量、功能、质量等提出了越来越高的要求 在1970前,计算机硬件工程技术由于电子技术
的发展而建立 重视软件开发过程、方法、工具和环境的研
究—软件工程
1.1 软件危机 一.软件
1.软件的定义 软件是能够完成预定功能和性能的可执行的计算
2. 产生软件危机的原因
(1)软件开发个体化,采用了错误的方法和技术,无设计资 料留存; (2)软件规模的增长,使得软件的复杂度增加,软件的可靠 性随软件规模的增长而下降,质量保证越来越困难; (3)软件维护费用急剧上升。
据统计,软件维护费用大约占到软件总花费的2/3; (4)软件生产技术进步缓慢,是加剧软件危机的重要原因。
软件工程导论(第6版)
第一章、软件工程学概述软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件危机包含下述两个方面的问题:1.如何开发软件,以满足对软件日益增长的需求。
2.如何维护数量不断膨胀的已有软件。
具体的说,软件危机主要有以下一些典型表现:1.对软件开发成本的进度的估计常常很不准确。
2.用户对“已完成的”软件系统不满意的现象经常发生3.软件产品的质量往往靠不住。
4.软件常常是不可维护的。
5.软件通常没有适当的文档材料。
6.软件成本在计算机系统总成本中所占的比例逐年上升。
7.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
软件生命周期:一个软件从定义、开发、使用和维护,知道最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生命周期。
软件配置:程序、文档和数据。
软件工程学的一个重要的目标:就是提高软件的可维护性,减少软件维护的代价。
软件:是程序、数据及相关文档的集合。
程序:是能够完成预定功能和性能的可执行的指令序列。
数据:是使程序能够适当地处理信息的数据结构。
文档:是开发、使用和维护程序所需要的图文资料。
软件工程:指导计算机软件开发和维护的一门工程学科。
软件工程具有下属的本质特性:1.软件工程关注于大型程序的构造。
2.软件工程的中心课题是控制复杂性。
3.软件经常变化。
4.开发软件的效率非常重要。
5.和谐地合作是开发软件的关键。
6.软件必须有效地支持它的用户。
7.在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。
软件工程的7条基本原理:1.用分阶段的生命周期计划严格管理。
2.坚持进行阶段评审。
3.实行严格的产品控制4.采用现代程序设计技术。
5.结构应能清楚的审查。
6.开发小组的人员应该少而精。
7.承认不断改进软件工程实践的必要性。
软件工程:包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。
通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为泛型。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
–素质高的人员开发效率高,错误率低。
–开发小组的成员之间要交流情况、讨论问题,
随着人数的增加,通信开销将急剧增加。
–人员数:N
通信路径:N(N-1)/2
– 由于误解等原因可能增加出错的概率。
2020/12/12
1.2 续
• ⑺承认不断改进软件工程实践的必要性
• 可将软件生命周期划分为3个时期,共8个阶 段。
• 3个时期:软件定义时期、软件开发时期、 运行维护时期。
• 8个阶段有:问题定义、可行性研究、需求 分析、总体设计、详细设计、编码和单元测 试、综合测试、维护。
2020/12/12
1.3 续
• 软件生命周期阶段的划分
问题定义
定义时期
可行性研究 需求分析
–为了保证软件各配置成份的一致性,必须实行 严格的产品控制,其中主要是实行基准配置管理 (变动控制)。
–凡是修改软件的建议,尤其是涉及对基准配置 的修改建议,都必须按规程进行严格的评审,评 审通过后才能实施修改。
–基准配置:经过阶段评审后的软件配置成份, 即各级段产生的文档或程序代码。
2020/12/12
- 5.在理论学习的基础上,运用所学知识解决实际问 题,加深认识和体会。
2020/12/12
教材与参考书
• 教材:
《软件工程导论(第四版)》张海藩 编 清华大学出版社
• 参考书:
《实用软件工程》郑人杰 殷人昆 陶永雷 编 清华大学出版社
2020/12/12
• 教学进度表
学时安排
2020/12/12
2020/12/12
• 软件的特点
1.1 续
– ⑴软件开发更依赖于开发人员的业务素质、智力 、人员的组织、合作和管理。
– ⑵软件存在潜伏错误,硬件错误一般能排除。
– ⑶软件开发成功后,只需对原版进行复制。
– ⑷软件在使用过程中维护复杂。
– ⑸软件不会磨损和老化。
2020/12/12
• 软件的发展
– 通过对客户的访问调查,系统分析员扼要地写出 关于问题性质、工程目标和工程规划的书面报告 ,经过讨论和必要的修改之后,由顾客确认。
2020/12/12
• ⑵可行性研究
1.3 续
– 本阶段要回答的关键问题是:“对于上一个阶段 所确定的问题有行得通的解决办法吗?”。
1.2 续
• ⑷采用现代程序设计技术
–采用先进的技术不仅可以提高软件开发和维护 的效率,而且可以提高软件产品的质量。
–多年来,人们一直致力于研究新的“程序设计 技术”。
• 20世纪60年代——结构程序设计技术; • 结构分析(SA)和结构设计(SD)技术; • 面向对象分析(OOA)和面向对象设计(OOD)技术。
2020/12/12
1.1 续
• 程序设计语言三种类型
– 1.机器语言、汇编语言:依赖于机器,面向机器 – 2.高级语言:独立于机器,面向过程或面向对象 – 3.面向问题语言:独立于机器,非过程式语言(
4GL)
• 文档作用
– 专业人员和用户之间的通信和交流; – 软件开发过程的管理; – 运行阶段的维护。
成绩比例
1、学习态度 2、课堂提问 3、考勤 4、作业 5、考试
成绩评定方法
5% 5% 10% 10% 70%
注:旷课4学时取消考试资格。
2020/12/12
第1章 软件工程概述
• 主要内容 – 1.1 软件危机 – 1.2 软件工程 – 1.3 软件生命周期 – 1.4 软件过程
• 教学重点
– 软件工程的定义、基本原理及生命周期。
2020/12/12
1.1 软件危机
• 软件与软件的组成
– 计算机软件:与计算机系统操作有关的程序、规 程、规则及任何与之有关的文档和数据。
– 软件: 程序及有关数据—机器可执行; 文档—不可执行。
– 程序:能够完成预定功能和性能的可执行的指令 序列。
– 数据:使程序能够适当地处理信息的数据结构。 – 文档:开发、使用和维护程序所需的图文资料。
上升。 – ⑺开发生产率提高的速度远跟不上软件需求。
2020/12/12
100% 80% 60% 40% 20%
硬件
1.1 续
软件开发 软件维护
2020/12/12
1955年
1970年
软件、硬件成本变化趋势
1985年
1.1 续
• 产生软件危机的原因
–⑴用户对软件需求的描述不精确。 –⑵软件开发人员对用户需求的理解有偏差。 –⑶缺乏处理大型软件项目的经验。 –⑷开发大型软件易产生疏漏和错误。 –⑸缺乏有力的方法学的指导和有效的开发工具
–进一步研究先进的软件开发与维护技术。
2020/12/12
1.2 续
• ⑸结果应能清楚地审查
–软件产品属于逻辑产品,可见性差,难以评审 和管理。
–为更好地进行评价与管理,应根据软件开发的 总目标和完成期限,规定开发小组的责任和产品 标准,以便结果的审查。
2020/12/12
1.2 续
• ⑹开发小组的人员应该少而精
–1993年IEEE给出了一个更全面具体的定义:
–软件工程是①把系统的、规范的、可度量的途 径应用于软件开发、运行和维护过程,也就是把 工程应用于软件;②研究①中提到的途径。
2020/12/12
软件工程定义
1.2 续
• 概括地说,软件工程是指导计算机软件开发 和维护的一门工程学科。采用工程的概念、 原理、技术和方法来开发与维护软件,把经 过时间考验而证明正确的管理技术和当前能 够得到的最好的技术方法结合起来,以经济 地开发出高质量的软件并有效地维护它。
2020/12/12
• 传统方法学
1.2 续
–又称生命周期方法学,或结构化范型。
–采用结构化技术来完成软件开发的各项任务, 并使用适当的软件工具或软件工程环境来支持结 构化技术的运用。
–把软件生命周期的全过程依次划分为若干个阶 段,然后自顶向下顺序地完成每个阶段的任务。
–采用生命周期方法学可以降低软件开发的难度 ,提高软件的可维护性,保证软件质量,从而大 大提高软件开发的生产率和成功率。
–⑷开发和使用更好的软件工具,创建软件工程 支持环境。
2020/12/12
1.2 软件工程
• 软件工程介绍
–1968年,北大西洋公约组织在联邦德国召开计 算机科学会议,讨论软件危机问题。由Fritz Bauer首次提出了“软件工程”的概念。
–软件工程就是为了经济地获得可靠的且能在实 际机器上有效地运行的软件,而建立和使用完善 的工程原理。
1.2 续
• ⑴用分阶段的生命周期计划严格管理
–把软件生命周期划分成若干个阶段,并相应地 制定出切实可行的计划,然后严格按照计划对软 件的开发与维护工作进行管理。
–应该制定的计划有项目概要计划、里程碑计划 、项目控制计划、产品控制计划、验证计划和运 行维护计划等。
–不同层次的管理人员都必须严格按照计划各尽 其职地管理软件开发与维护工作。
– 由系统分析员完成该阶段的系统分析工作。 – 软件定义时期可通过软件系统的问题定义、可行
性研究和需求分析三个阶段来完成。
2020/12/12
1.3 续
• ⑴问题定义阶段
– 问题定义阶段必须回答的关键问题是:“要解决 的问题是什么?”。
– 问题定义阶段的任务是:确定软件系统的工程需 求,也就是要搞清“做什么?”。
–遵循上述六条基本原理,就能够较好地实现软 件的工程化生产。
– 按照这条原则,不仅要积极主动地采纳或创造新 的软件技术,而且要注意不断总结经验,收集工 作量、进度、成本等数据,并进行出错类型和问 题报告的统计。
– 收集的数据,一方面可用来评估新的软件技术的 效果,另一方面,可用来指明应优先进行研究的 软件工具和技术。
– 软件危机是指在计算机软件开发、使用与维护过 程中遇到的一系列严重问题和难题。
开发软件?
– 如何维护软件?
2020/12/12
1.1 续
• 软件危机的表现
– ⑴对软件开发成本和进度的估计常常很不准确。 – ⑵用户对已完成的软件不满意的现象时有发生。 – ⑶软件产品的质量往往是靠不住的。 – ⑷软件常常是不可维护的。 – ⑸软件通常没有适当的文档资料。 – ⑹软件成本在计算机系统总成本中所占比例逐年
–缺点:数据和对数据的操作不能兼顾。
2020/12/12
1.2 续
• 面向对象方法学
–面向对象方法是一种以数据为主线,把数据和 对数据的操作紧密地结合起来的方法。
–基本原理:尽量模拟人类习惯的思维方式,使 开发软件的方法与过程尽可能接近人类认识世界 解决问题的方法与过程,从而使描述问题的问题 域与实现解法的求解域在结构上尽可能一致。
的支持。 –⑹供求矛盾。
2020/12/12
1.1 续
• 消除软件危机的途径
–⑴对计算机软件有一个正确的认识。 软件≠程序
–⑵软件开发是一种组织良好、管理严格、各类 人员协同配合、共同完成的工程项目,需要吸收 和借鉴成功的组织管理经验。
–⑶在开发过程中,推广使用在实践中总结出来 的开发软件的成功的技术和方法。
总体设计
开发时期
详细设计 编码和单元测试
综合测试
维护时期
软件维护
退役
2020/12/12
1.3 续
• ⒈软件定义时期
– 软件定义时期的任务是:确定软件开发工程必须 完成的总目标;确定工程的可行性;导出实现工 程目标应该采用的策略及系统必须完成的功能; 估计完成该项工程需要的资源和成本,并且制定 工程进度表。
1.1 续
– 第一阶段:20世纪60年代中期以前,个体化生产 ;