计算机导论课件-第8章 软件工程
合集下载
《计算机导论》 第8章 计算机软件

⑵汇编语言 汇编语言是计算机的第二代语言。 例如,把上述用机器语言书写的三条指令用汇编语言来表示,即成 为: LD B, 03 LD A, 04 ADD A, B 从英文字母的含义可知,第一条指令是把3送到寄存器B中(LD是 load的缩写)。同理,第二条是把4送到寄存器A中,第三条则是把B 中的数加到A中去。
算法+数据结构=程序
任务8 常见程序设计语言 [任务描述] 本任务了解一些常见的程序设计语言的特点。 [相关知识与技能] 1. 面向机器语言
⑴机器语言:机器语言是计算机的第一代语言。 例如,用机器语言写的某一段程序为: 0000 0110 0000 0011 0011 1110 0000 0100 0000 其中,每一条机器指令都是用二进制代码表示的。 以上由“0”、“1”组成的三条指令对Z80机器而言就是完成3加4的运算。
图8-8 队列的动态示意图
4. 树和二叉树 树(tree)是数据结构中的一种非线性结构。树在我们周围随 处可见。这里讨论的树结构形同大自然中的树,也有树根、树叶 和树枝。不同之处是:前者树根在上,后者树根在下。
图8-9 树结构示意图
如果树结构每个结点的孩子结点个数最多为2个,这种树就 是二叉树,如图8-10所示。
1. 顺序存储结构 在程序设计中,由若干个数据元素组成的线性结构称为线性 表。线性表是最简单和最常用的数据结构。 例如,考虑一副扑克牌中相同花色的13张红桃,为了要在程 序中引用每一张红桃,可以建立13个变量 Card1,Card2,…,Card13。每一张牌有确定的值,如“红 桃2”、“红桃9”等。
图8-10 二叉树 图8-11 图8-9树对应的二叉树
8.3 程序设计
软件工程导论课件第8章

33
5. 数据重构 对数据体系结构差的程序很难进行适应性和 完善性维护,因此,数据体系结构比源代码对程序 的长期生存力有更大影响。 数据重构是一种全范围的再工程活动。由于 数据重构对程序体系结构及程序中的算法有很大影 响,对数据的修改必然会导致程序体系结构或代码 层的改变。
3
2.适应性维护 为适应变化了的环境界面而修改软件的活动, 称为适应性维护。包括: (1)因硬件或支撑软件改变引起的变化; (2)将软件移植到新的机种上运行; (3)因数据环境的变化而做的变更。 这类维护大约占软件维护总工作量的25%。
4
3.完善性维护 为了满足用户要求,就得对软件进行修改和 扩充,我们称这种维护为完善性维护。完善性维护 主要包括: (1)提高处理效率; (2)提高性能。 在整个维护工作中, 完善性维护大约占50% 左右,区居第一位。
3. 逆向工程 软件的逆向工程是,分析程序以便在比源代码 更高的抽象层次上创建出程序的某种描述的过程, 也就是说,逆向工程是一个恢复设计结果的过程。 4. 代码重构 某些老程序的体系结构比较合理,但是,一些 模块的编码方式却是难于理解、测试和维护的。在 这种情况下,可以重构这些模块的代码。 通常,代码重构并不修改程序的体系结构,它 只关注个体模块的设计细节以及在模块中定义的局 部数据结构。如果重构扩展到模块边界以外并涉及 软件体系结构,则重构变成了正向工程。
13
(四)软件维护过程 维护过程的实质是对软件定义和开发过程的修 改和压缩。维护过程的主要任务是:建立维护机构, 填写维护报告和评价,为每个维护要求规定一种规 范化的处理序列,建立对维护活动的登记制度及规 定评价复审的标准。 1.维护组织 机构中有一名维护管理员总负责,每项维护要 求都通过维护管理员转交给相应的系统管理员去评 价。系统管理员对维护任务做出评价之后,由变化 授权人决定应该进行的活动,最后由系统管理员去 执行维护任务。
5. 数据重构 对数据体系结构差的程序很难进行适应性和 完善性维护,因此,数据体系结构比源代码对程序 的长期生存力有更大影响。 数据重构是一种全范围的再工程活动。由于 数据重构对程序体系结构及程序中的算法有很大影 响,对数据的修改必然会导致程序体系结构或代码 层的改变。
3
2.适应性维护 为适应变化了的环境界面而修改软件的活动, 称为适应性维护。包括: (1)因硬件或支撑软件改变引起的变化; (2)将软件移植到新的机种上运行; (3)因数据环境的变化而做的变更。 这类维护大约占软件维护总工作量的25%。
4
3.完善性维护 为了满足用户要求,就得对软件进行修改和 扩充,我们称这种维护为完善性维护。完善性维护 主要包括: (1)提高处理效率; (2)提高性能。 在整个维护工作中, 完善性维护大约占50% 左右,区居第一位。
3. 逆向工程 软件的逆向工程是,分析程序以便在比源代码 更高的抽象层次上创建出程序的某种描述的过程, 也就是说,逆向工程是一个恢复设计结果的过程。 4. 代码重构 某些老程序的体系结构比较合理,但是,一些 模块的编码方式却是难于理解、测试和维护的。在 这种情况下,可以重构这些模块的代码。 通常,代码重构并不修改程序的体系结构,它 只关注个体模块的设计细节以及在模块中定义的局 部数据结构。如果重构扩展到模块边界以外并涉及 软件体系结构,则重构变成了正向工程。
13
(四)软件维护过程 维护过程的实质是对软件定义和开发过程的修 改和压缩。维护过程的主要任务是:建立维护机构, 填写维护报告和评价,为每个维护要求规定一种规 范化的处理序列,建立对维护活动的登记制度及规 定评价复审的标准。 1.维护组织 机构中有一名维护管理员总负责,每项维护要 求都通过维护管理员转交给相应的系统管理员去评 价。系统管理员对维护任务做出评价之后,由变化 授权人决定应该进行的活动,最后由系统管理员去 执行维护任务。
软件工程导论课件

软件工程
n 软件发展 n 软件危机 n 软件工程定义 n 软件工程内容
软件发展——四个阶段
程序设计
• 50年代中60年代中
程序系统
软件工程
• 60年代中70年代中
• 70年代中80年代中
第四阶段 • 80年代中-现在
软件发展——程序设计阶段
n 软件生产个体化
规模小,编写者和使用者同一个人
n 软件是设计者头脑中隐含过程
打破软件生产个体化特征 工程化的设计原则、方法和标准
l 新的挑战
微处理器和个人计算机 分布式处理系统 局域网、广域网 宽带数字通讯
软件发展——第四阶段
l 软件架构发生变化
集中主机环境 客户机/服务器(二层) 客户机/服务器(三层) 浏览器/服务器
集中主机
客户机/服务器(二层)
客户机/服务器(三层)
除程序清单,无文档材料保存
ቤተ መጻሕፍቲ ባይዱ
软件发展——程序系统阶段
l 产品软件
由专门软件开发组织开发
l 软件作坊
软件开发组织,沿用早期个体化软件开发方法
l 软件危机
软件维护工作耗费大量资源
l 软件工程
1968年,北大西洋公约组织计算机科学家讨论软件危机, 提出软件工程
软件发展——软件工程阶段
l 软件危机得到缓解
开发人员对用户信息交流不充分,产品不符合用户需求
程序员做出的产品
现场安装
用户原来设想
软件危机——主要表现
l (3)软件产品质量靠不住
软件产品保证技术(审查、复审、测试)未坚持不懈应 用软件开发全过程
l (4)软件可维护性差
开发时未考虑,很多错误难以改正
软件危机——主要表现
n 软件发展 n 软件危机 n 软件工程定义 n 软件工程内容
软件发展——四个阶段
程序设计
• 50年代中60年代中
程序系统
软件工程
• 60年代中70年代中
• 70年代中80年代中
第四阶段 • 80年代中-现在
软件发展——程序设计阶段
n 软件生产个体化
规模小,编写者和使用者同一个人
n 软件是设计者头脑中隐含过程
打破软件生产个体化特征 工程化的设计原则、方法和标准
l 新的挑战
微处理器和个人计算机 分布式处理系统 局域网、广域网 宽带数字通讯
软件发展——第四阶段
l 软件架构发生变化
集中主机环境 客户机/服务器(二层) 客户机/服务器(三层) 浏览器/服务器
集中主机
客户机/服务器(二层)
客户机/服务器(三层)
除程序清单,无文档材料保存
ቤተ መጻሕፍቲ ባይዱ
软件发展——程序系统阶段
l 产品软件
由专门软件开发组织开发
l 软件作坊
软件开发组织,沿用早期个体化软件开发方法
l 软件危机
软件维护工作耗费大量资源
l 软件工程
1968年,北大西洋公约组织计算机科学家讨论软件危机, 提出软件工程
软件发展——软件工程阶段
l 软件危机得到缓解
开发人员对用户信息交流不充分,产品不符合用户需求
程序员做出的产品
现场安装
用户原来设想
软件危机——主要表现
l (3)软件产品质量靠不住
软件产品保证技术(审查、复审、测试)未坚持不懈应 用软件开发全过程
l (4)软件可维护性差
开发时未考虑,很多错误难以改正
软件危机——主要表现
软件工程PPT课件

02
需求分析的方法包括功能分析 、数据流图、实体关系图等。
03
需求分析过程中需要关注需求 的可实现性和可验证性,以确 保开发的软件能够满足用户的 需求。
需求规格说明
01
需求规格说明是软件需求工程的重要输出,它详细描述了软件 系统的功能、性能、安全等方面的要求。
02
需求规格说明应该清晰、准确、完整,并且易于理解和验证。
软件架构的重要性
软件架构决定了软件系统的性能、 可维护性、可扩展性和安全性等 关键特性,是软件设计过程中最 重要的环节之一。
常见的软件架构
常见的软件架构包括单体应用架 构、微服务架构、服务导向架构 等,不同的架构适用于不同的应 用场景。
数据设计
数据设计概述
数据设计是指对软件系统中的 数据进行规划、组织、存储和
06
软件维护工程
软件维护的定义与分类
总结词
软件维护是软件工程的重要环节,涉及对已交付软件产品的修改、完善和优化。
详细描述
软件维护是指在软件交付后,为了改正错误、改进性能或其他目的,对软件进行的修改活动。根据维护活动的内 容和性质,软件维护可分为纠错性维护、适应性维护、完善性维护和预防性维护。
软件维护的过程
管理的方法和过程。
数据模型
数据模型是数据设计的核心, 包括概念数据模型、逻辑数据 模型和物理数据模型等。
数据存储
数据存储是数据设计的关键环节 ,需要考虑数据的存储介质、存 储方式和存储容量等因素。
数据安全
数据安全是数据设计的重要考 虑因素,包括数据的加密、备
份、恢复和访问控制等。
界面设计
界面设计概述
需求规格说明
将收集到的需求整理成文档,明确软件的功能、性能、安全 性等要求。
计算机导论第8章软件工程new

PPT文档演模板
计算机导论第8章软件工程new
8.11 软件工程环境
1.软件开发环境概述
(1) 软件开发环境:在计算机的基本软件的基础上,为了
支持软件的开发而提供的一组工具软件系统 。
(2) 对软件开发环境的要求: 一体化 、通用性 、适应性和 灵活性 、易使用、经济高效 。
PPT文档演模板
计算机导论第8章软件工程new
发工具。
PPT文档演模板
计算机导论第8章软件工程new
8.1 软件工程概述
2.基本概念
• 软件工程 :研究大规模程序设计的方法、工具 和管理的一门工程科学,也就是运用系统的、 规范的和可定量的方法来开发、运行和维护软 件的系统工程。
PPT文档演模板
计算机导论第8章软件工程new
8.1 软件工程概述
8.11 软件工程环境
3.软件工具的基本概念
软件工具 :指为支持计算机软件的开发、 维护、模拟、移植或管理而研制的程序系 统。 (软件工具通常由工具、工具接口和工具用 户接口3部分构成)
PPT文档演模板
计算机导论第8章软件工程new
3rew
演讲完毕,谢谢听讲!
再见,see you again
PPT文档演模板
PPT文档演模板
计算机导论第8章软件工程new
8.3 软件开发方法
3.面向数据结构方法
通过分析信息结构,并使用专门的图形描述工 具——数据结构图进行系统分析,从而得到软件结 构。
4.面向对象方法
从分析组成系统的对象开始,以数据抽象的 类为基础、自底向上的开发方法。
PPT文档演模板
计算机导论第8章软件工程new
2. 影响软件质量的因素:
《软件工程导论》课件

定义
软件维护是指在软件运行过程中,为了改 正错误、满足新的需求或改进性能等目的 ,对软件进行的修改和调整。
预防性维护
为了提高软件的可维护性和可靠性而进行 的维护活动。
改正性维护
为了纠正软件中存在的错误而进行的维护 活动。
完善性维护
为了扩充和增强软件功能而进行的维护活 动。
适应性维护
为了使软件适应外部环境的变化而进行的 维护活动。
介绍如何评估软件架构的合理性 、可扩展性和可维护性,以及如 何根据业务需求和系统规模选择 合适的架构。
架构设计原则
强调架构设计时应遵循的几个重 要原则,如模块化、开放-封闭原 则、单一职责原则等。
数据设计
数据模型
介绍常见的数据模型,如关系模型、面向对象模型、键-值存储模型等,以及它们的应 用场景和优缺点。
02
03
界面设计原则
交互设计
强调界面设计时应遵循的几个重 要原则,如用户友好、一致性、 可用性等。
介绍常见的交互方式,如按钮、 菜单、对话框等,以及如何通过 良好的交互设计提高用户体验。
05
CHAPTER
软件测试
单元测试
总结词
单元测试是对软件中的最小可测试单元进行检查和验 证,通常以函数或方法为单位进行测试。
详细描述
单元测试主要关注软件中的细节问题,检查单个函数 或方法的正确性、性能和边界条件等。通过单元测试 ,可以尽早发现代码中的错误和缺陷,提高软件质量 。
集成测试
总结词
集成测试是在单元测试的基础上,将多个模块或组件 组合在一起进行测试,以验证它们之间的集成是否正 常工作。
详细描述
集成测试的主要目的是检查模块之间的接口和通信是否 正常,以及是否存在潜在的缺陷或问题。通过集成测试 ,可以确保软件在组合时能够正常工作,满足设计要求 。
计算机导论PPT第八章_程序设计语言(1)

表 1.1 两个整数相加的机器语言
汇编语言
接下来的演化是伴随着用带符号或助记符的指令和地址代替二进 制代码而发生的。这种助记符语言就是汇编语言。 汇编程序将汇编语言代码翻译成机器语言代码。
表 1.2 两个整数相加的汇编语言
高级语言
尽管汇编语言大大提高了编程效率,但仍然需要程序员在所用的 硬件上花费大部分精力。高级语言适用于许多不同的计算机,其 设计目标就是使程序员摆脱汇编语言繁琐的细节,能够把精力集 表 1.3 C++中的加法程序 中到应用程序上。 人们开发了多种高 级语言,著名的有 BASIC、PASCAL 、C、C++和Java等 高级语言和汇编语 言有一个共性:它 们必须被转化为机 器语言
典型的面向对象语言 C++ Java
图 3.6 面向对象的基本特征
函数式模式
函数式模式中程序被看成是一个数学函数,将一组输 入映射到一组输出的黑盒子。
图 3.7 函数式语言中的函数
例如,定义一个称为 first 的原始函数 ,由它完成从一个数 据列表抽取第一个元素的功能;在定义一个函数rest,由 它完成从一个数据列表中抽取除第一个元素以外的所有 元素的功能。那么通过这两个函数的组合使用就可以定 义一个函数来完成对第三个元素的抽取。如图3.8
在面向对象模式中,文件能把所有的被文件执行的 过程(在面向对象模式中称为方法)打包在一起, 包括打印、复制和删除等。程序只需向对象发出相 应请求。
图 3.4 面向对象模式的概念
类 如图 3.5 所示,相同类型的对象(如文件)需要一组 方法,这些方法显示了这类对象对来自“领地”外的 刺激的反应。为了创建这些方法,面向对象语言使 用称为类的单元。
多态
汇编语言
接下来的演化是伴随着用带符号或助记符的指令和地址代替二进 制代码而发生的。这种助记符语言就是汇编语言。 汇编程序将汇编语言代码翻译成机器语言代码。
表 1.2 两个整数相加的汇编语言
高级语言
尽管汇编语言大大提高了编程效率,但仍然需要程序员在所用的 硬件上花费大部分精力。高级语言适用于许多不同的计算机,其 设计目标就是使程序员摆脱汇编语言繁琐的细节,能够把精力集 表 1.3 C++中的加法程序 中到应用程序上。 人们开发了多种高 级语言,著名的有 BASIC、PASCAL 、C、C++和Java等 高级语言和汇编语 言有一个共性:它 们必须被转化为机 器语言
典型的面向对象语言 C++ Java
图 3.6 面向对象的基本特征
函数式模式
函数式模式中程序被看成是一个数学函数,将一组输 入映射到一组输出的黑盒子。
图 3.7 函数式语言中的函数
例如,定义一个称为 first 的原始函数 ,由它完成从一个数 据列表抽取第一个元素的功能;在定义一个函数rest,由 它完成从一个数据列表中抽取除第一个元素以外的所有 元素的功能。那么通过这两个函数的组合使用就可以定 义一个函数来完成对第三个元素的抽取。如图3.8
在面向对象模式中,文件能把所有的被文件执行的 过程(在面向对象模式中称为方法)打包在一起, 包括打印、复制和删除等。程序只需向对象发出相 应请求。
图 3.4 面向对象模式的概念
类 如图 3.5 所示,相同类型的对象(如文件)需要一组 方法,这些方法显示了这类对象对来自“领地”外的 刺激的反应。为了创建这些方法,面向对象语言使 用称为类的单元。
多态
《软件工程全》课件

软件质量的标准
软件质量的标准包括ISO 9126、 McCall等,它们从不同角度对软 件质量进行了描述和评价。
单元测试
单元测试的概念
单元测试是对软件中的最小可测试单 元进行检查和验证。在面向对象编程 中,单元测试通常是对类的方法进行 测试。
单元测试的方法
单元测试的方法包括白盒测试和黑盒 测试。白盒测试需要了解内部实现细 节,而黑盒测试只需要关注输入和输 出结果。
软件工程的定义
详细描述
软件工程是一门研究软件开发和维护的学科,它采用工程化的方法和技术,将 系统化的开发过程、先进的开发技术和高效的开发管理结合起来,以高效地开 发高质量的软件产品。
软件工程的历史与发展
总结词:软件工程的历史与发展
详细描述:软件工程的历史可以追溯到20世纪60年代 。最初,软件开发主要依靠程序员的手动编程,随着软 件规模的扩大和复杂性的增加,软件开发过程中的问题 逐渐显现。为了解决这些问题,软件工程的概念和方法 逐渐形成和发展。随着时间的推移,软件工程不断演进 和完善,形成了许多经典的软件开发模型和方法论,如 瀑布模型、螺旋模型、迭代模型等。同时,随着技术的 不断发展,软件工程也在不断引入新的技术和方法,如 敏捷开发、持续集成和持续交付等。
系统测试与验收测试
系统测试的概念
系统测试是对整个系统的功能、性能 和其他方面进行全面的测试,以确保 系统能够满足用户需求。
验收测试的概念
验收测试是用户对系统的最终验收过 程,其目的是确认系统是否符合合同 或需求规格说明中的要求。
PART 06
软件维护与演化
软件维护的定义与分类
定义
软件维护是在软件运行过程中,为了改正错误、满足新的需求、改进性能等目的,对软件进行的修改和调整。
软件质量的标准包括ISO 9126、 McCall等,它们从不同角度对软 件质量进行了描述和评价。
单元测试
单元测试的概念
单元测试是对软件中的最小可测试单 元进行检查和验证。在面向对象编程 中,单元测试通常是对类的方法进行 测试。
单元测试的方法
单元测试的方法包括白盒测试和黑盒 测试。白盒测试需要了解内部实现细 节,而黑盒测试只需要关注输入和输 出结果。
软件工程的定义
详细描述
软件工程是一门研究软件开发和维护的学科,它采用工程化的方法和技术,将 系统化的开发过程、先进的开发技术和高效的开发管理结合起来,以高效地开 发高质量的软件产品。
软件工程的历史与发展
总结词:软件工程的历史与发展
详细描述:软件工程的历史可以追溯到20世纪60年代 。最初,软件开发主要依靠程序员的手动编程,随着软 件规模的扩大和复杂性的增加,软件开发过程中的问题 逐渐显现。为了解决这些问题,软件工程的概念和方法 逐渐形成和发展。随着时间的推移,软件工程不断演进 和完善,形成了许多经典的软件开发模型和方法论,如 瀑布模型、螺旋模型、迭代模型等。同时,随着技术的 不断发展,软件工程也在不断引入新的技术和方法,如 敏捷开发、持续集成和持续交付等。
系统测试与验收测试
系统测试的概念
系统测试是对整个系统的功能、性能 和其他方面进行全面的测试,以确保 系统能够满足用户需求。
验收测试的概念
验收测试是用户对系统的最终验收过 程,其目的是确认系统是否符合合同 或需求规格说明中的要求。
PART 06
软件维护与演化
软件维护的定义与分类
定义
软件维护是在软件运行过程中,为了改正错误、满足新的需求、改进性能等目的,对软件进行的修改和调整。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8.2 系统分析
8.2.2 面向对象分析
2. 类图 【例】电梯的一个类图。
按钮
电梯按钮
has 1
电梯
楼层按钮
has 1
8.2 系统分析
8.2.2 面向对象分析
3 . 状态图 状态图是描述一个实体基于事件反应的动态行为,显示了该实体如何根 据当前所处的状态对不同的事件做出反应。通常,UML状态图可用于表 示类、角色、子系统或组件的复杂行为。
8.2 系统分析
8.2.2 面向对象分析
1 . 用例图
用例图由参与者(Actor)、用例(Use Case)、系统边界和箭头组成 。
➢ 矩形表示系统边界或系统; ➢ 圆角矩形表示用例的行动;
➢ 椭圆形表示用例;
➢ 线条人物表示参与者;
➢ 箭头表示参与者和系统间的关联关系。箭头尾部用来表示启动交互的 一方,箭头头部用来表示被启动的一方。
注意:软件系统模块间的内聚必须最大化。
8.3 系统设计
8.3.2 面向对象设计
在面向对象设计中,设计阶段通过详细描述类的细节(列出类的属性 和方法)来继续。在面向对象设计中,电梯设计中的4个类如下图所示。
8.4 系统实现
在系统实现阶段,程序员为面向过程设计中的模块编写程序单元, 或者实现面向对象设计中的类。
8.1 软件生命周期
8.1.3 软件工程的三要素
目前,最广泛应用的软件工程方法学分别是传统方法学(面向过程方法 学)和面向对象方法学。
1.传统方法学 传统方法学也称面向过程方法学,它采用结构化技术(结构化分析 、结构化设计和结构化实现)来完成软件开发的各项任务,并使用 适当的软件工具或软件工程来支持结构化技术的运用。 传统方法学把软件生命周期的全过程依次划分为若干个阶段,然后 顺序地完成每个阶段的任务。采用此方法开发软件,从对问题的抽 象逻辑分析开始,逐阶段地按顺序进行开发。
8.1 软件生命周期
8.1.3 软件工程的三要素
2.面向对象方法学 与传统方法学相反,面向对象方法学则把数据和行为看成同等重要,它是 一种以数据为主线,把数据和行为紧密地结合起来的方法。 概括地说,面向对象方法学具有下述4个要点: (1)把对象(object)作为融合了数据和行为的软件构件。 (2)把所有的对象都划分成类(class)。 (3)按照父类(或称为基类)与子类(或称为派生类)的关系,把若干 个相关类组成一个层次结构的系统(也称为类等级)。 (4)对象彼此间仅能通过发送消息互相联系。
8.4.1 语言选择
在系统实现阶段,工程团队需要从面向过程语言中选择一种或一组 语言。不同的编程语言有着不同的优势,要根据实际项目的特性去选择 编程语言,而有的项目可能同时用到多种编程语言。
8.4.2 软件质量
一般来讲,软件质量可以用三个广义的属性来度量:可操作性、可 维护性和可迁移性。每个属性还可以展开,如下图所示。
注意:软件系统中模块间的耦合必须最小化。
8.3 系统设计
8.3.1 面向过程设计
2 . 模块化 (2)内聚性
内聚性也称块内联系,是指模块之间的功能强度的度量,即一个模 块内部各个元素彼此结合的紧密程度的度量。
模块中组成元素结合的越紧密,模块的内聚性就越高,模块的独立 性也就越高。理想的内聚性要求模块的功能应明确、单一,即一个模块 只做一件事情。
8.1 软件生命周期
8.1.1 软件的概念
一般来讲,计算机软件有三部分组成:程序、数据结构和文档。 (1)程序是指为进行某项活动或过程所规定的执行途径,即数据与 指令的集合; (2)数据结构是指数据元素的集合和数据元素之间的关系的集合, 是计算机存储、组织数据的方式; (3)文档则是描述程序开发过程、开发方法及使用说明等资料的集 合。
8.2 系统分析
8.2.2 面向对象分析
1 . 用例图
【例】老式电梯的用例图。图中的系统是电梯,动作者是电梯的使用
者。这里有两个用例:按电梯按钮(在每层的大厅)和在电梯内按楼
层按钮。
电梯
使用者
按电梯按钮 按楼层按钮
8.2 系统分析
8.2.2 面向对象分析
2. 类图 类图是显示了模型的静态结构,特别是模型中存在的类、类的内部 结构以及它们与其他类的关系等。 类图由许多说明性的模型元素组成,例如类、包和它们之间的关系 ,这些元素和它们的内容互相连接。类图最常用的是UML图,显示 类、接口以及它们之间的静态结构和关系,它用于描述系统的结构 化设计。
8.3 系统设计
在设计阶段,系统所有的组成部分都被定义。系统设计内容主要包 括:确定设计方针和方法;将系统分解为若干子系统;确定各子系统的 目标、功能及其相互关系;决定对子系统的管理体制和控制方式;对各 子系统进行技术设计和评价;对全系统进行技术设计和评价等。
8.3.1 面向过程设计
1. 结构图 在面向过程设计中,说明模块间关系的常用工具是结构图。 结构图是指以模块的调用关系为线索,自上而下的连线表示调用关系并 注明参数传递的方向和内容,从宏观上反映软件层次结构的图形。
8.2 系统分析
8.2.1 面向过程分析
高级程序设计语言中,通常有三种不同的程序结构,即:顺序结构、 选择结构和循环结构,它们的流程图如下。
8.2 系统分析
8.2.2 面向对象分析
如果实现过程使用的是面向对象语言,那么分析过程就是面向对象分析 过程。此情况下可以使用多种工具来编写规格说明文档,例如用例图、 类图、状态图等。 1 . 用例图 用例图(User Case)是指由参与者(Actor)、用例(Use Case)以 及它们之间的关系构成,用于描述系统功能的视图。用例图主要用于对 系统、子系统或类的功能行为进行建模。
1 . 软件工程的基本原理
中大型软件开发过程本身就是一项复杂的工程活动,需要投入大量的人
力、物力和财力,就像建筑工程一样,必须按照工程方法学来标准化管
理。一般来讲,软件工程应该遵循以下七条基本原理:
(1)用分阶段的生存周期计划严格管理
(2)坚持进行阶段评审
(3)实行严格的产品控制
(4)采用现代程序设计方法
8.2 系统分析
8.2.1 面向过程分析
或
数据的源点/终点
或
处理
或
文件(数据存储)
数据流
图8-2 数据流图的基本符
8.2 系统分析
8.2.1 面向过程分析
【例】下图是数据流图,反映了仓库管理员在接收事务(如出库事 务)后接下来必须完成的事务的过程,并且体现了过程中产生的数据清 单(如:库存清单、定货报表)的流向和处理过程。
8.2 系统分析
8.2.1 面向过程分析
1 . 数据流图 数据流图是结构化分析方法中使用的工具,是从数据传递和加工角度, 以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统 必须完成的逻辑功能,所以它只是一种功能模型。 在面向过程开发方法中,数据流图是需求分析阶段产生的结果,它们使 用4种符号,如图8-2所示:
验证过程 确认过程 联合评审过程 审核过程 问题解决过程
易用性过程
生存周期组织过程 管理过程 改进过程
资产管理过程 领域工程过程
基础设施过程 人力资源过程 重用大纲管理过程
图8-1 国标GB/T 8566-2007的结构
8.1 软件生命周期
8.1.3 软件工程的三要素
通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方 法学(Methodology),软件工程方法学包含3个要素:方法、工具和 过程。 ➢方法是完成软件开发的各项任务的技术方法,是回答“怎样做”的问 题; ➢工具是为运用方法而提供的自动的或半自动的软件工程支撑环境; ➢过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规 定了完成各项任务的工作步骤。
(5)结果应能清楚地审查
(6)开发小组的人员应该少而精
(7)不断改进软件工程实践的必要性
8.1 软件生命周期
8.1.2 软件工程的含义
2 . 软件生命周期 软件的生命周期,亦称软件的生存周期。是按开发软件的规模和复杂程 度,从时间上把软件开发的整个过程(从计划开发开始到软件报废为止 的整个历史阶段)进行分解,形成相对独立的几个阶段,每个阶段又分 解成几个具体的任务,然后按规定顺序依次完成阶段的任务并规定一套 标准的文档作为各个阶段的开发成果,最后生产出高质量的软件。
8.ቤተ መጻሕፍቲ ባይዱ 系统分析
8.2.1 面向过程分析
【例】下图是反映教师、课程、学生三个实体之间关系的ER图。教 师与课程之间是多对多的关系,学生与课程之间是多对多的关系。
8.2 系统分析
8.2.1 面向过程分析
3 . 程序流程图 程序流程图(也称框图)是程序分析中最基本、最重要的分析技术 ,也是进行程序流程分析的最基本的工具。 程序流程图用一组框图符号来表示程序中的各种操作,它是人们对 解决问题的方法、思路或算法的一种描述。程序流程图的基本符号 及符号的意义如下图所示:
8.3 系统设计
8.3.1 面向过程设计
1. 结构图 结构图的基本图形符号如下图所示。
8.3 系统设计
8.3.1 面向过程设计
1. 结构图 【例】结构图的实例(“销售订单处理”功能结构图)如下图所示。
8.3 系统设计
8.3.1 面向过程设计
2 . 模块化 模块化是指解决一个复杂问题时自顶向下逐层把系统划分成若干子模块 的过程,通过模块的不同组合得到不同品种、不同规格的产品。 模块化意味着将大项目分解成较小的部分,以便能够容易理解和处理, 换言之,模块化意味着将大程序分解成能相互通信的小程序。 模块化是一种将复杂系统分解成多个更好管理的子模块的方式,当系统 被分解成模块时,主要关心两点:耦合性和内聚性。
8.1 软件生命周期
8.1.1 软件的概念
➢按功能分计算机软件可分为系统软件、支撑软件和应用软件三 大类。 ➢按规模分计算机软件又可分为:微型、小型、中型、大型和超 大型软件; ➢按工作方式分计算机软件可分:实时处理软件、分时处理软件 、交互式处理软件和批处理软件。