软件设计师考试大纲.docx

上传人:b****6 文档编号:5991078 上传时间:2023-01-02 格式:DOCX 页数:57 大小:270.95KB
下载 相关 举报
软件设计师考试大纲.docx_第1页
第1页 / 共57页
软件设计师考试大纲.docx_第2页
第2页 / 共57页
软件设计师考试大纲.docx_第3页
第3页 / 共57页
软件设计师考试大纲.docx_第4页
第4页 / 共57页
软件设计师考试大纲.docx_第5页
第5页 / 共57页
点击查看更多>>
下载资源
资源描述

软件设计师考试大纲.docx

《软件设计师考试大纲.docx》由会员分享,可在线阅读,更多相关《软件设计师考试大纲.docx(57页珍藏版)》请在冰豆网上搜索。

软件设计师考试大纲.docx

软件设计师考试大纲

2012软件设计师考试大纲

一、考试说明

1.考试目标

通过本考试的合格人员能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档,组织和指导程序员编写、调试程序,并对软件进行优化和集成测试,开发出符合系统总体设计要求的高质量软件;具有工程师的实际工作能力和业务水平。

2.考试要求

(1)掌握计算机内的数据表示、算术和逻辑运算方法;

(2)掌握相关的应用数学及离散数学基础知识;

(3)掌握计算机体系结构以及各主要部件的性能和基本工作原理;

(4)掌握操作系统、程序设计语言的基础知识,了解编译程序的基本知识;

(5)熟练掌握常用数据结构和常用算法;

(6)熟悉数据库、网络和多媒体的基础知识;

(7)掌握C程序设计语言,以及C++、Java中的一种程序设计语言;

(8)熟悉软件工程、软件过程改进和软件开发项目管理的基础知识;

(9)掌握软件设计的方法和技术;

(10)了解信息化、常用信息技术标准、安全性,以及有关法律、法规的基础知识;

(11)正确阅读和理解计算机领域的英文资料。

3.考试科目

(1)计算机与软件工程知识,考试时间为150分钟,笔试,选择题;

(2)软件设计,考试时间为150分钟,笔试,问答题。

二、考试范围

考试科目1:

计算机与软件工程知识

1.计算机科学基础知识

1.1数制及其转换

●二进制、八进制、十进制和十六进制等常用数制及其相互转换

1.2计算机内数据的表示

●数的表示(补码表示,整数和实数的表示,精度和溢出)

●非数值表示(字符和汉字表示,声音表示、图像表示)

1.3算术运算和逻辑运算

●计算机中的二进制数运算方法

●逻辑代数的基本运算

1.4其他数学基础知识

●常用数值计算

●排列组合,概率论应用,应用统计(数据的统计分析)

●编码基础

●命题逻辑、谓词逻辑、形式逻辑的基础知识

●运筹基本方法

2.计算机系统知识

2.1计算机硬件基础知识

2.1.1计算机系统的组成、体系结构分类及特性

●CPU、存储器的组成、性能和基本工作原理

●常用I/O设备、通信设备的性能以及基本工作原理

●I/O接口的功能、类型和特性

●CISC/RISC,流水线操作,多处理机,并行处理

2.1.2存储系统

●虚拟存储器基本工作原理,多级存储体系

●RAID类型和特性

2.1.3可靠性与系统性能评测基础知识

●诊断与容错

●系统可靠性分析评价

●计算机系统性能评测方法

2.2计算机软件知识

2.2.1数据结构与算法知识

●数组

●链表

●队列、栈

●树

●图的定义、存储和基本操作

●杂凑(Hash表)

●常用的排序算法、查找算法、数值计算、字符串处理、数据压缩算法、递归算法、图的相关算法

●算法描述和分析

2.2.2操作系统知识

●操作系统的内核

●处理机管理

●存储管理

●设备管理

●文件管理

●作业管理

●网络操作系统和嵌入式操作系统基础知识

●操作系统的配置

2.2.3程序设计语言和语言处理程序知识

●汇编、编译、解释系统的基础知识和基本工作原理

●程序设计语言的基本成分(数据、运算、控制和传输),程序调用的实现机制

●各类程序设计语言的主要特点和适用情况

2.2.4数据库知识

●数据库模型(概念模式、外模式、内模式)

●数据模型,ER图,规范化

●数据操作

●数据库语言

●数据库管理系统的功能和特征

●数据库的控制功能

●数据仓库和分布式数据库基础知识

2.3计算机网络知识

●网络体系结构

●传输介质,传输技术,传输方法,传输控制

●常用网络设备和各类通信设备的特点

●Client-Server结构,Browser-Server结构

●LAN(拓扑,存取控制,组网,网间互连)

●Internet和Intranet基础知识以及应用

●网络软件

●网络管理,网络性能分析

2.4多媒体基础知识

●多媒体系统基础知识

●简单图形的绘制,图像文件的处理方法

●音频和视频信息的应用

●多媒体应用开发过程

3.系统开发和运行知识

3.1软件工程知识

●软件生存周期与软件生存周期模型

●软件开发方法

●软件开发项目管理

●软件开发工具与软件开发环境

3.2系统分析基础知识

●系统分析的主要步骤

●机构化分析方法

3.3系统设计基础知识

●概要设计与详细设计的基本任务

●系统设计的基本原理

●系统模块结构设计

●结构化设计方法

●面向数据结构的设计方法

●系统详细设计

3.4系统实施基础知识

●系统实施的基本内容

●程序设计方法

●程序设计的基本模块

●系统测试

●系统转换

3.5系统运行和维护基础知识

●系统可维护性的概念

●系统维护的类型

●系统评价的概念和类型

3.6软件质量管理基础知识

●软件质量特性(ISO/IEC9126软件质量模型)

●软件质量保证

●软件复杂性的概念及度量方法(McCabe度量法)

●软件评审(设计质量评审、程序质量评审)

●软件容错技术

3.7软件过程改进基础知识

●软件能力成熟度模型CMM

●统一过程(UP)与极限编程(XP)的基本概念

4.面向对象基础知识

●面向对象的基本概念

●面向对象分析与设计知识

●分析模式与设计模式知识

●面向对象程序设计知识

●面向对象数据库、分布式对象基础知识

5.信息安全知识

●信息系统安全基础知识

●信息系统安全管理

●保障完整性与可用性的措施

●加密与解密机制基础知识

●风险管理(风险分析、风险类型、抗风险措施和内部控制)

●计算机安全相关的法律、法规基础知识

6.标准化、信息化和知识产权基础知识

6.1标准化基础知识

●标准化意识,标准化组织机构,标准的内容、分类、代号与编号规定,标准制订过程

●国际标准、国家标准、行业标准、企业标准

●代码标准、文件格式标准、安全标准、互联网相关标准、软件开发规范和文档标准、基于构件的软件标准

6.2信息化基础知识

●全球信息化趋势、国家信息化战略、企业信息化战略和策略

●互联网相关的法律、法规

●个人信息保护规则

●远程教育、电子商务、电子政务等基础知识

●企业信息资源管理基础知识

6.3知识产权基础知识

●保护知识产权有关的法律、法规

7.计算机专业英语

●具有工程师所要求的英语阅读水平

●理解本领域的英语术语

考试科目2:

软件设计

1.外部设计

1.1理解系统需求说明

1.2准备进行系统开发

●选择开发方法、准备开发环境、制订开发计划

1.3设计系统功能

●选择系统结构

●设计各子系统的功能和接口

●设计安全性策略、需求和实现方法

●制订详细的工作流和数据流

1.4设计数据模型

●设计ER模型及其他数据模型

1.5编写外部设计文档

●系统配置图、各子系统关系图

●系统流程图、系统功能说明书

●输入输出规格说明、数据规格说明、用户手册框架

●设计系统测试要求

1.6外部设计的评审

2.内部设计

2.1设计软件结构

●按构件分解,确定构件功能、规格以及构件之间的接口

●数据结构与算法设计

●采用中间件和工具

2.2设计输入输出

2.3设计物理数据

2.4构件的创建和重用

●创建构件、重用构件

●使用子程序库或类库

2.5编写内部设计文档

●构件划分图、构件间的接口、构件处理说明

●屏幕界面设计文档、报表设计文档、文件设计文档、数据库设计文档

2.6内部设计的评审

3.数据库应用分析与设计

●设计关系模式

●数据库语言(SQL)

●数据库访问

4.程序设计

4.1模块划分

4.2编写程序设计文档

4.3程序设计评审

5.系统实施

5.1配置计算机系统及环境

5.2选择合适的程序设计语言

5.3用C程序设计语言以及C++、Java中的任一种程序设计语言进行程序设计

5.4系统测试

●指导程序员进行模块测试,并进行验收

●准备系统集成测试环境和测试工具

●准备测试数据

●写出测试报告

6.软件工程应用

6.1软件开发周期模型

6.2需求分析

6.3软件设计

●软件设计的基本原则

●软件设计方法

●程序设计(结构化程序设计、面向对象程序设计)

6.4软件测试的原则与方法

6.5软件质量(软件质量特性、软件质量控制)

6.6软件过程评估基本方法、软件能力成熟度评估基本方法

6.7软件开发环境和开发工具

6.8面向对象技术

●面向构件技术

●统一建模语言(UML)

●软件过程改进模型和方法

6.9网络环境软件技术

三、题型举例

(一)选择题

1.某系统的可靠性结构框图如下图所示。

该系统由4个部件组成,其中2、3两部件并联冗余,再与1、4部件串联构成。

假设部件1、2、3的可靠度分别为0.90、0.70、0.70。

若要求该系统的可靠度不低于0.75,则进行系统设计时,分配给部件4的可靠度至少应为

(1)。

(1)A.

B.

C.

D.

2.结构化开发方法中,数据流图是

(2)阶段产生的成果。

(2)A.需求分析B.总体设计C.详细设计D.程序编码

3.在进行面向对象设计时,采用设计模式能够(3)。

(3)A.复用相似问题的相同解决方案B.改善代码的平台可移植性

C.改善代码的可理解性D.增强软件的易安装性

4.Model-drivenanalysisemphasizesthedrawingofpictorialsystemmodelstodocumentandvalidatebothexistingand/orproposedsystems.Ultimately,thesystemmodelsbecomethe(5)fordesigningandconstructinganimprovedsystem.(6)issuchatechnique.Theemphasisinthistechniqueisprocess-centered.Systemsanalystsdrawaseriesofprocessmodelscalled(7).(8)isanothersuchtechniquethatintegratesdataandprocessconcernsintoconstructscalledobjects.

(4)A.PrototypingB.AcceleratedC.Model-drivenD.Iterative

(5)A.imageB.pictureC.layoutD.blueprint

(6)A.StructuredanalysisB.InformationEngineering

C.DiscoveryPrototypingD.Object-Orientedanalysis

(7)A.PERTB.DFDC.ERDD.UML

(8)A.StructuredanalysisB.InformationEngineering

C.DiscoveryPrototypingD.Object-Orientedanalysis

(二)问答题

试题一软件设计必做样题

阅读下列说明以及图1-1和图1-2,回答问题1、问题2和问题3,将解答填入答题纸的对应栏内。

[说明]

某电话公司决定开发一个管理所有客户信息的交互式网络系统。

系统的功能如下:

1.浏览客户信息:

任何使用Internet的网络用户都可以浏览电话公司所有的客户信息(包括姓名、住址、电话号码等)。

2.登录:

电话公司授予每个客户一个帐号。

拥有授权帐号的客户,可以使用系统提供的页面设置个人密码,并使用该帐号和密码向系统注册。

3.修改个人信息:

客户向系统注册后,可以发送电子邮件或者使用系统提供的页面,对个人信息进行修改。

4.删除客户信息:

只有公司的管理人员才能删除不再接受公司服务的客户的信息。

系统采用面向对象方法进行开发,在开发过程中认定出的类如下表所示:

编号

类名

描述

1

InternetClient

网络用户

2

CustomerList

客户信息表,记录公司所有客户的信息

3

Customer

客户信息,记录单个客户的信息

4

CompanyCustomer

公司客户

5

InternalClient

公司的管理人员

图1-1

图1-2

【问题1】

在需求分析阶段,采用UML的用例图(usecasediagram)描述系统功能需求,如图1-1所示。

请指出图中的A、B、C和D分别是哪个用例?

【问题2】

在UML中,重复度(Multiplicity)定义了某个类的一个实例可以与另一个类的多少个实例相关联。

通常把它写成一个表示取值范围的表达式或者一个具体的值。

例如图3-2中的类InternetClient和CustomerList,InternetClient端的“0..*”表示:

一个CustomerList的实例可以与0个或多个InternetClient的实例相关联;CustomerList端的“1”表示:

一个InternetClient的实例只能与一个CustomerList的实例相关。

请指出图1-2中

(1)到(4)处的重复度分别为多少?

【问题3】

类通常不会单独存在,因此当对系统建模时,不仅要识别出类,还必须对类之间的相互关系建模。

在面向对象建模中,提供了四种关系:

依赖(dependency)、概括(generalization)、关联(association)和聚集(aggregation)。

请分别说明这四种关系的含义,并说明关联和聚集之间的主要区别。

试题二C语言选做样题

阅读以下预备知识、函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。

【预备知识】

(1)对给定的字符集合及相应的权值,采用哈夫曼算法构造最优二叉树,并用结构数组存储最优二叉树。

例如,给定字符集合{a,b,c,d}及其权值2、7、4、5,可构造如下所示的最优二叉树和相应的结构数组Ht(数组元素Ht[0]不用)。

最优二叉树

数组下标

ch

weight

parent

lchild

rchild

1

a

2

5

0

0

2

b

7

7

0

0

3

c

4

5

0

0

4

d

5

6

0

0

5

6

6

1

3

6

11

7

4

5

7

18

0

2

6

结构数组Ht

结构数组Ht的类型定义如下:

#defineMAXLEAFNUM20

structnode{

charch;/*当前结点表示的字符,对于非叶子结点,此域不用*/

intweight;/*当前结点的权值*/

intparent;/*当前结点的父结点的下标,为0时表示无父结点*/

intlchild,rchild;

/*当前结点的左、右孩子结点的下标,为0时表示无对应的孩子结点*/

}Ht[2*MAXLEAFNUM];

(2)用‘0’或‘1’标识最优二叉树中分支的规则是:

从一个结点进入其左(右)孩子结点,就用‘0’(‘1’)标识该分支(示例见上图)。

(3)若用上述规则标识最优二叉树的每条分支后,从根结点开始到叶子结点为止,按经过分支的次序,将相应标识依次排列,可得到由‘0’、‘1’组成的一个序列,称此序列为该叶子结点的前缀编码。

例如上图所示的叶子结点a、b、c、d的前缀编码分别是110、0、111、10。

【函数说明】

函数voidLeafCode(introot,intn)的功能是:

采用非递归方法,遍历最优二叉树的全部叶子结点,为所有的叶子结点构造前缀编码。

其中形参root为最优二叉树的根结点下标;形参n为叶子结点个数。

在构造过程中,将Ht[p].weight域用作被遍历结点的遍历状态标志。

【函数】

char**Hc;

voidLeafCode(introot,intn)

{/*为最优二叉树中的n个叶子结点构造前缀编码,root是树的根结点下标*/

inti,p=root,cdlen=0;charcode[20];

Hc=(char**)malloc((n+1)*sizeof(char*));/*申请字符指针数组*/

for(i=1;i<=p;++i)

Ht[i].weight=0;/*遍历最优二叉树时用作被遍历结点的状态标志*/

while(p){/*以非递归方法遍历最优二叉树,求树中每个叶子结点的编码*/

if(Ht[p].weight==0){/*向左*/

Ht[p].weight=1;

if(Ht[p].lchild!

=0){p=Ht[p].lchild;code[cdlen++]=′0′;}

elseif(Ht[p].rchild==0){/*若是叶子结点,则保存其前缀编码*/

Hc[p]=(char*)malloc((cdlen+1)*sizeof(char));

(1);strcpy(Hc[p],code);

}

}

elseif(Ht[p].weight==1){/*向右*/

Ht[p].weight=2;

if(Ht[p].rchild!

=0){p=Ht[p].rchild;code[cdlen++]=′1′;}

}

else{/*Ht[p].weight==2,回退*/

Ht[p].weight=0;

p=

(2);(3);/*退回父结点*/

}

}/*while结束*/

}

【函数说明】

函数voidDecode(char*buff,introot)的功能是:

将前缀编码序列翻译成叶子结点的字符序列,并输出。

其中形参root为最优二叉树的根结点下标;形参buff指向前缀编码序列。

【函数】

voidDecode(char*buff,introot)

{intpre=root,p;

while(*buff!

=′\0′){

p=root;

while(p!

=0){/*存在下标为p的结点*/

pre=p;

if((4))p=Ht[p].lchild;/*进入左子树*/

elsep=Ht[p].rchild;/*进入右子树*/

buff++;/*指向前缀编码序列的下一个字符*/

}

(5);

printf("%c",Ht[pre].ch);

}

}

试题三C++语言选做样题

阅读以下说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

在一公文处理系统中,开发者定义了一个公文类OfficeDoc,其中定义了公文具有的属性和处理公文的相应方法。

当公文的内容或状态发生变化时,关注此OfficeDoc类对象的相应的DocExplorer对象都要更新其自身的状态。

一个OfficeDoc对象能够关联一组DocExplorer对象。

当OfficeDoc对象的内容或状态发生变化时,所有与之相关联的DocExplorer对象都将得到通知,这种应用被称为观察者模式。

以下代码写在一个C++源文件中,能够正确编译通过。

【C++代码】

#include

constOBS_MAXNUM=20;//最多与OfficeDoc对象相关联的DocExplorer对象的个数

(1);

classDocExplorer{//关注OfficeDoc公文对象的类

public:

DocExplorer(

(2)*doc);//构造函数

(3)voidupdate(OfficeDoc*doc)=0;//更新自身状态的函数

//其它相关属性和方法省略

};

classOfficeDoc{//公文类

private:

DocExplorer*myObs[OBS_MAXNUM];

//关注此公文类的DocExplorer类对象指针数组

intindex;//与OfficeDoc对象关联的DocExplorer对象的个数

public:

OfficeDoc(){

index=0;

}

voidattach(DocExplorer*o){

//将一DocExplorer对象与OfficeDoc对象相关联

if(index>=OBS_MAXNUM||o==NULL)return;

for(intloop=0;loop

if(myObs[loop]==o)return;

myObs[index]=o;

index++;

}

voiddetach(DocExplorer*o){

//解除某DocExplorer对象与OfficeDoc对象的关联

if(o==NULL)return;

for(intloop=0;loop

if(myObs[loop]==o){

if(loop<=index-2)myObs[loop]=myObs[index-1];

myObs[index-1]=NULL;

index--;

break;

}

}

}

private:

voidnotifyObs(){//通知所有的DocExplorer对象更改自身状态

for(intloop=0;loop

myObs[loop]->(4);//DocExplorer对象更新自身状态

}

}

//其它公文类的相关属性和方法

};

DocExplorer:

:

DocExplorer(OfficeDoc*doc){//DocExplorer类对象的构造函数

doc->(5);//将此DocExplorer对象与doc对象相关联

}

试题四Java语言选做样题

阅读以下说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

在一公文处理系统中,开发者定义了一个公文类Of

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 书信模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1