1.1 软件开发的本质
软件开发的本质问题体现在软件本身所固有的问题中,软件是一种创造性开发性行为的产品。而不是制造业重复性行为的结果。
软件开发的不便事实主要包括:
- 复杂性
- 一致性
- 可变性
- 不可见性
软件开发发生意外事件主要因素:
-
迭代开增量开发的定义,举出软件开发职工迭代增量过程的五个例子。
迭代是在实现软件的每一功能时反复求精的过程,是提升软件质量的过程,是从模糊到清晰的过程。在连续的迭代中增加细节,必要时引入变更和改进(使功能越来越好) 增量是强调软件在发布不同的版本时,每次都发布一点点,使软件功能数量渐增地发布的过程。增量版本保持了用户的满意度,为尚在开发中的模块提供重要的反馈。(使产品越来越好) 例子: 1. 螺旋模型 2. Rational 统一过程(RUP) 3. 模型驱动的体系结构(MDA) 4. 敏捷开发过程 5. 面向方面的软件开发
-
什么是 UML ?为了采用 UML,过程必须支持什么?UML 的缺陷是什么?说出 UML 中使用的三组模型并描述出它们的工作。
UML 指 Unified Modeling Language,即统一建模语言,是一种独立于开发过程、实现技术,遵循面向对象思想的建模语言。 采用 UML 的过程必须支持一种面向对象的方法来进行软件生产。 缺点是只能使用面向对象的方法来生产软件。 三组模型指: 状态模型:描述静态数据结构 行为模型:描述对象协作 状态改变模型:描述随时间的推移,系统所允许的状态。
-
根据您在软件产品方面的经验,您如何解释软件过程的本质是由固有的软件复杂性、一致性、可变性和不可见性所决定的这种观点?你如何解释这四个因素?软件工程如何与传统工程不同,如土木工程和机械工程?
一些重要的软件特性不易受到人为因素的影响,这些特性在所有的软件项目中都保持不变,并需要在项目中得到承认,它们定义了软件生产的本质问题。 复杂性:软件本身就是复杂的,复杂性是软件规模的函数,以及组成软件产品的构建之间相互依赖关系的函数。 一致性:应用软件必须与其所基于的特定硬件/软件平台相符合,也必须与现有的信息系统相符合,并集成在一起。 可变性:因为业务过程和需求是不断变化的,所以在建立应用软件时必须能容纳变化。 不可见性:即使应用软件提供了可见的输出,但是负责输出的代码通常隐藏在不可见的程序语句、二进制代码库以及周边的系统软件中。 软件是开发出来的,而不是成批制造出来的。虽然软件工程的发展为开发实践引入了更多的确定性,但并不能保证软件项目的成功。与软件工程相比,产品以数学般的精确来设计,然后利用机械和生产线来成批制造。