当前课程知识点:软件工程 > 第7章 需求获取 > 7.3 需求的类型 > 讲课视频
下面给大家介绍一下
软件需求的分类
软件需求的分类
可以从多个维度上进行
它们可以彼此交叉
首先 按照软件需求
修饰的对象的不同
可以将其分为
软件产品的需求
和软件过程的需求
产品需求主要约束的是
软件产品 软件制品本身的属性
而软件过程需求
则是修饰或者限制
软件开发过程的要求
产品需求又可以细分为
功能性需求和非功能性需求
功能性需求
指代软件产品的功能特性
而非功能性需求
则是软件产品的质量属性
是在功能性需求满足的情况下
的进一步的要求
按照软件需求面向对象的不同
以及其抽象层次
和详细程度的不同
又可以将需求分为
业务需求 用户需求 系统需求
和软件设计规约
其中业务需求主要是针对
业务部门的分析人员的
用户需求针对客户方 承包方
的管理人员
最终用户 客户工程师
和系统架构师
系统需求则是由最终用户
客户工程师 系统架构师
和承包方的程序员来关注的
软件系统的设计规约
则是由客户工程师参考
系统架构师和承包方的程序员
重点关注的
企业的业务需求
是指那些其达成
会影响企业完成
组织目标的需求项
企业业务需求
是关于业务的陈述
和需求如何被实现无关
无论是人工手动完成
还是通过系统完成
并不影响企业的业务需求
有时我们也把业务需求
称为业务目标
例如携程旅行这个公司
它的业务需求是销售飞机票
公司的目标是成为
当人们想买飞机票时
首先想到的公司
这是对一个企业的
业务需求的陈述
系统需求的满足
使得系统实现了预期的功能
它从用户的角度
描述系统做什么
而与系统由
什么样的软硬件实现是无关的
一个企业选择实现
某个软件系统的首要条件
就是该系统需求
应该是满足组织的业务需求的
下面给出了三条描述
第一条 卖票系统
需要和用户数据库交互
第二条 新的软件
会使汽车的启动速度加倍
第三条
我们新产品制造的低成本
将会让我们有更高的市场份额
并满足销售目标
在这三条需求中
其实我们可以看到
对预期功能进行定义的
只有其中的第二条
就是它是一个启动加速的软件
而第一条
它只是说明了
卖票系统它要和用户数据库
交互这个事实
那么它实际上是一种
设计的约束
而第三条
我们新产品制造的低成本
这件事情
实际上在说 低成本它是一个
对过程的一个约束
而并没有说出产品的一个功能
是什么
所以它不隶属于系统需求的范围
在一个软硬件结合系统中
软件需求是指关于系统中
软件部分的需求
它的满足将有助于
实现整体的系统需求
这里给出了三个
围绕软件的需求的描述的实例
一 订票系统软件通过标准的
网络服务接口和航班信息交互
这是在说明订票系统软件
与外部的其它系统之间
的交互方式
是通过网络服务接口
因此 它既是一个软件需求
也是一个关于接口的一个描述
第二条 用户接口需要设置关于
用户偏好的颜色和字体大小
这也是一个软件系统的功能
就是要设置用户偏好的
颜色和字体大小
而同时
它又是一种增强用户体验的
一条软件需求
是关于质量和非功能性属性的
而第三条
系统的API需要同时支持
C++和Java
来让程序员访问系统服务
那这就意味着
这是一条软件系统的设计约束
是对编程语言的要求
系统的用户需求
是指其满足程度会影响系统的
用户接受程度的需求
有时候我们也把用户需求
称为“用户接口需求”
例如 一个订票系统的用户接口
需要提供和系统交互的选项
或者通过控制命令
或者通过WIMP接口
客户希望
照相机背后有一个液晶屏幕
这样在拍照之后
可以马上看到照片
这些都是关于用户接口的描述
属于用户需求的范畴
系统的功能性需求
是指满足系统需求时
需要提供的功能
有时候功能需求
也被称为行为需求
对一个订票系统来说
两个可能的功能性需求包括
需要提供一个在任何航班上
预留座位的功能
和一个通过信用卡付费的功能
非功能性需求
它定义的是软件系统
及软件开发过程中
为满足系统的功能需求
而要满足的其它的约束条件
具体细分为
质量相关的需求
依从性需求
体系结构约束
和设计开发约束等
质量需求
描述软件系统正常工作时
需要满足的额外的
与质量相关的要求
在软件工程文献中
也称之为“质量属性”
它所应答的是关于
“提供的服务好到何种程度”
的问题
例如 在订票系统中
我们要求用户界面
要保证用户从选择出发站
到终到站的过程
不能超过四次按键
这个是一个关于用户友好性的
一条需求
订票系统的订票请求
响应时间要小于1分钟
这是一个关于
订票系统的响应时间
也就是性能的要求
图书馆的黑名单
应随时响应馆员的查询操作
这是一个对图书馆的
黑名单的可用性问题的一个需求
列车的加速控制软件
平均无故障时间是10的九次方
小时
这是对系统可靠性的一个要求
依从性需求着重描述
软件对国家法律 国际公约
社交法则 文化与政治习惯
环境标准等约束条件的满足
例如
在列车控制系统中
我们要求两列火车间的
最小间距
应满足
国际铁路运输安全规范中的
最坏情况下的停车距离
在会议调度系统中缺省情况下
我们要排除会议所在地的
地区的公众假期
这些依从性的需求往往是
一个系统它所处的经济
政治上下文要求的一些限制
它的满足是系统正常运行
或者合法运行的一个客观标准
体系结构设计需求
定义的是系统环境
对待设计系统在结构上的
约束和限制
这里主要是从两个方面
首先是分布式的约束
它要求软件系统的组件
满足由于目标组织在地理上的
自然分布而导致的对系统设备
节点的分布要求
以及数据的分布式存储
与处理的要求
比如说 在会议调度系统中
它应该与分布在世界各地的
参会者的邮件服务系统
和电子日程管理系统协同工作
它是由于组织机构本身
以及其外部相关系统
本身的分布的属性导致的
另外一类就是安装约束
它要求的是软件系统能够
在目标的运行环境下
正常的执行
比如
会议调度系统
要在微软的Window8
和Mac OS10.10的版本上
成功运行
设计开发约束
是对软件系统设计过程的约束
具体包括
从开发成本 开发时间周期
产品特征的变化性
可维护性 可重用性
可移植性等方面的约束
例如
清华大学图书馆
门户系统的开发成本
不应高于200万
是对一个项目开发成本的约束
动车控制软件
应在两年内投入使用
这是对开发时间周期的约束
会议日程安排系统
应根据会议的类型
动态调整会议安排的调度策略
具体的它的变化性包括
对专业会议和内部会议
它的策略应该是不同的
对固定会址
和轮换会址的会议类型
它的调度策略也是不同的
对参会人员的重要程度
是相同级别还是不同级别
也应该可以动态的设置
所以这个是对产品的变化性
以及适应性的一个约束
这些都隶属于
软件的设计开发约束
-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 软件演化与维护
--讲课视频
-测验题--作业
-第一部分:基础知识
-第二部分:编程与测试(选做)