您好,欢迎来到华拓科技网。
搜索
您的当前位置:首页软工复习

软工复习

来源:华拓科技网
软工复习

大致整理了一下,分享先。。。

一、 单选(2分*15=30分)

1、 软件分析时用到数据字典的概念、功能

数据字典:全面准确地定义数据。以词条方式定义在数据模型、功能模型和行为模型中出现的数据对象以及控制信息的特性,给出它们的准确定义,包括数据流、加工、数据文件、数据元素,以及数据源点和数据汇点等。

数据字典精确地、严格地定义了每一个与 系统相关的数据元素 ,并以字典顺序将它们组织起来,使得用户和分析员对所有的输入、输出、存储成分和中间计算有共同的理解。

2、 数据分析画图,盒图、数据流图在什么阶段出现? 详细设计阶段

3、 软件生命周期的模型

(1)瀑布模型(2)快速原形模型(3)增量模型(4)螺旋模型(5)喷泉模型 4、软件生命周期形成的文档:

(1)问题定义(立项,下达任务书) (2)可行性研究:可行性分析报告 (3)需求分析:

(a)建立逻辑模型:必须准确完整地体现用户的要求。

数据模型 (实体-联系图) 功能模型 (数据流图) (b)书写规格说明书

(4)总体设计(概要设计):编制概要设计文档 (5)详细设计(模块设计):形成模块详细规格说明书 (6)编码和单元测试:形成单元测试报告

(7)综合测试:用正式的文档资料把测试计划、详细测试方案以及实际测试结果保存下来,作为软件配置的一个组成部分。

(8)运行与维护:每一项维护活动都应该经过提出维护要求(或报告问题),分析维护要求,提出维护方案,审批维护方案,确定维护计划,修改软件设计,修改程序,测试程序,复查验收(评审)等一系列步骤。 (9)版本更新或者退役 5、软件测试的几种手段

(1)黑盒测试:功能测试

(2)白盒测试:结构测试或逻辑驱动测试

压力测试、系统测试、边界测试、单元测试的区分 6、总体设计时,模块划分的原则:低耦合高内聚。

尽量使用数据耦合,少用控制耦合和特征耦合,公共环境耦合的范围,完全不用内容耦合。

设计软件时应该力求做到高内聚(功能内聚和顺序内聚),通常中等程度的内聚(通信内聚和过程内聚)也是可以使用的,而且效果和高内聚相差不多;但是,低内聚(偶然内聚、逻辑内聚和时间内聚)效果很坏,不要使用。

内聚和耦合都是进行模块化设计的有力工具,但是实践表明内聚更重要,应该把更多注意力集中到提高模块的内聚程度上。

7、软件详细设计的具体内容

描述程序处理过程的工具称为过程设计的工具,它们可以分为图形、表格和语言三类。

过程设计是详细设计阶段应该完成的主要任务,它应该在数据设计、体系结构设计和接口设计完成之后进行。 8、软件危机指代的是什么?

软件开发的高成本与低质量的矛盾称为软件危机。 9、现代建模中目前使用最多的是:UML(统一建模语言)。 10、内聚:常见的内聚:

(a)功能内聚 :模块内所有处理元素属于一个整体,完成一个单一的功能。 (b)顺序内聚:一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行(通常一个处理元素的输出数据作为下一个处理元素的输入数据) 。 (c)通信内聚:模块中所有元素都使用同一个输入数据和(或)产生同一个输出数据。

(d)过程内聚:一个模块内的处理元素是相关的,而且必须以特定次序执行。 (e)时间内聚:一个模块包含的任务必须在同一段时间内执行。

(f)逻辑内聚:一个模块完成的任务在逻辑上属于相同或相似的一类。

(g)偶然内聚:一个模块完成的一组任务之间即使有关系,关系也是很松散的。

设计软件时应该力求做到高内聚(功能内聚和顺序内聚),通常中等程度的内聚(通信内聚和过程内聚)也是可以使用的,而且效果和高内聚相差不多;但是,低内聚(偶然内聚、逻辑内聚和时间内聚)效果很坏,不要使用。 二、 简答(10分*5=50分)

1、 敏捷编程是?所倡导的核心思维是?

敏捷编程是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

所倡导的核心思维是主张简单、拥抱变化、可持续性、递增的变化、令相干人员投资最大化、有目的的建模、多种模型、高质量的工作、软件开发的主要目标是以有效的方式,制造出满足项目相关人需要的软件、轻装前进。 2、 极限编程是?

极限编程是一个轻量级的、灵巧的软件开发方法;同时它也是一个非常严谨和周密的方法。它的基础和价值观是交流、朴素(简单)、反馈和勇气;即,任何一个软件项目都可以从四个方面入手进行改善:加强交流;从简单做起;寻求反馈;勇于实事求是。

XP是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的小周期;通过积极的交流、反馈以及其它一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程。

3、 软件过程中重构指代的是? 4、 时间和人力成本之间的关系。

5、 瀑布模型、快速原形模型的区别,使用场合的不同。 瀑布模型

(1)观点思想:项目经理或软件管理人员,只要控制好每级台阶的高度、宽度,

在每个台阶处设立里程碑或基线,并组织好对基线的评审与审计,就可以控制好项目的开发成本、进度、质量。

(2)特点:

(a)里程碑或基线驱动(文档驱动)。

(b)过程逆转性很差或者说不可逆转。逆转可能会延误工期,增加成本,造成损失。 (3)优点:

(a)开发阶段清晰,便于评审、审计、跟踪、管理和控制 (4)缺点:

(a)不可逆或很难可逆。

(b)问题会积累,错误会传递发散扩大,导致成本和质量失控。 (5)适用情况:

(a)在开发时间内需求不变化或很少变化。 (b)分析设计人员对此领域非常熟悉。 (c)低风险项目(对目标,环境熟悉) (d)用户使用环境稳定。

系统软件和工具软件常采用瀑布模型。 快速原形模型:(1)观点思想:快速原型是利用原型辅助软件开发的一种新思想。经过简单快速分析,快速实现一个原型,用户与开发者在试用原型过程中加强通信与反馈,通过反复评价和改进原型,减少误解,弥补漏洞,适应变化,最终提高软件质量。

(2)优点:克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险。 (3)缺点:所选用的开发技术和工具不一定符合主流的发展;快速建立起来的系统结构加上连续的修改可能会导致产品质量低下。 (4)适用情况:

(a)需求不明确或复杂系统

(b)用户无法自主提出应用需求 6、 需求分析最重要的是什么?

(1) 功能需求:这方面的需求指定系统必须提供的服务,划分出系统必须完成的所有功能。重要

(2) 性能需求指定系统必须满足的定时约束或容量约束,通常包括速度(响应时间)、信息量速率、主存容量、磁盘容量、安全性等方面的需求。 (3) 可靠性和可用性需求

可靠性需求定量地指定系统的可靠性。

可用性与可靠性密切相关,它量化了用户可以使用系统的程度。 (4)出错处理需求

这类需求说明系统对环境错误应该怎样响应。注意,上述这类错误并不是由该应用系统本身造成的。

(5)接口需求描述应用系统与它的环境通信的格式。常见的接口需求有:用户接口需求;硬件接口需求;软件接口需求;通信接口需求。

(6)约束:设计约束或实现约束描述在设计或实现应用系统时应遵守的条件。最重要

(7)逆向需求说明软件系统不应该做什么。

(8)将来可能提出的要求

7、总体设计模块划分时的准则是?具体内容是? 准则是低耦合高内聚,其具体内容是:(1)耦合:软件结构中各个模块之间相互关联程度的度量。

模块间的耦合程度强烈影响系统的可理解性、可测试性、可靠性和可维护性。在软件设计中应该追求尽可能松散耦合的系统。模块间耦合松散,有助于提高系统的可理解性、可测试性、可靠性和可维护性。 常见的耦合:

(a)数据耦合:如果两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据。 (b)控制耦合:传递的信息中有控制信息(尽管有时这种控制信息以数据的形式出现)

(c)特征耦合:当把整个数据结构作为参数传递而被调用的模块只需要使用其中一部分数据元素时出现。

(d)公共环境耦合:模块之间通过一个公共数据环境相互作用。

(公共环境可以是全程变量、共享的通信区、内存的公共覆盖区、任何存储介质上的文件、物理设备等)。

(e)内容耦合:最高程度的耦合。下述情况之一: 一个模块访问另一个模块的内部数据;

一个模块不通过正常入口而转到另一个模块的内部; 两个模块有一部分程序代码重叠; 一个模块有多个入口。 设计原则:

尽量使用数据耦合,少用控制耦合和特征耦合,公共环境耦合的范围,完全不用内容耦合。 (2)内聚

内聚:模块内部各个元素彼此结合的紧密程度的度量。 内聚标志一个模块内各个元素彼此结合的紧密程度。 常见的内聚:

(a)功能内聚 :模块内所有处理元素属于一个整体,完成一个单一的功能。 (b)顺序内聚:一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行(通常一个处理元素的输出数据作为下一个处理元素的输入数据) 。 (c)通信内聚:模块中所有元素都使用同一个输入数据和(或)产生同一个输出数据。

(d)过程内聚:一个模块内的处理元素是相关的,而且必须以特定次序执行。 (e)时间内聚:一个模块包含的任务必须在同一段时间内执行。

(f)逻辑内聚:一个模块完成的任务在逻辑上属于相同或相似的一类。

(g)偶然内聚:一个模块完成的一组任务之间即使有关系,关系也是很松散的。

设计软件时应该力求做到高内聚(功能内聚和顺序内聚),通常中等程度的内聚(通信内聚和过程内聚)也是可以使用的,而且效果和高内聚相差不多;但是,低内聚(偶然内聚、逻辑内聚和时间内聚)效果很坏,不要使用。 内聚和耦合是密切相关的,模块内的高内聚往往意味着模块间的松耦合。设计时力争做到高内聚,并且能够辨认出低内聚的模块,有能力通过修改设计提高模块的内聚程度降低模块间的耦合程度,从而获得较高的模块性。

内聚和耦合都是进行模块化设计的有力工具,但是实践表明内聚更重要,应该把更多注意力集中到提高模块的内聚程度上。

8、 生命周期九个过程,每个周期具体所做的事情。 软件生命周期:

(1)问题定义(立项,下达任务书)

(2)可行性研究:研究并论证软件系统的可行性,对方案进行选择并形成可行性分析报告。

(3)需求分析:这个阶段的任务主要是确定目标系统必须具备哪些功能。 (4)总体设计(概要设计):概括地说,应该怎样实现目标系统?

软件设计的一条基本原理就是,程序应该模块化,也就是说,一个程序应该由若干个规模适中的模块按合理的层次结构组织而成。因此,总体设计的另一项主要任务就是设计程序的体系结构,也就是确定程序由哪些模块组成以及模块间的关系。

(5)详细设计 :(模块设计)把设计具体化

(6)编码和单元测试:写出正确的容易理解、容易维护的程序模块(编码) (7)综合测试:通过各种类型的测试(及相应的调试)使软件达到预定的要求。 (8)运行与维护:维护阶段的关键任务是,通过各种必要的维护活动使系统持久地满足用户的需要。

(9)版本更新或者退役:每一个阶段结束之前都必须进行正式严格的技术审查和管理复审,从技术和管理两方面对这个阶段的开发成果进行检查,通过之后这个阶段才算结束;如果没通过检查,则必须进行必要的返工,而且返工后还要再经过审查。

9、 设计模式、代理模式和适配器模式的异同点。 10、 设计模式的原则是什么,指代的是什么? 三、 论述题

四、 软件的生命周期,需求分析阶段在整个软件生命周期中起到的关键做用

你认为有多少?

五、 程序题:设计模式:抽象工厂模式。。。见资料中的例题。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo6.cn 版权所有 赣ICP备2024042791号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务