软件设计师培训软件设计师软件设计师考试说明考试要求:(1)掌握数据表示、算术和逻辑运算;(2)掌握相关的应用数学、离散数学的基础知识;(3)掌握计算机体系结构以及各主要部件的性能和基本工作原理;(4)掌握操作系统、程序设计语言的基础知识,了解编译程序的基本知识;(5)熟练掌握常用数据结构和常用算法;(6)熟悉数据库、网络和多媒体的基础知识;软件设计师(7)掌握C程序设计语言,以及C++、Java、Visual、Basic、VisualC++中的一种程序设计语言;(8)熟悉软件工程、软件过程改进和软件开发项目管理的基础知识;(9)熟练掌握软件设计的方法和技术;(10)掌握常用信息技术标准、安全性,以及有关法律、法规的基本知识;(11)了解信息化、计算机应用的基础知识;(12)正确阅读和理解计算机领域的英文资料。软件设计师软件设计师的要求通过本考试的合格人员能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档;组织和指导程序员编写、调试程序,并对软件进行优化和集成测试,开发出符合系统总体设计要求的高质量软件;具有工程师的实际工作能力和业务水平。软件设计师考试设置的科目包括:(1)上午考试主要考查计算机理论、软件设计理论的基础知识,考试时间为150分钟,笔试,共75道选择题,最后5道为专业英语题;(2)下午考试主要考查软件设计能力,考试时间为150分钟,笔试,一般有7道题,1~4为必做题,通常分别为数据流图、数据库设计、UML图,程序流程图(或C语言设计),5~7道为选做题(三选一),通常分别为C程序设计、C++程序设计、JAVA程序设计,每次考试可能有改变。软件设计师内容系统开发与运行知识数据库技术基础知识数据结构与算法知识操作系统知识计算机网络基础知识程序语言基础面向对象技术多媒体基础知识软件知识产权和标准化专业英语软件设计师1.系统开发与运行知识大纲要求:1.1软件工程基础知识软件生命周期与软件生命周期模型软件开发方法软件开发项目管理软件开发工具与软件开发环境软件过程管理软件质量管理和质量保证1.2系统分析基础知识系统分析步骤结构化分析方法——数据流图软件设计师1.3系统设计基础知识概要设计与详细设计的基本任务系统设计的基本原理系统模块结构设计结构化设计方法面向数据结构的设计方法系统详细设计1.4系统实施基础知识系统实施的基本内容软件设计师程序设计的基础模块系统测试系统转换1.5系统运行和维护基础知识系统可维护性概念系统评价的概念和类型软件设计师历年考试对本章内容的考查情况考次2004200520062007200820095月11月5月11月5月11月5月11月5月11月5月分值2122361124415339262726比重14%14.7%24%7.3%16%27.3%35.3%26%17.3%18%17.3%本章的重点程度:★★★★★软件设计师1.1软件工程基础知识软件生命周期软件的生存期划分为制定计划、需求分析、设计、编程实现、测试、运行维护等几个阶段,称为软件生命周期。软件设计师•制定计划:确定待开发软件系统的总目标,对其进行可行性分析,并对资源分配、进度安排等做出合理的计划。参与者:用户、项目负责人、系统分析师。产生的文档:可行性分析报告、项目计划书。•需求分析:确定待开发软件系统的功能、性能、数据、界面等要求,从而确定系统的逻辑模型。参与者:用户、项目负责人、系统分析师。产生的文档:需求规格说明书。软件设计师•软件设计:分为概要设计和详细设计。概要设计是对模块的分解,确定软件的结构,模块的功能和模块间的接口,以及全局数据结构的设计。详细设计是设计每个模块的实现细节和局部设局结构。参与者:概要设计阶段参加人员是系统分析师和软件设计师,详细设计阶段的参加人员是软件设计师和程序员。产生的文档:概要设计说明书、详细设计说明书。软件设计师•编码:用某种程序语言为每个模块编写程序。参与者:软件设计师和程序员。产生的文档:源程序清单。•测试:保证软件质量的重要手段,主要方式是在设计测试用例的基础上检验软件的各个组成部分。参与者:另一个部门的软件设计师或系统分析师。产生的文档:软件测试计划、软件设计报告。•运行与维护:对已交付的软件投入正式使用,并对软件运行中可能由于各方面的原因出现的问题进行后期修改。软件设计师•【软件设计师考试2009年5月上午试题33】在开发信息系统时,用于系统开发人员与项目管理人员沟通的主要文档是。A.系统开发合同C.系统开发计划D.系统测试报告•【软件设计师考试2008年11月上午试题33】系统测试人员与系统开发人员需要通过文档进行沟通,系统测试人员应根据一系列文档对系统进行测试,然后将工作结果撰写成,交给系统开发人员。A.系统开发合同B.系统设计说明书C.测试计划B.系统设计说明书D.系统测试报告软件设计师•【软件设计师考试2007年5月上午试题18】通常在软件的活动中无需用户参与。A.需求分析B.维护D.测试•【软件设计师考试2006年11月上午试题29】C详细描述软件的功能、性能和用户界面,以使用户了解如何使用软件。A.概要设计说明书B.详细设计说明书计D.用户需求说明书C.编码C.用户手册软件设计师•【软件设计师考试2004年11月上午试题10】下述任务中,不属于软件工程需求分析阶段的是。A.分析软件系统的数据要求.B.确定软件系统的功能需求.C.确定软件系统的性能要求.D.确定软件系统的运行平台.软件设计师软件开发模型为了指导软件的开发,用不同的方法将软件生存周期中的所有开发活动组织起来,形成不同的软件开发模型,它描述软件开发过程总各种活动如何执行的模型。常见的软件开发模型有瀑布模型、演化模型、螺旋模型、喷泉模型。软件设计师瀑布模型(WaterfallModel):严格遵循软件生命周期各阶段的固定顺序——计划、分析、设计、编程、测试和维护,上一个阶段完成后才能进入下一个阶段,整个模型像一个飞流直下的瀑布。瀑布模型缺乏灵活性,无法通过开发活动澄清本来不够明确的活动。因此,当用户需求比较明确时才使用此模型。软件设计师演化模型(EvolutionaryModel):也称为快速原型模型,由于开发软件在开始时对软件需求的认识是模糊的,因此,很难一次性开发成功。演化模型模型就是在获得一组基本的用户需求的后,快速构造出该软件的一个初始可运行版本,这个初始的软件称为原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型,最终可得到另用户满意的软件产品。显然,快速原型方法可以克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险,具有显著的效果。软件设计师螺旋模型(SpiralModel):将瀑布模型和演化模型相结合,提出了螺旋模型,综合了瀑布模型和演化模型的优点,并增加了风险分析。包含4个方面活动:•制定计划:确定软件的目标,选定实施方案,弄清项目开发的限制条件。•风险分析:分析所选的方案,识别风险,验证阶段性产品。•实施工程:实施软件开发,验证阶段性产品。•客户评价:评价开发工作,提出修改意见。软件设计师喷泉模型(WaterFountainModel):主要用于描述面向对象的开发过程。喷泉一词体现了面向对象开发过程的迭代和无间隙特征。即允许开发活动交叉、迭代地进行。迭代:模型中的开发活动常常需要重复多次,在迭代过程中不断完善软件系统。无间隙:指在开发活动(如分析、设计、编码)之间不存在明显的边界。软件设计师V模型(VModel):是瀑布模型的变形,与传统瀑布模型相比,该模型强调测试过程应如何与分析、设计等过程相关联。增量模型(IncrementalModel):增量模型在各个阶段并不交付一个可运行的完整产品,而是交付满足客户需求的一个子集的可运行产品。整个产品被分解成若干个构件,开发人员逐个构件地交付产品,这样做的好处是软件开发可以较好地适应变化,客户可以不断地看到所开发的软件,从而降低开发风险。构件:是由多种相互作用的模块所形成的提供特定功能的代码片段构成.软件设计师•【软件设计师考试2006年11月上午试题15、16】常见的软件开发模型有瀑布模型、演化模型、螺旋模型、喷泉模型等。其中模型适用于需求明确或很少变更的项目,模型主要用来描述面向对象的软件开发过程。A.瀑布模型B.演化模型C.螺旋模型D.喷泉模型•【软件设计师考试2005年11月上午试题6】在开发一个系统时,如果用户对系统的目标是不很清楚,难以定义需求,这时最好使用。A.原型法B.瀑布模型C.V-模型D.螺旋模型ADA软件设计师采用瀑布模型进行系统开发的过程中,每个阶段都会产生不同的文档。以下关于产生这些文档的描述中,正确的是。A.外部设计评审报告在概要设计阶段产生。B.集成测评计划在程序设计阶段产生。C.系统计划和需求说明在详细设计阶段产生。D.在进行编码的同时,独立的设计单元测试计划。软件设计师软件开发方法软件开发方法是一种使用早已定义好的技术集及符号表示习惯来组织软件生产的过程。•结构化的方法•Jackson方法•面向对象开发方法软件设计师•结构化方法结构化的方法包括结构化的分析、结构化的设计、结构化的程序设计构成,是一种面向数据流的开发方法。结构化方法总的指导思想是自顶向下、逐层分解,基本原则是功能的分解与抽象。软件设计师•Jackson方法:是面向数据结构的开发方法,包括JSP(JacksonStructureprogramming)和JSD(JacksonSystemDevelopment)软件设计师•面向对象开发方法面向对象方法是以对象为最基本的元素,对象也是分析问题和解决问题的核心。开发方法包括面向对象分析、面向对象设计、面向对象实现。面向对象开发方法有Booch方法、Coad方法和OMT方法等。为了统一各种面向对象方法的术语、概念和模型,1997年推出了统一建模语言——UML(UnifiedModelingLanguage),它有标准的建模语言,通过统一的语义和符号表示。软件设计师•【软件设计师考试2008年5月上午试题15】是一种面向数据流的开发方法,其基本思想是软件功能的分解和抽象。A.结构化开发方法B.Jackson系统开发方法C.Booch方法D.UML(统一建模语言)软件设计师软件开发中的瀑布模型典型地刻画了软件生存周期的阶段划分,与其最相适应的软件开发方法是。A.构件化方法B.结构化方法C.面向对象方法D.快速原型方法软件设计师软件项目管理软件项目管理是软件在开发的过程中对软件开发项目的工作范围、可能遇到的风险、需要的资源、要实现的任务、经历的里程碑、花费的工作量(成本)、以及进度的安排进行管理。软件项目管理包括:•成本估计•风险分析•进度管理•人员管理成本估算方法:有自顶向下估算法、专家估算法……。成本估算模型:IBM模型、Putnam模型、COCOMO模型。软件设计师•风险分析风险分析包括4种风险评估活动:风险识别—建立风险概念的尺度。试图系统化确定对项目计划(估算、进度、资源分配)的威胁。风险预测—描述风险引起的后果。确定风险发生的可能性或概率以及如果风险发生了所产生的后果。风险评估—估计风险影响的大小。风险控制—确定风险估计的正确性。辅助项目组建立处理风险的策略。软件设计师•【软件设计师考试2008年11月上午试题19】在软件工程环境中进行风险识别时,常见的、已知的及可预测的风险类包括产品规模、商业影响等,与开发工具的可用性及质量相关的风险是。A.客户特性B.过程定义D.构建技术C.开发环境软件设计师风险识别的一个方法是建立风险条目检查表。该风险表可以用于识别风险,并使得人们集中来识别下列常见的、已知的及可预测的风险:产品规模—与要建造或修改的软件的总体规模相关的风险;商业影响—与管理或市场所诸的约束相关的风险;客户特性—与客户的素质以及开发者和客户定期通信的能力相关的风险;过程定义—与软件过程被定