1 .什么是软件危机?
答:计算机软件的开发和维护过程所遇到的一系列问题。
2. 什么是黑盒测试和白盒测试?
答:黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。
白盒测试:已知产品的部工作过程,可以通过测试证明每种部操作是否符合设计规格要求,所有部成分是否以经过检查。
3. 软件开发和写程序有什么不同?
答:软件包含程序,程序是软件的一部分。
软件是程序、数据及其相关文档的完整集合。
程序只是为了实现软件的功能和性能要求而编写的指令序列
4.软件设计的准则是什么?
答:
(1)模块化(Modularity)
(2)信息隐藏(Information Hiding)
(3)高内聚低耦合(High Cohesion, Low Coupling)
(4)抽象与逐步求精(Abstraction & Stepwise Refinement)
(5)接口标准化(Standardized Interfaces)
(6)可扩展性与可维护性(Extensibility & Maintainability)
5.什么是软件的生命周期,包含哪些阶段?
答:是软件产生直到报废的生命周期,周期有八个阶段:
问题定义、可行性研究、需求分析;总体设计、详细设计、编码与单元测试、综合测试;运行维护等阶段。
6.软件测试的步骤有哪些,含义是什么?
答:
(1)单元测试(Unit Testing):针对软件最小单元(如函数、类、模块)进行测试,验证其功能是否符合设计要求。
(2)集成测试(Integration Testing):将多个模块组合后测试,验证模块间交互是否正确。
(3)系统测试(System Testing):将完整系统作为整体测试,验证是否满足需求规格说明书的要求。
(4)验收测试(Acceptance Testing):由用户或客户参与,验证系统是否满足实际使用需求。
(5)回归测试(Regression Testing):在软件修改后,重新测试已验证过的功能,确保变更未引入新缺陷。
7.软件过程模型有哪些,各自特点是什么?
答:
模型 |
核心优势 |
缺点 |
典型场景 |
瀑布模型 |
流程规范、文档完整 |
灵活性差、变更成本高 |
需求稳定的传统项目 |
快速原型模型 |
需求验证快、用户参与度高 |
原型可能被废弃、管理成本高 |
需求模糊的创新项目 |
敏捷模型 |
迭代快、适应变更 |
文档不足、依赖团队协作 |
互联网产品、需求多变场景 |
螺旋模型 |
风险控制强 |
流程复杂、成本高 |
航天、金融等高风险项目 |
8.比较黑盒测试和白盒测试的优缺点?
答:
黑盒测试的优点:适应于阶段测试,从产品功能角度测试,容易入手生成测试数
据。
缺点:某些代码得不到测试,如果规格说明有误,可能无法发现,不易进行充分性测试。
白盒测试的优点:可构成测试数据使特定程序部分得到测试,有一定的充分性度量手段,可生成较多工具支持。
缺点:不易生成测试数据,无法对未实现规格说明的部分进行测试,作 量大通常只用于单元测试有应用局限。
9.可行性研究包括哪几方面的内容?
答:
(1)经济可行性:是否有经济效益,多长时间可以收回成本;
(2)技术可行性:现有技术能否实现本系统,现有技术人员能否胜任,开发系统的资源能否满足;
(3)运行可行性:系统操作在用户内部行得通
(4)法律可行性:新系统开发是否会侵犯他人、集体或国家利益,是否违反国家法律。
10.结构化的需求分析描述工具有哪些?
答:有数据流图(DFD)、数据字典(DD)、判定表、判定树、结构化语言(PDL)、层次方框图、Warnier图、IPO图、控制流图(CFD)、控制说明(CSPEC)、状态转换图(STD)和实体—关系图(E—R)等。
11.一般面向对象分析建模的工具(图形)有哪些?
答:用例图、类/对象图、对象关系图、实体—关系图(E—R)、事件轨迹图(时序图)和状态转换图(STD)等。
12.在面向对象分析时类和对象的静态关系主要有哪几种?
答:类和对象的静态关系主要有关联、聚集、泛化、依赖等四种关系。
13.为什么说软件的维护是不可避免的?
答:因为软件的开发过程中,一般很难检测到所有的错误,其次软件在应用过程中需要随用户新的要求或运行环境的变化而进行软件的修改或完成功能的增删等,为了提高软件的应用水平和使用寿命,软件的维护是不可避免的。
14.什么是软件再工程?软件再工程的主要活动有哪些?
答:软件再工程是运用逆向工程、重构等技术,在充分理解原有软件的基础上,进行分解、综合,并重新构建软件,用以提高软件的可理解性、可维护性、可复用性或演化性。
主要活动:信息库分析、文档重构、逆向工程、代码重构、数据重构、正向工程。
15.什么是软件生命周期?
答:一个软件从定义,开发,使用和维护,直到最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长时期称为生命周期
16.软件生命周期有哪几个阶段和步骤?
答:计算机软件的开发经过三个阶段:定义、开发、维护
八个步骤:问题定义、可行性研究、需求分析;总体设计、详细设计、编码与单元测试、综合测试;运行维护。
17.软件与硬件的区别是什么?
答:软件是一种逻辑部件,而不是具体的物理部件。软件在开发、生产、使用、维护等方面与硬 件相比有明显差异。 软件是开发,硬件是制造。软件是自定的,硬件是组装的。软件不会磨损,硬件存在机械磨损问题
18. 软件设计的原则有哪些?
答:模块化,抽象化与逐步求精,信息隐藏与局部化,模块独立。
19.软件测试的目的是什么?
答:
(1)软件测试是为了发现错误而执行程序的过程;
(2)测试是程序的执行过程,目的在于发现错误;
(3)软件测试中需要数据,即为测试而精心设计的测试用例,利用测试用例去运行程序,帮助发现程序错误;
(4)一个好的测试用例在于能发现至今未发现的错误;
(5)一个成功的测试是发现了至今未发现的错误的测试;
(6)软件测试绝对不是要证明程序的正确性, 也证明不了程序的正确性;
20.软件维护的活动包括哪几种?
答:软件维护的活动包括四种:改正性维护 、适应性维护、完善性维护和预防性维护。
21.UML统一建模语言有哪几种图形?
答:用例图、类图、对象图、构件(组件)图、部署(配置)图、状态图、活动图、顺序(时序)图、合作(协作)图等九种图。