软件工程的出现主要是由于软件危机的出现
- 在E-R模型中,包含实体、关系、属性
- 螺旋模型是在瀑布模型和增量模型的基础上增加了风险分析活动
- 软件工程方法学包括工具、方法和过程三个方面,称为“软件工程三要素”
软件生命周期各阶段的任务
- 软件生命周期分为7个阶段:
- (1)问题定义:要解决的问题是什么
- (2)可行性研究:确定问题是否值得解,技术可行性、经济可行性、操作可行性
- (3)需求分析:系统必须做什么
- (4)总体设计:系统如何实现,包括系统设计和结构设计
- (5)详细设计:具体实现设计的系统
- (6)实现:编码和测试
- (7)运行维护:保证软件正常运行。
- 瀑布模型
- 特点∶阶段间具有顺序性和依赖性;推迟实现;质量保证
- 缺点:瀑布模型是由文档驱动的:在可运行的软件产品交付给用户之前,用户只能通过文档来了解产品是什么样的。
- 快速原型
- 快速原型的本质是“快速”。开发人员应该尽可能快地建造出原型系统,以加速软件开发过程,节约软件开发成本。原型的用途是获知用户的真正需求,—旦需求确定了,原型将被抛弃。
- 当快速原型的某个部分是利用软件工具由计算机自动生成的时候,可以把这部分用到最终的软件产品中。
- 增量模型
- 增量模型也称为渐增模型,使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。
- 螺旋模型
- 风险驱动软件过程框架(螺旋模型)最初是Boehm(1988)提出来的。
- 螺旋模型是瀑布模型与原型进化模型相结合,并增加了风险分析而建立的一种软件过程模型。·该模型适合于指导大型软件项目的开发,它将软件项目开发划分为制订计划、风险分析、实施开发及客户评估四类活动。
需求分析的原则
(1)能够表达和理解问题的数据域和功能域。
(2)能够将复杂问题分解化简。
(3)能够给出系统的逻辑表示和物理表示。 软件需求分析的任务包括确定逻辑结构、信息域分析、问题分析
需求分析建模的模型
- 核心∶数据字典DD,描述软件中的所有数据对象。
- 实体关系图ERD:描述数据对象之间的关系。
- 数据流图DFD是功能模型的基础。创建的目的:
- 数据在软件系统中移动的时怎样被变换;
- 描绘变换数据流的功能和子功能。
- 状态转换图STD是行为建模的基础。它指明了作为外部事件结果的系统行为。
- 需求分析阶段的成果主要是需求规格说明书,该成果与软件设计、编码、测试直至维护关系密切
数据流图1
- 学生档案管理系统的主要功能如下。
- (1)对学生档案信息的增加、删除、修改。
- (2)对学生信息的查询和打印。
- (3)对学生信息的统计和分析。
- 此外,本系统还应该能与其他系统共享部分数据。
- 请画出此系统的顶层数据流图
数据流图2
- 有如下一个学生选课系统︰教师提出开课计划,系统批准后给教师下发开课通知。
- 学生可向系统提出选课申请,系统批准后给学生下发选课申请结果通知。课程结束后,系统还可以帮助
- 教师录入学生成绩,同时把成绩单发送给学生。
软件设计:软件需求→软件表示
- 软件设计分两步完成:总体设计和详细设计。
- 总体(概要)设计的主要任务:对软件需求功能分解、划分模块,设计预定功能的模块结构。
- 其目标是建立软件的体系结构
- 软件体系结构的三要素是程序构件(模块)的层次结构、构件之间交互的方式,以及数据的结构。
- 详细设计的主要任务:详细设计各个模块,确定各模块中使用的算法和数据结构。
耦合
耦合是对一个软件结构内部不同模块间联系紧密程度的度量指标。模块间联系越紧密,耦合越高,模块的独立性也就越低。
- 模块耦合的强弱取决于︰
- 模块接口的复杂程度
- 调用模块的方式
- 通过模块接口的数据(数据类型和数目)
耦合衡量模块间相互依赖/连接的紧密程度;
内聚衡量模块内部各元素间结合的紧密程度。
如何降低模块间耦合度:
1、尽量使用数据耦合,
- 限制公共耦合的范围
- 少用控制耦合和特征耦合,
- 坚决避免使用内容耦合。
2、降低接口的复杂性
内聚性分类与排列
模块化设计的启发规则与优化
1、改进软件结构,提高模块独立性。(降低模块耦合,提高模块内聚)
2、保持适中的模块规模。
3、模块应具有高扇入和适当的扇出;软件结构中的深度和宽度不宜过大。
4、模块的作用域应处于其控制域范围之内。
5、尽量降低模块的接口复杂度。
6、设计单入口、单出口的模块。
7、模块功能应该可以预测。
总体(概要)设计可采用的工具
- 层次图〔H图)
- HIPO图(H图+IPO图)
- 结构图(SC图)
面向数据流的设计方法
- 总体设计阶段,结构化设计SD主要采用面向数据流的设计方法。即以数据流图DFD为基础,定义了把DFD变换成软件结构的不同映射方法。
- 总体设计阶段的主要任务是通过DFD来确定系统的结构图,并且对这些结构图进行分析和细化。
面向数据流的设计方法
系统结构特征可归纳为两种典型形式
- 变换型结构
- 事务型结构
数据流可分为三种类型:
- 变换型数据流
- 事务型数据流
- 混合型数据流
详细设计的任务和原则
- 详细设计的任务
(1)确定每个模块的具体算法
(2)确定每个模块的数据组织(数据结构)
(3)给每个模块设计一组测试用例。
(4)确定模块接口的具体细节。
(5)编写详细设计说明书。 - 详细设计的原则
(1)模块的逻辑规述正确可靠、清晰易读。
(2)采用结构化程序设计方法,改善控制结构,降低程序复杂度,操高程序的可读性、可测试性和可维护性。
三种基本控制结构
过程设计(结构化程序设计)的工具
(1)图形工具∶把过程的细节表示成一个图的组成部分
程序流程图
- N-S图(盒图)
- PAD图(问题分析图)
(2)语言工具︰用类语言来表示过程的细节,这种类语言很接近子编程语言
PDL(过程设计语言)
(3)表格工具
- 判定表
- 判定树
:::info
判定表与判定树 假设某航空公司规定,乘客可以免费托运重量不超过30kg的行李。当行李重量超过30kg 时,对头等舱的国内乘客超重部分每公斤收费4元,对其他舱的国内乘客超重部分每公斤收费6元,对外国乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。判定表如下表所示,请用判定树表示计算行李费的算法。(本题会考简答题,答案在树上96)
:::
软件测试
- 软件测试的基本目的:尽可能多的发现软件产品中存在的几种信误。
- 测试是为了发现程序中的错误而执行程序的过程;
- 好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案
- 软件系统测试只能找到程序中存在的错误,而不能证明程序中没有错误。
黑盒测试和白盒测试
- 黑盒测试:检查软件的每个功能是否能够正常使用。
- 黑盒测试又称功能测试。
- 白盒测试:检查软件内部动作是否是按照产品规格说明书的规定来正常运行的。
- 白盒测试又称结构测试
- 白盒测试在测试过程的早期阶段进行,黑盒测试在测试过程的后期。
白盒测试技术
- 白盒测试是有选择地执行〔或覆盖)程序中某些最有代表性路轻的测试方法,所以也称为逻辑覆盖测试
- 测试方案:包括测试的具体目的、功能,应该输入的测试数据和预期的输出结果。
- 把测试数据和预期的输出结果称为测试用例。
- 白盒测试方法是从程序的控制结构路径导出测试用例集的
- 白盒测试技术包括︰逻辑覆盖法、基本路径测试法、循环测试法
白盒测试技术——逻辑覆盖法
- 逻辑覆盖法的标准:
1)语句覆盖:每语句至少执行一次
2)判定覆盖:每个判定的每个分支都执行一次
3)条件覆盖:判定中每个条件取各种可能的结果
4)判定/条件覆盖:同时满足判定覆盖和条件覆盖
5)条件组合覆盖:判定表达式中条件的各种组合至少出现一次。—最强的逻辑覆盖
黑盒测试技术
1)等价划分
- 输入数据划分若干(有效/无效)等价类
- 输出数据划分若干(有效/无效)等价类。
2)边界值分析
- 首先确定边界情况
- 着重测试输入等价类、输出等价类的边界。
3)错误推测法
- 采用一种凭借先验知识对被测对象做类比测试
- 错误推测法还常被用于“错误成群”现象的处理
面向对象方法学的四要点
1)用对象分解取代传统方法的功能分解认为客观世界是由各种对象组成的,任何事物都是对象,复杂对象由简单对象以某种方式组合而成
2).所有对象划分成各对象类,每类都定义有数据和方法
3).按子类和父类的关系,各对象构成层次系统(类等级):基类/派生类,父类/子类的继承关系
继承性、封装性、多态性
4).对象间仅能通过传递消息相互通信。
面向对象方法的主要优点.
1).与人类习惯的思维方法一致
OO方法强调把问题域的概念直接映射到对象以及对象之间的接口。
- 对象分类过程——“特殊→一般”归纳思维过程;
- 建立类等级获得继承特性——“一般→特殊”演绎思维过程
2).稳定性好
属性和服务封装——对象。对象结构相对稳定
3).可重用性好——继承性、多态性和封装性.
4).较易开发大型软件产品
5).可维护性好(稳定性好,易修改,易理解,易测试和调试)
对象的定义
(1)定义一
对象是具有相同状态的一组操作的集合。
(2)定义二
对象是对属性值和操作的封装。
(3)定义三
对象=<ID,MS , DS,MI> 其中,ID是对象的标识或名字。
- MS是对象中的操作集合。
- DS是对象的数据结构。
- MI是对象受理的消息名集合(即对外接
OO建模技术
- 面向对象方法最基本的原则:按照人们习惯的恩维方式,电南向对象观点建立向题域的模型,开发出尽可能自然地表现求解方法的软件。
- OO建模——三种模型:
- 对象模型:描述系统的数据结构
- 功能模型:指逑系统的功能·
- 动态模型:襦述系能的控制结构
- 对象模型始终是最重要、最基本、最核心的
- OOA→构造出完全独立于实现的应用域模型;
- OOD→把求解域的结构逐渐加入到模型中;
- OOP→把应用域和求解域的结构编成程序代码并测试验证。
- 对象模型
- 用类图表示,包括类符号、类实例符号。类的关联关系。维承关系。组合关系等。
- 功能模型
- 用教据流图DFD、程序流程图、UML中的用例图Use Case(用例糊型)等来表示。
- 动态模型
- 先与脚本,从脚本中程取事件。画出事件取踪担,再画状态转换图。除此之外还有UML其他的图表示。
三种模型之间的关系
- 针对类建立的动态模型,描述类实例的生命周期的运行周期。
- 状态转换巫使行为发生,行为→DFD中的处理,行为→用例图中的用例,行为→类图中的服务。
- 功能模型中的用例对应对象提供的服务-。
- DFD中的轰据存储、数据源点/终点通常是对象模型中的对象… DFD中的数据浇→对象模型中对象的性值或整个对象,
- 功能模型中的用例可能产生动态模型中的事件
- 对象模型描述DFD中的数据流、数据存储、数据源点/终点的结构。
OO模型和主要图形工具
UML的OO模型由五类图来定义:
(1)用例图
(2)静态图—类图、对象图,包图
(3)行为图—状态图、活动图
(4)交互图—顺序图(时序图)、协作图
(5)实现图—构件图、部署图(分布囫/配置图)
:::info
一家图书馆藏有书籍、杂志,小册子、电影录像带、音乐CD和报纸等出版物供读者借阅。这些出版物有出版物名、出版者获得白期、目睹编号、书架位置、借出状态和借出限制等属性。并有借出、收回等服务。请建立上述图书馆馆藏出版物的对象模型。
:::
在本题中,对象主要包括以下这些。报社:包含分类、统计等操作。 发行站:包含登录订单、打印凭证等操作。刊物:包含代码、名称等属性,以及登录订单、打印凭证等操作。 订单:包含代码、名称、订期等属性,以及登录订单、打印凭证等操作。 订户:包含名称、地址等属性。 对象之间相互关系主要包括以下几种:报社可以发行多个刊物;报社包含多个发行站;订单记录刊物的征订情况;发行站拥有刊物订单;订户可以填写多张订单。报刊征订的计算机管理系统的对象模型如图所示。
请用UML中的用例图来描述图书管理系统中的图书馆业务功能模块。该模块包括借书,还书,预约借书等功能。
动态模型
在温室管理系统中,有一个环境控制器。当没有种植作物时处于空闲状态。一旦种上作物,就要进行温度控制和定义气候,即在什么时期应达到什么温度。当处于夜晚时,由于温度下降.要调用调节温度过程,以便保持温度;当太阳出来时进入白天状态,由于温度升高,要调用调节温度过程,保持要求的温度;当日落时进入夜晚状态;当作物收获时,终止气候的控制,进入空闲状态。请建立环境控制器的动态模型。
习题习题来自网上
选择题
1、具有风险分析的软件生命周期模型是( C )。
A.瀑布模型 B.喷泉模型 C.螺旋模型 D.增量模型
2、软件工程的基本要素包括方法、工具和( A )。
A. 过程 B. 软件系统 C. 硬件环境 D. 人员
3、软件的复杂性是( A ),它引起人员通信困难、开发费用超支、开发时间超时等问题。
A. 固有的 B. 人为的 C. 可消除的 D. 不可降低的
4、在结构化分析方法中,( C )表达系统内部数据运动的图形化技术。
A. 数据字典 B. 实体关系图 C. 数据流图 D. 状态转换图
5、“软件危机” 是指( C )。
A.计算机病毒的出现 B.利用计算机进行经济犯罪活动
C.软件开发和维护中出现的一系列问题 D.人们过分迷恋计算机系统
6、随着软硬件环境变化而修改软件的过程是( B )。
A.校正性维护 B.适应性维护 C.完善性维护 D.预防性维护
7、需求分析中开发人员要从用户那里了解( A )。
A.软件做什么 B.用户使用界面 C.输入的信息 D.软件的规模
8、软件详细设计的主要任务是确定每个模块的( A )。
A.算法和使用的数据结构 B.外部接口 C.功能 D.编程
9、为了提高模块的独立性,模块内部最好是( C )。//外部耦合,功能内聚
A.逻辑内聚 B.时间内聚 C.功能内聚 D.通信内聚
10、一个模块的( C )太大一般是因为缺乏中间层次,应当适当增加中间层次的控制模块。
A.深度 B. 宽度 C. 扇出 D. 扇入
11、模块的内聚性最高的是( D )。
A.逻辑内聚 B.时间内聚 C. 偶然内聚 D.功能内聚
12、需求分析是( A )。
A. 软件开发工作的基础 B. 软件生存周期的开始
C. 由系统分析员单独完成的 D. 由用户自己单独完成的
13、在白盒测试技术测试用例的设计中,( B )是最强的覆盖标准。
A.语句覆盖 B.路径覆盖 C.条件组合覆盖 D.判定覆盖
14、软件维护时,对测试阶段未发现的错误进行测试、诊断、定位、纠错,直至修改的回归测试过程称( A )。
A. 改正性维护 B. 适应性维护 C. 完善性维护 D. 预防性维护
15、( C ) 是把对象的属性和操作结合在一起,构成一个独立的对象,其内部信息对外界是隐蔽的,外界只能通过有限的接口与对象发生联系。
A. 多态性 B. 继承 C. 封装 D. 消息
16、对象实现了数据和操作的结合,使数据和操作( C )于对象的统一体中。
A.结合 B.隐藏 C.封装 D.抽象
17、面向对象的开发方法中,( C )将是面向对象技术领域内占主导地位的标准建模语言。
A.Booch方法 B.Coad方法 C.UML语言 D.OMT方法
18、( A )意味着一个操作在不同的类中可以有不同的实现方式。
A.多态性 B.多继承 C.类的可复用 D.信息隐藏
19、单元测试的测试用例主要根据( D )的结果来设计。
A.需求分析 B.源程序 C.概要设计 D.详细设计
20、软件测试是为了( B )而执行程序的过程。
A. 纠正错误 B. 发现错误 C. 避免错误 D. 证明正确
21.类构件的重用方式有多态重用、继承重用和( A )
A.实例重用 B.重载重用 C. 代码重用 D. 方法重用
22、支持面向对象技术的软件生存周期模型是( A )。
A.喷泉模型 B.螺旋模型 C.增量模型 D.瀑布模型
23、在白盒测试技术测试用例的设计中,( A )是最弱的覆盖标准。
A.语句覆盖 B.路径覆盖 C.条件组合覆盖 D.判定覆盖
24、下面哪些测试方法属于白盒测试( A E )。//BCD是黑盒测试
A、基本路径测试 B、等价类划分 C、边界值分析 D、错误推测 E、逻辑覆盖测试
25、瀑布模型把软件生命周期划分为八个阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。八个阶段又可归纳为三个大的阶段:计划阶段、开发阶段和( C )。
A、详细计划 B、可行性分析 C、运行阶段 D、测试与排错
26、从结构化的瀑布模型看,在它的生命周期中的八个阶段中,下面的几个选项中哪个环节出错,对软件的影响最大( C )。
A、详细设计阶段 B、概要设计阶段 C、需求分析阶段 D、测试和运行阶段
27、在结构化的瀑布模型中,哪一个阶段定义的标准将成为软件测试中的系统测试阶段的目标( A )。
A、需求分析阶段 B、详细设计阶段 C、概要设计阶段 D、可行性研究阶段
28、软件工程的出现主要是由于( C )。
A.程序设计方法学的影响 B.其它工程科学的影响 C. 软件危机的出现 D.计算机的发展
29、软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是( C )
A、硬件环境 B、软件开发的环境 C、软件开发工具和软件开发的环境 D、开发人员的素质
30、软件开发常使用的两种基本方法是结构化和原型化方法,在实际的应用中,它们之间的关系表现为 ( B )
A、相互排斥 B、相互补充 C、独立使用 D、交替使用
31、UML是软件开发中的一个重要工具,它主要应用于哪种软件开发方法( C )
A、基于瀑布模型的结构化方法 B、基于需求动态定义的原型化方法
C、基于对象的面向对象的方法 D、基于数据的数据流开发方法
32、软件测试基本方法中,下列 ( D ) 不用测试实例。
A). 白盒测试法 B). 动态测试法 C). 黑盒测试法 D). 静态测试法
33、结构化分析方法是一种预先严格定义需求的方法,它在实施时强调的是分析对象的( B )
A、控制流 B、数据流 C、程序流 D、指令流
34、软件开发的结构化生命周期方法将软件生命周期划分成( A )
A、 计划阶段、开发阶段、运行阶段 B、 计划阶段、编程阶段、测试阶段
C、 总体设计、详细设计、编程调试 D、需求分析、功能定义、系统设计
35、可行性研究主要从以下几个方面进行研究:( A )
A) 技术可行性,经济可行性,操作可行性 B) 技术可行性,经济可行性,系统可行性
C) 经济可行性,系统可行性,操作可行性 D) 经济可行性,系统可行性,时间可行性
36、耦合是对软件不同模块之间互连程度的度量。各种耦合按从强到弱排列如下: ( C )
A) 内容耦合,控制耦合,数据耦合,公共环境耦合。 B) 内容耦合,控制耦合,公共环境耦合,数据耦合。
C) 内容耦合,公共环境耦合,控制耦合,数据耦合。 D) 控制耦合,内容耦合,数据耦合,公共环境耦合。
37、可行性分析研究的目的( B )
A 争取项目 B 项目值得开发否 C 开发项目 D 规划项目
38、数据字典是用来定义( D )中的各个成分的具体含义
A 流程图 B 功能结构图 C 系统结构图 D 数据流图
39、程序的三种基本控制结构的共同特点是( C )
A 只能用来描述简单程序 B 不能嵌套使用 C 单入口,单出口 D 仅用于自动控制系统
40、为高质量的开发软件项目,在软件结构设计时,必须遵循( A )原则
A 信息隐蔽 B 质量控制 C 程序优化 D 数据共享
41、黑盒测试在设计测试用例时,主要研究( A )
A 需求规格说明于概要设计说明 B 详细设计说明 C 项目开发计划 D 概要设计说明与详细设计说明
42、通过 ( B ) 可以完成数据流图的细化。
A). 结构分解 B). 功能分解 C). 数据分解 D). 系统分解
43、程序流程图 (PFD) 中的箭头代表的是 ( B )
A). 数据流 B). 控制流 C). 调用关系 D). 组成关系
44、软件定义期问题定义阶段涉及的人员有 ( D )
A). 用户、使用部门负责人 B). 软件开发人员、用户、使用部门负责人
©. 系统分析员、软件开发人员 D). 系统分析员、软件开发人员、用户、使用部门负责人
45、( C )应考虑对模块相联和资源共享问题进行描述和制约。
A). 系统设计 B). 详细设计 C). 接口控制 D). 结构化编辑工具
业界存在三种需求分析方法:面向功能分析、面向对象分析和 B 。
A.面向算法分析 B.面向数据分析 C.面向程序分析 D.面向硬件分析
软件可维护性的特性中相互矛盾的是 C 。
A.可修改性和可理解性 B.可测试性和可理解性 C.效率和可修改性 D.可理解性和可读性
软件测试方法中的 D 属于静态测试方法。
A. 黑盒法 B.路径覆盖 C.错误推测 D.人工检测
结构化分析方法采用的基本手段是 A 。
A. 分解与抽象 B.分解与综合 C.归纳与推导 D.试探与回溯
可行性研究要进行一次(D)需求分析。
A.深入的 B.详尽的 C.彻底的 D.简化的、压缩了的
可维护性的特性中相互促进的是(A)
A.可理解性和可测试性 B.效率和可移植性 C.效率和可修改性 D.效率和结构好
(D)是以提高软件质量为目的的技术活动。
A.技术创新 B.测试 C.技术创造 D.技术评审
软件测试可能发现软件中的( B ),但不能证明软件 ( )。
A.所有错误,没有错误 B.错误,没有错误 C.逻辑错误,没有错误 D. 设计错误,没有错误
以下不属于软件维护困难表现的是 C。
A.读懂别人的程序是困难的。
B.文档的不一致性。
C.源程序及相关文档的错误或丢失。
D.软件开发和软件维护在人员和时间上的差异。E. 软件维护不是一项吸引人的工作。
软件设计一般分为总体设计和详细设计,它们之间的关系是 (A)。
A.全局和局部 B.抽象和具体 C.总体和层次 D.功能和结构
一组语句在程序多处出现,为了节省空间,把这些语句放在一个模块中,该模块的内聚度是( C )的。
A.逻辑性 B.瞬时性 C.偶然性 D.通信性
在一个课程注册系统中,定义了类 CourseSchedule 和类 Course , 并在类 CourseSchedule 中定义了方法 add (c:Course) 和方法 remove (c:Course),则类 CourseSchedule 和类 Course 之间的关系是( C )。
A.泛化关系 B.组合关系 C.依赖关系 D.包含关系
软件策划的上游是( A ),下游是( B )
A)需求分析 B)软件设计 C)软件测试 D)可行性分析
概要设计的结果是提供一份 ( A )。
A). 模块说明书 B). 框图 C). 程序 D). 数据流图
面向数据流软件设计方法一般是把数据流图中的数据流化分为 (B) 两种流,再将数据流图映射为软件结构。
A). 数据流与事务流 B). 交换流和事务流
C). 信息流与控制流 D). 交换流和数据流
填空题
判断题
-
向滞后的项目中增加人手会使得项目更加滞后。(T)
-
过程描述语言可以用于描述软件的系统结构。(F)
-
按照瀑布模型开发软件的一条指导思想是清楚地区分逻辑设计与物理设计,以便尽早开始程序的物理实现。( F )
-
只有质量差的软件产品才需要维护。( F )
-
层次图用来描述软件的层次结构。层次图中的一个矩形框代表一个模块,方框间的连线表示模块的组成关系。在层次图中除最顶层的方框之外,给每个方框都加编号,即成为带有编号的层次图。( F )
-
建立动态模型的第一步,是编写典型交互行为的脚本。( T )
-
软件错误可能出现在开发过程的早期,越早修改越好。(T)
-
软件模块的耦合是越低越好。( T )
-
一个好的测试用例在于能发现至今未发现的错误。( T )
-
面向对象设计的结果只能采用面向对象语言来实现( F )
-
一个成功的项目唯一提交的就是运行程序。( F )
-
用例之间的关系有3种。( T )
-
面向对象设计准则也要遵循弱耦合的原则,但是继承耦合则应该提高,紧密地继承耦合与高度的一般-特殊内聚是一致的。 ( T )
-
软件工作的考虑范围主要是程序设计和实现。( F )
-
环形复杂度定量度量程序的逻辑复杂度,可以用这个公式来计算环形复杂度:流图G的环形复杂度V(G) = N– E + 2。(改成E-N+2)( F )
-
等价类划分方法将所有可能的输入数据划分成若干部分,然后从每一部分中选取少数有代表性的数据作为测试用例。( T )
-
在进行总体(改成概要)设计时应加强模块间的联系。( F )
-
系统结构图是精确表达程序结构的图形表示法。因此,有时也可以将系统结构图当作系统流程图使用。( T )
-
建立动态模型的第一步,是编写典型交互行为的脚本。( T )
-
在程序调试时,找出错误的位置和性质比改正该错误更难。( F )
-
如果通过软件测试没有发现错误,则说明软件是正确的。( F )
-
快速原型模型可以有效地适应用户需求的动态变化。( T )
-
模块化,信息隐藏,抽象和逐步求精的软件设计原则有助于得到高内聚,低耦合度的软件产品。( T )
-
集成测试主要由用户来完成。( F )
-
面向对象 = 对象 + 类 + 继承 + 消息传递。( T )
-
面向对象的分析是面向计算机系统建立软件系统的对象模型。( F )
-
软件的开发与运行经常受到硬件的限制和制约。( T )
-
模块内的高内聚往往意味着模块间的松耦合。( T )
-
Jackson图只能表达程序结构,不能表达数据结构。( F )
-
软件测试的目的是为了无一遗漏的找出所有的错误。( F )
-
软件的质量好坏主要由验收人员负责,其他开发人员不必关心。( F )
-
判定覆盖不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖。( T )
-
应该尽量使用机器语言编写代码,提高程序运行效率,而减少高级语言的使用。( F )
-
UML只能应用于软件系统模型的建立。( F )
-
容错就是每个程序采用两种不同的算法编写。( F )
简答题
- 简述软件设计的过程。
软件设计是把许多事物和问题抽象起来,并且抽象它们不同层次和角度,是将需求转变为软件陈述的过程,是迭代的过程。
软件设计,要根据需求规格说明书,对整个设计过程进行计划,然后实施具体的设计过程,即“先整体,再局部”,也是不断迭代和精化的过程。
然后需要对生成的设计规格说明书进行评审,启动 质量评价的标准,若未通过评审,需重新修改设计,直至评审通过,确定最后定型的过程本身。进入后续阶段,完成软件设计过程。
- 简述结构化程序设计方法的基本特点。
1)尽可能少用goto语句的程序设计方法。
2)每个代码块都单入单出。
3)使用控制结构:顺序、选择和循环。
4) 自顶向下逐步求精。
- 衡量模块独立性的两个定性标准是什么?这两个标准的定义分别是什么?在我们的软件设计中,关于模块独立性我们追求的目标是什么?
衡量模块独立性的两个定性标准是内聚和耦合(2分)。
耦合是指对一个软件结构内不同模块彼此之间互相依赖(连接)的紧密程度;而内聚则标志一个模块内部各个元素彼此结合的紧密程度(2分)。
在我们的软件设计中,关于模块独立性我们追求的目标是紧密内聚松散耦合(1分)。
- 什么是黑盒测试法?
黑盒测试法把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程(2分)。它只检查程序功能是否能按照规格说明书的规定正常使用(1分),程序是否能适当地接收输入数据(1分),产生正确地输出信息(1分)。
-
如何选择程序设计语言的工程特性
- 系统用户的要求
- 可以使用的编译程序
- 可以得到的软件工具
- 工程规模
- 程序员的知识
- 软件可移植性的要求
- 软件的应用领域
-
简述面向对象的4个要点的含义。
- 面向对象的4个要点是:对象分解、数据专有、继承、封装性。(1分)
- 1)对象分解:认为客观世界是由各种对象组成的。 (1分)
- 2)数据专有,方法共享:把所有对象都划分成各种对象类(简称为类,class),每个对象类都定义了一组数据和一组方法。 (1分)
- 3)继承:按照子类(或称为派生类)与父类(或称为基类)的关系,把若干个对象类组成一个层次结构的系统(也称为类等级)。(1分)
- 4)封装性:对象彼此之间仅能通过传递消息互相联系。(1分)
-
软件维护的过程
在软件开发完成交付用户使用后,为了保证软件在一个相当长的时期能够正常运行,就需要对软件进行维护。 软件维护的过程:
(1) 确认维护要求。(1分)
(2) 对于改正性维护申请,评价错误的严重性。对于严重的错误,立即安排人员,分析问题原因,进行"救火"性的紧急维护;对于不严重的错误,根据任务情况和轻重缓急进行统一安排。(2分)
(3) 对于适应性和完善性维护申请,需要确定申请的优先级,然后安排维护工作。并不是所有的完善性维护申请都必须承担,需要考虑商业需要、现有资源、未来发展方向等进行决定。(2分)
- 软件维护的目的和主要任务是什么?维护的类型有哪些?
软件维护是软件生命周期中最后一个、持续时间最长的阶段。
主要任务是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件
目的是提高软件的可靠性、可用性,延长软件的寿命。
维护的类型有:改正性(错误)、适应性(环境)、完善性(功能)、预防性(新产品)
- 什么是耦合?模块的耦合包括哪些类型?
耦合是对一个软件结构内不同模块之间互连程度的度量。
模块的耦合包括以下几种类型:数据耦合,控制耦合,特征耦合,公共环境耦合,内容耦合,标记耦合,无耦合/非直接耦合
-
什么是内聚?模块的内聚包括哪些类型?
- 内聚标志着一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展
- 模块的内聚包括以下几种类型:低内聚 — 偶然内聚,逻辑内聚,时间内聚
中内聚 — 过程内聚,通信内聚;
高内聚 — 顺序内聚,功能内聚
-
什么是编码风格?为什么要强调编码风格?
- 编码风格包括以下内容:程序内部良好的文档(注释)、数据说明、语句构造、输入输出和效率保障等。
- 因为编码风格对软件的可读性、可维护性、可靠性、可用性很重要,所以要强调编码风格。
-
什么是软件危机?软件危机的表现是什么?其产生的原因是什么?
软件发展的第二阶段末期,由于计算机硬件技术的进步,计算机运行速度、容量、可靠性有显著的提高,生产成本显著下降,这为计算机的广泛应用创造了条件。一些复杂的,大型的软件开发项目提出来了,但是,软件开发技术的进步一直未能满足发展的需要。在软件开发中遇到的问题找不到解决方法,使问题积累起来,形成了尖锐的矛盾,因此导致了软件危机。
- 软件危机表现在以下四个方面:(钱与时间,要求,维护性,可靠性)
(1)经费预算经常突破,完成时间一再拖延。
(2)开发的软件不能满足用户要求
(3)开发的软件维护性差
(4)开发的软件可靠性差
- 造成软件危机的原因:(规模和结构,管理,经费,技术,工具)
(1)软件的规模越来越大,结构越来越复杂
(2)软件开发管理困难而复杂
(3)软件开发的经费不断增加
(4)软件开发技术落后
(5)生产方式落后开发工具落后,生产率提高缓慢
-
软件生存周期包括哪些活动?
- 答:软件生存周期的活动包括:可行性分析和项目开发计划、需求分析、概要设计、详细设计、编码、测试、维护等活动。
-
请说明 “三个模型” 的定义,以及三者之间的关系。
功能模型是描述系统能做什么,即对系统的功能、性能、接口和界面进行定义。
业务模型是描述系统在何时、何地、由何角色、按什么业务规则去做,以及做的步骤或流程,即对系统的操作流程进行定义。
数据模型是描述系统工作前的数据来自何处,工作中的数据存什么地方,工作后的数据放到何处,以及这些数据之间的关联,即对系统的数据结构进行定义。
功能模型和业务模型是在需求分析时建模,是两个基本点。数据模型是一个中心,在设计时建模。功能模型和业务模型给数据模型提供数据与维护数据,数据模型支持功能模型和业务模型的正常运行。通常,数据模型建模用 Power Designer,ER win 或 Oracle Designer 工具实现;功能模型用功能点列表(或用况图)表示;业务模型用自然语言加上流程图(或顺序图)表示。
- “面向对象实现” 的目标是什么?此处为语雀卡片,点击链接查看
答:“面向对象实现” 的目标是:按照《详细设计说明书》中对数据结构、算法分析和模块实现等方面的设计说明,用面向对象的语言,将这些部件组装起来,分别实现各模块的功能,从而实现目标系统的功能、性能、接口、界面等要求。
- 软件工程的定义
(1)将系统的、规范的、可量化的方法应用于软件的开发、运行和维护的过程;
(2)及上述方法的研究。