- 1、本文档共71页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
需求工程 讲授目的 课程大纲 软件需求工程原理 软件需求工程过程 需求建模基础 面向目标的方法 面向Actor和意图的方法 问题框架方法 基于知识的方法 面向情景的方法 软件代价缩减(SCR方法) 其它相关的研究 课程小结 预备知识 一、需求工程:为什么 1、软件项目失败的案例 软件项目失败的案例 软件项目失败的案例 软件项目失败的案例 软件项目失败的案例 耸人听闻吗? 2、1996 欧洲的调查结果 美国Standish Group调查报告 美国Standish Group调查报告 美国Standish Group调查报告 项目成功/失败因素分析95年 项目成功/失败因素分析95年 其它一些调查结果 评述 3、软件过程模型 软件工程中的需求阶段 针对具体问题,靠用户和系统分析员的经验,去进行如下活动: 抽取需求 (用户+系统分析员) 刻画需求 (用户+系统分析员) 为需求建模 (系统分析员) 分析需求模型 (系统分析员) 控制需求过程 (系统分析员) 面对的问题和现状 待开发的软件系统大部分是社会系统。软件项目的成功除了技术因素外,还与社会因素相关 规模大、交互复杂。可能超越人仅靠经验能够认识的问题的范围 项目成败的因素:需求相关者 客户: 客户的需要被误解或没有被完全捕捉 客户需求变化得过于频繁 客户没有准备为项目提供足够的资源 客户不想与开发者合作 客户具有不现实的期望 系统不再对客户有利 开发人员: 不能胜任本项任务 开发者的技能和知识非常关键 杰出的设计来自杰出的设计者 项目成败的因素:过程 良好的过程模型 说明执行活动的次序 说明需要交出什么样的制品,以及什么时候交出 将活动和制品交给开发者 提供监控项目进程、评估产出和计划未来项目的准则 适当的个性化 每个组织都可以客户化一个通用过程模板得到自己的过程 良好的合作关系 任务安排的有组织性 任务分配的合理性 任务合作的协调性 项目成败的因素:建模 语言: 捕获系统需求,为系统建模,并用一种语言表达系统模型 支持在描述性语句中捕获过程性含义,说出什么需要做,而不是怎样去做 CASE工具: 支持模型的协同存取和开发者之间的合作 目前的UML及其工具: 支持面向对象风格 支持静态结构建模和动态行为建模 4、需求工程:有用吗 从发展现状看…… Standish Group报告2000年 数字的变化 成功率从1995年的16%增长到28% 面临问题的项目从1995年的53%减少到49% 项目的失败率从1995年的31%减少到23% Standish Group报告2000年 新的IT项目成功的十大因素 与需求相关因素有5项: 用户参与(16%) 清楚的业务目标(12%) 尽可能小的问题范围(10%) 稳定的基本需求(6%) 形式化方法(6%) 小结 二、什么是软件需求工程 1. 需求工程——破题 需求:构造任何人工制品之前,首先要弄清楚的是——意图(为什么需要它?它将用在何处?) 工程:工程化方法,构造有用的人工制品,强调最终产品的实用性和目的性,需要规范化、标准化的生产过程,得到规范化、标准化的产品(而不是强调产品的创造性,与艺术比较而言) 软件需求工程 2. 软件产品的种类 信息系统 嵌入式系统 通用的服务型系统 …… 软件的类型-信息系统 支持组织运作的软件 包含:文件/数据库、应用 目前70%以上的软件是这种类型的 常用COBOL、RPG或4GL语言写成 Ex. 职工工资、雇员记录、可支付/可接受帐户、客户记录、事务记录 软件的类型-嵌入式系统 嵌入物理设备,驱动某种硬件过程的软件 Ex. 电梯系统、信用卡机器,电信软件,飞行软件 etc. 嵌入社会活动,驱动组织运作的软件(大量涉及人的活动) Ex. ERP系统,车辆/航班调度系统 etc. 软件的类型-通用服务系统 提供某种形式的通用服务系统 Ex1. 科学计算系统 Ex2. 许多Internet应用,远程医疗咨询、远程学习 上述系统用各种流行的语言和中间件(Ex. Java、C++、CORBA、HTML/XML etc.)来开发。 3、软件需求需要工程化方法吗? 大部分工业产品都不需要需求工程 有形的 可度量的 目的和产品形态有直接对应 但是,为什么软件产品需要需求工程呢? 软件产品的特殊性 软件没有固定的形态: 配置通用的机器去实现特定的目的 但目标没有可直接对应的产品形态 人和软件交互的复杂性和持续性: 相比于不含软件的系统,含软件的系统会被高强度不间断的连续交互 交互过程中的相互控制性: 人控制软件系统,软件系统也需要控制人 多源交互的协调和软件的适应性: 一群人参与的活动,需要软件来协调 特殊性给产品开发带来困难 对与人紧密耦合的问题进行描述 具有内在的复杂性,从而给理解软件的意图带来困难: 没有
文档评论(0)