软件工程复习资料整理全部

更新时间:2024-04-28 22:08:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

软件工程复习

选择题(20%): ............................................................................................................. 4 软件危机: ....................................................................................................................... 5 什么是软件工程: ........................................................................................................... 5 软件生命周期的8个阶段及其任务 ............................................................................... 5 软件过程模型 ................................................................................................................... 5 可行性分析的三个方面 ................................................................................................... 6 数据流图的四种成分 ....................................................................................................... 6 需求分析的任务 ............................................................................................................... 6 需求规格说明书: ........................................................................................................... 6 总体设计: ....................................................................................................................... 6 设计原理:模块化、抽象、逐步求精、模块独立(耦合和内聚) .............................. 6 耦合、内聚的种类 ........................................................................................................... 6 信息流的类型 ................................................................................................................... 6 变换流和事务流 ............................................................................................................... 6 结构化程序设计 ............................................................................................................... 7 测试步骤 ........................................................................................................................... 7 测试方法 ........................................................................................................................... 7 白盒测试技术 ................................................................................................................... 7 黑盒测试技术 ................................................................................................................... 7 什么是软件维护: ........................................................................................................... 7 软件维护活动的分类: ................................................................................................... 7 文档分类(用户文档和系统文档)及作用 ................................................................... 7 软件可靠性的概念 ........................................................................................................... 7 基本概念:对象、类、实例、消息、方法、属性、封装、继承、多态、重载、 ...... 7 类图 ................................................................................................................................... 8 面向对象的三种模型 ....................................................................................................... 8 面向对象设计准则: ....................................................................................................... 8 软件重用: ....................................................................................................................... 8 子系统交互方式(两种): ............................................................................................. 8 软件配置管理 ................................................................................................................... 8 SCM的概念 ..................................................................................................................... 8 什么是软件工程? ........................................................................................................... 8 2、耦合性和内聚性有几种类型?其耦合度、内聚强度的顺序如何? ..................... 8 简述需求分析工作可以分成哪四个方面?软件需求分析的有哪三个基本原则? ... 8 什么是黑盒测试法、白盒测试法? ............................................................................... 8 简述结构化程序设计方法的基本特点。 ....................................................................... 9 衡量模块独立性的两个定性标准是什么?这两个标准的定义分别是什么?在我们的软件设计中,关于模块独立性我们追求的目标是什么? ....................................... 9 T1:什么是软件危机?它有哪些典型表现?为什么会出现软件危机? ................... 9 T3:什么是软件工程?它有哪些本质特性?怎样用软件工程消除软件危机? ....... 9 T4:简述结构化范型和面向对象范型的要点,并分析它们的优缺点。 ................. 10 1.假设要求你开发一个软件,该软件的功能是把读入的浮点数开平方,所得到的结

果应该精确到小数点后4位。一旦实现并测试完之后,该产品将被抛弃。你打算选用哪种软件生命周期模型?请说明你做出选择的理由。 ......................................... 10 2.假设你被任命为一家软件公司的项目负责人,你的工作是管理该公司已被广泛应用的字处理软件的新版本的开发。由于市场竞争激烈,公司规定了严格的完成期限并且已对外公布。你打算采用哪种软件生命周期模型?为什么? ......................... 10 T1:在软件开发的早期阶段为什么要进行可行性研究?应该从哪些方面研究目标系统的可行性? ............................................................................................................. 10 T5:北京某高校可用的电话号码有以下几类:校内电话号码由4位数字组成,第1位数字不是0;校外电话又分为本市电话和外地电话两类,拨校外电话需先拨0,若是本市电话刚再接着拨8位数字(第1位不是0),若是外地电话则拨3位区码再拨8位电话号码(第1位不是0)。 ........................................................................ 11 目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还可能会延误抢救时机。某医院打算开发一个以计算机为中心的患者监护系统,试写出问题定义,并给出数据流图。 ..................................... 11 2.为开发一个铁路自动售票系统(该系统预计从2004年使用到2014年),请完成下面的数据流图和数据字典,即从供选择的答案中选出A、B、C、D和E的内容,并给出F、G和H的内容,填在答案栏中。 ............................................................. 12 T2:怎样与用户有效地沟通以获取用户的真实需求? ............................................. 13 T3:银行计算机储蓄系统的工作过程大致如下:储户填写的存款单或取款单由业务员输入系统,如果是存款则则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码(可选)等信息,并印出存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。 ......................... 13 T6:复印机的工作过程大致如下:未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现没纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告,等待维修人员来排除故障,故障排除后回到闲置状态。......................................................................................................................................... 14 1.请为某仓库的管理设计一个ER模型。该仓库主要管理零件的订购和供应等事项。仓库向工程项目供应零件,并且根据需要向供应商订购零件。 ..................... 14 T3:用面向数据流的方法设计下列系统的软件结构: ............................................. 15 第一题:分析下图,确定模块之间的耦合类型 ......................................................... 15 2.从供选择的答案中选出在下列叙述中括弧内字母应该代表的正确内容 .............. 16 T3:画出下列伪码程序的程序流程图和盒图............................................................. 16 T4:图6.18给出的程序流程图代表一个非结构化的程序,问: ............................ 17 T8:画出下列伪码程序的流图,计算它的环形复杂度,这个程序的逻辑有什么问题吗? ............................................................................................................................. 18 第一题:用三种方法计算图中所示流图的环形复杂度 ............................................. 19 4一家图书馆藏有书籍、杂志、小册子、电影录像带、音乐CD、录音图书磁带和报纸等出版物,供读者借阅。 ..................................................................................... 21 2.试建立下述订货系统的用例模型 .............................................................................. 21 1、有人说:软件开发时,一个错误发现得越晚,为改正它所付出的代价就越大。对否?请解释你的回答 ................................................................................................. 22

2、试论述瀑布模型软件开发方法的基本过程 ........................................................... 22 3、软件工程是开发、运行、维护和修复软件的系统化方法,它包含哪些要素? 22

4、数据流图的作用是什么?它有哪些基本成份 ....................................................... 22 5、请将下述有关模块独立性的各种模块之间的耦合,按其耦合度从低到高排列起来。 ................................................................................................................................. 23 6、请将下述有关模块独立性的各种模块内聚,按其内聚度(强度)从高到低排列起来。 ............................................................................................................................. 23 7、从供选择的答案中选出应填入下列叙述中( )内的正确答案。 ..................... 23 问题1:用故障播种(植入)的数学模型,估算出被测程序ASP的固有故障的个数N的值。如果通过测试一段时间后,发现的固有错误个数为ED = 795时,请估算此程序的平均无故障时间MTTF值。 .................................................................... 24 问题2:若要求把此MTTF再提高4倍,应至少再排除多少个固有错误? 请简要地列出有关计算式 ............................................................................................................. 24

选择题(20%):

软件设计中划分模块的一个准则是()C、高内聚低耦合

Jackson设计方法是由英国的M.Jackson提出的,它是一种面向( )的软件设计方法。 C、数据结构

试判断下列叙述中,哪个是正确的()c、事务分析和变换分析的设计步骤是基本相似的 ()是用户和设计交换最频繁的方法。A、原型化方法 软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是() C、软件开发工具和软件开发的环境 下列语言中哪个语言是低级语言() D、汇编语言

软件测试的目的是() D、尽可能多的发现软件系统中的错误

使用白盒测试方法时,确定测试数据应根据()和指定的覆盖标准。 A、程序的内部逻辑

软件维护工作的最主要部分是() C、完善性维护 PDL是()语言。 B、伪码式

对象实现了数据和操作的结合,使数据和操作()于对象的统一体中。C、封装 软件生命周期中所花费用最多的阶段是() D、软件维护 需求分析中开发人员要从用户那里了解()A、软件做什么 测试的关键问题是() D、如何选择测试用例

()是将系统化的、规范化的、可定量的方法应用于软件的开发、运行和维护的过程,它包括方法、工具和过程三个要素。D、软件工程方法学

()意味着一个操作在不同的类中可以有不同的实现方式。A、多态性 单元测试的测试用例主要根据()的结果来设计。D、详细设计 随着软硬件环境变化而修改软件的过程是() B、适应性维护 在白盒测试技术测试用例的设计中,()是最弱的覆盖目标。A、语句覆盖 结构化程序设计的一种基本方法是() C、逐步求精法 不适合作为科学工程计算的程序设计语言是() D、Prolog 只有单重继承的类层次结构是()层次结构。 C、树型 面向对象的开发方法中,()将是面向对象技术领域内占主导地位的标准建模语言。 C、UML语言

4

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

瀑布模型本质上是一种() A、线性顺序模型

软件维护产生的副作用,是指() C、因修改软件而造成的错误

软件详细设计的主要任务是确定每个模块的() A、算法和使用的数据结构 软件结构图的形态特征能反映程序重用率的是() C、扇入 为了提高模块的独立性,,模块内部最好是() C、功能内聚

软件结构图中,模块框之间若有直线连接,表示它们之间存在()A、调用关系 “软件危机”是指() C、软件开发和维护中出现的一系列问题 具有风险分析的软件生命周期模型是() C、螺旋模型

数据流图(DFD)中的每个数据处理至少需要() D、一个输入数据流和一个输出流 下列哪个阶段不属于软件生存周期的三大阶段() C、编码阶段 需求分析是() A、软件开发工作的基础

原型化方法是软件开发中一类常用的方法,它与结构化方法相比较,更需要( ) B、完整的生命周期

软件维护中,对测试阶段未发现的错误进行测试、诊断、定位、纠错,直至修改的回归测试过程测称为()A、改正性维护

一般来说,投入运行的软件系统中有错误()A、不是不可以理解的

软件危机:

是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。它包含两个方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。 什么是软件工程:

是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护他。 软件生命周期的8个阶段及其任务

1、问题定义:回答“要解决的问题是什么?”通过对客户的访问调查,系统分析员扼要地写出关于问题性质、工程目标和工程规模的书面报告,经过讨论和必要的修改之后这份报告应该得到客户的确认;

2、可行性研究:回答“对于上一阶段所确定的问题有行得通的办法吗?”任务是研究问题的范围,搜索这个问题是否值得去解,是否有可行的解决方法;

3、需求分析:确定“为了解决这个问题,目标系统必须做什么”,主要是确定目标系统必须具备哪些功能。任务有用正式文档准确记录对目标系统的需求(规格说明书);

4、总体设计(概要设计):回答“概括的说,应该怎样实现目标系统?”解决问题的策略及目标系统中应包含的程序,和确定程序由哪些模块组成以及模块间的关系;

5、详细设计(模块设计):把解法具体化,设计出程序的详细规格说明,回答“应该怎样具体地实现这个系统”;

6、编码和单元测试:任务是写出正确的容易理解、容易维护的程序模块;

7、综合测试:任务是通过各种类型的测试(及相应的调试)使软件达到预定的要求;

8、软件维护:任务是通过各种必要的维护活动使系统持久地满足用户的需要。有四类维护活动:改正性维护,适应性维护,完善性维护,预防性维护。 软件过程模型

瀑布模型、快速原型、螺旋模型(比较三者的优缺点)

瀑布模型:优点是可强迫开发人员采用规范的方法,严格地规定了每个阶段必须提交的文档,要求每个阶段交出的所有产品都必须经过质量保证小组的仔细检查;缺点是由文档驱动。

快速原型:优点是有助于保证用户的真实需要得到满足。

螺旋模型:优点是对可选方案和约束条件的强调有利于已有软件的重用,减少

5

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

了过多测试或测试不足所带来的风险,维护只是模型的另一个周期,在维护和开发之间并没有本质的区别;缺点是它靠风险驱动。

面向对象软件开发采用的喷泉模型 Ch2 可行性分析

可行性分析的三个方面

技术可行性 经济可行性 操作可行性

数据流图的四种成分

1、符号:4种基本符号:正方形(或立方体)表示数据的源点或终点;圆角矩形(或圆形)代表变换数据的处理;开口矩形(或两条平行横线)代表数据存储;箭头表示数据流;

2、例子; 3、命名:(1)为数据流(或数据存储)命名;(2)为处理命名; 4、用途:利用它作为交流信息的工具,作为分析和设计的工具。 可行性研究报告的内容 Ch3 需求分析 需求分析的任务

1、确定对系统的综合要求:功能需求,性能需求,可靠性和可用性需求,出错处理需求,接口需求,约束,逆向需求,将来可能提出的要求;

2、分析系统的数据要求; 3、导出系统的逻辑模型; 4、修正系统开发计划。

需求规格说明书:

通常用自然语言完整、准确、具体地描述系统的数据要求、功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求、约束、逆向需求、将来可能提出的要求。 Ch5 总体设计 总体设计:

也称为概要设计或者是初步设计

设计原理:模块化、抽象、逐步求精、模块独立(耦合和内聚)

模块化:把程序划分为独立命名且可独立访问的模块。每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。

逐步求精:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。

模块独立:是模块化、抽象、信息隐藏和局部化概念的直接结果。由两个定性标准度量:耦合衡量不同模块彼此间互相依赖(连接)的紧密程度;内聚衡量一个模块内部各个元素彼此结合的紧密程度。 耦合、内聚的种类 耦合:(由低到高)数据耦合、控制耦合、特征耦合、公共环境耦合、内容耦合;设计原则为尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完成不用内容耦合; 内聚:(由弱到强)低内聚分为偶然内聚、逻辑内聚、时间内聚;中内聚分为过程内聚、通信内聚;高内聚分为顺序内聚、功能内聚 信息流的类型 变换流和事务流

交换流:信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。

事务流:数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。处理T为事务中心,它完成任务为:(1)接受输入数据(事务),(2)分析每个事务以确定它的类型,(3)根据事务类型选取一条活动通路。

6

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

Ch6 详细设计 结构化程序设计

如果只允许使用顺序、IF--THEN--ELSE型分支和DO--WHILE型循环这3种基本控制结构,则称为经典的结果程序设计;

如果除了上述3种基本控制结构之外,还允许使用DO--CASE型多支结构和DO--UNTIL型循环结构,则称为扩展的结构程序设计;

如果再允许使用LEAVE(或BREAK)结构,则称为修正的结构程序设计。

过程设计工具(图形、图表和语言)

程序流程图

盒图(N--S图)

PAD图(问题分析图) 判定树、判定表

PDL(过程设计语言)

Ch7 实现

软件测试的目标:为了发现程序中的错误。 测试步骤

单元测试(模块测试)、集成测试(系统测试)、确认测试(验收测试)、平行运行

测试方法

白盒(结构测试) 黑盒(功能测试)

白盒测试技术

逻辑覆盖(语句、条件、判定、判定/条件、条件组合、路径)

黑盒测试技术

等价类划分 边界值分析 错误推测

Ch8 维护

什么是软件维护:

就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。 软件维护活动的分类:

四类:为了纠正在使用过程中暴露出来的错误而进行的改正性维护,为了适应外部环境的变化而进行的适应性维护,为了改进原有的软件而进行的完善性维护,为了改进将来的可维护性和可靠性而进行的预防性维护。 文档分类(用户文档和系统文档)及作用

文档分为两类:用户文档和系统文档;用户文档主要描述系统功能和使用方法;系统文档描述系统设计、实现和测试等各方面的内容。 软件可靠性的概念 Ch9 面向对象方法学

基本概念:对象、类、实例、消息、方法、属性、封装、继承、多态、重载、

对象:是由描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的统一体。

类:是对具有相同属性和行为的一个或者多个对象的描述,通常这个描述也包括对怎样创建该类的新对象的说明。

实例:是由某个特定的类所描述的一个具体的对象。

消息:是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明。通常一个消息由3部分组成:接收消息的对象,消息选择符(消息名),零个或多个变元。

方法:是对象所能执行的操作,也就是类中所定义的服务。在c++语言中把方法

7

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

称为成员函数。

属性:是类中所定义的数据,它是对客观世界实体所具有的性质的抽象。在c++语言中把属性称为数据成员。

封装:是信息隐藏,通过封装对外界隐藏了对象的实现细节。 继承:是子类自动地共享基类中定义的数据和方法的机制。

多态性:是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。在c++语言中,多态性是通过虚函数来实现的。 重载:有两种:函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字;运算符重载是指同一个运算符可以施加于不同类型的操作数上面。

类图

类之间的关系(关联、组合、共享、泛化)

面向对象的三种模型

对象模型(类图)、动态模型(状态图)、功能模型(DFD)

面向对象设计准则:

模块化;抽象;信息隐藏;弱耦合;强内聚;可重用。 软件重用:

代码重用,设计结果重用,分析结果重用。 子系统交互方式(两种):

客户-供应商关系、平等伙伴关系 软件配置管理 SCM的概念

软件配置项:

计算机程序、描述计算机程序的文档、数据CMM

作用:指导软件机构通过确定当前的过程成熟度并识别出对过程改进起关键作用的问题,从而明确过程改进的方向和策略。 五个等级(从低到高):初始级(1级),可重复级,已定义级,已管理级,优化级(5级)。

名词解释 (30%) 什么是软件工程?

是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护他。

2、耦合性和内聚性有几种类型?其耦合度、内聚强度的顺序如何? 耦合:(由低到高)数据耦合、控制耦合、特征耦合、公共环境耦合、内容耦合;设计原则为尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完成不用内容耦合; 内聚:(由弱到强)低内聚分为偶然内聚、逻辑内聚、时间内聚;中内聚分为过程内聚、通信内聚;高内聚分为顺序内聚、功能内聚

简述需求分析工作可以分成哪四个方面?软件需求分析的有哪三个基本原则?

(1)需求分析阶段分成四个方面:对问题的识别、分析与综合、制定规格说明和评审。 (2)三个基本原则:必须能够表达和理解问题的数据域和功能域;必须按自顶向下、逐步分解的方式对问题进行分解和不断细化;要给出系统的逻辑视图和物理视图。 什么是黑盒测试法、白盒测试法?

(1) 黑盒测试法是把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据,产生正确的输出信息。

(2) 白盒测试法是把程序看成装在一个透明的百盒子里面,测试者要完全知道程序的结

8

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

构和处理算法,它按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。

简述结构化程序设计方法的基本特点。

(1)尽可能少用goto语句的程序设计方法;(2)每个代码块都单入单出;(3)使用控制结构:顺序、选择和循环+Do_UNTIL和Do_CASE;(4)自顶向下逐步求精。

衡量模块独立性的两个定性标准是什么?这两个标准的定义分别是什么?在我们的软件设计中,关于模块独立性我们追求的目标是什么?

(1)衡量模块独立性的两个定性标准是耦合和内聚;

(2)耦合是指对一个软件结构内不同模块彼此之间相互依赖(连接)的紧密程度;而内聚则标志一个模块内部各个元素彼此结合的紧密程度;

(3)在我们的软件设计中,关于模块独立性我们追求的目标是高内聚低耦合。 问答题(30%):

T1:什么是软件危机?它有哪些典型表现?为什么会出现软件危机? 答:

软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。主要包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。 典型表现:(1)对软件开发成本和进度的估计常常很不准确;(2)用户对“已完成的”软件系统不满意的现象经常发生;(3)软件产品的质量往往靠不住;(4)软件常常是不可维护的;(5)软件通常没有适当的文档资料;(6)软件成本在计算机系统;(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。 产生软件危机的原因: 第一,客观原因:

软件是计算机系统中的逻辑部件而不是物理部件,其显著特点是缺乏“可见性”,因此,管理和控制软件开发过程相当困难。此外,软件维护通常意味着改正或修改原有的设计,从而使得软件较难维护。软件的另一个突出特点是规模庞大,而程序复杂性将随着程序规模增加以指数速度上升。 第二,主观原因:

在计算机系统发展的早期阶段,开发软件的个体化特点使得许多软件工程师对软件开发和维护有不少糊涂认识, 在实际工作中或多或少地采用了错误的方法,主要表现为:忽视软件需求分析的重要性,认为软件开发就是写程序,轻视软件维护,这是使软件问题发展成软件危机的主要原因。

另一方面还必须认识到,程序只是完整的软件产品的一个组成部分,一个软件产品必须由一个完整的配置组成,软件配置主要包括程序、文档和数据等成分。

T3:什么是软件工程?它有哪些本质特性?怎样用软件工程消除软件危机? 答:软件工程是指导计算机软件开发和维护的一门工程学科,该学科的目的是生产出能按期交付的、在预算范围内的、满足用户需求的、质量合格的软件产品。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效的维护它,这就是软件工程。 软件工程有以下本质特性:(1)软件工程关注于大型程序的构造;(2)软件工程的中心课题是控制复杂性;(3)软件经常变化;(4)开发软件的效率非常重要;(5)和谐地合作是开发软件的关键;(6)软件必须有效地支持它的用户;(7)在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。 7条基本原理,消除软件危机:(1)用分阶段的生命周期计划严格管理;(2)坚持进行阶段评审;(3)实行严格的产品控制;(4)采用现代程序设计技术;(5)结果应能清楚地审查;

9

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

(6)开发小组的人员应该少而精;(7)承认不断改进软件工程实践的必要性。 T4:简述结构化范型和面向对象范型的要点,并分析它们的优缺点。 答:传统方法学(结构化范型)要点:

(1)采用结构化技术(结构化分析、结构化设计和结构化实现)完成软件开发的各项任务; (2)把软件生命周期划分成若干阶段,然后顺序完成各个阶段的任务;

(3)每个阶段的开始和结束都有严格的标准,对于任何两个相邻的阶段而言,前一阶段的结束标准就是后一阶段的开始标准;

(4)在每个阶段结束之前都必须正式地进行严格的技术审查和管理复审。 面向对象方法学(面向对象范型)的要点:

(1)把对象作为融合了数据及在数据上操作的软件构件。也就是说,用对象分解取代了传统方法的功能分解;

(2)把所有对象都划分成类;

(3)按照父类与子类的关系,把若干个相关类组织成一个层次结构的系统; (4)对象彼此间仅能通过发送消息互相联系。 使用结构化范型开发出的软件,在本质上是一个单元,这是用结构化范型开发大型软件产品时不甚成功的一个重要原因。相反,当正确地使用面向对象范型时,开发出的软件产品是由许多小的、相对独立的单元(对象)组成的。因此,面向对象范型降低了软件产品的复杂度,从而简化了软件开发与维护工作。

1.假设要求你开发一个软件,该软件的功能是把读入的浮点数开平方,所得到的结果应该精确到小数点后4位。一旦实现并测试完之后,该产品将被抛弃。你打算选用哪种软件生命周期模型?请说明你做出选择的理由。

答案:对这个软件的需求很明确,实现开平方功能的算法也很成熟,因此,既无须通过原型来分析需求也无须用原型来验证设计方案。此外,一旦实现并测试完之后,该产品将被抛弃,因此也无须使用有助于提高软件可维护性的增量模型或螺旋模型来开发该软件。 综上所述,为了开发这个简单的软件,使用大多数人所熟悉的瀑布模型就可以了。 2.假设你被任命为一家软件公司的项目负责人,你的工作是管理该公司已被广泛应用的字处理软件的新版本的开发。由于市场竞争激烈,公司规定了严格的完成期限并且已对外公布。你打算采用哪种软件生命周期模型?为什么?

答案:对这个项目的一个重要要求是,严格按照已对外公布了的日期完成产品开发工作,因此,选择生命周期模型时应该着重考虑哪种模型有助于加快产品开发的速度。使用增量模型开发软件时可以并行完成开发工作,因此能够加快开发进度。 这个项目是开发该公司已被广泛应用的字处理软件的新版本,从上述事实至少可以得出三点结论:第一,旧版本相当于一个原型,通过收集用户对旧版本的反映,较容易确定对新版本的需求,没必要再专门建立一个原型系统来分析用户的需求;第二,该公司的软件工程师对字处理软件很熟悉,有开发字处理软件的丰富经验,具有采用增量模型开发新版字处理软件所需要的技术水平;第三,该软件受到广大用户的喜爱,今后很可能还要开发更新版本,因此,应该把该软件的体系结构设计成开放式的,以利于今后的改进和扩充。 综上所述,采用增量模型来完成这个项目比较恰当。

T1:在软件开发的早期阶段为什么要进行可行性研究?应该从哪些方面研究目标系统的可行性? 答:可行性研究的目的是,用最小的代价在尽可能短的时间内研究并确定客户提出的问题是否有行得通的解决办法。必须分析几种主要的候选解法的利弊,从而判断原定的系统目标和规模是否现实,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度。 对每种可能的解决方案都应该仔细研究它的可行性,通常,至少从下述三个方面研究每种解

10

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

5 6 零件编号 零件编号 零件制造商 零件名称 答案:当模块p调用模块q时(接口1),它传递了一个参数——飞机类型。当模块q把控制返还给模块p时,它传回一个状态标志。 因此,模块p和q之间的(接口1)、模块r和t之间(接口5)及模块s和u之间(接口6)都是数据耦合,因为它们传递的都是一个简单变量。 如果两个模块中的一个模块给另一个模块传递控制元素,也就是说,如果一个模块明显地控制另一个模块的逻辑,则它们之间具有控制耦合。例如,当给具有逻辑内聚的模块传递功能代码时就传递了控制元素。另一个控制耦合的例子是把控制开关作为一个参数传递。图中模块q调用模块r时(接口3)传递一个功能代码,因此,这两个模块之间是控制耦合。 由已知条件,模块p, t, u更新同一个数据库,因此,它们之间具有公共环境耦合。 当模块p调用模块s时(接口2),如果模块s使用或更新模块p传递给它的零件清单中的所有元素,则模块p和模块s之间的耦合是数据耦合;但是,如果模块s只访问该清单中的一部分元素,则模块p和s之间的耦合是特征耦合。模块q和s之间(接口4)的耦合情况类似。由于图和表中所给出的信息不足以准确地描述各个模块的功能,所以不能确定这两对模块之间的耦合是数据耦合还是特征耦合。

2.从供选择的答案中选出在下列叙述中括弧内字母应该代表的正确内容

(1)一组语句在程序的多处出现,为了节省内存空间把这些语句放在一个模块中,该模块的内聚度是(A)的。

(2)将几个逻辑上相似的的成分放在一个模块中,该模块的内聚度是(B)的。 (3)模块中所有成分都使用共同的数据,该模块的内聚度是(C)的。

(4)模块内某些成分的输出是另一些成分的输入,该模块的内聚度是(D)的。

(5)模块中所有成分结合起来完成单独一项任务,该模块的内聚度是(E)的。它具有简明的外部界面,由它构成的软件易于理解,测试和维护。 [供选择的答案] A~E

1.功能性 2.顺序性 3.通信性 4.过程性 5.偶然性 6.时间性 7.逻辑性 [请选择]

A: 5 偶然性 B:7 逻辑性C:通信性 D:2 顺序性E:1 功能性 T3:画出下列伪码程序的程序流程图和盒图

START

IF p THEN

WHILE q DO f END DO ELSE

BLOCK g n

END BLOCK END IF STOP

答案:(1)程序流程图 (2)盒图

16

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

开始 F T q循环 WHILE q p F p T q g f n g f n q循环 停止

T4:图6.18给出的程序流程图代表一个非结构化的程序,问: (1)为什么说它是非结构化的? (2)设计一个等价的结构化程序

(3)在(2)题的设计中使用附加的标志变量flag了吗?若没有,再设计一个使用flag的程序;若用了,再设计一个不用flag的程序。

答案:(1)通常所说的结构化程序是按照狭义的结构程序的定义衡量,符合定义规定的程序。图中所示的程序的循环控制结构有两个出口,显然不符合狭义的结构程序的定义,因此是非结构化的程序。

(2)使用附加的标志变量flag,至少有两种方法可以把该程序改造为等价的结构化程序,如下盒图所示:

flag = TRUE p AND flag g F q T flag = TRUE F q T flag=FALSE g (NOT q) OR (NOT flag) (3)不使用flag把该程序改造为等价的结构化程序的方法如图所示:

flag=FALSE 17

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

F q T g (NOT q) OR (NOT p) T8:画出下列伪码程序的流图,计算它的环形复杂度,这个程序的逻辑有什么问题吗? C EXAMPLE LOOP: DO WHILE Z>0 A=B+1 IF A>10 THEN X=A ELSE Y=Z END IF IF Y<5 THEN PRINT X,Y ELSE IF Y=2 1 2 3 4 5 6 7 8 END IF G=H+R END DO IF F>0 THEN PRINT G ELSE PRINT K END IF STOP THEN GOTO LOOP ELSE C=3 END IF 9 10 11 12 13 14 程序流程图和流图分别如下图所示:

Z>0循环 WHILE Z>0 T A=B+1 T X=A T PRINT X, Y Y<5 F C=3 G=H+R Z>0循环 T PRINT G F>0 F PRINT K

A>10 F Y=Z F Y=2 10 T 12 14 11 13 7 9 1 2 3 4 6 8 5 (1)环形复杂度等于流图中的区域数

上图所求的流图中有六个区域,故环形复杂度等于6。

18

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

(2)环形复杂度等于流图中边的条数减去节点数之后加2

流图中共有18条边,14个节点,故它的环形复杂充为18-14+2=6 (3)环形复杂度等于程序中的判断数加1

流图中有2条输出弧的节点(节点1,3,6,8,11)对应于程序中的1个判断,因此,流图的环形复杂度为5+1=6 存在的逻辑问题:

流图中节点6和8有矛盾,判定节点8对应的条件无法满足;

另外,Z的值没有变化,该程序将是一个无限循环或根本不执行循环。 第一题:用三种方法计算图中所示流图的环形复杂度

a b c d e f g h 答案:

(1)环形复杂度等于流图中的区域数

上图所求的流图中有五个区域,故环形复杂度等于5。 (2)环形复杂度等于流图中边的条数减去结点数之后加2 流图中共有11条边,8个结点,故它的环形复杂充为11-8+2=5 (3)环形复杂度等于程序中的判断数加1

流图中有2条输出弧的结点(结点c和f)对应于程序中的1个判断,有n(n>2)条输出弧的结点(例如结点a有3条输出弧)对应于程序中的n-1个判断。因此,流图的环形复杂度为2×1+1×(3-1)+1=5 第二题:

假设某航空公司规定,乘客可以免费托运重量不超过30kg的行李。当行李重量超过30kg时,对头等舱的国内乘客超重部分每公斤收费4元,对其他舱的国内乘客超重部分每公斤收费6元,对外国乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。请用判定树表示与上述每种条件组合相对应的计算行李费的算法。 答案:

T4:回答下列问题:

(1)什么是模块测试和集成测试?它们各自有什么特点?

(2)假设有一个由1000行FORTRAN语句构成的程序(经编译后大约有5000条机器指令),估计在对它进行测试期间将发现多少个错误?为什么? (3)设计下列伪码程序的语句覆盖和路径覆盖测试用例 START

INPUT (A, B, C) IF A>5

19

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

THEN X=10 ELSE X=1 END IF IF B>10 THEN Y=20 ELSE Y=2 END IF IF C>15 THEN Z=30 ELSE Z=3 END IF

PRINT (X, Y, Z) STOP 答案:

(1)模块测试把每个模块作为一个单独的实体来测试,目的是发现并改正程序模块中的错误,保证每个模块作为一个单元能正确地运行,这个测试步骤中所发现的往往是编码和详细设计的错误。测试重点在于模块接口、局部数据结构、重要的执行通路、出错处理通路和边界条件。

集成测试是测试和组装软件的系统化技术,主要目标是发现与接口有关的问题。有两种集成测试策略:非渐增式测试方法和渐增式测试。

(2)经验表明, 在类似的程序中,单位长度里的错误数ET/IT近似为常数。美国的一些统计数字告诉我们,通常0.5*10-2<= ET/IT <=2*10-2

也就是说,在测试之前每1000条指令中大约有5~20个错误

假设在该程序的每1000条指令中有10个错误,则估计在对它进行测试期间将发现的错误数为:

5000×10 / 1000 = 50 (3)

? 语句覆盖的测试用例:

因为每个判定表达式为真或为假时均有赋值语句,为了使每个语句都至少执行一次,总共需要两组测试数据,以便使得每个判定表达式取值为真或为假各一次。下面是实现语句覆盖的典型测试用例:

①使3个判定表达式之值全为假 输入:A=1, B=1, C=1

预期的输出:X=1,Y=2,Z=3 ②使3个判定表达式之值全为真 输入:A=20, B=40, C=60

预期的输出:X=10,Y=20,Z=30 ? 路径覆盖的测试用例:

本程序共有8条可能的执行通路,为做到路径覆盖总共需要8组测试数据。下面是实现路径覆盖的典型测试用例:

① 3个判定表达式之值全为假 输入:A=1, B=1, C=1

预期的输出:X=1,Y=2,Z=3 ② 3个判定表达式依次为假 假 真

20

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

画图题

传统瀑布模型

快速原型模型

增量模型

简化的螺旋模型

系统流程图基本符号

5

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

数据流图的符号

Warnier图的例子

IPO图

保险箱的状态转换图

P42例子中的图

定货系统的基本系统模型

定货系统的功能级数据流图

Petri网的组成

处理事务的功能进一步分解后的数据流图

带标记的Petri网

6

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

Petri网在转换t1被激发后的情况

事物流

Petri网在转换t2被激发后的情况

数字仪表板系统的数据流图

含禁止线的Petri网

模块的作用域和控制域(深度、宽度、扇出、扇入)

数字仪表板系统的第一级分解

未经精化的输入结构

面向数据流的设计方法 变换流

未经精化的变换结构

7

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

未经精化的输出结构

精化后的数字仪表板系统的软件结构

3种基本的控制结构

盒图的基本符号

PAD图的基本符号

用判定树表示计算行李费的算法

8

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

由B、C、D 3个元素顺序组成

根据条件A是B或C或D中的某一个

改进的Jackson图

※Jackson方法

表示输入输出数据结构的Jackson图 a是输入数据结构 b是输出数据结构

描绘统计空格程序结构的Jackson图

把操作和条件分配到程序结构图适当位置

把程序流程图映射成流图(计算环形复杂度) a是程序流程图 b是流图

对象的形象表示

用自动机模拟对象

9

本文来源:https://www.bwwdw.com/article/tz0g.html

Top