【习题】软件工程
瀑布模型是将生存周期各活动规定为依 联接的若干阶段的模型。
线性顺序
模块具有的基本属性有:接口、 、逻辑和状态 。
功能
维护中用来指出修改的工作量、工作性质、优先权、修改的事后性质的文档是( )(3.0分)
A、软件问题报告
B、软件需求说明
C、测试分析报告
D、软件修改报告
正确答案: D
找出下面错误的说法( )(3.0分)
A、每个数据流必须用名词或名词短语命名
B、每个数据源点或终点必须有名字
C、每个加工必须有名字,通常是动词短语
D、每个数据存储必须用名词或名词短语命名
正确答案: D
系统流程图是描述( )的工具。
A、物理系统
B、逻辑系统
C、体系结构
D、程序系统
正确答案: A
类库机制的共享级别是( )(3.0分)
A、同一类级共享
B、不同应用级共享
C、同一应用级共享
D、不同类级共享
正确答案: B
面向对象方法中建立动态模型的图形工具是( )(3.0分)
A、对象图
B、 程序图
C、数据流图
D、 状态图
正确答案: D
什么是软件生存周期模型?有哪些主要模型?
软件生存周期模型是描述软件开发过程中各种活动如何执行的模型。软件生存周期模型确定了软件开发和演绎中各阶段的次序限制以及各阶段活动的准则,确立开发过程所遵守的规定和限制,便于各种活动的协调,便于各种人员的有效通信,有利于活动重用,有利于活动管理。主要的软件生存周期模型有瀑布模型、增量模型,螺旋模型,喷泉模型,变化模型和基于知识的模型。
什么是软件开发方法?有哪些主要方法?
软件开发方法是一种使用早已定义好的技术集及符号表示习惯来组织软件生产的过程。主要方法:结构化方法、Jackson方法、维也纳开发方法、面向对象开发方法
软件产品的特点有哪些?
①逻辑产品;②使用无磨损;③生产主要是研制;④生产主要靠脑力劳动;⑤生产成本高。
软件工程内容有哪些?
软件工程研究的主要内容是软件开发技术和软件开发管理两个方面。在软件开发技术中,主要研究软件开发方法、软件开发过程、软件开发工具和环境。在软件开发管理中,主要研究软件管理学、软件经济学、软件心理学等。
结构化方法总的指导思想是什么?
结构化方法总的指导思想是自顶向下、逐步求精。它的基本原则是功能的分解与抽象。
模块的耦合性包括哪些种类?
无直接耦合、数据耦合、标记耦合、控制耦合、公共耦合、内容耦合
模块独立性
模块独立性
模块独立性是指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口最简单。衡量模块独立性的标准是耦合性和内聚性。(低耦合高内聚
)
耦合性
耦合性也成为模块间联系,指软件系统结构中各模块间相互联系的紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性就越差。
耦合性种类(低->高)
无直接耦合、数据耦合、标记耦合、控制耦合、公共耦合、内容耦合
- 无直接耦合(最独立):属于不同模块控制与调用
- 数据耦合:传递简单的数据值
- 标记耦合:传递数据结构
- 控制耦合:传递控制变量,当一个模块调用另一个模块时。被调用的模块通过该控制变量的值有选择地执行模块内某一功能。因此被调用模块内应具有多个功能、那个功能起作用,受调用模块控制。
- 公共耦合:指通过一个公共数据环境相互作用的那些模块间的耦合。
- 内容耦合:当一个模块直接另一模块的内部数据,或通过非正常入口而转入另一个模块内部,这种模块间的耦合为内容耦合,这种情况往往出现在汇编程序设计中。
内聚性
内聚性也称为块内联系。指模块的功能强度的度量,及一个模块内部各个元素彼此结合的紧密程度的含量。若一个模块内各个元素的联系越紧密,则它的内聚性就越高。
内聚性种类(高->低)
功能内聚、顺序内聚、通信内聚、时间内聚、逻辑内聚、偶然内聚
- 功能内聚(最强):模块内所有的元素共同完成一个功能缺一不可
- 顺序内聚:密切相关,顺序执行,前一模块输出为下一模块输入
- 通信内聚:所有处理在同一数据结构上操作
- 时间内聚:同时执行,组合在一起
- 逻辑内聚:若干个逻辑相似的功能,通过参数确定完成哪一个
- 偶然内聚:各处理元素之间没有任何联系
HIPO 图
表示软件系统结构的工具。它既可描述软件总的模块层次结构──H 图(层次图) ,又可描述每个模块输入/输出数据、处理功能及模块调用的详细情况──IPO 图。
DFD 图
为方便储户,某银行拟开发计算机储蓄系统,储户填写的存款单或取款单由业务员键入系统,如果是存款,系统记录存款人姓名、住址、存款类型、存款日期、利率的信息,栋打印出存款单给用户;如果是取款,系统计算利息并打印出利息清单给用户。给出相应的数据流图
数据字典1
数据流名称:取款单、存款单
别名:无
简述:顾客存/取款时填写的单据
来源:顾客
去向:核查
数据流量:500份/天
组成:日期+[取|存款金额]+姓名+住址+[存|存款金额]+(密码)+{帐号}
数据字典2
数据流名称:结算单
别名:无
简述:顾客取款时得到的利率清单
来源:银行储蓄系统
去向:顾客
数据流量:500份/天
组成:取款日期+取款金额+储户姓名+储户住址+存款类型+利息+操作员
数据字典3
数据流名称:存/取款信息
别名:无
简述:系统核查确认后得到的存/取款信息
来源:银行储蓄系统
去向:登录
数据流量:500份/天
组成:日期+[存|取款金额]+储户姓名+储户住址+存款类型+帐号+利率+密码+操作员
数据字典4
数据流名称:付款信息别名:无
简述:银行储蓄系统处理的取款信息来源:银行储蓄系统
去向:付款处理数据流量:500份/天
组成:取款日期+取款金额+储户姓名+储户住址+存款类型+帐号+利息+操作员
数据字典5
数据存储名称:帐卡
别名:无
简述:存放用户信息及取款情况
组成:取款日期+取款金额+储户姓名+储户住址+存款类型+帐号+利息+操作员
组织方式:数据文件,以储户姓名或帐号为关键字进行索引
查询要求:要求能立即查询并修改
数据字典6
数据项名称:存款类型
别名:无
简述:国家规定的几类存款方式
类型:字符串
长度:2位
取值范围几含义:
00:定期
01:零存整取
10:活期
11:定/活两便
1.什么是数据字典?其作用是什么?它有哪些条目?
答:数据字典(Data Dictionary,简DD)是用来定义数据流图中的各个成分的具体含义的,它以一种准确的、无二义性的说明方式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述。
PAD图
某程序流程图如下图所示,请分别用N-S图和PAD图表示。
PAD
N-S
某商场在“五一”期间,顾客购物时收费有4种情况:普通顾客一次购物累计少于100元,按A类标准收费(不打折),一次购物累计多于或等于100元,按B类标准收费(打9折);会员顾客一次购物累计少于1000元,按C类标准收费(打8折),一次购物累计等于或多于1000元,按D类标准收费(打7折)。请使用PAD图来设计收费算法。
软件结构图
请画出下列数据流图(DFD)的软件结构图。
结构化(SA)方法
SA描述工具有哪些?
答:SA方法利用图形等半形式化的描述方式表达需求,简明易懂,用它们形成需求说明书中的主要部分。这些描述工具是:
(1)数据流图;
(2)数据字典;
(3)描述加工逻辑的结构化语言、判定表、判定树。
其中,“数据流图”描述系统的分解,即描述系统由哪几部分组成,各部分之间有什么联系等等。“数据字典”定义了数据流图中每一个图形元素。结构化语言、判定表或判定树则详细描述数据流图中不能被再分解的每一个加工。
简述SA方法的优缺点
答:
结构化分析方法的优点:结构化分析方法是软件需求分析中公认的、有成效的、使用广泛的一种方法,它较适合于开发数据处理类型软件需求分析。该方法利用图形等半形式化工具表达需求,简明、易读,也易于使用,为后一阶段的设计、测试、评价提供了有利条件。
结构化分析方法的缺点:
(1)传统的SA方法主要用于数据处理方面的问题,主要工具DFD体现了系统“做什么”的功能,但它仅是一个静态模型,没有反映处理的顺序,即控制流程。因此,不适合描述实时控制·系统。
(2)60年代末出现的数据库技术,使许多大型数据处理系统中的数据都组织成数据库形式,SA方法使用DFD在分析与描述“数据要求”方面是有局限的,DFD应与数据库技术中的实体联系图(ER图)结合起来。ER图能增加对数据存储的细节以及数据与数据之间、数据与处理过程之间关系的理解,还解决了在DD中所包含的数据内容表示问题,这样才能较完整地描述用户对系统的需求。
(3)对于一些频繁的人机交互的软件系统,如飞机订票、银行管理、文献检索等系统,用户最关心的是如何使用它,输入命令、操作系统、系统响应方式、输出格式等等,都是用户需求的重要方面,DFD不适合描述人机界面系统的需求。SA方法往往对这一部分自然语言作补充。
(4)描述软件需求的精确性有待于提高。
需求分析
9.需求分析的基本任务是什么?本阶段主要进行哪些工作?
答:需要分析的基本任务是要准确地定义新系统的目标,为了满足用户需求,回答系统必须“做什么”的问题。在可行性研究和软件计划阶段对这个问题的回答是概括的、粗略的。本阶段要进行以下几方面的工作:
总体设计
1.衡量模块独立的两个标准是什么?它们各表示什么含义?
答:衡量模块的独立性的标准是两个定性的度量标准:耦合性和内聚性。
(1)耦合性。也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。
(2)内聚性。又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语句之间、程序段之间)联系得越紧密,则它的内聚性就高。耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分为模块时,尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。
为了降低模块间的耦合度,可采取哪些措施?
答:(1)在耦合方式上降低模块间接口的复杂性。模块间接口的复杂性包括模块的接口方式、接口信息的结构和数量。接口方式不采用直接引用(内容耦合),而采用调用方式(如过程语句调用方式)、接口信息通过参数传递且传递信息的结构尽量简单,不用复杂参数据结构(如过程、指针等类型参数),参数的个数也不宜太多。
(2)在传递信息类型上尽量使用数据耦合,避免控制耦合,慎用或有控制地使用公共耦合。