软件工程考试重点内容

更新时间:2024-04-16 02:31:01 阅读量: 综合文库 文档下载

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

一、基础知识点:

1.软件工程的基本原理。(p7)

软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。

软件工程的基本原理有7条:

(1)用分阶段的生命周期计划严格管理 (2)坚持进行阶段评审 (3)实行严格的产品控制 (4)采用现代程序设计技术 (5)结果应能清楚地审查 (6)开发小组的人员应该少而精

(7)承认不断改进软件工程实践的必要性

2.软件生命周期包括几个时期,各时期的主要任务及阶段划分。(p11) 软件定义时期:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资料和成本,并且制定工程进度表;又划分成三个阶段,即问题定义、可行性研究和需求分析。

软件开发时期:具体设计和实现在前一个时期定义的软件,由四个阶段组成:总体设计、详细设计、编码和单元测试、综合测试(或由三个阶段组成:软件设计、编码、软件测试)

软件维护时期:主要任务是使软件持久地满足用户的需要。通常对维护时期不再进一步划分阶段。 3.需求分析的任务。(p56)

答:(1)确定对系统的综合要求.主要包括:

1)功能需求 2)性能需求

3)可靠性和可用性需求 4)出错处理需求 5)接口需求 6)约束

7)逆向需求

8)将来可能提出的要求 (2)分析系统的数据要求 (3)导出系统的逻辑模型 (4)修正系统开发计划

4.改进软件设计的启发式规则(p100) (1)改进软件结构提高模块独立性 (2)模块规模应该适中

(3)深度、宽度、扇出和扇入都应适当; (4)模块的作用域应该在控制域之内。 (5)力争降低模块接口的复杂程序 (6)设计单入口单出口的模块 (7)模块功能应该可以预测 5.软件维护的类型(p189-190)

(1)改正性维护

诊断和改正错误的过程称为改正性维护。 (2)适应性维护

为使软件系统适应不断变化的运行环境而修改软件的过程。 (3)完善性维护

在软件的使用过程中,用户往往提出增加新性能或修改已有功能等要求。为了满足这些要求需要进行完善性维护。

(4)预防性维护

为提高软件未来的可维护性、可靠性等,为以后进一步改进软件打下良好基础而修改软件的过程。

6.决定软件可维护性的主要因素。(p194)

软件可维护性是指维护人员理解、改正、改动或改进这个软件的难易程度。 决定软件可维护性的因素主要有下述5个: (1)可理解性 (2)可测试性 (3)可修改性

(4)可移植性 (5)可重用性

7.面向对象设计的准则和启发式规则。(p260-p261) 设计准则:

(1)模块化 (2)抽象 (3)信息隐蔽 (4)弱耦合 (5)强内聚 (6)可重用。 启发规则:

(1)设计结果应该清晰易懂 (2)一般-特殊结构的深度应适当 (3)设计简单的类 (4)使用简单的协议 (5)使用简单的服务 (6)把设计变动减至最小

二、关键知识点:

1.软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及相关文档的集合。(p4)

2.软件工程方法学包括3个要素:方法、工具和过程。(p9)

目前使用最广泛的软件工程方法学,分别是传统方法学和面向对象方法学。 3.传统软件工程方法学的软件过程,基本上可以用瀑布模型来描述。(p15) 3.数据流图和数据字典共同构成系统的逻辑模型。只有数据流图和对数据流图中每个元素的精确定义放在一起,才能共同构成系统的规格说明。(p47)

4.E-R图主要包括三个元素,即实体、联系和属性。(p64)

5.总体设计又称为概要设计或初步设计,其主要任务是建立软件的总体结构。(p92)

6.模块的独立性是软件模块化设计的关键之一,一般用内聚和耦合两个定性标准来度量模块的独立性。(p97)

7.测试过程包括5个步骤,即 模块测试、子系统测试、系统测试、验收测试、平行运行。(p151)

8.用面向对象方法开发软件,需要建立3种模型:对象模型、动态模型、功能模型。在任何情况下,对象模型始终是最重要,最基本、最核心的。(p216)

9.类与类之间通常有关联、泛化(继承)、依赖和细化等4种关系。(p218) 10.各个类的状态图通过共享事件合并起来,构成了系统的动态模型。(p224) 11.大型系统的对象模型通常由5个层次组成:主题层、类与对象层、结构层、属性层和服务层。(p232)

12.软件重用可分为3个层次:知识重用、方法和标准的重用和软件成分的重用。(p263)

13.在制订和管理进度时,应该同时使用Gantt图和工程网络这两种工具,使它们互相补充取长补短。(p319)

14.软件项目组的组织方式中比较典型的有: 民主制程序员组、主程序员组和现代程序员组。(p320)

15.CMM把软件过程从无序到有序的进化过程分成5个等级从低到高:初始级,可重复级,已定义级,已管理级,优化级。(P332)

三、章节综合知识

1.软件的特点(p3)。

(1).软件是无形的,缺乏 “可见性” (2).软件不存在磨损和消耗 (3).软件开发成本高 (4).没有明显的制作过程 2.软件生命周期模型(p32)

(1) 瀑布模型 (2) 快速原型模型 (3) 增量模型 (4) 螺旋模型 (5)喷泉模型 (6)RUP过程模型 (7) 敏捷过程模型 (8)微软过程模型 3.可行性研究(p36) (1).技术可行性

(2)经济可行性 (3).操作可行性 (1).法律可行性

研究开发所需要的成本和资源是属于可行性研究中的经济可行性研究的一方面 4.编码时应该遵循的规则中,不正确的是(p147-149) (1).所有的输入数据都进行检验

(2).程序应包括适当的注释 (3).程序代码应效率第一,清晰第二

(4).源程序的效率由算法的效率决定,但写程序之前应先简化算术的和逻辑的表达式

5.可以提高软件测试效率的是(p175) (1)..随意选取测试的数据

(2). 选取边界数据作为测试用例 (3).制定测试计划 (4)..取尽可能多的数据进行测试

四、活学活用

1.设计一个程序,要求具有如下功能:输入一组数A(N),在这组数中找出最小数。

请画出其求解过程的N-S图和PAD图 N-S图如下:

input A(n)

min=A(1) i=2 do while i<=n T min> A(i) F min= A(i) i=i+1

PAD图如下:

input A(n) min=A ( 1 ) i=2 min= A(i) do while i<=n min> A(i) i=i+1 2.使用UML的图形化符号来表示对象类,设计以下各类,它们的属性和操作(根据自己的经验决定应该与这些对象有关的属性和操作),并标明类与类之间的关系。

学生;研究生;本科生;(其中,本科生类和研究生类由学生类继承产生)

研究生 本科生 + 按性名查询学号(string xname):long + 按学号查询姓名(long - 学号:long - 姓名:string - 性别:ring - 出生年月:string 学生 - 层次:研究生 - 层次:本科 + 按学号查询层次(long) :string + 按学号查询层次(long) :string 3.程序功能说明书指出,某程序的输入条件为:每个学生可以选修1至3门课程,试用黑盒法设计测试用例:

(1)按等价分类法设计测试用例(要求列出设计过程);(p172) 合理的等价类 选修1门 选修2门 选修3门 不合理的等价类: 没选课 选3门以上 测试用例: 选修=2 选修=0

选修>3

(2)按边界值分析法设计测试用例。(p175) 边界值法: 0,1,3,4,

4. 图`1是用UML语言描述的对象类,它示范了一个employee对象的模式,图2 是一个泛化继承关系的类图

图1 An employee object

图 2 A generalisation hierarchy

.

回答下列问题:

(1)在Employee类中有多少个属性和操作?还能够增加更多的属性吗? 答:属性:(attribute) 有10个 操作:(operation) 有4个

Employee类中还可以增加其他的属性,如性别(sex),家庭住址(address)等。

(2) 在UML图中,泛化关系是用什么表示的?如果实现的?

答:在UML中泛化是用一个指向父类的箭头表示。是通过继承来实现的

(3) 列出Manager类的所有子类

在图2中Manager类的所有子类有:Project Manager类

Dept Manager类 Strategic Manager类

(4) 通过Project Manager类可直接或间接访问多少个成员属性

答:通过class Project Manager类可以直接或间接访问的属性有13个

(5) 如果一个成员jobDuty将被增加到Manager类中,同时一个操作doJob被增加到Project Manager类中, 请重新画出UML示图2 答:

Employee Manager budgetsControlled dateAppointed jobDuty Programmer project progLanguages projects Project Manager Dept Manager dept Strategic Manager responsibilities doJob

5.图书借阅系统包括三种用户:读者、图书管理员和系统管理员。对系统,读者可查询自己的借阅情况、查询图书和在规定期限内续借以及找图书管理员进行借书和还书;对图书管理员,主要对图书进行借书、还书和续借操作,以及管理图书信息和维护读者的信息;而系统管理员,主要是对系统的日志进行维护、用户维护和后台数据库的维护等操作。请根据上述描述画出系统的用例图。

图书查询借书个人信息查询读者续借还书图书管理员维护读者信息管理图书信息日志维护系统管理员用户维护后台数据维护

五、综合能力考查

假设自己被指派作为一个大型软件产品公司的项目负责人,工作负责公司已被广泛应用的文字处理软件的新版本开发及管理。由于市场竞争激烈,公司规定了严格的完成期限,结合你所学习的软件工程的原理、方法和技术阐述你该如何开展工作。(从计划、软件过程、项目组织、进度计划及质量管理、产品维护等方面考虑)

作为一个大型软件产品公司的项目负责人,我认为软件项目始于项目计划,而第一项计划活动就是估算,要预测软件规模、估算完成该项目所需的工作量。 在完成开发任务时,必须进行一些开发活动,即软件过程。根据所承担项目的特点来划分阶段,明确需求分析。对这个项目的一个重要要求是公司规定了严格的完成期限,因此,选择生命周期模型应该着重考虑哪种模型有助于加快产品开发的进度。使用增量模型开发软件时,可以并行完成开发工作,因此能够加快开发进度。这个项目是开发该公司已被广泛使用的字处理软件的新版本,从上述事实可以得出三点结论:第一,旧版本相当于一个原型,通过搜集用户对旧版本的反应,较容易确定对新版本的需求,没必要再专门建立一个原型系统来分析用户的需求。第二,该公司的软件工程师对字处理软件很熟悉,有开发的丰富经验,具有采用增量模型开发新版字处理软件所需要的技术水平。第三,该软件受到广大用户的喜爱,今后很可能还要开发更新的版本。因此,应该把该软件的体系结构设计成开放式的,以便于今后的改进和补充。

在项目组织方面,该项目软件的规模很大,单个开发人员无法在规定期限完成开发工作,因此应选择现代程序员项目组结构,因为小组成员都能对发现程序错误持积极主动的态度,能更好的适应竞争。高素质的开发人员和合理的项目组组织结构是软件项目取得成功的关键。

同时,在进度计划方面,可联合使用Gantt图和工程网络来制定进度计划并监督项目进展情况。首先制定一个宏观的进度安排表,表示出主要的软件工程活动和其影响到的产品功能,随着项目的进展,再把每个条目精化成一个详细进度表,并安排好实现这些任务的进度。

另外,应明确影响软件质量的主要因素,保证软件质量。可通过正式技术复审、走查、审查、程序正确性证明等方式确保软件产品的质量。

最后要做到的就是软件产品维护,通过各种必要的维护活动使系统持久的满

足用户的需求。像改正性维护、适应性维护、完善性维护、预防性维护等。每一项维护活动都应该经过报告问题、分析维护要求、提出维护方案、审批确定维护计划修改软件设计程序,测试、复查验收等。

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

Top