需求工程的基本原理 软件工程的本质 什么是需求工程 需求工程在生命周期中的作用 有效性的问题 问题领域的类型
需求工程的基本原理 软件工程的本质 什么是需求工程 需求工程在生命周期中的作用 有效性的问题 问题领域的类型
软件开发的本质 ◆软件要解决的问题具有: 复杂性 不一致性 软件工程固有的困难 ■可变性 不可见性 软件:是作为一种创造性活动开发出来的产品 是由工匠(而不是艺术家)创作的工艺品或艺术品 存在各种各样的不确定因素 软件不是重复性制造活动的产物
软件开发的本质 软件要解决的问题具有: ◼ 复杂性 ◼ 不一致性 ◼ 可变性 ◼ 不可见性 软件工程固有的困难 软件:是作为一种创造性活动开发出来的产品 是由工匠(而不是艺术家)创作的工艺品或艺术品 软件不是重复性制造活动的产物 存在各种各样的不确定因素
软件开发的不变量 ◆软件是开发出来的,不是制造出来的(充满了各种不确 定性) 软件工程的进展为开发实践带来了很多确定的因素,但 然不象传统工程那样成功,软件项目的成功仍然无法保 证 算法、代码库、可复用类、软件构件:模块重用ˉ 上的 解不 商用成品软件:从零开始变成客户化软件 决同 ■各种概念结构:支持从零开始的软件开发 方层 案次 但是任何组织不可能找到一个软件包使它的核心业务活 动可以自动生成
软件开发的不变量 软件是开发出来的,不是制造出来的(充满了各种不确 定性) 软件工程的进展为开发实践带来了很多确定的因素,但 然不象传统工程那样成功,软件项目的成功仍然无法保 证。 ◼ 算法、代码库、可复用类、软件构件:模块重用 ◼ 商用成品软件:从零开始变成客户化软件 ◼ 各种概念结构:支持从零开始的软件开发 但是任何组织不可能找到一个软件包使它的核心业务活 动可以自动生成 三 个 不 同 层 次 上 的 解 决 方 案
项目成败的因素:投入者 软件系统大部分是社会系统,是由人(开发者)为人 (客户)开发的,软件项目的成功由社会因素确定 ◆客户 ◆开发人员: 客户的需要被误解或没有 被完全捕捉 不能胜任本项任务 客户需求变化得过于频繁 开发者的技能和知识 ■客户没有准备为项目提供 非常关键 足够的资源 客户不想与开发者合作 杰出的设计来自杰出 客户具有不现实的期望 的设计者 系统不再对客户有利
项目成败的因素:投入者 客户: ◼ 客户的需要被误解或没有 被完全捕捉 ◼ 客户需求变化得过于频繁 ◼ 客户没有准备为项目提供 足够的资源 ◼ 客户不想与开发者合作 ◼ 客户具有不现实的期望 ◼ 系统不再对客户有利 开发人员: ◼ 不能胜任本项任务 ◼ 开发者的技能和知识 非常关键 ◼ 杰出的设计来自杰出 的设计者 软件系统大部分是社会系统,是由人(开发者)为人 (客户)开发的,软件项目的成功由社会因素确定
项目成败的因素:过程 软件开发过程确定以促进开发小组内部合作的活动和组 织的程序,使得能交给客户一个性能优良的产品 过程模型包括: 说明执行活动的次序 说明需要交出什么样的制品,以及什么时候交出 ■将活动和制品交给开发者 提供监控项目进程、评估产出和计划未来项目的准则 ◆每个组织都有自己的过程,或客户化一个通用过程模板
项目成败的因素:过程 软件开发过程确定以促进开发小组内部合作的活动和组 织的程序,使得能交给客户一个性能优良的产品 过程模型包括: ◼ 说明执行活动的次序 ◼ 说明需要交出什么样的制品,以及什么时候交出 ◼ 将活动和制品交给开发者 ◼ 提供监控项目进程、评估产出和计划未来项目的准则 每个组织都有自己的过程,或客户化一个通用过程模板