在前面的课程中,已经了解了结构化开发方法和面向对象的开发方法,并且学习了分析和设计阶段的活动以及这些阶段的每一项活动的目标。从这节课开始,我们将结合人脉项目,讨论在分析阶段使用的技巧及有关任务。分析阶段有两个关键任务,分别是识别系统需求和根据系统需求为系统建立需求模型。

一般说来,负责开发软件项目的项目经理或系统分析员,需要尽可能地了解软件项目涉及的业务活动细节,这是因为只有熟悉了项目的业务活动细节,才能确保系统完全满足业务需求。例如,人脉项目是社交类项目,社交涉及的业务活动都需要熟悉和了解。如微信是主要的社交软件,只有了解微信的分享、微信公众号等业务功能,才能实现人脉项目与微信的互动。

功能和技术需求

系统分析阶段要做的主要工作就是确定系统需求。系统需求是新系统必须要完成的功能,在《人脉项目技术要求》任务说明书中已经给出了系统的功能范畴。在系统分析阶段,项目经理或系统分析员需要详细地定义和描述这些功能,换句话说,项目经理或系统分析员要把这些高层功能分解为详细的系统需求。一般而言,系统需求分为功能需求和技术需求两类。

功能需求是系统必须完成的活动,功能需求直接来自项目招标书、任务说明书、项目合同书等确定的系统功能。例如,在《人脉项目技术要求》任务说明书中规定了项目要实现这样一些功能:支持人脉资料的自动识别、批量导入和手动录入、支持人脉资料的管理和分类、支持构建人脉网络结构等等。这些都是人脉项目要实现的功能,确定和描述所有这些功能需要花费大量的时间和精力,给功能需求建模是理解功能需求最好的方式。

技术需求是描述软件运行环境和性能目标的系统需求。例如在《人脉项目技术要求》任务说明书中,要求人脉项目支持Windows和Linux平台、支持的移动终端为Android平台和iOS平台、用户访问系统并完成操作的响应时间一般控制在5秒以内等等,这些都是技术需求。

对于新系统的完整定义,功能需求和技术需求是必不可少的。这两种系统需求都包含在系统需求调查中,功能需求通常记载在已建立的分析模型中,技术需求则通常记载在技术需求的叙述性描述里。

系统相关者

系统功能需求的主要来源是新系统的各种系统相关者。系统相关者是对系统感兴趣的人。系统相关者有三类,一是类是使用系统的人,这类人也称为用户;二是购买和拥有系统的人,这类人也称为客户;三是确保系统运行的维护人员,这类人也称为技术人员。

图 1 人脉项目系统相关者

用户是使用系统处理日常事务的人,用户在使用系统时可能会处于不同的角色,不同角色的用户对系统会有不同的需求。例如在库存管理系统中,会涉及到生产部门、进货部门、仓库和销售部门,每个部门的工作人员对系统的需求都会不同。因此在调查系统需求时,必须要确保这些部门的每个人都讲述了自己的需求。

在人脉系统中,如图1所示。用户分为商务用户、普通用户、学生用户、职业用户、客户和技术人员。商务用户会有维护客户关系、拓展客户的需求;普通用户可能就是单纯记录通讯资料的需求;学生用户更注重于社交资料的真实性、个性化数字名片、校园社交等需求;职业用户包括公务员、医生、律师、科技工作者等用户,这类用户会有社交圈、分享等需求。

客户是为系统提供资金的人和组织。客户可能是项目招标方、购买系统的个人和组织、制定项目的公司管理层等。把客户包括在系统相关者列表中,是因为项目开发小组必须在项目的整个开发过程中,始终向客户提供项目进展的概要情况。

技术人员并不是真正的用户,但他们是技术需求的来源。技术人员包括系统研发人员和维护系统运行的人员。技术人员会在编程语言、技术体系、计算机平台和其它设备方面对项目提供帮助。

如何识别系统需求?

在系统开发中分析阶段的目标就是要理解项目涉及的业务流程和定义系统需求。理解一个新系统的业务流程,最好的方法就是做好系统相关者的需求调查。也可以通过确定类似系统的业务流程和活动,来推断出新系统的业务流程和系统需求。类似的系统可以是原有的系统,也可以是第三方公司的产品。

图 2 识别系统需求的方法

在进行系统分析时,项目经理或系统分析员首先要问的问题是:我需要收集哪方面的信息?通常情况下,调查系统需求主要是获取能够建立新系统逻辑模型的信息。开展系统需求调查可以从三个问题入手:

● 项目涉及的业务过程和活动是什么?也就是提问用户“你要干什么”?

● 业务过程和活动该怎样完成?也就是提问用户“你准备怎么完成它”或“需要哪些步骤”?

● 需求信息是什么?也就是提问用户“为了实现这些业务过程,你需要哪些信息”?

第一个问题“你要干什么”。是从用户的角度来理解系统要完成的功能。在大多数情况下,用户会从已知的系统或者自身的需求来作出回答。作为项目经理或系统分析员需要从用户的回答中仔细辨别出用户提出的功能,哪些功能是重要的,哪些功能是需要保留的,哪些功能是需要删除的。例如,人脉项目的商务用户可能希望在节假日给选定的客户自动发送贺卡等。

第二个问题是“你准备怎么完成它?”。从用户的角度描述完成功能的步骤。例如在自动发送贺卡功能中,用户可能希望首先选定要自动发送的客户,然后设定发送的时间,再设置贺卡模板,输入贺卡内容,最后系统在设定的时间自动发送贺卡。

第三个问题是针对第一个和第二个问题的。用户提出了新系统的功能和完成步骤后,项目经理和系统分析员需要确定要给系统提供哪些信息来完成这些功能。

第一个问题和第二个问题用于确定新系统的功能及完成步骤,第三个问题给出了描述第一个问题和第二个问题的具体信息。对这三个问题的回答定义了系统需求的基础。作为一个项目经理或系统分析员,理解用户需求并建立需求模型是最重要的能力之一。

调查系统需求时也可以遵循一些已经证明行之有效的方法,这些方法往往被项目经理和系统分析员组合起来使用,提高了系统分析的效率,这些方法可以广泛地用于不同规模的软件项目开发中。下面列出了这些方法:

● 向系统相关者分发和收集调查表

● 复查现有报表、表格或过程描述

● 主持与用户的面谈和讨论

● 观察类似系统的过程和工作流

● 建立新系统原型

在后面的课程中会介绍如何使用这些方法。

小结

1、系统需求主要由功能需求和技术需求组成。功能需求是系统必须完成的活动。项目招标书、任务说明书、项目合同书等确定了系统的功能范畴。在分析阶段,项目经理或系统分析员要把这些高层功能分解为详细的功能需求;技术需求是描述软件运行环境和性能目标的系统需求,例如系统的性能指标等。

2、系统功能需求的主要来源是新系统的各种系统相关者。系统相关者是对系统感兴趣的人。如使用系统的用户、购买或给系统提供资金的客户、技术人员等。

3、识别新系统需求最好的方法是做好系统相关者的需求调查,调查系统相关者的方法有向系统相关者分发和收集调查表、复查现有报表、表格或过程描述、主持与用户的面谈和讨论。也可以通过确定类似系统的业务流程和活动,来推断出新系统的业务流程和系统需求。

项目需求分析——如何理解和识别系统需求?相关推荐

  1. 《AlwaysRun!》第五次作业:项目需求分析改进与系统设计

     项目 内容 这个作业属于哪个课程 2016级软件工程(西北师范大学) 这个作业的要求在哪里 实验九 团队作业5-团队项目需求改进与系统设计 团队名称 Always Run! 作业学习目标 (1)掌握 ...

  2. opencv 训练人脸对比_【项目案例python与人脸识别】基于OpenCV开源计算机视觉库的人脸识别之python实现...

    " 本项目是一个基于OpenCV开源库使用python语言程序实现人脸检测的项目,该项目将从[项目基础知识](即人脸识别的基本原理).[项目实践](人脸识别所需要的具体步骤及其python程 ...

  3. 数独项目Last弹:网络识别PIAN

    数独项目Last弹:网络识别PIAN 前言 数据准备 网络定义 推理预测 总结 Reference 前言   小刀又来啦,继上次我们讲解完如何 利用经典图像处理手段分割出九宫格的81个宫格来获取题目中 ...

  4. BI项目需求分析书-模板

    目录 目录 .............................................................................................. ...

  5. 【笔记】Vue Element+Node.js开发企业通用管理后台系统——项目需求分析

    文章目录 一.项目技术架构 1.三个应用 2.项目目标 二.技术难点分析 1.登录 2.电子书上传 3.电子书解析 4.电子书增删改 5.epub 电子书 三.Nginx 服务器搭建 1.安装 ngi ...

  6. 客户需求文档 MRD 和项目需求分析文档

    2008/07/23, 12:00 上午 客户需求文档 MRD Marketing Requirement Doc 和项目需求分析文档是项目开始时最重要的文档.是项目实施的依据,MRD 是来自客户和市 ...

  7. 深度学习入门系列6项目实战:声纳回声识别

    大家好,我技术人Howzit,这是深度学习入门系列第六篇,欢迎大家一起交流! 深度学习入门系列1:多层感知器概述 深度学习入门系列2:用TensorFlow构建你的第一个神经网络 深度学习入门系列3: ...

  8. 互联网+废品回收项目需求分析报告

    本项目设计书为笔者软件工程课的作业,由于时间有限较为粗糙,不合理之处还望指出并改正. 互联网+废品回收项目可行性分析报告 互联网+废品回收项目需求分析报告 互联网+废品回收项目概要设计说明书 互联网+ ...

  9. SSM实战系列之商城系统(前端+后台)《一》项目需求分析

    SSM实战系列之商城系统(前端+后台)<一> 1. 前言 这是一个电子商城整站的实战项目,包括前端的整体页面和后台管理页面. 从项目需求分析到整站开发的一整套项目开发过程记录. 也是作为本 ...

最新文章

  1. 清华博士后用10分钟讲解AlphaCode背后的技术原理,原来程序员不是那么容易被取代的!...
  2. 投影元素直接隔离_Angular ngcontent 内容投影
  3. 数据库事务处理差异:可提交读和重复读区别
  4. py第五天,列表的练习,每日菜谱
  5. JDK与Java SE/EE/ME的区别
  6. es6 模块的语法概述
  7. 怎么去掉网页上复制到word的文章中各种符号例如向下箭头(↓)?
  8. 在Eclipse中使用SDK中的@hide函数
  9. Android学习系列(11)--App列表之拖拽ListView(下)
  10. 三点估算 Sigma(σ)的值,期望值,标准差
  11. .net视频觉得做得最好的是天轰穿
  12. 如何阅读一本书-读书笔记
  13. 动态规划-leetcode#213 打家劫环形舍
  14. ps图片去水印-ps图片去水印教程步骤
  15. sfc/Windows 资源保护找到了损坏文件但无法修复
  16. GitHub下载提速
  17. Win10安装.msi文件出现问题
  18. html5柱状图模板,html5生成柱状图(条形图)
  19. 关于遥感图像解译的思考
  20. 音视频开发:大华摄像头配置RTSP与RTMP地址访问视频画面

热门文章

  1. SAS笔记(2) RETAIN语句
  2. JavaScript大杂烩4 - 理解JavaScript对象的继承机制
  3. 快速下载助手1.1--添加断点下载
  4. 隐藏文字的另一种方法
  5. 解决echart中:Cannot read property ‘queryComponents‘ of undefined
  6. python re.split_python re模块re.split将字符串分割后返回列表
  7. 怎么把桌面计算机放到快速启动栏,怎么把桌面图标放到快速启动栏
  8. jeecg输入中文查询导表为空_简单查询
  9. http://mirrors.aliyuncs.com/centos/7/extras/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http:/
  10. Linux运维学习大纲