软考系统分析师-第五节
第五章-需求工程
1. 描述-3星
软件工程是以工程化思想进行软件开发,
需求工程是软件工程中的一个阶段
需求工程包括需求开发(技术视角)和管理(管理视角)两个维度。
软件需求是指用户对系统在功能、行为、性能、设计约束等方面的期望。
软件需求是指用户解决问题或达到目标所需的条件或能力,是系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或能力,以及反映这些条件或能力的文档说明。
基线:客户确认过的计划,以及客户、项目团体技术人员一起打成共识的东西
软件需求和业务需求两者的区别:
一般需求分类方法
软件、硬件、网络等需求,软件需求又可以分为:
- 业务(整体全局,补全用户描述不清的需求,需求抽象层级最高)
- 用户(用户视角,不同角色权限下的各个用户需求,偏向操作看到什么怎么操作)
- 系统需求(计算机视角)
- 功能性需求
- 性能性-非功能需求(安全性、可靠性)
- 设计约束(甲方提出的即非功能又非性能的需求,例如客户要求用JAVA,必须用XXX之类的需求)
QFD分类
需求分为:
- 基本需求(明示,常规需求)
- 期望要求(隐含需求,用户没说,但是他心理想要,你们的专业性在哪里?这种需求人家别人都可以你就不行么,还需要我说么?)
- 兴奋需求(多余需求,客户不关心,还消耗项目开发费用,从项目管理角度不要做)
如何区分那种续期?可以用原型方法来让客户选择补充。
2. 需求获取-5星
案例和论文考试内容比较多,例如问获取需求有哪些方式。
需求获取
用户访谈:1对1-3,有代表性的用户。(比较耗时,咨询开放式问题(问答题)和封闭式问题(选择题))
问卷调查:用户多,无法一一访谈。
现场观摩:针对较为复杂的流程和操作。
联合需求计划(JRP):高度组织的群体会议,各方参与,成本较高
情节串联板:一系列图片,通过这些图片来讲故事。
收集资料:把与系统有关的、对系统开发有益的信息收集起来。
参加业务实践:有效地发现问题的本质和寻找解决问题的办法。
阅读历史文档:对收集数据性的信息较为有用。
抽样调查:降低成本。样本大小=∝ * (可信度系数/可接受的错误) * (可信度系数/可接受的错误) (注:α-般取0.25)
非功能需求分类
PIECES框架-系统非功能性需求分类的技术
性能( Preformance):性能用于描述企业当前的运行效率,可以分析当前业务的处理速度。
信息( Information):信息和数据指标用于描述业务数据的输入、输出以及处理方面存在的各种问题
经济( Economics):经济指标主要是从成本和收益的角度分析企业当前存在的问题。
控制( Control):提高信息系统的安全和控制水平
效率( Efficiency):提高企业的人、财、物等的使用效率
服务( Service):提高企业对客户、供应商、合作伙伴、顾客等的服务质量。
3. 需求分析-4星
结构化重视流程
面向对象重视对对象,物或者人都抽象成对象
结构化需求分析
用数据流图来表现业务流向
- 数据流图 DFD 核心,用DFD进行功能建模,系统有哪些功能块,每个功能块的输入输出是什么,都通过DFD进行描述呈现,对整个系统进行初步认识。
- 状态转换图(STD)
- 实体联系图(ER)数据库部分进行讲解。
- 使用数据字典进行补充说明。
数据流图DFD





顶层图和0层图中,外部实体没有变但是系统拆分成了更详细的系统。
数据流图平衡原则:
父图和子图之间的平衡:父同中有的流程,子图一定要有。
子图内平衡:黑洞、奇迹、灰洞

外部实体:和系统交互的角色




状态转换图
事件触发状态转变

ER图

面向对象需求分析
对象:属性(数据)+方法(操作)+对象ID
类(实体类/控制类/边界类)(学生实体类/协调/接口性质同外界沟通)
继承与泛化:复用机制
封装:隐藏对象的属性和实现细节,仅对外公开接口
多态:不同对象收到同样的消息产生不同的结果
接口:一种特殊的类,他只有方法定义没有实现
重載:一个类可以有多个同名而参数类型不同的方法
消息和消息通信:消息是异步通信的
用UML图表达业务流转情况
- UML图
- 用例模型
- 类模型
面向对象需求分析-UML

重点是构造块里面的事物、关系、图三部分
对象三要素:属性方法对象ID。
类:是描述具有相同属性、方法、关系和语义的对象的集合,一个类实现一个或多个接口
接口:是指类或构件提供特定服务的一组操作的集合,接口描述了类或构件的对外的可见的动作。
构件:是物理上或可替换的系统部分,它实现了一个接口集合
包:是一种将有组织的元素分组的机制。
用例:是描述一系列的动作,产生有价值的结果。
协作:定义了交互的操作,是一些角色和其它事物一起工作,提供一些合作的动作,这些动作比事物的总和要大;
节点:是—个物理元素,它在运行时存在,代表一个可计算的资源,通常占用一些内存和具有处理能力。


UML中最重要的用例图和类图:
用例图

使用关系=包含关系



类是描述系统内部结构,但是用例不是

第一空,用排除法:
泛化:执行顺序是先后执行,所以不属于父子泛化:
包含:提供的是共性,所以不是。
扩展:用的时候用到,有的使用不用,一定要存款之后才能用,所以也不是。
依赖:先后执行存在依赖。
第二空:
公共用例和具体的用例之间存在的就是使用关系,所以该题目选择B。
改题答案C 泛化,题目可以改成任何地方都可以用UC1 替代UC2
问题方法:
- 区分动态图和静态图
- 具体每种动态图的区分
类图和对象图
考试方法,给类图和题干,对图中缺少内容进行填充,和用例图考察类似


泛化关系:子类特殊,父类一般
实现的线应该是 虚线,图中第一个错了。

顺序图

活动图
