Q1.软件开发的四个基本策略
-
A1:
- 软件复用
- 分而治之
- 逐步演进
- 优化折中
Q2.如何提高软件速度
-
A2:
- 电脑安装软件一般不要装C盘
- 关闭其他运行程序
- 经常清理内存和杀毒
Q3.软件质量模型
-
A3:
- 功能性
- 可靠性
- 易用性
- 效率/性能
- 可维护性
- 可移植性
- ISO9126质量模型
Q4.为什么软件在其生命周期中很少由原编写人员进行维护?不是原编写人员更加了解自己的代码吗?
-
A4:
- 为了提高编码质量,避免不必要的程序错误
- 为了增强程序代码的可读性,可重用性和可移植性
Q5.软件单元测试和软件测试有什么区别和联系
-
A5:
- 区别:软件单元测试:是指对软件中的最小可测试单元进行检查和验证。软件测试:是指使用人工或手动的方法来运行软件的过程
- 联系:软件测试包括了软件单元测试。
Q6.白盒测试和黑盒测试与静态测试和动态测试之间是不是有着对应的关系
-
A6:
- 静态测试:不运行被测程序,仅通过检查和阅读等手段来发现程序中的错误。
- 动态测试:实际运行被测程序,通过检查运行的结果来发现程序中的错误。
- 动态测试可能是黑盒测试,也可能是白盒测试。
Q7.软件开发活动中,最核心的是哪一个
-
A7:
- 软件开发活动包括了问题定义,需求开发,软件设计,软件构造,软件测试。其中,需求开发是最重要的。
Q8.在软件测试中,单元测试,子系统测试和集成测试的区别是什么
-
A8:
- 单元测试:指对软件中的最小可测试单元进行检查和验证。
- 子系统测试:将已经集成好的软件系统,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际使用环境下,对计算机系统进行一系列的组装测试和确认测试的工作。
- 集成测试:也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试。
Q9.在软件过程模型中,迭代式开发中最重要的阶段是什么
-
A9:
- 迭代式开发包括增量模型和迭代模型。对于不同的项目和团队来说,最重要的阶段也不相同,每个阶段都很重要。
Q10.传统的软件开发模式(如瀑布模式)与敏捷开发最根本的区别是什么
-
A10:
- 瀑布模型:1、强调文档;2、没有迭代与反馈;3、管理人员喜欢瀑布模型的原因是把文档理解为开发的速度,可以方便地界定不同阶段的里程碑。
- 敏捷开发:1.敏捷就是“快”;2.客户参与。以人为本;3.强调软件开发的产品是软件,而不是文档;4.设计周密是为了最终软件的质量,但不表明设计比实现更重要;5.迭代;6.小版本。
Q11.COCOMO模型适用于项目开发的哪一阶段,或者是适用于哪一种项目开发
-
A11:
- 更适用于对现代软件开发项目进行估算。
Q12.用户故事和用例的区别
-
A12:
- 首先,用户故事是明确用户群需求驱动的,为了达成愿景的一系列任务集合。有明确的心里预期顺序和流程,描述了用户对于系统的整体认知和期待。
- 用例是规范化撰写的,在指定场景下,指定角色对系统的单一规范行为,为了达成自身明确目标的一系列交互集合。有明确的操作流程,描述了整体的交互,以及其中各单元的任务范围分解。
- 都承认要考虑用户观点,面向用户描述
- 都承认要考虑流程化,关心上下文
- 都是为了描述整体认知,指导研发流程
- 用例是基于系统功能范围分解,用户故事是基于用户目标需求的挖掘
- 用例代表了一个系统的单一规范行为,故事是弹性的
- 用例是一个行为上相关的步骤序列
- 相同
- 不同
Q13.面向对象技术的基本特征
-
A13:
- 抽象性
- 封装性
- 继承性
- 多态性
- 面向对象技术(Object-Oriented Technology)强调在软件开发过程中面向客观世界或问题域中的事物,采用人类在认识客观世界的过程中普遍运用的思维方法,直观、自然地描述客观世界中的有关事物
- 基本特征主要有