课上听到的东西

什么是需求工程,概念

软件需求工程概念 ->参照下面

需求工程活动划分

软件需求层次划分很重要 -> 下面有

非功能需求 -> 下面

需求来源 -> 下面8点

用例模型 -> 参照用例图

原型法 (各种原型,4个部分实现,可能实现)
??

原型划分

各种各样的图都可能直接让你画

需求规格说明

需求管理在项目中的作用

需求变更控制 变更控制过程

变更控制委员会

CCB职责

信息源、谁是谁的信息源

多选题?开发人员和代码,测试人员产生需求信息,开发人员产生系统维护信息,好不好

什么是软件原型?使用软件原型有什么目的/好处?

  1. 软件原型是一种技术、可以利用这种技术减少客户对产品不满意的风险。
  2. 一个软件原型是所提出的新产品的部分实现,通过使用原型可以使开发小组正确理解需求,发现和解决在产品开发的早期阶段不确定的问题以及需求中的二义性和不完整性问题,最终明确如何最好地实现这些需求并最终明确并完善需求、探索设计选择方案、发展为最终的产品。同时用户、经理和其他非技术项目风险承担者发现在确定和开发产品时,原型可以使他们的想象更具体化。

目的可以总结为:

  1. 明确并完善需求:原型作为一种需求工具,它是对部分系统的初步实现。用户对原型的评价可以指出需求中存在的问题,在开发真正产品之前,可以最低的费用来解决这些问题。
  2. 探索设计选择方案: 原型作为一种设计工具,用它可以探索不同的用户界面技术,使系统达到最佳的易用性,并且可以评价可能的技术方案
  3. 发展为最终的产品原型:作为一种构造工具,是产品最初子集的完整功能实现,通过一系列小规模的开发循环,你可以完成整个产品的开发。

软件原型的种类?

水平原型和垂直原型、抛弃性原型和进化型原型、电子原型和书面原型

通过水平和垂直原型让用户体验或者验证需求实现的具体行为以及部分确定性的功能
而抛弃型原型和进化型原型则针对不确定性的问题通过原型进行探讨和研究最终剔除掉需求的不确定性。





思维导图上的知识整理

需求获取

图示

本课程对软件需求的定义

软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望
通过对应问题及其环境的理解与分析,为问题涉及的信息、功能及系统行为建立模型,将用户需求精确化、完全化,最终形成需求规格说明,这一系列的活动即构成软件开发生命周期的需求分析阶段。

补充一下:
IEEE软件工程标准词汇表(1997年)对需求的定义:

  1. 用户为解决某个问题或达到某种目标而需具备的条件或能力(Capability)。
  2. 系统或系统部件要满足合同、标准、规范或其它正式规定文档而必须满足的条件或必须具备的能力。
  3. 一种反映上面(1)或(2)所描述的条件或能力的文档说明

需求包括的3个层次

软件需求包括三个不同的层次:
1)业务需求:反映了组织机构或客户对系统、产品高层次的目标要求,它们在项目视图与范围文档中予以说明。
2)用户需求:描述的是用户的目标,或用户要求系统必须要完成的任务。用例(use case)文档、场景描述(scenario)和事件一响应表均用于表达用户需求。
3)功能需求:定义了开发人员必须实现的软件功能,使得用户能利用这些功能完成他们的任务,从而满足了业务需求。

图示如下所示:

软件需求的来源

软件需求来自很多方面,这取决于所开发产品的性质和开发环境,需要从不同用户代表和来源收集需求。
因此,需求工程是以相互交流为核心的性质。
下面是8个软件需求的典型来源:
1)与潜在用户进行交谈和讨论
为找出新软件产品的用户需求,最直截了当的方法是询问他们。如何寻找合适的用户代表十分关键。

2)把对现有产品或竞争产品的描述写成文档
文档可以描述一种所必须遵循的标准或产品所必须遵循的政府或工业规则。

3)系统需求规格说明
同时包含软、硬件的产品需要一个高级的系统需求规格说明以介绍整个产品。需求分析员可从这些部分获得有关软件的详细功能性需求等。

4)现有系统的问题报告和改进要求
指导用户和提供技术支持的工作人员是最有价值的需求来源。收集用户在使用现有系统过程中所遇到问题的信息,还接受用户关于系统改进的想法

5)市场调查和用户问卷调查
调查有助于从广大有潜力的用户那里获得大量定量的数据,务必调查相关的用户并询问一些能产生反响的好问题

6)观察用户如何工作
分析员可通过观察用户与所关联的任务环境的工作流程来预见用户在使用当前系统时所遇到的问题,并能分析新的系统可有效支持工作流程的方面

7)用户工作的情景和内容分析
通常通过开发具体的情节或活动顺序,可以确定用户利用系统要集成的任务,分析员由此可以获得用户用于处理任务的必要的功能需求。

8)事件和响应
列出系统必须响应的外部事件和正确的响应。这对于实时系统尤其有效,因为系统必须从外部的硬件设备读取数据流、错误代码、控制信号和中断并对它们进行处理。

项目视图的解决方案

主要内容和构成:
(项目视图陈述、主要特性、假设和依赖环境)


需求分析员的主要工作

  1. 定义业务需求
  2. 确定项目涉众和用户类别
  3. 获取需求:
    交谈、讨论会、文档分析、调查、业务流程分析、工作流程分析、任务分析、事件列表、同类产品、根据现有系统推导需求、回顾以往项目
  4. 分析需求
  5. 编写需求规格说明
  6. 需求建模
  7. 引导对需求的优先级划分
  8. 主持对需求的验证
  9. 管理需求

需求获取的方法有哪些

(还没有在ppt上找到)
可能是这些:
获取需求:
交谈、讨论会、文档分析、调查、业务流程分析、工作流程分析、任务分析、事件列表、同类产品、根据现有系统推导需求、回顾以往项目

  1. 讨论会议
  2. 观察工作过程
  3. 问答式对话
  4. 启发式诱导

需求获取中可能出现的问题

  1. 捕获范围不足
  2. 缺乏计划性
  3. 缺乏科学性
  4. 获取对象不明确

用例图

用例图:由参与者(Actor)、用例(Use Case)以及它们之间的关系构成的用于描述系统功能的动态视图
(参与者,用例,关系,描述系统功能)
这个要求能够画出来
UML建模——用例图(Use Case Diagram) - lclc - 博客园 (cnblogs.com)

软件的质量属性有哪些?

McCall提出了表明软件质量的11个质量特性:
正确性、可靠性、效率、完整性、易用性、可维护性、测试性、灵活性、可移植性、可重用性、互操作性。


什么是功能需求和非功能需求

(没找到)
功能需求: 开发人员所需要完成的工程,用户可以利用这些功能完成任务,从而满足业务需求
所有功能需求都应该源于用户需求; 同时也需要获取非功能需求,如质量属性
功能需求指的是项目中具体需要提供的功能和内容,比如用户登陆功能、收发邮件功能和论坛功能等。

非功能性需求:
指的是项目中为满足客户业务需要必须达到的一些特性,其中包括系统性能、可靠性、可维护性,可扩充性以及对技术与业务方面的适应性:

需求分析

什么是需求分析,它的任务有哪些

需求分析(requirement analysis)包括提炼、分析和仔细审查已收集到的需求,以确保所有的风险承担者都明白其含义并找出其中的错误、遗漏或其它不足的地方。

主要任务:

  1. 绘制系统关联图
  2. 建立数据字典
  3. 建立用户界面(接口)原型
  4. 为需求建立模型
  5. 确定需求优先级

什么是系统关联图

定义:系统关联图是用于定义系统与系统外部实体间的界限和接口的简单模型,同时它也明确了通过接口的信息流和物质流。

用户界面原型的优势

  1. 开发用户界面原型作为一个可能的局部实现,可以使得许多模糊问题和可能发生的事更为直接明了
  2. 用户可以通过评价原型使项目参与者能够更好地理解所需要解决的问题
  3. 软件原型是一种技术、可以利用这种技术减少客户对于产品不满意的风险。
  4. 减少需求中存在的不明确不清晰的问题。
  5. 原型使得产品实在化,可以消除需求理解的差异
  6. 比起阅读需求规格说明书,用户更愿意评价原型

原型最大的风险


数据流图包含哪些要素







什么是实体关系图





什么是状态转换图







什么是数据字典











软件需求规格说明

软件需求规格说明的定义


什么是一个好的软件需求规格说明

完整性、正确性、可行性、必要性、划分优先级、无二义性、可验证性、一致性、可修改性、可跟踪性

导致发生不合格需求规格说明的情况有哪些?

没找到

  1. 设计问题、过早限制开发人员能够采取的方案

软件的非功能需求有哪些

  1. 性能需求
    阐述了不同的应用领域对产品性能的需求,并解释它们的原理以帮助开发人员作出合理的设计选择。
    如:对数据库响应时间要求严格,那么,设计人员就会在多个地理位置放置多个镜像数据库服务器,或者设计非规范化关系数据库表,以便快速响应查询请求。
    性能需求补充:
    此外,指定每秒钟支持处理的交易量、响应时间、运算精度和实时系统的定时关系。
    还可以在这里定义容量需求,例如存储器和磁盘空间的需求或者存储在数据库中表的最大行数。
    尽可能详细地确定性能需求。
    可能需要针对每个功能需求或特性分别陈述其性能需求,而不是把它们都集中在一起陈述。
    尽可能具体地量化性能需求,例如,“在运行微软Window XP操作系统的主频为2.1GHz的Intel Pentium4 PC计算机上,当系统至少有60%的空闲资源时,要求95%的目录数据库查询必须在3秒内完成”。

  2. 防护性需求
    详尽陈述与产品使用过程中可能发生的损失、破坏或危害相关的需求。定义必须采取的安全保护或动作,还有那些预防的潜在的危险动作。明确产品必须遵从的安全标准、策略或规则。一个安全设施需求的范例如下:“如果油箱的压力超过了规定的最大压力的95%,那么必须在1秒钟内终止操作”。

  3. 安全性需求
    详尽陈述与系统安全性、完整性或与私人问题相关的需求。这些问题将会影响到产品的使用和产品所创建或使用的数据的保护。定义用户身份确认或授权需求。明确产品必须满足的安全性或保密性策略。

标识需求的方法有哪几种?

三种方法:

  1. 序列号
  2. 层次性编码
  3. 层次化文本标签



改进前后的需求示例





需求验证

什么是需求验证?

常见的需求评审方法

审查中的参与者会扮演哪些角色,每一个角色的作用是什么








审查的过程阶段

需求评审的困难有哪些



需求管理

需求管理的主要活动有哪些

什么是需求基线

需求版本控制




常用的版本控制软件


需求变更

(1)什么是需求蔓延

(2)需求变更活动中的项目角色

(3)变更控制委员会的构成及职责



(4)控制变更活动有什么好处

(5)变更请求的状态转换图

需求跟踪

(1)什么是需求跟踪

(2)需求跟踪矩阵在项目管理中的作用

(3)需求管理工具有哪些,使用益处,功能,如何选择一个合适的需求管理工具
















综合分析题

可能给出一个情景,让我们画图?

化学品制品跟踪系统

掌握绘制实体关系图 数据流图 用例图等

开放型试题

请谈一谈通过哪些方法可以获得项目进展情况

请谈一谈需求管理在项目开发中的作用
需求管理:在软件项目开发过程中控制和维持需求约定的活动。