当前课程知识点:软件工程 > 第7章 需求获取 > 7.5 需求的主要来源 > 讲课视频
下面我们介绍需求获取的
信息的来源
在需求的获取过程中
我们要考虑来自方方面面的
限制和约束条件
由Loucopoulos和Karakostas
提出的40件模型
为我们提供了一个非常有助于
识别来自不同维度的问题的
一个模型
该模型将问题领域分为四个世界
包括主题世界 应用世界
系统世界和开发世界
通过对四个世界的分别的处理
我们能够有效地考虑到
来自四个方面的
主要的待解决的问题
在主题世界中我们主要关注的是
系统的关注的主题内容
比如对一个银行信息系统来说
我们关注的是顾客 账号
和各类交易
这是关于主题世界对象的
一个探讨
应用世界则是系统未来的
操作环境
在应用世界中我们要关注的
主要是人和企业的流程
关注经理 职员 顾客 存款
取款等活动
另外一个世界是系统世界
它是指系统在操作环境下的
所有的内部操作
包括系统要将交易纪录
保存在数据库中
要对指定的账号交易进行报告
给出账户的明细等等
而开发世界关注的是
软件系统的开发过程
项目的团队 人员 进度 安全
性能等质量要求
例如系统要在12个月内
交付使用
这是开发世界要关注的问题
有了四世界模型
我们可以很好地对问题的本质
以及关注的对象
进行分别处理
项目开始的时候
我们如何着手开始获取需求
这里有几个主要的出发点
第一步是要确定干系人
然后定义系统的边界
找出系统的目标和情景
分析系统的可行性和风险
干系人这一说法
来自英文单词Stakeholders
Stakeholders
本身它的含义就是
对一件事有决策权的人
干系人也不例外
他是对我们的软件项目
有话语权 有决策影响的人
找出所有的干系人
对于项目的成功有重要的意义
我们可以通过四世界模型来分析
它隶属于哪个世界
从而推导出
它关注的是哪些问题
举个例子
用户关注的是新系统的功能
和它的特征
设计师关注的是
构造正确完美的系统
并且尽量重用已有的代码
系统分析师他想要获取的是
正确的需求
培训与用户支持人员
他要确保系统的可用性
和易管理
业务分析师要确保的是
我们要比竞争对手做的更好
技术文档的作者
是为系统准备用户手册
和其它相关文档的人
项目经理则希望按时 按预算
按目标完成项目
客户是为新系统买单的人
从以上我们可以看出
干系人识别最主要的
就是要强调
和用户之间的联络关系
要保证系统设计息息相关的人
他们的意愿能够体现到
我们的需求中来
需求定义过程中
客户与干系人的参与
是至关重要的
不明确的需求定义
以及随意的需求变更
会产生以下问题
首先是客户严重不满
或产生纠纷
不切实际的估算与承诺
项目延期 超支
项目结束遥遥无期
项目团队精疲力竭等等
在需求过程中
常见的问题包括
产品设计目标不明确
干系人参与不足
干系人之间缺少共识
需求定义画蛇添足
需求快速变化
需求分析不足
需求管理不足等
需求获取的内容
主要来自干系人
企业的业务过程
组织的规章制度
以及现有的系统
针对这几个来源
我们通过采用的获取手段
是不一样的
干系人我们主要是
通过沟通和交流的方法
业务过程主要是
采用建模和分析的方法
组织规章制度主要是通过
文本阅读 文档的处理等等
对现有系统
我们可以参照它的用户手册
数据样本 界面描述 报告样本
屏幕截图等等
是对现有参照物的一个分析
和差异性的比较
干系人识别
是要找出任何和系统有关的人
有可能是资方 客户 系统用户
领域专家 项目研发团队
可见它来自四个世界的
任何一个可能的世界
识别干系人的时候
我们要提的问题包括
产品由谁来使用
输入谁来提供
输出谁要用到 谁监管
影响谁 奖励谁 惩罚谁
逐一召集干系人
或者一组干系人
一起定义系统细节的时候
我们达到了以下三个目的
首先我们知道
从用户或者客户的角度来看
什么是一个可接受的
高质量的系统
其次 我们可以通过这件事
提高用户的满意度
通过用户和客户的参与
达到了系统教育和培训的目的
从下边的两个示意图
我们可以看出
没有用户参与的需求获取
和有用户参与的需求获取结果
原始需求和真实需求之间
它的差异就会变得明显的小
总之干系人的参与
是项目成功的必要因素
他们的参与丰富了
我们对系统信息和内容的获取
提升了所获取到的
系统信息的质量
提升了系统的生产率
同时加深他们和我们
自身对系统的理解
促进我们和客户达成共识
使得客户更希望系统成功
增强成功信心
共同确定了系统的边界
促进了需求质量的提升
提高了团队的整体性
需求获取的另一个来源
是业务过程
它是对现有业务过程的分析
这样有助于识别业务问题
并加以改进
主要内容包括
首先找出
并列举当前业务过程中
存在的问题
然后分析问题的本质
是由于遗漏还是不好用
还是有新的需求
之后分析改进的机会和空间
并给出改进的实质
是在完成自动化过程
还是在优化和改进现有的流程
需求的另一个来源
来自组织规章与制度
通常的组织规章制度
定义的是
当前该领域的最佳实践
分析规章制度
有益于确定业务规则和约束条件
其中业务规则描述的是
对业务过程的要求
如系统支撑的业务过程的结构
控制流程 预期效果等等
约束则是对
系统开发过程的管理限制
涉及经济 政治 技术 环境
四个方面
包括项目资源 时间
目标环境及系统本身
组织规章中
往往还涉及过程自动化
工作流 关系 交互
等相关方面的内容
总之组织规章制度
为我们提供了一个客观的
可参照的依据
分析现有系统有助于了解
未来系统的工作数据
包括数据对象 数据关系
数据库结构与系统结构
以及系统报告等
现有系统与未来系统
共享工作环境
共享数据对象
因此 从对现有数据的了解
我们能够构想未来系统的雏形
并且找出差异的需求
从而更好地对未来系统进行规划
-1.1 软件无处不在
--讲课视频
-1.2 软件的本质特性
--讲授视频
-1.3 软件工程的产生与发展
--讲授视频
-1.4 软件工程的基本概念
--讲授视频
-1.5 软件质量实现
--讲授视频
-1.6 业界人士谈软件工程
-测验题--作业
-讨论题
--讨论题
-作业题
--第一张 作业题
-2.1 编程过程与规范
--讲课视频
-2.2 良好的编程实践
--讲课视频
-2.3 Python集成开发环境
--讲课视频
-2.4 代码静态检查
--讲课视频
-2.5 代码性能分析
--讲课视频
-2.6 结对编程实践
--讲课视频
-2.7 刘贺谈软件工程
--讲课视频
--讨论
-测验题--作业
-作业题
--第二章 作业题
-3.1 单元测试概述
--讲课视频
-3.2 黑盒测试方法
--黑盒测试方法
-3.3 白盒测试方法
--基本概念
--代码覆盖标准
--基本路径测试
-3.4 单元测试工具
--单元测试工具
--html
-测验题--作业
-作业题
--第三章 作业题
--作业题附件
-4.1 软件过程
--讲课视频
-4.2 软件过程模型
--讲课视频
-4.3 敏捷开发过程
--讲课视频
-4.4 微软公司开发过程
--邹欣经理自我介绍
--微软开发过程之一
--微软开发过程之二
-测验题--作业
-5.1 团队组织与管理
--讲课视频
-5.2 项目沟通管理
--讲课视频
-5.3 软件项目计划
--讲课视频
-5.4 软件项目估算
--讲课视频
-测验题--作业
-讨论题
--讨论
-6.1 敏捷开发之Scrum
-- 敏捷开发之Scrum
--html
-6.2 用户故事与估算
--讲课视频
-6.3 团队协作工具Tower
-6.4 配置管理
--讲课视频
-6.5 配置管理工具Git
--讲课视频
-测验题--作业
-作业题--作业
-7.1 需求工程师
--讲课视频
-7.2 需求定义
--讲课视频
-7.3 需求的类型
--讲课视频
--讲课视频(2)
-7.4 需求工程过程
--讲课视频
-7.5 需求的主要来源
--讲课视频
-7.6 需求获取技术
--讲课视频
--讲课视频二
--讲课视频三
-7.7 撰写需求文档
--讲课视频
-测验题--作业
-讨论题
--讨论
-8.1 用例建模概念
--讲课视频
-8.2 用例建模过程
--讲课视频
-8.3 用例建模精讲
--讲课视频
-8.4 建模工具介绍
--讲课视频
-8.5 微信抢票应用案例
--讲课视频
-测验题--作业
-讨论题
--讨论
-9.1 面向对象分析
--讲课视频
-9.2 CRC卡片分拣法
--讲课视频-1
--讲课视频-2
-9.3 面向对象设计
--讲课视频-1
--讲课视频-2
-9.4 类图建模
--讲课视频-1
--讲课视频-2
-第9章 面向对象分析与设计--测验题
-讨论题
--讨论
-10.1 顺序图概念
--讲课视频
-10.2 顺序图建模
--讲课视频
-10.3 顺序图风格
--讲义视频
-10.4 状态建模
--讲课视频
-10.5 状态图
--讲课视频
-10.6 状态图精讲
--讲义视频
-测验题--作业
-讨论题
--讨论
-11.1 软件体系结构概念
--讲授视频
-11.2 软件设计原则
--讲授视频
-11.3 软件体系结构风格(一)
--讲授视频
-11.4 软件体系结构风格(二)
--讲授视频
-11.5 软件体系结构风格(三)
--讲授视频
-11.6 软件设计过程
--讲授视频
-11.7 Web系统架构设计
--讲授视频
-11.8 数据库选择策略
--讲授视频
-测验题--作业
-作业题
--html
--html
--html
-作业题--作业
-12.1 交互设计概述
--讲授视频
-12.2 交互设计目标
--讲授视频
-12.3 GUI设计原则
--讲课视频
-12.4 KLM效率模型
--Video
-12.5 Fitts定律
--讲授视频
-12.6 交互设计过程
--讲授视频
-测验题--作业
-13.1 软件测试概念
--讲课视频
-13.2 软件测试类型
--讲课视频
-13.3 软件功能测试
--讲课视频
-13.4 软件性能测试
--讲课视频
-测验题--作业
-14.1 软件部署与交付
--讲课视频
-14.2 软件演化与维护
--讲课视频
-测验题--作业
-第一部分:基础知识
-第二部分:编程与测试(选做)