第一范文网 - 专业文章范例文档资料分享平台

大学计算机《软件构造》课程复习纲要(代码大全部分)

来源:用户分享 时间:2025/10/15 4:09:55 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

《软件构造》课程复习纲要

1. 软件构造的概念

1) 测试和调试的区别

测试是为了发现错误 调试是为了改正错误

2) 软件开发包括哪些:

问题定义 需求分析 实现计划 总体设计

详细设计 (部分) 编码实现 系统集成 单元测试(部分) 系统测试 校正性的维护 功能强化

3) 软件构造活动主要是其中哪些部分?(以上黑体部分)

4) 软件构造的重要性

? 构造活动是开发软件的重要组成部分 ? 构造活动在开发软件中处于枢纽地位

? 把主要精力集中于创建活动,可以极大地提高程序员的生产效率 ? 创建活动的产品,源代码,往往是软件的唯一精确描述 ? 创建活动是唯一一项必不可少的工作

5) 隐喻(Software Metaphors)

? 常见的软件隐喻 (简单了解)

? 软件书写:写代码(Writing Code)

? 软件播种:生成系统(Growing a System)

? 软件珍珠培植法:系统积累(System Accretion) ? 软件创建:建造软件(building software)

? 实用软件技术:智能工具箱(The Intellectual Toolbox) ? 复合隐喻(Combing Metaphors) 2. 软件构造的前期准备工作

1) 软件构造的前期准备工作有哪些?

? 前期准备工作并非一成不变

构建活动的准备工作要根据项目特点调整 具体细节随项目的不同会有很大变化

? 构造开始前的准备工作有哪些

辨明软件项目的类型

明确问题定义 (问题定义:项目要解决的问题是什么) 明确需求规约 (需求定义详细规定了软件系统应该做什么)

明确软件架构的各组成部分(软件设计的高层部分,用于支撑更加细节的设计的框架)

什么是软件构造的前期准备工作

? 软件构造的前期准备工作是复查性的活动

明确前导性的工作结果有哪些

1

重新审视前导性工作是否完成 明确前导性工作完成的程度如何

? 准备工作的中心目标是降低风险

糟糕的需求分析 糟糕的项目计划 3. 构造技术

1) 模块化设计 (简单了解相关概念)

模块化设计的目标是使每个子程序都成为一个“黑盒子”:

? 你知道进入盒子和从盒子里出来的是什么,却不知道里边发生什么 ? 通过接口的定义明确其功能

“模块化”同时涉及到子程序设计和模块设计:

? 单独的子程序无法实现“黑盒子”的目标,因而需要模块 ? 但通过对子程序的控制可以达到模块化的效果

? 通过对一组子程序定义统一对外的接口,也完全有可能达到高度模块化这一目标 2) 模块和子程序的区别

? 子程序是具有一定功能的,可以调用的函数或过程,它可以封装为模块 ? 模块是指数据及作用于数据的子程序的集合,或者

? 模块也可能是指,可以提供一系列互相联系功能的子程序集合,而这些子程序之间不一定有公共的数据,

它是设计的最基本单元

3) 模块化:内聚性与耦合性(重要) 模块独立程度的衡量标准:

耦合性(Coupling):对一个软件结构内不同模块间互连程度的度量。 内聚性(Cohesion):标志一个模块内各个处理元素彼此结合的紧密程度,理想的内聚模块只做一件事情。

模块的内聚性:

内聚性表示了在一个模块中,各种操作及数据之间互相联系的紧密程度 内聚性的强弱程度用“强度”表示 应尽量提高内聚程度 强调“强内聚”的目的:

每一个模块只需作好一项工作,而不必过分考虑其它任务 模块内聚性分类:

偶然内聚:一组任务关系松散(低)

逻辑内聚:一组任务在逻辑上同属一类,例如均为输出(低) 时间内聚:一组任务必须在同一段时间内执行(低) 子程序的内聚性:

模块的强内聚性并不说明子程序内聚性强 子程序的内聚性影响到模块的实现质量 子程序内聚性分类:

可取的内聚性:

功能内聚性(最高):

功能内聚性是最强也是最好的一种内聚

当程序执行一项并且仅仅是一项工作时,属于功能内聚

2

顺序内聚性(较高):

子程序内包含需要按特定顺序进行的、逐步分享数据而又不形成一个完整功能的操作

通讯内聚性(中):

在一个子程序中,两个操作只是使用相同数据,而不存在其它任何联系时产生的

临时内聚性(低):

因为同时执行的原因才被放入同一个子程序里,这时产生临时内聚性

不可取的内聚性:

不可取的内聚性往往导致一些组织混乱而又难以调试和改进的代码 应尽量避免不可取的内聚性的出现

过程内聚性:

当子程序中的操作是按某一特定顺序进行的,就是过程内聚性 过程内聚性和顺序内聚性的区别:

? 顺序内聚性中的顺序操作使用的是相同数据 ? 过程内聚性中的操作使用的并不是相同数据

逻辑内聚性:

当一个子程序中同时含有几个操作,而其中一个操作又被传进来的控制标志所选择时,就

产生了逻辑内聚性

其内部操作仅仅是因为控制流,或者说“逻辑”的原因才联系到一起

3

偶然内聚性:

当同一个子程序中的操作之间无任何联系时,为偶然内聚性 偶然内聚性也叫作“无内聚性”

模块耦合性:

耦合性表示相互作用的模块之间的互连程度 应尽量降低模块之间的耦合性 强调“松耦合”的目的:

模块应被设计成可以提供一整套功能,以便程序的其它部分与它清楚地相互作用 耦合分类:

无任何连接:两个模块中的每一个都能独立地工作而不需要另一个的存在(最低耦合)。 数据耦合:两个模块彼此通过参数交换信息,且交换的仅仅是数据(低耦合)。 控制耦合:两个模块之间传递的信息有控制成分(中耦合)。 公共环境耦合:两个或多个模块通过公共环境相互作用

? 一个存数据,一个取数据(低耦合) ? 都存取数据(低--中之间)

内容耦合:

? 一个模块访问另一个模块的内部数据 ? 两个模块有一部分程序代码重叠

常见的OO耦合:

简单数据参数耦合:两个对象之间通过参数传递数据,并且为简单数据类型 简单对象耦合:一个对象实例化另一个对象所形成的耦合关系 对象参数耦合:两个对象之间通过对象参数传递数据 语义上的耦合 信息隐蔽

信息隐蔽有称为“封装”:使外部的可见部分和内部的不可见部分相互隔离 信息封装是设计模块和子程序的一种重要方法

对于模块而言,封装的部分称为内部信息,公开的部分称为模块的公开信息或接口

4) 结构化设计vs.面向对象设计(理解) 从模块的角度理解结构化设计和OO设计的区别:

面向对象设计中的模块与结构化设计中模块的含义是一致的

数据和功能的封装;满足信息隐蔽的要求;追求高内聚低耦合

结构化设计中模块和模块之间的关系,被紧紧局限于信息流(结构化设计是面向功能)

面向对象设计方法,充分挖掘了“关系”的表达方式,可以尽可能的将事物之间复杂的关系予以体现

面向对象中模块之间的关系:

OO中的模块由“对象” 来体现 OO中模块之间的关系(主要):包含:“有一个……”关系;继承:“是一个……”关系 5) 抽象数据类型(ADT)

了解基本概念,能够构造出简单的ADT

? 类的基础:抽象数据类型

? 类是一组数据和子程序构成的集合,这些数据和子程序共同拥有一组内聚的、明确定义的职责。 ? ADT是指一组数据以及对这些数据所进行的操作的集合

4

? 以上两段描述有何本质区别?

? 从数据的角度来看类和ADT没有区别

? 从OO的角度来看,类还涉及到面向对象中的概念

? 抽象数据类型中的“数据”

? ADT中“数据” 的概念很随意

? ADT中的“数据”可以指任意类(Class)所能描述的实体

6) ADT与类的区别

体会ADT和类在概念上有什么区别。

给你一个ADT,构造出相应的类(Java或C++)

ADT:一些数据以及对这些数据进行操作的集合 + 面向对象(封装、继承、多态)= 类

构造类时class{}

7) 良好的类接口 参阅CC2-6.2节

给你不良好的类接口,能够指出其中的问题,并加以改进 (难度限于书中例子的难度)

5

大学计算机《软件构造》课程复习纲要(代码大全部分).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c605ue4bt3a9d31q9p63i6j6mw9sjhs00dny_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top