您好,欢迎来到上海分类信息网
免费发信息

计算机二级基础:程序设计、软件设计基础

2024-5-24 23:10:06发布5次查看ip:发布人:
第 2 章 程序设计基础
2.1 程序设计的方法与风格
养成良好的程序设计风格,主要考虑下述因素:
(1)源程序文档化
① 符号名的命名:符号名的命名应具有一定的实际含义,以便于对程序功 能的理解;
② 程序注释:在源程序中添加正确的注释可帮助人们理解程序。程序注释 可分为序言性注释和功能性注释。语句结构清晰第一、效率第二;
③ 视觉组织:通过在程序中添加一些空格、空行和缩进等,使人们在视觉 上对程序的结构一目了然。
(2)数据说明的方法 为使程序中的数据说明易于理解和维护,可采用下列数据说明的风格,见
表 2-1。
表 2-1 数据说明风格
数据说明风格 详细说明
次序应规范化 使数据说明次序固定,使数据的属性容易查找,也有利于测试、排错 和维护
变量安排有序化 当多个变量出现在同一个说明语句中时,变量名应按字母顺序排序, 以便于查找
使用注释 在定义一个复杂的数据结构时,应通过注解来说明该数据结构的特点
(3)语句的结构程序 语句的结构程序应该简单易懂,语句构造应该简单直接。
(4)输入和输出 输入输出比较简单,这里就不作介绍。
11
2.2 结构化程序设计
1. 结构化程序设计的原则
结构化程序设计方法引入了工程思想和结构化思想,使大型软件的开发和编 程得到了极大的改善。结构化程序设计方法的主要原则为:自顶向下、逐步求精、 模块化和限制使用 goto 语句。
① 自顶向上:先考虑整体,再考虑细节;先考虑全局目标,再考虑局部 目标;
② 逐步求精:对复杂问题应设计一些子目标作为过渡,逐步细化;
③ 模块化:把程序要解决的总目标分解为分目标,再进一步分解为具体的 小目标,把每个小目标称为一个模块。
限制使用 goto 语句:在程序开发过程中要限制使用 goto 语句。
2. 结构化程序的基本结构
结构化程序的基本结构有三种类型:顺序结构、选择结构和循环结构。
① 顺序结构:是最基本、最普通的结构形式,按照程序中的语句行的先后 顺序逐条执行;
② 选择结构:又称为分支结构,它包括简单选择和多分支选择结构;
③ 循环结构:根据给定的条件,判断是否要重复执行某一相同的或类似的 程序段。循环结构对应两类循环语句:先判断后执行的循环体称为当型循环结构; 先执行循环体后判断的称为直到型循环结构。
2.3 面向对象方法
面向对象方法涵盖对象及对象属性与方法、类、继承、多态性几个基本要素。
1. 对象
通常把对象的操作也称为方法或服务。 属性即对象所包含的信息,它在设计对象时确定,一般只能通过执行对象的
操作来改变。属性值应该指的是纯粹的数据值,而不能指对象。 操作描述了对象执行的功能,若通过信息的传递,还可以为其他对象使用。
12
2. 类和实例
类是具有共同属性、共同方法的对象的集合。它描述了属于该对象类型的所 有对象的性质,而一个对象则是其对应类的一个实例。
类是关于对象性质的描述,它同对象一样,包括一组数据属性和在数据上的 一组合法操作。
3. 消息
消息是实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信 息,它统一了数据流和控制流。
一个消息由三部分组成:接收消息的对象的名称、消息标识符(消息名)和 零个或多个参数。
4. 继承 广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们。 继承分为单继承与多重继承。单继承是指,一个类只允许有一个父类,即类
等级为树形结构。多重继承是指,一个类允许有多个父类。
5. 多态性
对象根据所接受的消息而做出动作,同样的消息被不同的对象接受时可导致 完全不同的行动,该现象称为多态性。
13
第 3 章 软件工程基础
3.1 软件工程基本概念
1. 软件定义与软件特点
软件指的是计算机系统中与硬件相互依存的另一部分,包括程序、数据和相 关文档的完整集合。
程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计 算机执行的指令序列。
数据是使程序能正常操纵信息的数据结构。文档是与程序的开发、维护和使 用有关的图文资料。
可见,软件由两部分组成:
机器可执行的程序和数据;
机器不可执行的,与软件开发、运行、维护、使用等有关的文档。 根据应用目标的不同,软件可分应用软件、系统软件和支撑软件(或工具
软件),见表 3-1。
表 3-1 软件的分类
名称 描述
应用软件 为解决特定领域的应用而开发的软件
系统软件 计算机管理自身资源,提高计算机使用效率并为计算机用户提 供各种服务的软件
支撑软件(或工具软件) 支撑软件是介于两者之间,协助用户开发软件的工具性软件
2. 软件工程
为了摆脱软件危机,提出了软件工程的概念。软件工程学是研究软件开发和 维护的普遍原理与技术的一门工程学科。所谓软件工程是指采用工程的概念、原 理、技术和方法指导软件的开发与维护。软件工程学的主要研究对象包括软件开 发与维护的技术、方法、工具和管理等方面。
14
表 3-2 软件工程三要素
名称 描述
方法 方法是完成软件工程项目的技术手段
工具 工具支持软件的开发、管理、文档生成
过程 过程支持软件开发的各个环节的控制、管理
3.2 软件th命周期
1. 软件th命周期概念 软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。 软件生命周期分为 3 个时期共 8 个阶段,
软件定义期:包括问题定义、可行性研究和需求分析 3 个阶段;
软件开发期:包括概要设计、详细设计、实现和测试 4 个阶段;
运行维护期:即运行维护阶段。 软件生命周期各个阶段的活动可以有重复,执行时也可以有迭代,如图 3-1
所示。
图 3-1 软件生命周期
15
在图 3-1 中的软件生命周期各阶段的主要任务,见表 3-3。
表 3-3 软件th命周期各阶段的主要任务
任务 描述
问题定义 确定要求解决的问题是什么
可行性研究 与计划制定
决定该问题是否存在一个可行的解决办法,指定完成开发任务的实施计划
需求分析 对待开发软件提出需求进行分析并给出详细定义。编写软件规格说明书及初 步的用户手册,提交评审
软件设计 通常又分为概要设计和详细设计两个阶段,给出软件的结构、模块的划分、 功能的分配以及处理流程。这阶段提交评审的文档有概要设计说明书、详细 设计说明书和测试计划初稿
软件实现 在软件设计的基础上编写程序。这阶段完成的文档有用户手册、操作手册等 面向用户的文档,以及为下一步作准备而编写的单元测试计划
软件测试 在设计测试用例的基础上,检验软件的各个组成部分。编写测试分析报告
运行维护 将已交付的软件投入运行,同时不断的维护,进行必要而且可行的扩充和删改
3.3 软件设计
3.3.1 软件设计基本概念
(1)按技术观点分 从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程
设计。
① 结构设计定义软件系统各主要部件之间的关系;
② 数据设计将分析时创建的模型转化为数据结构的定义;
③ 接口设计是描述软件内部、软件和协作系统之间以及软件与人之间如何 通信;
④ 过程设计则是把系统结构部件转换为软件的过程性描述。
(2)按工程管理角度分 从工程管理角度来看,软件设计分两步完成:概要设计和详细设计。
16
结构或数据库模式;
② 详细设计确立每个模块的实现算法和局部数据结构,用适当方法表示算 法和数据结构的细节。
3.3.2 软件设计的基本原理
1. 软件设计中应该遵循的基本原理和与软件设计有关的概念
(1)抽象 软件设计中考虑模块化解决方案时,可以定出多个抽象级别。抽象的层次从
概要设计到详细设计逐步降低。
(2)模块化 模块是指把一个待开发的软件分解成若干小的简单的部分。模块化是指解决
一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。
(3)信息隐蔽 信息隐蔽是指在一个模块内包含的信息(过程或数据),对于不需要这些信
息的其他模块来说是不能访问的。
(4)模块独立性 模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块
的联系最少且接口简单。模块的独立程度是评价设计好坏的重要度量标准。衡量 软件的模块独立性使用耦合性和内聚性两个定性的度量标准。内聚性是信息隐蔽 和局部化概念的自然扩展。一个模块的内聚性越强则该模块的模块独立性越强。 一个模块与其他模块的耦合性越强则该模块的模块独立性越弱。
2. 衡量软件模块独立性使用耦合性和内聚性两个定性的度量标准
内聚性是度量一个模块功能强度的一个相对指标。内聚是从功能角度来衡量 模块的联系,它描述的是模块内的功能联系。内聚有如下种类,它们之间的内聚 度由弱到强排列:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序 内聚、功能内聚。
耦合性是模块之间互相连接的紧密程度的度量。耦合性取决于各个模块之间
17
之间的耦合度由高到低排列:内容耦合、公共耦合、外部耦合、控制耦合、标记 耦合、数据耦合、非直接耦合。
在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设 计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚 性,有利于提高模块的独立性。
3.4 结构化分析方法
1. 结构化分析方法的定义
结构化分析方法就是使用数据流图(dfd)、数据字典(dd)、结构化英语、 判定表和判定树的工具,来建立一种新的、称为结构化规格说明的目标文档。
结构化分析方法的实质是着眼于数据流、自顶向下、对系统的功能进行逐层 分解、以数据流图和数据字典为主要工具,建立系统的逻辑模型。
2. 结构化分析方法常用工具
(1)数据流图(dfd) 数据流图是系统逻辑模型的图形表示,即使不是专业的计算机技术人员也容
易理解它,因此它是分析员与用户之间极好的通信工具。
(2)数据字典(dd) 数据字典是对数据流图中所有元素的定义的集合,是结构化分析的核心。 数据流图和数据字典共同构成系统的逻辑模型,没有数据字典数据流图就不
严格,若没有数据流图,数据字典也难于发挥作用。
数据字典中有 4 种类型的条目:数据流、数据项、数据存储和加工。
(3)判定表 有些加工的逻辑用语言形式不容易表达清楚,而用表的形式则一目了然。如
果一个加工逻辑有多个条件、多个操作,并且在不同的条件组合下执行不同的操 作,那么可以使用判定表来描述。
(4)判定树 判定树和判定表没有本质的区别,可以用判定表表示的加工逻辑都能用判定
18
3. 软件需求规格说明书
软件需求规格说明书是需求分析阶段的最后成果,是软件开发的重要文档之 一。它的特点是具有正确性、无歧义性、完整性、可验证性、一致性、可理解性、 可修改性和可追踪性。
3.5 软件测试
3.5.1 软件测试的目的和准则
1. 软件测试的目的
grenford.j.myers 给出了软件测试的目的:
测试是为了发现程序中的错误而执行程序的过程;
好的测试用例(test case)能发现迄今为止尚未发现的错误;
一次成功的测试是能发现至今为止尚未发现的错误。 测试的目的是发现软件中的错误,但是,暴露错误并不是软件测试的最终目
的,测试的根本目的是尽可能多地发现并排除软件中隐藏的错误。
2. 软件测试的准则
根据上述软件测试的目的,为了能设计出有效的测试方案,以及好的测试用 例,软件测试人员必须深入理解,并正确运用以下软件测试的基本准则:
所有测试都应追溯到用户需求;
在测试之前制定测试计划,并严格执行;
充分注意测试中的群集现象;
避免由程序的编写者测试自己的程序;
不可能进行穷举测试;
妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提 供方便。
3.5.2 软件测试的方法和实施
1. 软件测试方法
软件测试具有多种方法,依据软件是否需要被执行,可以分为静态测试和动
19
(1)静态测试和动态测试
① 静态测试包括代码检查、静态结构分析、代码质量度量等。其中代码检 查分为代码审查、代码走查、桌面检查、静态分析等具体形式;
② 动态测试。静态测试不实际运行软件,主要通过人工进行分析。动态测 试就是通常所说的上机测试,是通过运行软件来检验软件中的动态行为和运行结 果的正确性。
动态测试的关键是使用设计高效、合理的测试用例。测试用例就是为测试设 计的数据,由测试输入数据和预期的输出结果...
该用户其它信息

VIP推荐

上海分类信息网-上海免费发布信息-上海新闻网