2010年软件设计师(软考)基础知识详解
- 格式:doc
- 大小:1.68 MB
- 文档页数:41
软考软件设计师知识点速记一、计算机组成与体系结构。
1. 数据的表示。
- 进制转换:- 二进制转十进制:按权展开求和,例如(101.1)_2 = 1×2^2+0×2^1 +1×2^0+1×2^-1=4 + 0+1+0.5 = 5.5。
- 十进制转二进制:整数部分除2取余,小数部分乘2取整。
- 原码、反码、补码:- 原码:最高位为符号位,0表示正数,1表示负数,其余位表示数值的绝对值。
- 反码:正数的反码与原码相同,负数的反码是在原码的基础上,符号位不变,其余位取反。
- 补码:正数的补码与原码相同,负数的补码是其反码加1。
2. CPU的组成与功能。
- 运算器:主要进行算术运算和逻辑运算,包括算术逻辑单元(ALU)、累加器、状态寄存器、通用寄存器组等。
- 控制器:负责指令的读取、译码和执行,包括程序计数器(PC)、指令寄存器(IR)、指令译码器等。
- CPU的性能指标:主频、字长、缓存(Cache)大小、核心数等。
主频越高,CPU处理速度越快;字长越长,能处理的数据精度越高;缓存越大,CPU访问数据的速度越快;多核心可以并行处理多个任务。
3. 存储系统。
- 层次结构:寄存器 - Cache - 主存 - 辅存。
寄存器速度最快,容量最小;辅存速度最慢,容量最大。
- 主存:- 随机存取存储器(RAM):分为静态随机存取存储器(SRAM)和动态随机存取存储器(DRAM)。
SRAM速度快、成本高、集成度低,常用于Cache;DRAM速度慢、成本低、集成度高,是主存的主要组成部分。
- 只读存储器(ROM):数据在制造时写入,断电后数据不丢失,常用于存储BIOS等固定程序。
- 虚拟存储器:利用程序的局部性原理,将主存和辅存结合起来,为用户提供比实际主存容量大得多的虚拟存储空间。
4. 输入/输出系统。
- 接口:用于连接主机和外部设备,如并行接口、串行接口等。
- 中断:是指CPU在执行程序的过程中,遇到外部设备或内部异常事件时,暂停当前程序的执行,转而去处理该事件的一种机制。
标准答案(希赛提供)1.B 2.D 3.C 4.B.D 5.C6.C7.D8.D9.B 10.B11.A 12.A 13.B 14.D 15.C16.D 17.A 18.D 19.C 20.B21 D 22.A 23.D 24.B 25.A26.C 27.C 28.B 29.C 30.B31.C 32.B 33.B 34.C 35.C36.C 37.D 38.B 39.D 40.C41.C42.A 43.C 44.D 45.A46.D 47.C 48.C 49.D 50.B51.A 52.B 53.B 54.A 55.D56.C 57.D 58.A 59.B60.A61.C62.B63.C64.B65.C66.C 67.B 68.B69.D70.D71.B 72.C 73.D 74.B 75.A试题二网友讨论【答案】1.B程序计数器PC自动加1,指向下一条指令。
【答案】2.D并联的可靠度为1-(1-R)(1-R) 串联的可靠度等于各个部分的乘积。
故系统可靠度为R×(1-(1-R))(1-(1-R)) 。
【答案】3.C输入输出设备的中断是可屏蔽的,而掉电什么都白扯,机器断电即玩完,掉电不可屏蔽。
【答案】4.B.D数学逻辑推导,或维恩图验证,或者代入数值计算,原始A、B相同时为真,不同时为假。
【答案】5.C在分析指令的时候需要将指令(包括操作码和地址码)首先存放到指令寄存器IR中,然后再按操作码进行译码,利用地址码计算相应的物理地址。
【答案】6.C64位和32位通常代表设计时候的数据总线宽度、CPU内寄存器位数、ALU运算位数。
与运算数度没有必然的联系。
【答案】7.D一直没有用Outlook,但是知道可以脱机处理,管理多个邮件帐号。
至于C项,微软那么强大,做这么个小功能还是小菜的。
D不能发送和接受安全邮件这点应该是能够做到的。
猜选D项。
【答案】8.D 9.BMacro是宏的意思,C语言中可是有这个东西的,那么这个病毒自然联想到宏病毒。
2010年上半年软考软件设计师考试试题及答案(精)2010年上半年软考软件设计师考试试题及答案案例分析1当初为了占领市场,淘宝网等C2C网站前仆后继选择了免费策略。
在成功使用免费战略笼络了客户之后,2006年5月,淘宝网尝试性地推出了收费性服务——招财进宝,即“淘宝网将按卖家所出招财进宝价格等条件决定其宝贝在淘宝相关页面或其合作伙伴的相关页面中排名位置,并按照最后的成交情况,来收取服务费”。
然而这一朝着赢利方向的尝试,遭到用户的强烈反抗,不少淘宝用户甚至采取罢市的方法,抗议淘宝网失信当初的免费诺言。
2006年6月,招财进宝被用户公开投票宣判死刑,淘宝网对C2C电子商务网站盈利模式的首次摸索,以失败告终。
案例简介在“招财进宝”出道的时候,很受人关注,多数专业人士认为“招财进宝”思路清晰,方式巧妙,和百度的竞价排名异曲同工;在激烈的C2C 竞争中,淘宝网找到了一条潜在的赢利道路。
但在“招财进宝”的实施过程当中,业绩并不好,最后被撤销。
作为关键字付费点击业务的C2C版本,淘宝网创造新的收入模式,为一部分会员提供增值业务;另一方面,随着商品数量的上升,如何进行有效的商品筛选及排序也是一项难题。
认真阅读以上案例材料,回答以下问题。
1. 简单概述一下淘宝网的经营模式。
2. 试分析淘宝网“招财进宝”失败的原因?3. 从淘宝网“招财进宝”失败的案例中,你得到的启示有哪些?案例分析2材料1伊利集团是全国乳品行业的龙头企业之一。
为了提升企业的管理水平,1999年,伊利集团开始酝酿上ERP。
以伊利集团的财力,上一套国外的管理软件从资金上讲根本没有问题。
任何成熟的管理软件,不论是SAP的ERP软件,还是Oracle的ERP 软件,都是对一种成熟管理模式的总结,是一种标准的共性产品。
在企业信息化的过程中,是个性文化适应抽象的软件系统,还是抽象的软件适应个性化文化?在资源、管理、文化等诸多方面凝聚的现实面前。
与IBM、HP、宝洁等跨国公司的管理品质相比,伊利的管理还处在童年。
软考软件设计师知识点软考(软件设计师考试)作为国内软件行业的重要认证考试之一,对于软件设计师的专业知识和技能有着严格的要求。
本文将系统地介绍软考软件设计师考试的重要知识点,帮助考生有效备考。
一、计算机基础知识1. 计算机组成与结构在软件设计师考试中,了解计算机的组成和结构是必不可少的。
对于计算机硬件、操作系统、数据库等方面的基本原理和架构,需做到心中有数。
2. 数据结构与算法数据结构与算法是软件设计师考试中的重中之重。
要掌握各种基本数据结构的特点和操作方式,熟悉常用算法的设计思想和实现方法,能够灵活运用于实际问题的解决。
3. 编程语言与开发工具软件设计师需要熟悉多种编程语言和开发工具,如Java、C++、Python等,掌握其语法与特性,并了解各类开发工具的使用方法,能够根据实际需求进行选用和配置。
二、软件需求与规格说明1. 需求分析与设计在软件设计师考试中,需了解软件需求分析的基本方法与技巧,掌握需求获取、需求分析和需求规格说明的过程和要求。
同时,要熟练运用建模工具(如UML)进行需求分析与设计。
2. 软件规格说明书软件设计师需要具备编写软件规格说明书的能力。
规格说明书体现了软件的设计思路和实现要求,对于开发团队的沟通和协作具有重要作用。
考生需要了解规格说明书的结构和要素,学会规范编写。
三、软件设计与实现1. 软件架构与设计模式软件的架构设计是软件设计师的核心能力之一。
需要深入了解常见的软件架构模式(如MVC、MVVM等),并能够根据实际需求选择和设计合适的软件架构。
2. 接口设计与开发软件设计师需具备熟练的接口设计和开发能力。
了解面向对象设计思想和设计原则,掌握接口设计的方法和标准,能够设计和实现稳定、高效的接口。
3. 数据库设计与优化数据库设计与优化是软件设计师需要重点关注的领域。
要了解关系数据库的基本原理和常用操作,熟悉数据库设计的规范和方法,能够进行数据库性能优化和调优。
四、软件测试与质量保证1. 软件测试方法与技术软件测试在软件开发生命周期中占据重要地位。
软件设计师基础知识软件设计师是指负责软件系统的设计与开发的专业人员。
他们需要具备扎实的计算机基础知识、软件工程理论知识、编程技术和系统设计能力。
以下是软件设计师基础知识的相关参考内容。
1. 计算机基础知识- 计算机的基本原理:掌握计算机的工作原理、数据存储原理和运算原理等基本概念。
- 操作系统:了解不同操作系统的特点和使用方法,如Windows、Linux等。
- 网络原理:了解网络协议、网络拓扑结构、网络安全等知识,能够进行网络编程和网络配置。
- 数据结构与算法:掌握常见的数据结构和算法,能够进行数据存储与处理。
2. 软件工程理论知识- 软件工程基本概念:了解软件生命周期、需求分析、设计、编码、测试、维护等软件开发流程。
- 面向对象编程:掌握面向对象的思想和相关的编程语言,如Java、C++等。
- 软件测试与质量保证:了解软件测试的方法和工具,掌握软件质量保证的理念,能够进行软件测试和质量评估。
- 配置管理与版本控制:了解配置管理的概念和方法,熟悉版本控制工具的使用,如Git、SVN等。
3. 编程技术- 编程语言:掌握至少一种编程语言,如Java、C++、Python 等,具备良好的编码风格和编程习惯。
- 数据库:熟悉关系数据库的设计和操作,掌握SQL语言以及常用的数据库管理系统,如MySQL、Oracle等。
- 前端开发:了解HTML、CSS、JavaScript等前端开发技术,掌握常见的前端框架和工具。
- 后端开发:了解常见的后端开发框架和技术,如Spring、Django等,能够进行Web应用的开发和部署。
4. 系统设计能力- 软件架构与设计模式:掌握常见的软件架构和设计模式,如MVC、单例模式、观察者模式等,能够进行系统架构设计。
- 需求分析与设计:具备需求分析和系统设计的能力,能够将需求转化为可实现的系统设计方案。
- 性能优化与调试:了解常见的性能优化方法和调试工具,能够排查和解决系统性能问题。
2010年下半年上午软件设计师考试试题-答案与解析一、单项选择题(共75分,每题1分。
每题备选项中,只有1个最符合题意)●第1题,在输入输出控制方法中,采用(1)可以使得设备与主存间的数据块传送无需CPU干预。
A.程序控制输入输出B.中断C.DMAD.总线控制【参考答案】C【答案解析】计算机中主机与外设间进行数据传输的输入输出控制方法有程序控制方式、中断方式、DMA等。
在程序控制方式下,由CPU执行程序控制数据的输入输出过程。
在中断方式下,外设准备好输入数据或接收数据时向CPU发出中断请求信号,若CPU决定响应该请求,则暂停正在执行的任务,转而执行中断服务程序进行数据的输入输出处理,之后再回去执行原来被中断的任务。
在DMA方式下,CPU只需向DMA控制器下达指令,让DMA控制器来处理数据的传送,数据传送完毕再把信息反馈给CPU,这样就很大程度上减轻了CPU的负担,可以大大节省系统资源。
●第2题,若某计算机采用8位整数补码表示数据,则运算(2)将产生溢出。
A.-127+1B.-127-1C.127+1D.127-1【参考答案】C【答案解析】釆用8位补码表示整型数据时,可表示的数据范围为-128〜127,因此进行127+1运算会产生溢出。
●第3题,若内存容量为4GB,字长为32,则(3)。
A.地址总线和数据总线的宽度都为32B.地址总线的宽度为30,数据总线的宽度为32C.地址总线的宽度为30,数据总线的宽度为8D.地址总线的宽度为32,数据总线的宽度为8【参考答案】A【答案解析】内存容量为4GB,即内存单元的地址宽度为32位。
字长为32位即要求数据总线的宽度为32位,因此地址总线和数据总线的宽度都为32。
地址总线的宽度就是处理机寻址范围,若地址总线为n位,则可寻址空间为2的n 次方字节。
所以本题的可寻址空间为:4*1024*1024*1024*位,所以地址总线宽度为32●第4题,设用2KX4位的存储器芯片组成16KX8位的存储器(地址单元为0000H~3FFFH,每个芯片的地址空间连续),则地址单元0B1FH所在芯片的最小地址编号为(4)。
为实现程序指令的顺序执行,CPU (1)中的值将自动加1。
(1) A.指令寄存器(IR) B.程序计数器(PC)C.地址寄存器(AR)D.指令译码器(ID)【答案】B【解析】本题考查CPU中相关寄存器的基础知识。
指令寄存器(IR)用来保存当前正在执行的指令。
当执行一条指令时,先把它从内存取到数据寄存器(DR)中,然后再传送至IR。
为了执行任何给定的指令,必须对操作码进行测试,以便识别所要求的操作。
指令译码器(ID)就是做这项工作的。
指令寄存器中操作码字段的输出就是指令译码器的输入。
操作码一经译码后,即可向操作控制器发出具体操作的特定信号。
地址寄存器(AR)用来保存当前CPU所访问的内存单元的地址。
由于在内存和CPU之间存在着操作速度上的差别,所以必须使用地址寄存器来保持地址信息,直到内存的读/写操作完成为止。
为了保证程序指令能够连续地执行下去,CPU必须具有某些手段来确定下一条指令的地址。
而程序计数器正起到这种作用,所以通常又称为指令计数器。
在程序开始执行前,必须将它的起始地址,即程序的一条指令所在的内存单元地址送入PC,因此程序计数器(PC)的内容即是从内存提取的第一条指令的地址。
当执行指令时,CPU将自动修改PC的内容,即每执行一条指令PC增加一个量,这个量等于指令所含的字节数,以便使其保持的总是将要执行的下一条指令的地址。
由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单的对PC加1。
某计算机系统由下图所示的部件构成,假定每个部件的千小时可靠度都为R,则该系统的千小时可靠度为(2)。
(2)A.R+2R/4 B.R+R2/4 C.R(1-(1-R)2) D.R(1-(1-R)2)2【答案】D【解析】以下关于计算机系统中断概念的叙述中,正确的是(3)。
(3) A.设备提出的中断请求和电源掉电都是可屏蔽中断B.由I/O设备提出的中断请求和电源掉电都是不可屏蔽中断C.由I/O设备提出的中断请求是可屏蔽中断,电源掉电是不可屏蔽中断D.由I/O设备提出的中断请求是不可屏蔽中断,电源掉电是可屏蔽中断【答案】C【解析】本题考查中断基础知识。
2010年下半年下午软件设计师考试真题-案例分析-答案解析试题一某时装邮购提供商拟开发订单处理系统,用于处理客户通过电话、传真、邮件或Web 站点所下订单。
其主要功能如下:(1)增加客户记录。
将新客户信息添加到客户文件,并分配一个客户号以备后续使用。
(2)查询商品信息。
接收客户提交的商品信息请求,从商品文件中查询商品的价格和可订购数量等商品信息,返回给客户。
(3)增加订单记录。
根据客户的订购请求及该客户记录的相关信息,产生订单并添加到订单文件中。
(4)产生配货单。
根据订单记录产生配货单,并将配货单发送给仓库进行备货;备好货后,发送备货就绪通知。
如果现货不足,则需向供应商订货。
(5)准备发货单。
从订单文件中获取订单记录,从客户文件中获取客户记录,并产生发货单。
(6)发货。
当收到仓库发送的备货就绪通知后,根据发货单给客户发货;产生装运单并发送给客户。
(7)创建客户账单。
根据订单文件中的订单记录和客户文件中的客户记录,产生并发送客户账单,同时更新商品文件中的商品数量和订单文件中的订单状态。
(8)产生应收账户。
根据客户记录和订单文件中的订单信息,产生并发送给财务部门应收账户报表。
现采用结构化方法对订单处理系统进行分析与设计,获得如图1-1所示的顶层数据流图和图1-2所示的0层数据流图。
【问题1】使用说明中的词语,给出图1-1中的实体E1〜E3的名称。
【参考答案】1、E1:客户2、E2:财务部门3、E3:仓库【答案解析】顶层DFD —般用来确定系统边界,将待开发系统看作一个加工,因此图中只有唯一的一个处理和一些外部实体,以及这两者之间的输入输出数据流。
题目要求根据描述确定图中的外部实体。
根据题目中的描述,并结合已经在顶层数据流图中给出的数据流进行分析。
从题目的说明中可以看出:客户提交商品信息请求、订购请求等;将配货单发送给仓库、仓库向系统发送备货就绪通知;发送给财务部门应收账户报表。
由此可知该订单系统有客户、仓库和财务部门三个外部实体。
试题一(共15 分)阅读下列说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。
【说明】某大型企业的数据中心为了集中管理、控制用户对数据的访问并支持大量的连接需求,欲构建数据管理中间件,其主要功能如下:(1)数据管理员可通过中间件进行用户管理、操作管理和权限管理。
用户管理维护用户信息,用户信息(用户名、密码)存储在用户表中;操作管理维护数据实体的标准操作及其所属的后端数据库信息,标准操作和后端数据库信息存放在操作表中;权限管理维护权限表,该表存储用户可执行的操作信息。
(2)中间件验证前端应用提供的用户信息。
若验证不通过,返回非法用户信息;若验证通过,中间件将等待前端应用提交操作请求。
(3)前端应用提交操作请求后,中间件先对请求进行格式检查。
如果格式不正确,返回格式错误信息;如果格式正确,则进行权限验证(验证用户是否有权执行请求的操作),若用户无权执行该操作,则返回权限不足信息,否则进行连接管理。
(4)连接管理连接相应的后台数据库并提交操作。
连接管理先检查是否存在空闲的数据库连接,如果不存在,新建连接;如果存在,则重用连接。
(5)后端数据库执行操作并将结果传给中间件,中间件对收到的操作结果进行处理后,将其返回给前端应用。
现采用结构化方法对系统进行分析与设计,获得如图1-1所示的顶层数据流图和图1-2所示的0层数据流图。
【问题1】(3 分)使用说明中的词语,给出图1-1中的实体E1~E3的名称。
【问题2】(3 分)使用说明中的词语,给出图1-2中的数据存储D1~D3的名称。
【问题3】(6 分)给出图1-2中加工P 的名称及其输入、输出流。
除加工P 的输入与输出流外,图1-2还缺失了两条数据流,请给出这两条数据流的起点和终点。
注:名称使用说明中的词汇,起点和终点均使用图1-2中的符号或词汇。
【问题4】(3 分)在绘制数据流图时,需要注意加工的绘制。
请给出三种在绘制加工的输入、输出时可能出现的错误。
软考软件设计师知识点总结软件设计师是对软件开发具有深入理解和丰富经验的专业人员。
为了成功通过软考软件设计师考试,掌握以下知识点是至关重要的:1.软件工程基础:软件生命周期、软件开发过程模型、需求工程、软件项目管理等是软件设计师的基础知识。
了解这些概念和方法可以帮助设计师更好地组织、规划和管理软件开发项目。
2.面向对象分析与设计:掌握面向对象的基本概念、原则和设计模式。
熟悉常用的UML(统一建模语言)可以帮助设计师更好地进行系统分析、需求建模和系统设计。
3.软件架构设计:了解常见的软件架构风格,如分层架构、客户端-服务器架构和微服务架构。
掌握设计原则,如高内聚低耦合、单一职责等,以确保所设计的软件具有良好的结构、可维护性和可扩展性。
4.数据库设计:掌握关系数据库的基本概念、范式理论和数据库设计方法。
熟悉SQL语言和常见的数据库管理系统,如MySQL和Oracle,可以帮助设计师进行数据库设计和优化。
5.软件测试与质量保证:了解软件测试的基本原则、方法和工具。
掌握测试计划、测试用例设计和缺陷管理等方面的知识,以确保软件的质量和稳定性。
6.软件需求工程:学会收集、分析和规范软件需求,确保软件开发符合用户的需求和期望。
熟悉需求建模工具和技术,如用例图、活动图和状态图等。
7.软件安全与风险管理:了解常见的软件安全威胁、攻击技术和防御策略。
了解软件风险评估和管理的方法,以确保设计的软件能够在安全和可靠的环境下运行。
以上仅是软考软件设计师考试中的一些重要知识点总结,掌握这些知识可以帮助考生更好地应对考试,并在实际工作中发展成为优秀的软件设计师。
2010年软件设计师(软考)基础知识详解.doc一.什么是软件? (3)二.软件危机以及产生软件危机的原因? (3)三.有哪些流行的软件工程方法学及其要素? (3)四.什么是软件生存周期?有哪些活动? (3)4.1软件生存周期 (3)4.2 开发活动 (3)4.3 各活动阶段主要文档 (3)4.3.1可行性分析和项目开发计划 (3)4.3.2需求分析中的文档 (4)4.3.3 概要设计阶段文档 (4)4.4.4 详细设计阶段 (4)4.4.5 编码 (4)4.4.5 测试 (4)4.4.6 系统测试阶段 (4)五.有哪些主要生存期模型? (4)5.1 瀑布模型(传统的软件周期模型) (4)5.2 原型模型 (5)5.2.1 快速原型模型 (5)5.2.2 演化模型 (5)5.2.3增量模型(渐增式) (5)5.2.4 原型模型小结 (5)5.3 螺旋模型 (5)5.4 喷泉模型 (6)5.5 迭代软件开发技术 (6)5.6极限编程(XP) (7)六.软件过程基础知识 (7)6.1 软件过程 (7)6.2 评估工具 (7)七.软件工程项目管理基本知识 (8)7.1时间管理 (8)7.1.1 Gantt图 (8)7.1.2 PERT网图与关键路径 (8)7.2成本管理 (9)7.3风险管理 (10)7.3.1 风险的定义 (10)7.3.2 风险的类型 (10)7.3.3 风险管理活动 (10)7.3.3 风险曝光度 (10)八.模块化基本知识 (11)8.1模块特性 (11)8.1.1 可分解性 (11)8.1.2 可组装性 (11)8.1.4 连续性 (11)8.1.5 保护性 (11)8.2 模块与模块的耦合性(7种) (11)8.2.1 内容耦合 (11)8.2.2 公共耦合 (11)8.2.3 外部耦合 (11)8.2.4 控制耦合 (11)8.2.5 标记耦合 (11)8.2.6 数据耦合 (11)8.2.7 非直接耦合(无耦合) (11)8.3 模块的内聚性 (11)8.4 模块的深度、宽度、扇出与扇入 (12)8.5 模块作用域和控制域 (12)8.6 模块化基础知识小结 (12)九.什么是软件开发方法?有哪些主要方法? (12)9.1 结构化方法学 (12)9.1.1数据流图(DFD图) (12)9.1.2 数据字典 (14)9.1.3 结构化语言 (14)9.1.4 实体-关系图(E-R图) (14)9.2 结构化设计 (15)9.2.1 概要设计 (15)9.2.2 详细设计 (17)9.3 Jackson方法 (17)9.4 面向对象分析方法(00A) (17)十.软件工具 (17)十一. 软件开发环境 (18)十二. 软件质量管理基础知识 (18)12.1 软件质量 (18)12.2 软件质量保证 (18)12.3 代码评审技术 (19)十三.成本-效益分析可用哪些指标进行度量? (19)十四.第四代语言(4GL)的主要特征? (19)十五.软件测试 (19)15.1 软件测试经过的步骤 (19)15.2 测试与软件开发各阶段的关系 (19)15.3 白盒测试 (19)15.4 黑盒测试 (20)15.4灰盒测试 (21)15.5 回归测试 (21)15.6 单元测试 (21)15.7集成测试 (21)15.8 确认测试 (21)15.9 系统测试 (21)十六.软件工程标准和软件文档 (22)17.2 软件的可维护性 (22)十八.软件的可靠性 (23)一.什么是软件?1.满足用户功能需求和性能的指令或计算机程序集合;2.处理信息的数据结构;3.描述程序功能以及程序如何操作和使用所要求的文档;以上三部分的组合构成了软件二.软件危机以及产生软件危机的原因?1.软件开发生产率提高的速度,远远跟不上计算机迅速普及的趋势。
软件产品“供不应求”。
2.软件成本在计算机系统总成本中所占的比例逐年上升。
“开发成本高”3.软件开发人员和用户之间的信息交流往往很不充分,用户对“已完成的”的软件系统不满足的现象经常发生。
4.软件产品的质量不容易保证。
5.软件产品常常是不可维护的。
6.软件产品的重用性差,同样的软件多次重复开发。
7.软件通常没有适当的文档资料。
产生软件危机的原因可归结为两个重要的方面:软件生产本身存在的复杂性;软件开发所使用的方法和技术。
三.有哪些流行的软件工程方法学及其要素?1.使用最广泛的软件工程方法学是面向结构化方法学和面向对象的方法学(上世纪70-90年代,流行面向结构化方法学,上世纪90年代到现在,流行面向对象方法学)。
2.要素:方法、工具和过程。
四.什么是软件生存周期?有哪些活动?4.1软件生存周期一个软件从提出开发要求开始到软件废弃不用的整个过程。
4.2 开发活动可行性分析和项目开发计划、需求分析和定义、软件设计(先后细分为:概要设计和详细设计)、编码、测试和运行维护可行性分析和项目开发计划:用户、项目负责人和系统分析师搞清楚系统要解决的问题是什么?以及从技术、经济、时间等方面论证项目开发可行性。
需求分析和定义:用户、项目负责人和系统分析师确定系统必须做什么?但不关心具体怎么做?要确定系统的功能、性能、数据、界面等要求,从而确定系统的逻辑模型,同时制定后期测试计划。
软件设计-概要设计:系统分析师和软件设计师在需求定义的基础上,把各功能需求转换成需要的体系结构,即划分模块、模块的层次、模块之间的调用关系以及各模块的功能,同时设计应用系统的总体数据结构和数据库结构。
软件设计-详细设计:软件设计师和程序员对概要设计阶段得出的各功能模块进行详细描述成精确的、结构化的过程描述,即各个功能模块具体怎么实现,用相应的工具把模块的控制结构表示出来,但还未进行编码。
编码:由程序员详细设计阶段得出的各模块控制结构(图形)转变成计算机能识别的指令代码。
测试:由另一部门(单位)的软件设计师或系统分析师花费最少的人力物力找出程序最多、最大的错误(bug)。
维护:由用户和维护人员进行的软件生存周期中时间最长的阶段。
4.3 各活动阶段主要文档4.3.1可行性分析和项目开发计划●项目开发计划4.3.2需求分析中的文档●需求规格说明书●初步用户使用手册●确认测试的测试计划●修改完善的软件开发计划●系统测试计划文档4.3.3 概要设计阶段文档●概要设计说明书●数据库说明书●用户手册●修订的测试计划(测试的策略、方法、步骤)4.4.4 详细设计阶段●详细设计说明书4.4.5 编码●程序清单4.4.5 测试●完善的测试计划书●软件测试报告4.4.6 系统测试阶段●系统测试报告2005年下半年●应该在(7)阶段制定系统测试计划。
(7)A. 需求分析 B. 概要设计 C. 详细设计 D. 系统测试●(29)详细描述软件的功能、性能和用户界面,以使用户了解如何使用软件。
(29)A.概要设计说明书 B.详细设计说明书 C.用户手册 D.用户需求说明书五.有哪些主要生存期模型?瀑布模型、原型开发模型(快速原型模型、演化模型、增量模型)、螺旋模型、喷泉模型、基于知识的模型和变化模型。
5.1 瀑布模型(传统的软件周期模型)瀑布模型严格遵循软件生命周期各阶段的固定顺序:计划、分析、设计、编程、测试和维护,上一阶段完成后才能进入到下一阶段,整个模型就像一个飞流直下的瀑布,如下图所示。
优点:以文档作为驱动,强迫开发人员采用规范的方法,严格规定了各阶段必须提交的文档;要求每一阶段结束后,都要进行严格的评审。
与它最相适应的开发方法是结构化方法。
缺点:不适应用户需求的改动。
2004年下半年:(9)A.构件化方法 B.结构化方法 C.面向对象方法 D.快速原型法5.2 原型模型5.2.1 快速原型模型快速原型的用途是获知用户的真正需求,一旦需求确定了,原型即被抛弃。
主要用于需求分析阶段。
不追求也不可能要求对需求的严格定义,而是采用了动态定义需求的方法,所以不能定义完善的文档。
特征:简化项目管理、尽快建立初步需求、加强用户参与和决策。
具有广泛技能水平的原型化人员是原型实施的重要保证。
原型化人员应该是具有经验与才干、训练有素的专业人员。
衡量原型化人员能力的重要标准是他是否能够从用户的模糊描述中快速获取需求。
5.2.2 演化模型在快速原型模型中,原型的用途是获知用户的真正需求,一旦需求确定了,原型即被抛弃。
而演化模型应用于整个软件开发过程,是从初始模型逐步演化为最终软件产品的渐进过程。
也就是说,快速原型模型是一种“抛弃式”的原型化方法,而演化模型则是一种“渐进式”的原型化方法。
5.2.3增量模型(渐增式)增量模型主要用于设计阶段,把软件产品划分为一系列的增量构件,分别进行设计、编程、集成和测试。
新的增量构件不得破坏已经开发出来的产品。
其示意图如图4-2所示。
5.2.4 原型模型小结从下面的有关原型化方法的叙述中,选择出正确的叙述:(1)快速原型方法是一种企图克服传统软件周期模型缺点的开发方法。
(2)在用户的数据资源没有得到很好地组织和管理的时候,应该使用原型化方法。
(3)在用户没有明确地肯定其需求的时候,应该使用原型化方法。
(4)在用户不希望把自己的时间花在软件开发过程中的时候,应该使用原型化方法。
(5)使用原型化方法时应该使用第三代编程语言。
(6)原型化加强了开发过程中用户的参与和决策。
(7)原型化方法大致可分为三类:抛弃式、演化式和递增式。
(8)原型化方法大致可分为演化式和递增式。
(9)采用原型化方法时,软件的开发成本较高。
(10)采用原型化方法时,关键的因素是建立原形的速度,而不是原形运行的效率。
5.3 螺旋模型螺旋模型综合了瀑布模型和原型模型中的演化模型的优点,还增加了风险分析。
螺旋线第一圈的开始点可能是一个概念项目。
从第二圈开始,一个新产品开发项目开始了,新产品的演化沿着螺旋线进行若干次迭代,一直转到软件生命期结束。
5.4 喷泉模型喷泉模型主要用于描述面向对象的开发过程。
喷泉一词体现了面向对象开发过程的迭代和无间隙特征。
迭代指的是开发活动常常需要重复多次,在不断的迭代中逐渐完善软件系统,无间歇性指在开发活动之间不存在明显的边界,允许各开发活动交叉、迭代地进行。
5.5 迭代软件开发技术Rational 统一开发流程RUP(Rational Unified Process)是一个通用的软件流程框架,它是一个以架构为中心、用例驱动的迭代化软件开发流程。
RUP 是从几千个软件项目的实践经验中总结出来的,对于实际的项目具有很强的指导意义,是软件开发行业事实上的行业标准。
在RUP 中,我们把软件开发生命周期划分为四个阶段,每个阶段的结束标志就是一个主要的里程碑(如下图所示)。
这四个阶段主要是为了达到以下阶段性的目标里程碑:先启(Inception):确定项目开发的目标和范围精化(Elaboration):确定系统架构和明确需求构建(Construction):实现剩余的系统功能产品化(Transition):完成软件的产品化工作,将系统移交给客户2005年下半年:在开发一个系统时,如果用户对系统的目标是不很清楚,难以定义需求,这时最好使用(6)。