1.软件和硬件相比,具有哪些特性?
(1)软件:由程序、相关数据及其说明文档组成,是计算机系统中与硬件相互依存的另一部分。
(2)特性:
- 软件是一种逻辑实体,具有抽象性。
- 软件没有明显的制造过程。
- 软件在使用过程中,没有磨损、老化的问题。
- 软件对硬件和环境有着不同程度的依赖性。这导致了软件移植的问题。
- 软件的开发至今尚未完全摆脱手工作坊式的开发方式,生产效率低。
2.什么是软件危机?为什么会出现软件危机?
(1)软件危机:是在计算机软件的开发和维护过程中所遇到的一系列严重问题。
(2)出现软件危机的原因:软件本身的特点、对软件开发与维护存在许多错误认识和做法、软件开发与维护的方法不正确。
3.软件开发的根本目标是什么?
实现软件优质高产。
4.什么是软件工程?软件工程的知识体系是什么?
(1)软件工程是将系统的、规范的、可量化的方法应用于软件的开发、运行和维护,即将工程化思想应用于软件。
(2)软件工程的知识体系:SWEBOK指南V3.0把软件工程的知识划分成两类15个核心知识领域。即软件工程实践类知识领域(软件工程所需要的知识,包括软件需求、软件设计、软件构造、软件测试、软件维护、软件配置管理、软件工程管理、软件工程方法、软件质量、软件工程职业实践。)
和软件工程教育要求类知识类(软件工程本科教学中所需要的基础知识,包括工程经济基础、计算基础、数学基础、工程基础)
5.软件工程的金三角是什么?
软件工程的内容是一个金三角,人、管理、技术各占一角。
人是完成软件开发和维护的主体,贯穿整个软件生命周期
技术提供了开发和维护软件在技术上需要的“如何做”方法。
6.软件工程的核心技术有哪些?
核心技术环节如下:
- 系统工程
对软件所处的系统的整体进行分析和建模,构建系统模型。 - 软件需求
目的是确定软件的目标和范围,从用户角度,采用“黑盒”视角定义该软件是什么(What) - 软件设计
目的是建立软件的设计蓝图,从开发人员角度,采用白盒视角确定软应如何开发(How) - 软件构造
程序员依据设计文档为每个模块编写文件。 - 软件测试
目的是发现软件中的缺陷,以提高软件的质量。 - 软件维护
系统软件交付使用以后,为了改正错误或满足新的需要而修改软件的过程。
7.如何控制软件开发的复杂性?
- 抽象:从众多的事物中抽取出共同的、本质的特征,而舍弃其非本特征。
- 分解:把一个复杂的问题分解成若干个简单的问题,然后逐个解决。
- 迭代:返复、循环求解,当无法正确抽象和分解时采用迭代的方法,
以积累经验。