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

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

软件工程复习

选择题(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语言

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

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

软件详细设计的主要任务是确定每个模块的() A、算法和使用的数据结构

软件结构图的形态特征能反映程序重用率的是() C、扇入

为了提高模块的独立性,,模块内部最好是() C、功能内聚

软件结构图中,模块框之间若有直线连接,表示它们之间存在()A、调用关系

“软件危机”是指() C、软件开发和维护中出现的一系列问题

具有风险分析的软件生命周期模型是() C、螺旋模型

数据流图(DFD)中的每个数据处理至少需要() D、一个输入数据流和一个输出流

下列哪个阶段不属于软件生存周期的三大阶段() C、编码阶段

需求分析是() A、软件开发工作的基础

原型化方法是软件开发中一类常用的方法,它与结构化方法相比较,更需要()

B、完整的生命周期

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

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

软件危机:

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

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

软件生命周期的8个阶段及其任务

1、问题定义:回答“要解决的问题是什么?”通过对客户的访问调查,系统分析

员扼要地写出关于问题性质、工程目标和工程规模的书面报告,经过讨论和必要的修改之后这份报告应该得到客户的确认;

2、可行性研究:回答“对于上一阶段所确定的问题有行得通的办法吗?”任务是

研究问题的范围,搜索这个问题是否值得去解,是否有可行的解决方法;

3、需求分析:确定“为了解决这个问题,目标系统必须做什么”,主要是确定目标

系统必须具备哪些功能。任务有用正式文档准确记录对目标系统的需求(规格说明书);

4、总体设计(概要设计):回答“概括的说,应该怎样实现目标系统?”解决问题

的策略及目标系统中应包含的程序,和确定程序由哪些模块组成以及模块间的关系;

5、详细设计(模块设计):把解法具体化,设计出程序的详细规格说明,回答“应

该怎样具体地实现这个系统”;

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

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

求;

8、软件维护:任务是通过各种必要的维护活动使系统持久地满足用户的需要。有

四类维护活动:改正性维护,适应性维护,完善性维护,预防性维护。

软件过程模型

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

瀑布模型:优点是可强迫开发人员采用规范的方法,严格地规定了每个阶段必

须提交的文档,要求每个阶段交出的所有产品都必须经过质量保证小组的仔细

检查;缺点是由文档驱动。

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

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

了过多测试或测试不足所带来的风险,维护只是模型的另一个周期,在维护和

开发之间并没有本质的区别;缺点是它靠风险驱动。

面向对象软件开发采用的喷泉模型

Ch2 可行性分析

可行性分析的三个方面

技术可行性

经济可行性

操作可行性

数据流图的四种成分

1、符号:4种基本符号:正方形(或立方体)表示数据的源点或终点;圆角矩形(

或圆形)代表变换数据的处理;开口矩形(或两条平行横线)代表数据存储;箭头表示数据流;

2、例子;

3、命名:(1)为数据流(或数据存储)命名;(2)为处理命名;

4、用途:利用它作为交流信息的工具,作为分析和设计的工具。

可行性研究报告的内容

Ch3 需求分析

需求分析的任务

1、确定对系统的综合要求:功能需求,性能需求,可靠性和可用性需求,出错处

理需求,接口需求,约束,逆向需求,将来可能提出的要求;

2、分析系统的数据要求;

3、导出系统的逻辑模型;

4、修正系统开发计划。

需求规格说明书:

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

总体设计:

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

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

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

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

模块独立:是模块化、抽象、信息隐藏和局部化概念的直接结果。由两个定性标准度量:耦合衡量不同模块彼此间互相依赖(连接)的紧密程度;内聚衡量一个模块内部各个元素彼此结合的紧密程度。

耦合、内聚的种类

耦合:(由低到高)数据耦合、控制耦合、特征耦合、公共环境耦合、内容耦合;设计原则为尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完成不用内容耦合;

内聚:(由弱到强)低内聚分为偶然内聚、逻辑内聚、时间内聚;中内聚分为过程内聚、通信内聚;高内聚分为顺序内聚、功能内聚

信息流的类型

变换流和事务流

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

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

Ch6 详细设计

结构化程序设计

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

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

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

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

程序流程图

盒图(N--S图)

PAD图(问题分析图)

判定树、判定表

PDL(过程设计语言)

Ch7 实现

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

测试步骤

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

测试方法

白盒(结构测试)

黑盒(功能测试)

白盒测试技术

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

黑盒测试技术

等价类划分

边界值分析

错误推测

Ch8 维护

什么是软件维护:

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

软件维护活动的分类:

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

文档分类(用户文档和系统文档)及作用

文档分为两类:用户文档和系统文档;用户文档主要描述系统功能和使用方法;系统文档描述系统设计、实现和测试等各方面的内容。

软件可靠性的概念

Ch9 面向对象方法学

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

对象:是由描述该对象属性的数据以及可以对这些数据施加的所有操作封装在

一起构成的统一体。

类:是对具有相同属性和行为的一个或者多个对象的描述,通常这个描述也包

括对怎样创建该类的新对象的说明。

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

消息:是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明

。通常一个消息由3部分组成:接收消息的对象,消息选择符(消息名),零个

或多个变元。

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

称为成员函数。

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

语言中把属性称为数据成员。

封装:是信息隐藏,通过封装对外界隐藏了对象的实现细节。

继承:是子类自动地共享基类中定义的数据和方法的机制。

多态性:是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父

类对象也可以发送给子类对象。在c++语言中,多态性是通过虚函数来实现的。

重载:有两种:函数重载是指在同一作用域内的若干个参数特征不同的函数可

以使用相同的函数名字;运算符重载是指同一个运算符可以施加于不同类型的

操作数上面。

类图

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

面向对象的三种模型

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

面向对象设计准则:

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

软件重用:

代码重用,设计结果重用,分析结果重用。

子系统交互方式(两种):

客户-供应商关系、平等伙伴关系

软件配置管理

SCM的概念

软件配置项:

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

作用:指导软件机构通过确定当前的过程成熟度并识别出对过程改进起关键作

用的问题,从而明确过程改进的方向和策略。

五个等级(从低到高):初始级(1级),可重复级,已定义级,已管理级,优化

级(5级)。

名词解释(30%)

什么是软件工程?

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

2、耦合性和内聚性有几种类型?其耦合度、内聚强度的顺序如何?

耦合:(由低到高)数据耦合、控制耦合、特征耦合、公共环境耦合、内容耦合;设计原则为尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完成不用内容耦合;

内聚:(由弱到强)低内聚分为偶然内聚、逻辑内聚、时间内聚;中内聚分为过程内聚、通信内聚;高内聚分为顺序内聚、功能内聚

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

(1)需求分析阶段分成四个方面:对问题的识别、分析与综合、制定规格说明和评审。

(2)三个基本原则:必须能够表达和理解问题的数据域和功能域;必须按自顶向下、逐步分解的方式对问题进行分解和不断细化;要给出系统的逻辑视图和物理视图。

什么是黑盒测试法、白盒测试法?

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

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

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

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

(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)结果应能清楚地审查;

(6)开发小组的人员应该少而精;(7)承认不断改进软件工程实践的必要性。

T4:简述结构化范型和面向对象范型的要点,并分析它们的优缺点。

答:传统方法学(结构化范型)要点:

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

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

(4)在每个阶段结束之前都必须正式地进行严格的技术审查和管理复审。

面向对象方法学(面向对象范型)的要点:

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

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

(3)按照父类与子类的关系,把若干个相关类组织成一个层次结构的系统;

(4)对象彼此间仅能通过发送消息互相联系。

使用结构化范型开发出的软件,在本质上是一个单元,这是用结构化范型开发大型软件产品时不甚成功的一个重要原因。相反,当正确地使用面向对象范型时,开发出的软件产品是由许多小的、相对独立的单元(对象)组成的。因此,面向对象范型降低了软件产品的复杂度,从而简化了软件开发与维护工作。

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

答案:对这个软件的需求很明确,实现开平方功能的算法也很成熟,因此,既无须通过原型来分析需求也无须用原型来验证设计方案。此外,一旦实现并测试完之后,该产品将被抛弃,因此也无须使用有助于提高软件可维护性的增量模型或螺旋模型来开发该软件。

综上所述,为了开发这个简单的软件,使用大多数人所熟悉的瀑布模型就可以了。

2.假设你被任命为一家软件公司的项目负责人,你的工作是管理该公司已被广泛应用的字处理软件的新版本的开发。由于市场竞争激烈,公司规定了严格的完成期限并且已对外公布。你打算采用哪种软件生命周期模型?为什么?

答案:对这个项目的一个重要要求是,严格按照已对外公布了的日期完成产品开发工作,因此,选择生命周期模型时应该着重考虑哪种模型有助于加快产品开发的速度。使用增量模型开发软件时可以并行完成开发工作,因此能够加快开发进度。

这个项目是开发该公司已被广泛应用的字处理软件的新版本,从上述事实至少可以得出三点结论:第一,旧版本相当于一个原型,通过收集用户对旧版本的反映,较容易确定对新版本的需求,没必要再专门建立一个原型系统来分析用户的需求;第二,该公司的软件工程师对字处理软件很熟悉,有开发字处理软件的丰富经验,具有采用增量模型开发新版字处理软件所需要的技术水平;第三,该软件受到广大用户的喜爱,今后很可能还要开发更新版本,因此,应该把该软件的体系结构设计成开放式的,以利于今后的改进和扩充。

综上所述,采用增量模型来完成这个项目比较恰当。

T1:在软件开发的早期阶段为什么要进行可行性研究?应该从哪些方面研究目标系统的可行性?

答:可行性研究的目的是,用最小的代价在尽可能短的时间内研究并确定客户提出的问题是否有行得通的解决办法。必须分析几种主要的候选解法的利弊,从而判断原定的系统目标和规模是否现实,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度。

对每种可能的解决方案都应该仔细研究它的可行性,通常,至少从下述三个方面研究每种解

决方案的可行性:(1)技术可行性:使用现有的技术能否实现这个系统;(2)经济可行性:这个系统的经济效益能否超过它的开发成本;(3)操作可行性:这个系统的操作方式在该客户组织内是否行得通。

T5:北京某高校可用的电话号码有以下几类:校内电话号码由4位数字组成,第1位数字不是0;校外电话又分为本市电话和外地电话两类,拨校外电话需先拨0,若是本市电话刚再接着拨8位数字(第1位不是0),若是外地电话则拨3位区码再拨8位电话号码(第1位不是0)。

用2.5.2小节讲述的定义数据的方法,定义上述的电话号码。 答:电话号码=[校内电话号码 | 校外电话号码] 校内电话号码=非零数字+3位数字

校外电话号码=[本市号码 | 外地号码] 本市号码=数字零+8位数字

外地号码=数字零+3位数字+8位数字 非零数字=[ 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ] 数字零=0

3位数字=3{数字}3

8位数字=非零数字+7位数字 7位数字=7{数字}7

数字=[ 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ]

目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还可能会延误抢救时机。某医院打算开发一个以计算机为中心的患者监护系统,试写出问题定义,并给出数据流图。

医院对患者监护系统的基本要求是随时接收每个病人的生理信号(脉搏、体温、血压、心电图等),定时记录病人情况以形成患者日志,当某个病人的生理信号超出医生规定的安全范围时向值班护士发出警告信息,此外,护士在需要时还可以要求系统印出某个指定病人的病情报告。

答:从问题陈述可知,本系统的数据源点是“病人”和“护士”,他们分别提供生理信号和要求病情报告的信息。进一步分析问题陈述,从系统应该“定时记录病人情况以形成患者日志”这项要求可以想到,还应该有一个提供日期和时间信息的“时钟”作为数据源点。 从问题陈述容易看出,本系统的数据终点是接收警告信息和病情报告的护士。 系统对病人生理信号的处理功能主要是“接收信号”、“分析信号”和“产生警告信息”。此外,系统还应该具有“定时取样生理信号”、“更新日志”和“产生病情报告”的功能。 为了分析病人生理信号是否超出了医生规定的安全范围,应该存储“患者安全范围”信息。此外,定时记录病人生理信号所形成的“患者日志”也是一个数据存储。 本系统的基本系统模型如图所示:

要求报告

日期、时间 警告信息 病情报告

生理信号

病人

时钟 护士 护士

患者监护系统

本系统的功能级数据流图如图所示:

2.为开发一个铁路自动售票系统(该系统预计从2004年使用到2014年),请完成下面的数据流图和数据字典,即从供选择的答案中选出A 、B 、C 、D 和E 的内容,并给出F、G和H的内容,填在答案栏中。 (1)数据流图

[供选择的答案]

A~E ①车次表 ②接受 ③售票记录④购票请求 ⑤拒绝 (2)数据字典 购票请求=F 乘车日期=G

到站=4{字母}20 字母=[“A”..“Z”|“a ”..“z ”] 车次=“001”..“999” 拒绝=[无车次|无票] 无车次=“no train ” 无票=“no ticket ” 接受=“to sale ”

已收款

车费

A 乘客

受理

收款

登记

日志数据

日志数据

病情报告

危急病 人信息

生理 信号

D1 患者安全范围

日期 时间

生理 信号

病人

时钟

护士

护士

2 分析 信号

6 产生病情报告 警告 信息 3 产生警告信息

生 理 信 号

1 接收 信号 定时的

生理信号

4

定时取样

生理信号 5 更新 日志 要求 报告

D2 患者日志

已收款=“yes ”

车次表={起站+止站+车次} 起站=止站=到站

售票记录={乘车日期+起站+止站+车次+座号} 座号=车厢号+座位号 车厢号=“01”..“20” 座位号=H 注意:

①“01”..“20”表示数字范围从1到20;

②乘车日期应给出年、月、日,例如,2004/06/21; ③假设每个车厢有100个座位。 答案栏:

A:________ B:________ C:________D:________ E:________ F:________ G:________ H:________ 答案栏:

A:购票请求 B:接受 C:拒绝 D:车次表 E:售票记录 F:{乘车日期+到站+车次} G:“2004”..“2014”+“/”+“01”..“12”+“/”+“01”..“31” H:“001”..“100”

T2:怎样与用户有效地沟通以获取用户的真实需求? 答:(1)访谈;(2)面向数据流自顶向下求精;(3)简易的应用规格说明技术;(4)快速建立软件原型。

T3:银行计算机储蓄系统的工作过程大致如下:储户填写的存款单或取款单由业务员输入系统,如果是存款则则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码(可选)等信息,并印出存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。

用数据流图描绘本系统的功能,并用实体-联系图描绘系统中的数据对象。 答:

(1)描绘本系统功能的数据流图如下图所示

(2)本问题中共有两类实体,分别是“储户”和“储蓄所”,它们之间存在“存取款”关系。因为一位储户可以在多家储蓄所存取款,一家储蓄所拥有多位储户,所以“存取款”是多对

存款信息 利息值

利 息 清 单 存款存单

存款 信息

D1 存款信息

取款单

存款单 储户

2 打印存款单

5 打印利息清单

存款信息 1 记录存款信息

存款信息

3 核对 密码

4 计算 利息

储户

多(M :N )关系。

储户的属性主要有姓名、住址、电话号码和身份证号码,储蓄所的属性主要是名称、地址和电话号码,则数额、类型、到期日期、利率和密码则是联系类型存取款的属性。E -R 图如下所示:

T6:复印机的工作过程大致如下:未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现没纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告,等待维修人员来排除故障,故障排除后回到闲置状态。 试用状态转换图描绘复印机的行为。 答:

从问题描述可知,复印机的状态主要有闲置、复印、缺纸和卡纸。引起状态转换的事件主要是复印命令、完成复印命令、发现缺纸、装满纸、发生卡纸故障和排除了卡纸故障。 下图所示的状态转换图描绘了复印机的行为。

1.请为某仓库的管理设计一个ER模型。该仓库主要管理零件的订购和供应等事项。仓库向工程项目供应零件,并且根据需要向供应商订购零件。 分析:

(1)确定实体类型

本问题中共有三类实体,分别是“零件”、“工程项目”和“供应商”。 (2)确定联系类型

一种零件可供应多个工程项目,一个工程项目需要使用多种零件,因此,零件与工程项目之

储户

储蓄所

存取款

住址 姓名

到期日期

利率

类型

数额

名称

电话号码

地址

电话号码

身份证号码

密码

发现缺纸

装满纸

排除卡纸故障

完成复印命令 复印命令

复印

Do/复印 发生卡纸故障

闲置

卡纸 Do/警告

缺纸 Do/警告

间的联系“供应”,是多对多(M:N)联系;类似,零件与供应商之间的联系“订购”,也是多对多(M:N)联系。

(3)确定实体类型和联系类型的属性

实体类型“零件”的主要属性是零件编号、零件名称、颜色和重量。 实体类型“工程项目”的主要属性是项目编号、项目名称和开工日期。 实体类型“供应商”的属性主要有供应商编号、供应商名称和地址。 联系类型“供应”的属性是向某工程项目供应的某种零件的数量。 联系类型“订购”的属性是向某供应商订购的某种零件的数量。 (4)把实体类型、联系类型及属性组合成ER图。如下图所示:

T3:用面向数据流的方法设计下列系统的软件结构:

(1)储蓄系统 (2)机票预订系统 (3)患者监护系统 第一题:分析下图,确定模块之间的耦合类型

在图中已经给模块之间的接口编了号码,下表描述了模块之间的接口

编 号 输 入 输 出 1 飞机类型 状态标志 2 飞机零件清单 3 功能代码 4

飞机零件清单

M N

工程项目

供应商

零件

供应

订购

项目名称

项目编号

订购量

重量

颜色 零件名称 零件编号 供应量

供应商编号

供应商名称

地址

开工日期

6 2

5 3 4

1

p

u

r 模块p, t 和u 更新同一个数据库

s t

q

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)盒图

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

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

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

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

(3)不使用flag 把该程序改造为等价的结构化程序的方法如图所示:

flag = TRUE p AND flag

g

F q T

flag=FALSE

flag = TRUE

(NOT q) OR (NOT flag)

F q T flag=FALSE g F

p

n

T

f

g

开始 q 循环 WHILE q

q 循环

停止

F p T q g

f n

T8:画出下列伪码程序的流图,计算它的环形复杂度,这个程序的逻辑有什么问题吗? C EXAMPLE

LOOP: DO WHILE Z>0 1 A=B+1 2 IF A>10 3 THEN X=A 4 ELSE Y=Z 5 END IF

IF Y<5 6 THEN PRINT X,Y 7 ELSE IF Y=2

8

THEN GOTO LOOP ELSE C=3 9

END IF

END IF

G=H+R 10 END DO

IF F>0 11 THEN PRINT G 12 ELSE PRINT K 13 END IF

STOP

14

程序流程图和流图分别如下图所示:

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

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

F T

T F A>10

X=A PRINT X, Y

A=B+1 Z>0循环 WHILE Z>0

Z>0循环

Y=Z T Y<5

T Y=2

F C=3 G=H+R F>0

PRINT G

T F PRINT K

1 2 3 4

5

6

7

8 9 10

11

12

13

14

(NOT q) OR (NOT p)

F q T

g

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

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

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

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

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

答案:

(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

a

f b

g c

d

h

e

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)经验表明,在类似的程序中,单位长度里的错误数E T/I T近似为常数。美国的一些统计数字告诉我们,通常0.5*10-2<= E T/I T <=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个判定表达式依次为假假真

最新公司内部管理系统资料

内部管理系统(人事管理系统+客户关系管理系统) 需 求 分 析 说 明 书 2015.10.9

一、人事管理系统部分 1、系统人员类型 公司的人员类型有以下几种:普通员工、部门经理、总经理、人事部经理和人事助 2、系统基本功能图解 2.1 基本机构图

2.2用例图解

3、功能详情 3.3.1 登录页面 需要登录的人员,对于不同的身份,他们的权限是不一样的。当用户输入ID和密码时,查询数据库,如用户名和密码正确,则进入相应的员工信息页面,若不正确,则提示用户用户名或密码错误,仍显示当前页面

3.3.2 查询员工资料 该模块主要查看自己/同事的资料,以更好促进公司员工之间的相互了解。同时也可以修改自己的部分信息。 主要功能包括: ●查询自己的详细信息:员工ID、员工姓名、电子邮件、所在部门名称(不是部门ID)、经理、 分机和自我介绍等 ●修改自己的自我介绍 ●修改自己的登录密码 ●查询、搜索其他同事的相关信息 3.3.3 员工资料管理 人事部门负责维护员工的基本资料。当员工第一天来公司报道时,人事部门将员工的基本资料(姓名、性别、出生日期、电子邮件及所属部门等)录入到数据中,并打印一份报道单给员工,上门列出了该员工的登录ID、公司邮件的地址、该员工的部门名称以及该员工的同部门同事列表。 主要功能包括: ●添加/修改/删除员工 ●按任意条件搜索员工(支持模糊查询) ●打印员工报道单 上传/修改员工的照片。

3.3.4请假模块 请假申请: 员工根据工龄享受年假。如果员工是本年度才加入公司的,则需根据报到日期按公司规章制度计算假期期数。员工请假不可以超过规定的请假小时数。员工可以通过本模块提交/查看/取消申请。 主要功能包括: ●显示员工本人年假总小时数、已使用小时数、当前可用小时数 ●用日历的方式显示可请假的日期,并突出显示国定节假日 查看员工本人某段时期内的请假记录、申请、批准状态等。 请假审核: 该模块只允许经理访问。经理可以查看下属的请假记录,批准/否决其中申请。 主要功能包括: ●显示经理下属名单 ●显示某段时间内所有/部分员工的请假记录汇总,包括年假总数、已使用小时数、当前可用小时 数、请假理由 显示当前所有待批准的请假记录,可以在上面执行“批准/否决”操作 请假管理: 人事部可以查看公司所有员工的请假记录,同时可以设定国定假日。 主要功能包括: ●设定国定假日 ●按部门汇总某段时期内的请假记录。 请假功能流程图:

软件工程复习资料

软件概念:与计算机系统操作有关的程序、数据以及相关文档的完整集合 软件特点:逻辑实体、智力产品,制造即拷贝2无磨损和老化,不遵循“浴盆曲 线”,但存在退化问题3尚未摆脱手工方式,软件移植的需要,复杂(问题复杂性/ 程序结构复杂性),软件开发的性质如成本、进度、质量等难以估计控制,维护困难,可复用性软件分类:按功能:系统软件/支撑软件/应用软件2按工作方式:实时处理/分时/交互/批处理3按服务对象:项目 / 产品(定制 / 通用)4按失效影响:关键/ 非关键5规模:微型、小型、中型、大型、甚大型、极大型 软件危机的表现:软件开发成本和进度失控,维护代价高2用户不满意3软件 质量不可靠4软件不可维护 5无文档资料6 计算机系统中软件成本比重加大7软件开发生产率提高不能满足要求软件危机的原因软件的规模和复杂性2人类智力的局限性3协同工作的困难性4缺乏方法学和工具5用户描述不精确、二义、遗漏,双方理解有偏差缓解软件危机的途径组织管理、协同配合的工程2软件工程的理论模型、技术方法3软件工具 软件工程的三要素1过程:管理部分2方法:技术手段3工具:自动或半自 动地支持软件的开发和管理三要素的关系:相互关联与支持 软件生命周期:可行性研究-需求分析-概要设计-详细设计-实现-集成测试-确认 测试-使用与维护-退役 软件开发和测试活动之间的关系软件 开发和软件测试都是软件生命周期中的重要组成部分,软件测试是保证软件开发产物 质量的重要手段。测试是贯穿于整个开发流程了,而不是在编码完成才开始。 瀑布模型是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工 作,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。最终得到软件产品优点是使用时间最长、应用面比较广泛的开发模型2是其他一些开发模型的基础3当前一阶段完成后,只需要去关注后续阶段缺点不能适应用户需求的变化2到最后阶段才能得到可运行的软件版本适用场合:对于规模较小,软件需求较为稳定的项目,采用模型能够显著提高软件开发的质量和效率 演化模型(原型模型)演化模型是一种全局的软件(或产品) 生存周期模型。属于 迭代开发方法。该模型可以表示为:第一次迭代(需求->设计->实现->测试->集成)->反馈->第二次迭代(需求->设计->实现->测试->集成)->反馈->……优点:1支持需求的动态变化2有助于获取用户需求,便于用户对需求的理解3尽早发现软件中的错误缺点1需要为系统的每个新版本交付文档,不划算2新需求的不断增加,使系统结构退化,变更成本上升3不支持风险分析 螺旋模型1将瀑布模型与原型模型进行有机结合2增加风险分析步骤优点1支持 需求的动态变化2有助于获取用户需求,便于用户对需求的理解3尽早发现软件中的错误4支持风险分析,可降低或者尽早消除软件开发风险5适合于需求动态变化、开发风险较大的系统缺点建设周期长适用场合在需求不明确的情况下,适合用螺旋模型进行开发,便于风险控制和需求变更。特别适合于大型复杂的系统 喷泉模型:软件复用与生命周期中多项开发活动集成,主要支持面向对象的开发 方法优点1软件系统可维护性较好2各阶段相互重叠,表明了面向对象开发方法各阶段间的交叉和无缝过渡3整个模型是一个迭代的过程,包括一个阶段内部的迭代和跨阶段的迭代4模型具有增量开发特性,即能做到“分析一点、设计一点、实现一点,测试一点”,使相关功能随之加入到演化的系统中5模型由对象驱动,对象是各阶段活动的主体,也是项目管理的基本内容6该模型很自然地支持软部件的重用缺点由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理。此外这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。 OO 为什么好oo 解决问题的思路是从现实世界中的客观对象入手,运用人类的 自然思维方式来构造软件系统,而传统的结构化方法从功能入手和信息工程化方法从信息入手。在面向对象方法中,把一切都看成是对象。OO 方法用类和对象作为系统的基本构成单位。对象对应问题域中的事物,其属性与操作刻画了事物的静态特征和动态特征,它们之间的继承关系、聚合关系、消息和关联如实地表达了问题域中事物之间实际存在的各种关系面向对象方法的特点(1)从现实世界中客观存在的事物出发来建立软件系统,强调直接以问题域中的事物为中心来思考问题、认识问题,把它们抽象地表示为系统中的对象,作为系统的基本构成单位。这可以使系统直接映射问题域,保持问题域中事物及其相互关系的本来面貌(对象) (2)用对象的属性表示事物的状态特征;用对象的操作表示事物的动态特征(属性与操作)(3)对象的属性与操作结合为一体,成为一个独立的、不可分的实体,对外屏蔽其内部细节(封装)(4)对事物进行分类。把具有相同属性和相同操作的对象归为一类,类是这些对象的抽象描述,每个对象是它的类的一个实例(分类)(5)复杂的对象可以用简单的对象作为其构成部分(聚集:一个(较复杂的)对象由其他若干(较简单的)对象作为其构成部分,称较复杂的对象为聚集,称较简单的对象为成分,称这种关系为聚集)(6)通过在不同程度上运用抽象的原则,可以得到较一般的类和较特殊的类。特殊类继承一般类的属性与操作,从而简化系统的构造过程及其文档,有利于复用(继承:特殊类拥有其一般类的全部属性与操作,称作特殊类对一般类的继承)(7) 类具有封闭性,把内部的属性和服务隐藏起来,只有公共的服务对外是可见的(类的封闭性)(8) 对象之间通过消息进行通讯,以实现对象之间的动态联系(消息)(9) 通过关联表达类之间的静态关系(关联) 自顶向下,逐步求精:从顶层开始逐层向下分解,直至系统的所有模块都小 到易于掌握为止 抽象从事物中舍弃个别的非本质的特征,而抽取共同的、本质特征的做法叫抽象。 过程抽象:将完成一个特定功能的动作序列抽象为一个函数名和参数表(模块)例: 比较字符串: int Compare (CString, CString)。数据抽象:将诸多数据对象的定义(描述)抽象为一个数据类型名,以后可通过该数据类型名来定义多个具有相同性质的数据对象例:Eg: 1, 2, 3,—>Integer ;软件工程书;人工智能书—>书类 封装把对象的属性和操作结合成一个独立的系统单位,并尽可能隐蔽对象的内部 细节。只是向外部提供接口,降低了对象间的耦合度使对象能够集中完整地描述并对应一个具体事物。意义:体现了独立性,使对象外部不能随意存取对象的内部数据,使其所含的信息对那些不需要这些信息的模块不可访问。对象的内部的修改对外部的影响很小,减少了修改引起的“波动效应”。公开静态的、不变的操作,而把动态的、易变的信息隐藏起来。 模块化将一个软件划分为一组具有相对独立功能的部件,每个部件称为一个模 块;当把所有的模块组装在一起时,便可获得满足用户需求的软件系统。为什么要进行模块化:模块化体现了“分而治之”的问题分析和解决方法。模块化的目的①进行功能分解,把复杂的大的功能划分成简单的小的子功能,尽量降低每个模块的成本。②尽量使每个模块间的接口不能太多,太多会使接口成本增加。兼顾二者可取得最佳的划分状态,确保软件总成本最低模块设计原则1信息隐藏2高内聚度(强)3低耦合度(松)什么是信息隐藏(1)模块应该设计得使其所含的信息(过程和数据)对那些不需要这些信息的模块不可访问(2)模块之间仅仅交换那些为完成系统功能所必须交换的信息信息隐藏的优点(1)支持模块的并行开发(设计和编码)(2)模块的独立性更好(3)便于系统功能的扩充(4)便于测试和维护,减少修改影响向外传播的范围模块化、信息隐藏,局部化是什么关系局部化与信息隐藏是一对密切相关的概念。局部化就是指将一些使用上密切相关的元素尽可能放在一起。对一个模块来说,局部化是期望模块所使用的数据尽可能是在模块内部定义的。因此,局部化意味着减少模块之间的联系,有助于实现模块之间的信息隐藏。在软件测试和维护期间经常需要修改一些模块的内容。信息隐藏和局部化降低了模块之间的联系,使得在修改一个模块时对其他模块的影响降到最低。“隐藏”的意思是,有效的模块化通过定义一组相互独立的模块来

软件工程期末试题(含答案)解析

填空题(每空 1 分,共25 分) 1.软件生存周期一般可以划分为,问题定义、可行性研究、需求分析、设计、编码、测试 和运行和维护。 2.基于软件的功能划分,软件可以划分成___系统软件_、支撑软件、应用软件__三种。 3.可行性研究,应从经济可行性、技术可行性、运行可行性、法律可行性和开放方案 可行性等方面研究。 4.系统流程图是描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子形式 描绘系统里面的每个部件 5.数据流图的基本四种成分:数据输入的源点和数据输出汇点、加工、数据流和数据 存储文件。 6.结构化分析方法是面向_数据流_进行需求分析的方法。结构化分析方法使用_数据 流图DFD_与_ 数据字典_来描述。 7.继承性是自动地共享类、子类和对象中的方法和数据的机制。 8.软件详细设计工具可分为 3 类,即_图示工具_、_设计语言_和_表格工具_。 9.为了在软件开发过程中保证软件的质量,主要采取下述措施:_审查__、复查和管理复审、___ 测试_。 10.大型软件测试包括单元测试、集成测试、确认测试和系统测试四个步骤。单项选 择题(每小题2分,共20 分) 1.软件设计中划分模块的一个准则是( C )。 A、低内聚低耦合 B.低内聚高耦合 C.高内聚低耦合 D. 高内聚高耦合 2.Jackson 设计方法是由英国的M. Jackson 提出的,它是一种面向( C )的软件设计方法。 A 、对象 B.数据流 C.数据结构 D.控制结构 3.试判断下列叙述中,哪个(些)是正确的( C )。 a、软件系统中所有的信息流都可以认为是事务流 b、软件系统中所有的信息流都可以认为是变换流 c、事务分析和变换分析的设计步骤是基本相似的 A、a B 、b C 、c D 、 b 和 c 4.( A )是用户和设计交换最频繁的方法。 A 、原型化方法B、瀑布模型方法 C. 螺旋模型方法D、构件组装模型 5.软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实施的主 要保证是( C )。 A 、硬件环境 B 、软件开发的环境 C. 软件开发工具和软件开发的环境D 、开发人员的素质 6.20 世纪50 年代以来,出现了许多不同的程序设计语言,下列语言中哪个语言是低级语言 ( D )。 A、PASCAL B、VISUAL BASIC C. C++ D、汇编语言 7.软件测试的目的是?( D ) A 、证明软件的正确性 B. 找出软件系统中存在的所有错误 C.证明软件系统中存在错 误 D. 尽可能多的发现软件系统中的错误 8.使用白盒测试方法时,确定测试数据应根据( A )和指定的覆盖标准。A、程序的内 部逻辑 B 、程序的复杂程度 C、该软件的编辑人员 D、程序的功能 9.软件维护工作的最主要部分是( C )。

软件系统项目建设项目管理文档

目录 1.项目管理 (1) 1.1项目范围管理 (1) 1.2项目时间管理 ......................................................................... 错误!未定义书签。 1.3项目里程碑 (6) 1.4培训方案 (6) 1.5技术支持与售后服务 (7) 1.6项目进度管理 (8) 信息系统项目建设项目管理文档 1.项目管理 1.1项目范围管理 (1)概述 项目范围管理就是要明确项目目标是什么,界定哪些工作必须做,并将项目目标分解到可以独立分包的程度,形成工作分解结构(WBS),并以此作为控制项目范围变更的基准。即项目范围管理是确保项目包含且只包含项目所必须完成的工作。 很多项目经常由于有做不完的报表、解决不完的问题而导致项目无法验收,很大一部分原因就是因为项目的范围没有定义清楚或者项目范围经常发生无可控制的变更所致。事实证明,缺少正确的项目范围定义和范围的核实是导致项目失败的主要因素。 因此,项目管理最重要的也是最难做的一项工作就是确定项目范围,并使项目范围在控制中,这就是项目范围管理的范畴,即项目范围管理就是项目该做什么,不该做什么,以及确保该做的事情必须做到,不该做的事情不能做。 在项目的规划阶段和蓝图设计阶段的前期,我们通过售前阶段的资料和项目

现场的需求调研,确定项目该做什么,这就是经常说的定义项目范围。 (2)管理内容 1、定义项目范围 1)定义项目范围重要的参考资料和依据一般如下: ●项目售前实施方案; ●项目主合同; ●许可软件通用条款及清单; ●咨询实施服务和工作任务书; ●支持服务条款; ●战略合作承诺书; ●建设单位内部正式发问的项目实施意见书。 2)口头承诺 定义范围除了依据上述可见的项目资料外,售前阶段的一些口头承诺也是定义项目范围的重要信息来源,因此在项目准备阶段与售前进行内部交接时,一定不能忘记交接口头承诺的内容,实践证明,口头承诺的往往是在项目实施过程中难以交付的或者需求范围不好清晰界定的,正是范围管理的难点。 通过范围定义,可形成详细的范围说明书,以及对项目管理计划进行更新。 2、项目范围 范围是指项目所提供的产品或服务的总和,它包括以下两种含义: ●产品范围:产品或者服务的特性与功能,其衡量标准为产品要求,即产 品需求说明书。 ●项目范围:为交付所需产品(具有特定属性和功能)和服务而必须完成 的工作,其衡量标准为项目管理计划、项目范围说明书、WBS及WBS词汇 表。 项目实施的产品范围的描述一般应该通过两个维度,即产品功能模块和公司范围两个维度,清晰的描述出哪些公司具体实施、哪些产品的功能模块,对于集团型企业一定要以企业法人作为实施的公司范围。借用EXCEL建立功能模块与法人

软件工程复习资料

1、下列哪一模型是软件的基础模型 A.瀑布模型 B.快速原型 C.增量模型 D.螺旋模型 2、划分软件生存周期的阶段时所应遵循的基本原则是 A.各阶段的任务尽可能相对独立 B.各阶段的任务在时间上连续 C.各阶段的任务尽可能相关性 D.各阶段的任务在时间上相对独立 3、下列哪个办法不属于解决软件危机的途径之一 A.采用软件工程的解决途径 B.研制新一代智能计算机 C.采用面向对象的软件设计方法 D.大力扶持软件企业 4、下列哪个不属于软件工程的内涵之一 A.扶持培养软件高手的学院 B.开发既可靠又能有效运行的软件 C.应用完善的科学与工程原理 D.经济地开发软件 5.造成大型软件开发困难的根本原因在于 A.开发人员缺乏足够的开发经验 B.项目开发进度不合理 C.软件系统的复杂性 D.对软件开发的资金投入不足 6.软件会逐渐退化而不会磨损,其原因在于 A.软件备件很难订购 B.不断的变更使组件接口之间引起错误 C.软件错误在经常使用之后会逐渐增加 D.软件通常暴露在恶劣的环境下 7.下面说法正确的是 A.大多数软件系统是不容易修改的,除非它们在设计时考虑了变化 B.由于软件是产品,因此可以应用其他工程制品所用的技术进行生产 C.一般来说,软件只有在其行为与开发者的目标一致的情况下才能成功 D.购买大多数计算机系统所需的硬件比软件更昂贵 8.Ariane 5火箭发射失败的事例告诉我们 A.(2)软件后备系统可以通过复制生成 B.(3)软件重用必须重新进行系统论证和系统测试 C. 选项(1)和(3) D.(1)系统环境的变化可能影响软件采集数据的精度、范围和对系统的控制

9.软件危机的主要原因是 A.软件本身的特点及开发方法。 B.软件工具落后。 C.软件生产能力不足。 D.对软件的认识不够。 10.下面的描述正确的是 A.软件质量是在开发过程中逐渐构建起来的。 B.软件质量是由产品的功能、性能、易用性等外在特性决定的。 C.运行正确的软件就是高质量的软件。 D.软件产品质量越高越好,最理想的情况是达到“零缺陷”。 11、可行性研究主要包括哪几项? A.技术可行性、经济可行性和操作可行性 B.技术可行性、经济可行性和道德可行性 C.技术可行性、法律可行性和操作可行性 D.技术可行性、操作可行性和法律可行性 12、成本/效益分析的目的是帮助()正确地作出是否投资于这项开发工程的决定。 A.系统分析员 B.客户组织的负责人 C.项目经理 D.软件开发人员 13、在进行成本/效益分析的时候,需要考虑() A.开发成本 B.运行费用 C.系统带来的经济效益 D.系统使用寿命 14、数据流图和数据字典共同定义了新系统的逻辑模型。 A.错 B.正确 15、可行性研究可行性研究需要的时间长短和所研究系统的规模关系不大。 A. 正确 B.错误 16、把可行性研究各个步骤的工作结果写成清晰的文档,请用户、客户组织的负责人及评审组审查,以决定是否继续这项工程及是否接受分析员推荐的方案。 A.正确 B.错误 17、结构化分析方法遵守的准则之一——定义软件需要完成的功能,需要建立的模型是 A.功能模型 B.数据模型 C.行为模型 D.动态模型 18、下列叙述中,()不属于数据字典的作用。 A.为用户与开发人员之间统一认识 B.为需求分析阶段定义各类条目

南京信息工程大学滨江学院李振宏《软件工程》期末复习 个考点完整版

选择20题,每题1分;填空10题,每题1分;简答5题,每题8分;设计题3题,每题10分(流程图的设计、流图设计和环形复杂度的计算、语句覆盖和判定覆盖测试用例的设计)。 1.详细设计中,过程设计的工具,N-S图,PAD图及判定表和判定树各有何特点和适用情况?(第六章) (1)盒图(N-S图): 一种不允许违背结构程序设计精神的图形工具,又称为N-S图。它有下述特点: ①功能域(作用域)明确,可以从盒图上一眼就看出来。 ②盒图没有箭头,因此不允许随意转移控制。 ③很容易确定局部和全程数据的作用域。 ④很容易表现嵌套关系,也可以表示模块的层次结构。 适用:对大部分设计均有适用性,常用于软件工程详细设计中,提供一种结构化的方式,便于思考和解决问题。 (2)PAD图: PAD是问题分析图(problem analysis diagram) ,它用二维树形结构的图来表示程序的控制流。PAD图的主要优点如下: ①使用PAD符号设计的程序必然是结构化程序。 ② PAD图所描绘的程序结构十分清晰。最左面的竖线是程序的主线,即第一层结构。随着程序层次的增加,PAD图逐渐向右延伸。每增加一个层次,图形向右扩展一条竖线。图中竖线的总条数就是程序的层次数。 ③PAD图表现的程序逻辑,易读、易懂、易记。程序从图中最左竖线上端的结点开始执行,自上而下,从左向右顺序执行,遍历所有结点。 ④容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成。 ⑤既可表示程序逻辑,也可描绘数据结构。 ⑥支持自顶向下、逐步求精方法的使用。 适用:为FORTTAN,COBOL,PASCAL等每种常用的高级程序设计语言提供了一套相应的图形符号。 开始时可以定义一个抽象的程序,随着设计的深入,使用def符号逐步增加细节,直至完成详细设计,如图6.6所示。 (3)判定表(P127有例子): 适于表示复杂的条件组合与应做的动作之间的对应关系。特点是: ①能够间接而又无歧义的描述处理故意则。 ②并不适用于作为一种通用的设计工具。 ③一张判定表由以下四部分组成:左上部列出所有条件,左下部是所有可能的动作,右

软件工程导论-期末题库(完整版)

1.填空题 1.一般来说,可以从__一致性__、_完整性___、_现实性____和_有效性___四个方面验证软件需求的正确性。 2.IPO图是_输入、处理和输出图_的简称,它是美国IBM公司发展完善起来的一种图形工具。 3.系统流程图是描述__物理模型__的传统工具,用图形符号表达了系统中各种元素之间的_____信息流动_____情况。 4.数据流图中的箭头表示数据流,椭圆或圆形表示数据处理,矩形表示数据的源点/终点。 5.软件测试的步骤按顺序分别是:___单元测试_____、子系统测试、系统测试(子系统和系统测试通常称为集成测试)、__确认测试__和_____系统测试(集成测试) ____ 6.软件生命周期一般可分为_问题定义_、可行性研究、_需求分析_、设计编码、_测试_、运行与维护阶段。 7.可行性研究主要集中在以下四个方面_经济可行性_、__技术可行性____、__法律可行性___和抉择。 8.在结构化设计中,HIPO图应用在总体设计阶段,由IPO图和_层次图_两部分组成。 9.复杂问题的对象模型通常由下述五个层次组成:主题层、___类与对象_层、__结构___层、_属性_层和__服务_层。 10.实施精化设计的目标是基于模块的“高内聚低耦合”的原则,提高模块的_独立性。 11.软件生命周期一般可分为___问题定义_、可行性研究、__需求分析__、概要设计__、详细设计、编码、__软件测试_、运行与维护阶段。 12.面向对象的数据存储管理模式分为__文件__、_关系数据库__和__面向对象数据库___三种。 13.单元测试一般以_白盒_测试为主,__黑盒__测试为辅。

大学软件工程复习资料

五、简答题 1.层次图和层次方框图之间区别何在?P92 ①层次图描绘软件的层次结构,层次方框图描绘数据结构 ②层次图中方框代表一个功能模块,层次方框图方框代表数据的子集或数据元素 ③层次图中连线表示模块间调用关系,层次方框图连线表示组成关系。 2.2、软件设计过程中为什么要采用模块化设计方法?P85 参考答案: (1)、采用模块化原理可以使软件结构清晰,不仅容易设计,也容易阅读和理解; (2)、模块化使软件容易测试和调试,因而有助于提高软件的可靠性; (3)、模块化可以提高软件的可修改性; (4)、模块化有助于开发过程的组织和管理; 3.用某种软件复杂性度量算法来度量不同类型的程序时。得出的度量值是否真正反映了它们的复杂性? 如果对同类型的程序进行度量,其结果是否就比较有价值? 参考答案: 开发规模相同,但复杂性不同的软件,花费的成本和时间会有很大的差异。因此到目前为止,还没有一个软件复杂性度量的方法能够全面、系统地度量任一软件的复杂性,某一种度量方法只偏重于某一方面。所以,用某种软件复杂性来度量不同类型的程序,所得到的度量值不一定真正反映它们的复杂性。但对同一类里的程序,按某种视点来度量它们的复杂性,其结果还是比较有价值的。 4.数据流图的作用是什么?它有哪些基本成分? 参考答案: 数据流图可以用来抽象地表示系统或软件。它从信息传递和加工的角度.以图形的方式刻画数据流从输入到输出的移动变换过程,同时可以按自顶向下、逐步分解的方法表示内容不断增加的数据流和功能细节。因此,数据流图既提供了功能建模的机制.也提供了信息流建模的机制,从而可以建立起系统或软件的功能模型。 基本成分有:数据原点/终点数据处理数据流数据存储 5.常用的估算软件规模的方法有哪些?试比较这些方法的优缺点。 代码行技术的优点,容易计算,缺点是太片面,因为源程序只是软件配置的很少一部分,不同语言实现同一个软件所需的代码行数不同; 功能点数的特点:与编程语言无关,但是判断信息域复杂性级别和技术因素的影响程度时,存在着相当大的主观因素。 6.CMM的全称是什么?其基本思想是什么?为什么要对CMM进行分级?P321 其基本思想是:软件开发和维护过程中的问题是由于管理软件过程的方法不当引起的,即使是应用新的软件技术,也不会自动提高软件的生产率和质量。能力成熟度模型有助于软件开发机构建立一个有规律的、成熟的软件过程。改进后的软件过程将有利于开发出高质量的软件,使更多的软件项目免受时间和费用超支之苦。 ······························································································· 3分 对于任何软件开发机构的软件过程的改进都是在完成一个又一个小的改进的基础之上不断进行的渐进过程,而不是一蹴而就的彻底革命。CMM将软件过程从无序到有序的进化过程分为5个等级,用于测量软件机构的软件过程成熟度和评价其软件过程能力 什么是软件配置管理? 答:软件配置管理,简称SCM(Software Configuration Management),是在软件的整个生命周期内管理变化的一组活动。具体地讲,这组活动包括:①标志变化,②控制辩化,③确保适当地实现变化,④向需要指导这类信息的人报告变化。软件配置管理技术可以使软件变更所产生的错误达到最小并最有效地提高

软件工程复习考试题库带答案完整版

一、选择题 1、白盒测试法是通过分析程序的(C)来设计测试用例的。 A.应用范围B.功能 C.内部逻辑 D.输入数据 2、风险预测从两个方面评估风险,即风险发生的可能性以及(D)。 A.风险产生的原因 B.风险监控技术 C.风险能否消除D.风险发生所产生的后果 3、极限编程(XP)由价值观、原则、实践和行为四部分组成,其中价值观包括沟通、简单性和(C)。 A.好的计划 B.不断的发布 C.反馈和勇气 D.持续集成 4、等价分类法的关键是(C)。 A.确定等价类的边界条件 B.按照用例来确定等价类 C.划分等价类 D.确定系统中相同和不同的部分 5、下列不属于黑盒测试的技术是(A)。 A.程序段或语句的功能 B.模块的接口 C.数据的名称和用途D.模块的功能 6、为了提高模块的独立性,模块之间最好是(D)耦合。 A.控制耦合 B.公共耦合 C.内容耦合D.数据耦合 7、一个软件开发过程描述了“谁做”,“做什么”,“怎么做”和“什么时候做”,RUP用(A)来表述“谁做”。 A.角色 B.活动 C.制品D.工作流 8、功能性注释嵌入在源程序内部,它是用来说明(A)。 A.程序段或语句的功能B.模块的接口 C.数据的名称和用途 D.模块的功能 9、在结构化分析方法中,数据字典是重要的文档。对加工的描述是数据字典的组成内容之一,常用的加工描述方法有( C )。 A.只有结构化语言B.有结构化语言和判定树 C.有结构化语言、判定树和判定表 D.有判定树和判定表 10、某银行为了使其网上银行系统能够支持信用卡多币种付款功能而进行扩充升级,这需要对数据类型稍微进行一些改变,这一状况需要对网上银行系统进行(B)维护。 A.正确性 B.适应性 C.完善性 D.预防性 11、软件危机的主要原因是(A)。 A软件本身特点与开发方法?B对软件的认识不够 C软件生产能力不足D软件工具落后 12、DFD是常用的进行软件需求分析的图形工具,其基本符号是(C)。 A.输入、输出、外部实体和加工

期末软件工程资料整理

1.软件工程的基本原理? 答:基本原理包括3要素:方法,工具,过程;其中,方法是完成软件开发任务的技术方法回答怎样做的问题;工具是为运用方法提供自动半自动的软件工程支撑环境;过程是为了获得高质量的软件所需要完成的一系列任务的框架,他是完成各任务的工作步骤。 2.RUP中有9个工作流,前6个为过程工作流,后3个为核心支持工作流程。 3.问答:P.32第2题 4.简述结构化范型和面向对象范型的要点,分析优缺点。 5.电话号码有几类:校内电话号码由4位数字组成,第1位不是0;校外电话分本市电话和外地电话,拨校外电话需先拨0,本市电话则再接着拨8位数字(第1位不是0),外地电话则拨3位区码再拨8位电话号码(第1位不是0)。 答案: 电话号码=[校内电话号码|校外电话号码] 校内电话号码=非零数字+3位数字 校外电话号码=[本市号码|外地号码] 本市号码=数字零+8位数字 外地号码=数字零+3位数字+8位数字 非零数字=[1|2|3|4|5|6|7|8|9] 数字零=0 3位数字=3{数字}3 8位数字=非零数字+7位数字 7位数字=7{数字}7 数字=[0|1|2|3|4|5|6|7|8|9] 6.名词解释:第一范式,第二范式,第三范式 答:第一范式:每个属性都必须是原子值,仅仅是一个简单的值而不能含内部结构。 第二范式:满足第一范式条件,且每个关键字属性都由整个关键字决定。 第三范式:符合第二范式条件,每个关键字属性都仅由关键字决定,且一个费关键字属性不能仅仅是对另一个非关键字属性的进一步描述。 7.储蓄系统:储户填写的存款单或取款单由业务员输入系统,是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码(可选)等信息,并印出存单给储户;是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。 试用数据流图描绘下述系统的功能,并用实体-联系图描绘系统中的数据对象。 答案: 系统的数据流图如下图所示:

软件工程教材资料整理

软件工程复习资料 第一章 1、软件的概念:软件是计算机中与硬件相互依存的另一部分,它是包括程序、数据及其 相关文档的完整集合。 2、软件具有下列特点: 1.软件是一种逻辑产品,它具有抽象性和无形性。 2.软件的生产与硬件不同。 3.软件在运行和使用中,不会磨损和老化,但它存在退化问题。 4.软件的开发和运行对计算机系统有一定的依赖性。 5.软件开发至今仍未完全摆脱手工开发方式,大多数软件是“定做”的。 6.软件开发成本高、风险高。 7.相对于计算机硬件技术的发展,计算机软件技术的发展十分缓慢。 3、计算机软件技术的发展经历了三个阶段: 程序设计时期(20世纪40年代中期至60年代中期),软件质量取决于个人编程水平。 程序系统时期(20世纪60年代中期至70年代中期),软件质量取决于开发小组的技术水平 软件工程时期(20世纪70年代以后)。软件质量取决于软件工程管理水平。 软件技术的发展主线是由个体简单的开发方式向着复杂、大规模、标准化、工程化的方向发展,在最高阶段,把软件开发界定为两方面的内容:软件开发和软件维护。 4、软件开发引发的问题: 1.社会对软件需求的不断发展 2.软件开发理念和手段与客观实际存在的差异 ①对软件本身的认识存在差异②对软件的服务对象认识不足 ③对软件开发缺乏科学管理④软件开发手段落后 5、软件危机1)发生时间:软件发展第二阶段(程序系统阶段)的末期 (2)软件危机是指在计算机软件开发和维护过程中遇到的一系列严重问题。 (3)软件危机的主要表现有以下几方面: 1.软件开发经费超支、进度拖延 2.软件不能符合用户的要求 3.软件难以维护 4.软件可靠性差 5.软件开发生产率低 4)主要原因: 1 社会对软件的需求急剧增加 2 软件本身的特点:软件本身存在着复杂性 3软件开发理念和手段与客观实际存在的差异 ①对软件本身的认识存在差异②对软件的服务对象认识不足 ③对软件开发缺乏科学管理④软件开发手段落后 寻找解决软件危机途径的过程就是软件工程形成的过程 6、软件工程 核心:以工程化的原理和方法对软件进行规划、定义、开发和维护; 宗旨:以较少的投入,最快的时间生产出高质量的软件。 定义:“软件工程是软件开发、运行、维护和引退的系统方法”。 软件工程的主要思想是强调软件开发过程中应用工程化原则的重要性。 软件工程的三要素是方法、工具和过程。 软件工程的基本目标:实现软件的优质高产,即在给定成本、进度的前提下,达到要求的软件功能,取得较好的软件性能,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性,并满足用户需求的软件产品。

软件工程复习资料

软件工程的定义:软件工程是一门研究如何用系统化、规范化、数量化等工程化思想和方法去进行软件开发、维护和管理的学科。 软件危机的定义:软件开发和维护过程中所遇到的如软件规模越来越大,复杂度不断增加,软件的需求量日益增大等的严重问题我们称之为软件危机。 软件工程有哪些基本的思想:a.推迟实现的观点b.逐步求精的观点c.分解与抽象的观点d.信息隐蔽的观点e.质量保证的观点 CMM(Capability Maturity Model)能力成熟度模型,是对于软件组织在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶段的描述。 极限编程(Extreme Programming , XP)是一种软件工程方法学是敏捷软件开发中最富有成效的几种方法学之一。它的的核心有四个要点:交流、简单、反馈、勇气 软件生命周期模型:通常把软件生命周期中各项开发活动的流程用一个合理的框架——开发模型来规范描述,这就是软件过程模型,或者称为软件生命周期模型。 软件需求分类:功能需求、非功能需求和领域需求 结构化分析(Structured Analysis, SA) 结构图(Structure Chart ,SC) 面向对象的一些概念:类是具有相同或相似性质的对象的抽象。实例是类的具体化。继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。消息是指对象间相互联系和相互作用的方式 数据流类型:变换型数据流、事务型数据流、混合型数据流 Jackson图:Jackson图是Jackson方法分析和设计最有效的表达手段,用它既可以描述问题的数据结构,也可以描述软件的程序结构。Jackson图的优点是便于表示层次结构,利于结构自顶向下分解,形象直观,可读性好。Jackson方法用某种形式的伪码给出程序的过程性描述。伪码一般采用结构化形式的英语描述,例如,用”select”语句描述选择结构,用”until”或”while”语句描述重复结构。 结构化程序设计的三种基本逻辑结构是:顺序结构、选择结构和循环结构。 类与类之间的关系:关联、泛化、聚集 软件设计的三类活动:软件设计的第一类活动是软件结构设计,也称为总体设计、概要设计或高层设计。第二类活动是软件详细设计,也称为(模块)过程设计或底层设计。第三类活动是设计测试。 软件模块化设计的指导思想:分解、抽象、逐步求精、信息隐蔽和模块独立性。 软件模块化设计的定义:把一个大型软件系统的全部功能,按照一定的原则合理地划分为若干个模块,每个模块完成一个特定子功能,所有的这些模块以某种结构形式组成一个整体。 模块独立性的定义及控制标准:模块独立性是模块化、抽象、信息隐蔽概念的直接结果,也是判断模块化结构是否合理的标准。模块独立性可以由两个定性标准度量,即模块自身的内聚和模块之间的耦合。 内聚性、耦合性和抽象的定义:内聚性是从功能的角度对模块内部聚合能力的量度,耦合性是对一个软件结构内不同模块之间互连程度的度量。抽象是一种从一般的观点看待事物的方法,它要求我们集中于事物的本质特征(内部状态和运动规律),而非具体细节或具体实现。 信息隐蔽定义:每个模块对其他所有模块都隐蔽自己的设计决策,也就是说,模块应该详细说明且精心设计以求在某个模块中包含的信息不被不需要这些信息的其他模块访问。 按耦合度从低到高依次有7种耦合方式:a.非直接耦合(独立运行)b.数据耦合(用参数表传递简单数据)c.标记耦合(传递数据结构或者一部分)d.控制耦合(传递的信息包括控制模块的信息)e.外部耦合(模块与软件之外的环境有关)f.公共耦合(多个模块引用同一全局的数据区)g.内容耦合(访问内部数据,代码重叠或者多个入口)按内聚度从低到高依次有7种内聚种类:a.偶然内聚(模块完成的多个任务,任务之间的关系松散)b.逻辑内聚(模块完成逻辑相关的一组任务)c.瞬时内聚(模块的所有任务必须在同一时间间隔内执行)d.过程内聚(模块的处理元素相关而且按照特定的次序执行)e.通信内聚(模块的所有元素集中在一个数据结构区域上)顺序内聚(模块的处理元素相关,必须顺序执行)f.功能内聚(模块完成单一的功能,各个部分协调工作,而且不可缺少)结构化设计方法(SD)是基于模块化、自顶向下细化、结构化程序设计等程序设计技术基础上发展起来的。 软件维护类型及对应方向的维护: 纠错性维护:对在测试阶段未能发现的,在软件投入使用后才逐渐暴露出来的错误的测试、诊断、定位、纠错以及验证、修改的回归测试过程。纠错性维护占整个维护工作的21% 完善性维护:为了满足这些日益增长的新要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、

软件工程知识点汇总

软件工程知识点汇总 1 软件工程、软件工程方法学:三要素 1.1 软件工程:○1应用系统化的、规范化的、可度量的方法来开发、运行和维护软件,即将工 程应用到软件;○2对○1的各种方法的研究 1.2 软件工程是一门研究用工程化方法构建和维护有效的实用的和高质量的软件的学科 1.3 软件工程三要素是:方法、工具、过程 软件工程的方法:是指完成软件开发各项任务的技术方法 软件工具:是指为软件工程方法的运用提供自动半自动的软件支撑环境 软件工程过程:是指将软件工程方法和工具综合起来以达到合理、及时地进行计算机软件开发这一目的 2 软件工程的原则包括:模块化原则、信息隐蔽原则、抽象化原则、模块独立原则(内聚、耦合)、 依赖倒转原则、开闭原则等 2.1 模块化原则:指解决一个复杂问题时自顶向下逐层把软件系统划分为若干模块的过程。模 块是程序中相对独立的成分,一个独立的编程单位,应有良好的编程接口,模块的大小要 适中,模块过大会使模块内部的复杂性增加不利于模块的理解和修改,模块过小会导致整 个系统表示过于复杂,不利于控制系统的复杂性。 2.2 信息隐蔽原则:采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单。 2.3 抽象化原则:抽取事物最基本的特性和行为,忽略非本质细节,采用分层次抽象,自顶向 下,逐层细化的办法控制软件开发过程的复杂性。 2.4 模块独立原则:是指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少 且接口简单。要求在一个物理模块内集中逻辑上相互关联的计算机资源,保证模块间由松 散的偶合关系,模块内部有较强的内聚性,这有助于控制系统的复杂性。(即:高内聚低 耦合) 2.5 依赖倒转原则:抽象不应该依赖于细节,细节应该依赖于抽象。 2.6 开闭原则:软件实体应该是可扩展的,但是不可以修改。即对于扩展是开放的,对于更改 是封闭的。 3 软件开发模型:瀑布模型;快速原型;喷泉模型;各种模型的工作原理、阶段、每阶段任务、 特点、示意图; 软件开发模型(也称为软件过程模型):是从软件项目需求定义开始直至软件经使用后废弃为止,跨 越整个生命周期的系统开发、运行和维护所实施的全部过程、活动和任务的结构框架 3.1 瀑布模型(又称线性模型): 3.1.1工作原理:规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。 前一阶段的工作成果是后一阶段工作开始的基础.所以,每个阶段都必须交出合格的文档,必须对前阶段的工作进行评审,前一阶段的工作完成后才可以开始后一阶段的工作 3.1.2 阶段: 计划时期:问题定义、可行性研究 开发时期:需求分析、设计、编码、测试 运行时期:运行和维护 3.1.3 各阶段任务: 1.需求分析和定义 在软件项目进行过程中,需求分析是从软件定义到软件开发的关键步骤,是今后软件,开发的基本依据,同时也是用户对软件产品进行验收的基本依据。需求分析和定义是以用

软件工程期末考试复习资料1

版权声明:本文版权归05112114、05112125 所 有,未经许可,任何任何媒体均不得改变其形 式,进行转载或摘录,违者必究! 软件工程期末考试复习资料一 (仅参考) 拟订人:超越吉他手、朱古力、哖_少オ輕狂第一章:软件工程的产生和发展有关复习资料 一、软件工程的定义: 1、软件危机的产生:软件危机的出现是由于软件的规模越来越大,复杂度不断增加,软件需求量增大。 2、软件危机主要表现:两个方面:①软件产品质量低劣,甚至开发过程就夭折 ②软件生产率低,不能满足需要 3、软件工程的三要素:①方法:完成软件开发各项任务的技术方法 ②工具:研究支撑软件开发方法的工具 ③过程:为开发高质量软件所规定的各项任务的工作步骤 4、软件工程研究的标准及目标: 标准:分为4个层次,国际标准、行业标准、企业规划、项目规划 目标:以较少的投资获取高质量的软件。有易于维护、低的开发成本、高性能、缩短开发期 5、软件工程研究的主要内容:以下两个方面:①软件开发方法、技术;软件开发工具及环境 ②软件管理技术、软件规范(国际规范) 7、软件工程学的目的:①以较少的投资获取高质量的软件 ②运用科学的方法和工程化的规范管理来指导软件开发 ③克服软件危机 8、软件工程的基本原则:如下4条基本原则 ①必须认识软件需求的变动性,采取适当措施来保证结果产品能忠实地满足用户需求 ②稳妥的设计方法大大地方便了软件开发,以达到软件工程的目标 ③软件工程项目的质量与经济开销直接取决于对它所提供的支撑的质量与效用 ④有效的软件工程只有在对软件过程进行有效管理的情况下才能实现 9、软件工程过程及特性:是指在软件工具的支持下,所进行的一系列软件工程活动 包括4类基本过程:1)软件规格说明书2)软件开发3)软件确认4)软件演进 特性:可理解性、可见性、可靠性、可支持性、可维护性、可接受性、开发效率和健壮性等。 二、软件与软件生存周期 1、软件的概念和特点 1)概念:软件是程序以及开发使用维护程序所需的所有文档 2)软件的构成:由应用程序、系统程序、面向用户的文档及面向开发者的文档4部分构成即:软件=程序+文档 3)特点:①软件是一种逻辑实体,不是具体的物理实体

相关文档
最新文档