1. 软件危机的表现形式
- 对软件开发成本和进度估计不准确
- 已完成的软件不符合用户需求
- 软件产品质量差,可靠性得不到保证
- 软件产品可维护性差
- 软件成本在计算机总成本中的比例逐渐变大
- 软件开发生产率提高速度比不上计算机应用速度
2. 产生软件危机的原因
- (1)软件是计算机系统的逻辑部件
- (2)软件开发的管理困难
- (3)软件开发费用不断增加
- (4)软件开发技术落后
- (5)生产方式落后
- (6)开发工具落后
3. 软件生命周期分为哪三个时期?每一时期所完成的基本任务是什么?
答:软件定义、软件开发、运行维护
定义时期的任务:问题定义、可行性研究、需求分析
开发时期的任务:软件设计(总体设计、详细设计);编码与单元测试;综合测试
维护时期的任务:维护,使软件持久地满足用户的需要。
4. 模型以及特点
瀑布模型(生存周期模型):最经典,需求基本不变,线性的顺序阶段模型
快速原型模型:快速获取用户需求
增量模型:灵活,允许软件变化
螺旋模型:在原型模型和增量模型基础上增加风险分析,用于企业开发
面向对象:喷泉模型:以生存周期为主线,具有迭代性和无间隙性
基于构件的模型:提高软件重用性和可靠性
统一过程模型(RUP):基于UML的面向对象过程模型
基于形式化的开发模型:确保严格、无错
5. 软件模块设计准则:
- (1)降低耦合,提高内聚
- (2)模块深度、宽度、扇出扇入应适当
- (3)模块作用范围在控制范围内
- (4)接口设计要简单
- (5)设计功能可能预测并能得到验证的模块
- (6)划分模块规模,保持独立性。
6. 详细设计的目的和任务
目的:为软件结构图中每一个模块确定采用的算法和块内数据结构,用某种选定的详细设计工具更清晰的描述,从而在编码阶段可以把这些描述直接翻译成某种程序设计语言书写的源程序。任务:设计出程序的蓝图,以后程序员根据这个蓝图写出实际的代码。
7. 什么是结构化程序设计?结构化程序设计采用几种控制结构?
答:结构程序设计:是一种设计程序的技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。顺序,选择,循环。
8. 程序设计语言的特点?
1、名字说明 2、类型说明 3、初始化 4、程序对象的局部性5、程序模块 6、循环控制结构 7、分支控制结构 8、异常处理9、独立编译
9.软件测试的基本任务是什么?测试与调试的区别是什么?
答:任务是在软件投入生产性运行之前,尽可能多地发现软件中的错误。
与测试的区别:测试是为了发现软件中的错误,而调试是诊断并改正错误。
10.可行性研究的步骤?
(1)复查系统规模和目标。(2)研究目前正在使用的系统。(3)导出新系统的高层逻辑模型。(4)重新定义问题。(5)导出和评价供选择的解法。(6)推荐行动方针。(7)草拟开发计划。(8)书写文档提交审查
11. 从哪些方面验证软件需求的正确性?
(1)一致性,即所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾。
(2)完整性,需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能。
(3)现实性,指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的。
(4)有效性,必须证明需求是正确有效的,确实能解决用户面对的问题。
12. 对象的特点?
(1)以数据为中心。
(2)对象是主动的。
(3)实现了数据封装。
(4)本质上具有并行性。
(5)模块独立性好。
13. 用面向对象方法开发软件时,通常需要建立哪三种形式的模型?
(1)描述系统数据结构的对象模型。
(2)描述系统控制结构的动态模型。
(3)描述系统功能的功能模型。
14. 什么是模块的作用域?什么是模块的控制域?
模块的作用域定义为受该模块内一个判定影响的所有模块的集合。模块的控制域是这个模块本身以及所有直接或间接从属于它的模块的集合。
15.简述两种不同集成测试策略的比较?
答:自顶向下测试方法主要优点是不需要测试驱动程序,能够在测试阶段的早期实现并验证系统的主要功能,而且能在早期发现上层模块的接口错误。自顶向下测试方法的主要缺点是需要存根程序,可能遇到与此相联系的测试困难,低层关键模块中的错误发现较晚,而且用这种方法在早期不能充分展开人力。自底向上测试言法的优缺点与自顶向下测试方法的优缺点刚好相反。
16. 什么是类?类与对象间是什么关系?
答:类是对具有相同数据和相同操作的一组相似对象的定义。类是对具有相同属性和行为的一个或多个对象的描述,而对象是某个特定类所描述的一个具体对象。
17. 面向对象方法特征有哪些?
(1)客观世界是由各种对象组成的。(2)所有对象都划分成各种对象类,每个对象类都定义了一组数据和一组方法。
(3)按照子类与父类的关系,把若干个对象类组成一个层次结构的系统。
(4)对象彼此之间仅能通过传递消息互相联系。
18. 可行性研究的目的?应该从哪些方面研究目标系统的可行性?
答:用最小的代价在尽可能短的时间内确定问题是否能够解决。
(1)技术可行性(2)经济可行性(3)操作可行性(4)法律可行性
19. 什么是软件工程?构成软件工程的要素是什么?
软件工程:是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
要素是:方法、工具、过程。
20.对象有哪几种定义?
(1)对象是具有相同状态的一组操作的集合。
(2)对象是对属性值和操作的封装。
(3)对象:=<ID,MS,DS,MI>
- ID:是对象的标识或名字
- MS是对象中的操作集合
- DS:是对象的数据结构
- MI :是对象受理的消息名集合
21. 类—&—对象间的关系可以概括为哪三种?
- 归纳关系:它反映了一个类与若干个互不相容的子类之间的分类关系。
- 组合关系:它反映了对象之间的构成关系。
- 关联关系:反映对象之间相互依赖、相互作用的关系。
22. 简述渐增模型的特点?
答:(1)在整个开发过程中需求都可能有变化。(2)对应用领域不熟悉。(3)高风险项目(4)用户完全参与到整个开发过程中。(5)使用面向对象语言或第四代语言。
23. 总体设计的过程如何?
答:(1)设想供选择的方案。(2)选取合理的方案。(3)推荐最佳方案。(4)功能分解。(5)设计软件结构。(6)数据库设计。(7)制定测试计划(8)书写文档(9)审查和复审
24. 面向对象方法的主要优点有哪些?
(1)与人类习惯的思维方法一致。(2)稳定性好。(3)可重用性好。(4)可维护性好。
25. 什么是白盒测试?白盒测试主要采用的技术有哪些?
白盒测试是测试者了解被测程序的内部结构和处理过程,对程序的所有逻辑路径进行测试,在不同点检查程序状态,确定实际状态与预期状态是否一致。
白盒测试主要采用的技术有:路径测试技术和事务处理流程技术,对包含有大量逻辑判断或条件组合的程序采用基于逻辑的测试技术。
26. 什么是黑盒测试?黑盒测试主要采用的技术有哪些?
黑盒测试也称为功能测试,它着眼于程序的外部特征,而不考虑程序的内部逻辑结构。测试者把被测程序看成一个黑盒,不用关心程序的内部结构。黑盒测试是在程序接口处进行测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。
黑盒测试主要采用的技术有:等价分类法、边界值分析法、错误推测法和因果图等技术。
27. 路径测试技术中几种主要覆盖的含义?举例说明?
语句覆盖:至少执行程序中所有语句一次。
判定覆盖:使被测程序中的每一个分支至少执行一次。故也称为分支覆盖。
条件覆盖:执行所有可能的穿过程序的控制路流程。
条件组合测试:设计足够的测试用例,使每个判定中的所有可能条件取值组合至少执行一次。