一、软件工程概述
1、选择
软件有无可行性和不可控性
软件工程是一门工程性学科
软件生存周期常见模型:螺旋模型、增量模型、瀑布模型、原型模型、融合模型、快速应用开发模型、敏捷模型
软件生存周期中时间最长的阶段是维护阶段
瀑布模型是一种软件生存周期模型
采用结构化生存周期方法,由于其特征面而一般称其为瀑布模型
在结构性的瀑布模型中,需求分析阶段定义的标准将成为软件测试中系统测试阶段的目标
2、简答题
什么是软件危机?软件危机表现在哪些方面?
答:具体来说,软件危机出现的原因可以概括如下
- 忽视软件开发前期的需求分析。
- 开发过程缺乏统一的、规范化的方法论指导。
- 文档资料不齐全或不准确。
- 忽视与用户之间、开发组成员之间的交流
- 忽视测试的重要性。
- 不重视维护或由于上述原因造成维护工作的困难
- 从事软件开发的专业人员对这个产业的认识不充分,缺乏经验
- 没有完善的质量保证体系
具体地说,软件危机的表现形式可以概括如下。
- 软件开发费用和进度失控。
- 软件系统实现的功能与实际需求不符
- 软件的可靠性差
- 软件难以维护
- 软件通常没有适当的文档资料
- 软件成本在计算机系统总成本中所占的比例居高不下,且逐年上升
- 软件生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势
(4) 什么是软件生存周期?它分为几个时期?几个阶段?
答:软件生存周期是指从设计该产品的构想开始,到软件需求的确定、软件设计、软件实现、产品测试与验收、投入使用,以及产品版本的不断更新,到该产品最终被市场淘汰的全过程。软件生存周期由软件定义、软件开发和运行维护三个时期组成,划分为问题定义、可行性研究、需求分析、概要设计、详细设计、软件实现和单元测试、综合测试和运行维护八个阶段。
(5) 什么是软件生存周期模型?有哪些主要软件过程模型?
答:软件生存期模型也称为软件过程模型,是从软件项目需求定义直至软件运行维护为止,跨越整个生命周期的系统开发、运行和维护所实施的全部过程、活动和任务的结构框架。典型的包括瀑布模型、快速原型模型、增量模型、螺旋模型、统一过程、敏捷过程等。
二、软件问题定义及可行性分析
1、填空
可行性研究的目的是:用最小的代价在尽可能短时间内确定问题是否能够解决
经济可行性研究范围包括:投资效益分析、公司经营长期策略、开发所需的成本和资源、潜在的市场前景。
可行性分析的目的是研究这个软件项目是否值得去开发
可行性分析实质上是进一步简化,压缩了需求分析和设计过程
成本-效益分析首先要估算将要开发系统的开发成本,然后与可能取得的效益进行比较和权衡
成本效益分析的目的是从经济角度评价一个软件项目是否可行
可行性分析具体步骤最后一步是编写可行性报告
可行性研究主要集中在以下几个方面技术可行性、经济可行性、社会因素方面可行性和操作可行性。
可行性分析成本包括直接成本和间接成本,收益包括有形收益和无形收益。
系统经济效益等于因使用新系统而增加的收入加上使用新系统可以节省的运行费用
系统的经济效益可以用货币时间价值、投资回收期和纯收入等指标进行度量
纯收入就是指软件生命周期内,系统累计经济效益与投资之差
投资回收期就是积累的经济效益等于最初投资所需要的时间
制订软件计划过程,需确定软件的工作范围、估算开发所需要源、估算软件成本费用和进度安排
软件的作用范围包括软件系统的功能、软件系统的性能、接口、可靠性
数据流图也被称为“数据流图表”或 泡泡图
数据流图的一些辅助图,其中符号* 表示相邻的一对数据流同时出现,+表示相邻的数据流A或B或A和B 同时出现,圈圈里面+表示两个数据流只取其一
绘制数据流图时,每个加工至少有一个输入数据流和一个输出数据流
绘制数据流图时个数据流子图必须与它上一层的一个加工对应。数据流图中的每个元素必须有名字
数据字典有5类条目:数据流、数据项、数据存储、基本加工及数据源点与数据终点。
2、选择
可行性是系统方案实现的可能性
可行性研究从经济、技术、操作、法律、社会效益等方面进行
开发软件时对提高软件开发人员工作效率至关重要的是程序人员的数量
软件可行性分析中,从软件的功能角度考虑可行性是技术可行性,他要解决技术风险问题
可行性研究要进行的需求分析和设计应是简化压缩的
软件系统的可行性研究包括经济可行性、技术可行性、社会可行性
研究硬件资源的有效性是进行操作可行性研究的一个方面
数据流图,被计算机处理的成分是控制流、数据流、节点
结构化分析方法使用的描述工具数据字典定义了数据流图中每一个图形元素
分层DFD是一种描述方式,他顶层图描述系统的输入与输出
数据存储和数据流都是数据,仅仅所处的状态不同
数据字典中,一般不包括下列选项中的源点与终点条目
数据字段是对数据定义信息的集合,他所定义的对象都包含与数据流图
3、简答题
可行性研究主要研究哪些问题?
可行性研究的任务是决定软件项目是做还是不做,对技术可行性、经济可行性、社会可行性、开发方案的可行性以及运行可行性等方面进行分析
三、需求分析
1、选择
进行需求分析可以用多种工具,但PAD是不适用的
E-R图中,包含实体、属性、关系等基本成分
软件规格说明书内容不应该包括对算法的详细描述
结构化需求分析方法的基本思想是自顶向下逐步分解
软件中的问题发送在需求分析阶段、修复成本最低
2、简答
需求分析的步骤
需求分析需要 4 个步骤,分别获取、建模、描述和验证。获取需求实质上是一个需求收集的过程,要做充分的调查研究。通常是从分析当前系统包含的数据开始,分析当前系统在处理信息时的不足,用户希望改进的主要问题及迫切性等。收集需求的常用方法有问卷调查、访谈、实地操作、建立原型等,收集的需求主要包括功能需求、性能需求、可靠性需求、可用性、人机界面需求.约束、出错处理等内容。需求分析的核心任务是建立分析模型,即把来自用户的需求信息通过分析、提取、归纳、抽象建立起描述目标系统的模型。传统的面向过程的软件工程方法学,主要采用数据流图建立目标系统的逻辑模型。需求描述是指编制需求分析阶段各类文档。一般情况下,对于大型、复杂软件系统在需求分析阶段会产生 3 个文档:系统定义文档(用于描述用户需求的报告)、系统需求规格说明书、软件需求规格说明书,分别从不同的角度和层次描述项目开发的需求。对于简单的小规模软件系统,只需编制 SRS 即可。因为需求分析的成果是后续开发的重要依据和基础,为了提高软件产品的最终质量,降低开发成本,必须对需求分析结果从完整性、一致性、有效性和现实性 4 个方面进行亚格的正确性验证,并且要对需求的变更实施可回溯的管理,避免无法追踪错误来源导致的混乱。
四、总体设计
选择
面向数据流的软件设计方法中,一般将信息流分为变换流和事务流
采用模块化技术的好处是容易测试和调试、有助于提高软件的可靠性、提高可维护性、有助于软件开发工厂的组织管理(全选)
属于软件设计基本原理的是模块规模应该适中、信息隐藏与局部化
面向数据流的设计方法是把信息流映射成软件结构
软件总体结构设计,顶层扇出的上限是5-9个
五、详细设计
1、填空
结构化程序设计方法的药店是使用顺序、选择和循环结构
为了产生结构化的流程图,应由三种基本控制结构顺序组合或完整嵌套而成
PAD是一种由做向右展开的二维树形结构,图中竖线为程序的层次线
详细设计阶段,描述程序逻辑结构的工具是程序流程图
详细描述处理过程常用三种工具:图形、语言和表格
PDL具有严格的关键字外层语法,用于定义控制结构、数据结构、模块接口设计
除了对模块内的算法进行设计,还应对模块内的数据结构进行设计
过程设计中最典型的方法是结构化设计、自顶向下、逐步求精
结构化程序设计方法简称SP、问题分析图
NS图只能表达结构化程序逻辑
系统的详细设计阶段产生的文档是详细设计说明书
2、选择
用来增加程序设计的效率和质量的方法是结构化程序设计
PAD的控制执行流程为自上而下,从左到右
软件详细设计主要采用的方法是结构化设计
PDL是下列语言中的伪码式
面向数据流设计方法把数据流映射成软件结构
详细设计与概要设计衔接的图形工具是SC
详细设计的任务是确定每个模块的算法
详细设计过程中不采用的描述工具是DFD
PDL是软件开发过程中用于详细设计
软件复杂性度量的参数包括规模
详细设计阶段经常采用的工具有PAD
JackSon图上下层之间的关系是组成关系
JackSon方法是根据数据结构来导出程序结构
六、软件编码和测试
1、选择
为提高测试效率,应该选择发现错误的可能性大的数据作为测试数据
软件测试目的是发现软件的错误
单元测试一般为白盒为主,测试依据是模块功能规格说明
软件的集成测试工作最好由不属于该软件开发组的软件设计人员承担
a测试需要用户代表参加
软件测试用例主要由输入数据和预期输出结果组成
黑盒测试中,着重检查输入条件组合的方法是因果图法
黑盒测试从用户观点的测试,白盒是从开发人员的观点测试
白盒测试法又称为逻辑覆盖法,主要用于单元测试
边界值分析测试不属于白盒测试技术
白盒测试法是根据程序的内部逻辑来设计测试用例的方法
软件调试的目的是找出错误所在并更正之
2、简答题
软件测试应该划分为几个阶段,各个阶段重点测试内容是什么?
软件测试可分为单元测试,集成测试,系统测试,验收测试四个阶段
单元测试又称模块测试、逻辑测试或结构测试,是针对软件设计的最小单位一一程序模块或功能模块,进行正确性检验的测试工作。其目的在于检验每个程序单元能够正确实现详细设计说明中的模块功能、性能、接口和设计约束等要求,发现冬个模块内部可能存在的冬种错误。
集成测试又称组装测试、综合测试或联合测试。通常在单元测试的基础上将所有的程序模块进行有序的、递增的测试。集成测试是检验程序单元或部件的接口关系,逐步集成为符合概要设计要求的程序部件或整人系统。
系统测试为验证和确认系统是否达到其原始目标,而对集成的硬件和软件系统进行的测试。系统测试是在真实或模拟系统运行的环境下,检查完整的程序系统能否和系统(包括计算机硬件、外设、网络和系统软件、支持平台等)正确配置、连接,并满足用户需求。系统测试的主要依据是《系统需求规格说明书》文档。
验收测试又称交付测试,是软件在完成了单元测试、集成测试、系统测试之后,产品发布之前进行的软件测试活动。验收测试又分为 Alpha 测试 ( a 测试)和 Beta 测试( B 测试),Alpha 测试是由一个用户在开发环境下进行的测试,或者是公司内部的用户在模拟实际操作环境下进行的受控测试,Beta 测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试
七、面向对象技术与UML
1、选择
参与者说话错误的是参与者是用例图的重要组成部分,因此他是目标系统的组成部分。(实际上,参与者不是目标系统的组成部分,而是与目标系统进行交互的外部实体。参与者可以是人、组织、设备或其他系统等,它们与目标系统进行交互,以满足其需求或达成其目标)
状态图中不能表示的概念有类
计算机中computer和cpu、ram等的关系是聚集关系Aggregation
类图是表达系统类以及其相互联系的图示,他是面向对象设计的核心
继承反映了类间的一种层次关系,而组合反映了一种整体与部分的关系
不属于UML结构物件是交互
面向对象的特点:抽象性、封装线。继承性、多态性
实现关系在UML图中是虚线的然后白色三角形指向
配置图是表示构成分布式系统的节点集和节点之间的联系的图示
用例与类的对比中类描述的是系统内部构成,用例也可以描述系统内部构成是错误的(用例描述系统动态的行为视图)
描述对象之间的静态联系的是实例链接
2、应用题
飞机由机翼、机身、驾驶舱构成,是组合关系,关系图如下
下面类图中,接口Service 中定义了三个方法。其中 ClientA 只使用methodA 方法ClientB 只使用methodB 方法,ClientC 只使用 methodC 方法。根据接口分离原则重新设计该类图
简述聚合(Aggregation)和组合(Composition)的关系,并举例说明。
雁阵由大雁构成,属于聚合关系
1只大雁拥有2只翅膀,属于组合关系
八、面向对象分析
选择
封装是把对象的属性和操作结合在一起,组成一个独立的对象
UML中4中关系,分别是依赖、泛化、关联和实现
用例模型图必须与用户反复交流确认
不是用例之间的关系是依赖
电子商务网站而言,不适合作为用例的选项是购物车
用例建模必须与用户反复交流并加以确认
用例进行细化说明应使用活动图
UML的系统分析进一步要确立的3个系统模型是对象静态模型、对象动态模型和系统功能模型。
类和对象都有属性,类描述了属性的类型,对象的属性必有具体值
顺序图和协作图主要用于对用例图中控制流的建模,用来描述用例图的行为
顺序图的建模元素有对象、消息、链等
顺序图描述一组对象之间消息的传递顺序
在顺序图中,返回消息的符号是虚线箭头
状态图可以表现一个对象在生存期内的行为,所经历的状态序列,引起状态转移的事件
状态图描述的一个对象在不同事件的驱动下发送的状态转移
九、面向对象设计
选择
系统体系结构是用来描述各部分的结构,接口以及他们用于通信的机制
UML可以描述硬件之间的互联关系,也能描述硬件单元上的软件系统分布
软件系统体系结构是对系统用例类对象接口以及相互间交互和协作进行描述
硬件系统体系结构是对系统构建、结点和配置进行描述
构件是软件系统体系结构中定义的概念和功能在物理体系中的实现
部署图由结点和结点之间的联系组成,描述了处理器、设备和软件构建运行时的体系结构
部署图基本元素有结点。构件。对象。连接。依赖等
包是用于把元素组织成组的通用机制
UML系统分析阶段产生的包图描述了系统的系统体系层次结构