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

2019-04-09 19:37

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

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

面向对象软件开发采用的喷泉模型 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


软件工程复习资料整理全部(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:论德鲁克管理理论中的人本主义思想

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: