透过项目谈需求分析

背景

参与人事档案管理系统将近一年了,这一年中通过这个项目发现了许多问题,不管是在软件设计方面还是在团队合作方面以及在与用户交流获取需求的过程中暴露出了许多问题,也学到了许多东西,今天主要总结一下在需求分析上的问题与收获。

供需交流困难

在软件生存周期中,其它四个阶段都是面向软件技术问题,只有需求分析阶段是面向用户的。需求分析是对用户的业务活动进行分析,明确在用户的业务环境中软件系统应该"做什么"。但是在开始的时候,我们和用户双方都不能准确地提出系统要"做什么?"。而我们又不是用户问题领域的专家,不熟悉用户的业务活动和业务环境,又不可能在短期内搞清楚;而用户不熟悉计算机应用的有关问题。因此双方互相不了解对方的工作,又缺乏共同语言,所以在交流时存在着隔阂。

如何获取需求

需求分析是软件工程中很重要的一个环节,直接决定着项目的成败。需求分析是一项重要的工作,也是最难的工作。需求分析的方法有很多种,如面向过程(自上向下分解)、 信息工程(数据驱动)(数据流分析结构化分析方法)、 面向对象(对象驱动)。这些方法很实用对需求分析过程来说也很常用,但是对于我们这些完全不了解用户业务的开发人员来说再好的分析方法也用不上,不了解业务不知道如何将业务一层层分解、不能正确的把握数据的流向,更不用谈面向对象了。

面对这样的情况,我们只能每次接受用户的一部分需求,然后做一个最基础的原型出来。这种原型要比需求分析方法中的原型方法复杂一点。需求分析的原型方法只要求我们用某些软件工具快速的建造一个原型系统,这个系统只是一个界面,然后听取用户的意见,改进这个原型。以后的目标系统就在原型系统的基础上开发。而现实中如果我们只做一个界面的话,一个没有数据的一个空壳子,对于不懂如何开发软件、不知道何为原型的用户来说,让他们从这样的原型上去提建议、提需求还是有些困难的。所以我们在原型方法的基础上将获得的原型功能全部实现了,以此作为一个原型再去进一步获取需求。

谈到原型方法就得必须谈谈原型方法的三种类型:探索型、实验型、进化型。

探索型:目的是要弄清楚对目标系统的要求,确定所希望的特性,并探讨多种方案的可行性。

实验型:用于大规模开发和实现前,考核方案是否合适,规格说明是否可靠。

进化型:目的不在于改进规格说明,而是将系统建造得易于变化,在改进原型的过程中,逐步将原型进化成最终系统。

我们主要以进化型为主以探索型为辅,探索用户目标需求最终确定一种可行性。这样迭代将每一种可行性在上一可行性的基础上叠加,走进化型路线,逐步将原型进化成最终的系统。

客户的需求为何总是再变

对于需求变更是最令人头疼的事。首先由于我们不清楚业务所以最初是用户带着我们走,这样即使用户提出的需求存在问题,我们也没法去发现问题或者向用户提出我们的建议,去避免这些风险从而避免后期的需求变更。站在用户的角度来说,他们很难精确完整地提出它的功能和性能要求。一开始只能提出一个大概、模糊的功能,只有经过长时间的反复认识才逐步明确。有时进入到设计、编程阶段才能明确,更有甚者,到开发后期还在提新的要求。更何况有时候有些具体实现明明就是按需求完成的,但用户还是会更该需求,因为最初的需求是大概的、抽象的、模糊的,一但这些需求转变成实现再经过一段反复的认识用户提出一些更改也是在所难免的。面对需求变更我们要做的一是要做好准备应对需求变更,将风险降到最低,二是做好需求变更记录。

对获取的需求进行加工

当我们拿到用户的需求时,有时这样的需求只符合软件的局部要求,而要将这些需求实现并且跟其他模块进行融合还需要去宏观掌控将这些需求适当改造,达到既能满足用户的需求还能符合系统的整体需求,这样的需求实现才能更好的为系统提供服务。

捕获将来一定或者可能要变的需求

对于将来要变更的需求,我觉得紧紧做到严格控制需求变更的申请流程以及做好变更记录是远远不够的,因为有些需求的变更是不可避免的。我们还要在软件开发阶段将这些风险降低。在软件开发阶段可采取面向对象的设计思想,在设计之初多多应用设计模式,充分考虑将要变化的需求,预留出接口。另一方面就是将软件的功能之间尽可能的解耦,做到灵活可配置。两种方法有点共同之处,首先可能不应用设计模式的话我们只需要一个类几个方法就可以满足需求,而我们还要去抽象出接口,建立实现类之间的联系。这样有点将简单的问题复杂话的意思,同样软件功能做灵活不仅仅需要我们把这个功能实现出来,还需要我们后期将这个功能进一步做成可配置、可管理,这就需要我们额外添加功能去配置去管理将要变化的功能,从而实现将功能的变化控制在一个可控的范围内。

总结

以往做系统需求都很明确,并且还有原型系统作为参考,很少能够凸显出需求分析的重要性。自己提需求,然后自己开发系统,这样明显降低了很多要求,而开发出来的系统也只能自己用。软件工程学了那么多,需求分析的方法也学了很多,但与实际应用联系起来的实践机会还很少,所以我们对知识的掌握还停留在理论层次上,真正碰到问题的时候还不能做到手到擒来。而这一次是第一次将需求提供与开发角色分离需,也就决定了系统开发不再全部以我们开发人员自己的意志为转移,更多的是站在用户的角度去思考问题、解决问题。

透过项目谈需求分析

时间: 2024-10-27 11:50:57

透过项目谈需求分析的相关文章

(2)从实际项目谈起,基于MEF框架的插件的总体设计

1.MEF框架简介 MEF的全称是Managed Extensibility Framework(MEF),其是.net4.0的组成部分,在3.5上也可以使用.熟悉java中的spring框架的人,对这个框架中涉及的几个概念应该会比较容易理解. 这里我先把我两年前的一个完整的利用MEF搭建的插件式系统中涉及到的MEF框架里的几个基本概念大致描述下. 1.1 依赖注入(export.import) MEF框架中提供 import和export功能,即注入和导出.Spring中有依赖注入这个概念,这

[转载]给IT人员支招:如何跟业务部门谈需求分析?

一提跟业务人员做“需求分析”,许多IT人员立刻就头大了,要么不在同一个“频道”讲话,要么“变来变去,定不下来”.如何跟业务部门谈需求分析呢,我们带着这个问题,与聚冠因尚的咨询顾问杨春波展开了讨论. 1. 有的IT主管抱怨业务部门提出的需求,IT人员看不懂甚至根本不能称之为需求,您觉得为什么会出现这种情况? 聚冠因尚杨春波: 这是比较常见的现象,“语言不通”是造成这种情况的主要原因之一.在企业信息化程度不高的情况下,业务人员的系统使用经验较少,他们提出的需求往往用的是“业务语言”,比如说,“我需要

CSDN日报20170517 ——《怎样和虐死人的老项目谈恋爱》

程序人生 | 怎样和虐死人的老项目谈恋爱 作者:安晓辉 说实话,作为开发者,我们都讨厌接手老项目,可是,开发者的宿命就是:你别无选择,终归要和一个老项目相爱相杀. 点击阅读全文 微服务 | 自己动手扩展分布式调用链 作者:小程故事多 在做微服务框架选择的时候,spring Cloud 无疑是当下最火的,但是因为 Spring Cloud 是近二年的后起新秀,以及在使用方式上面的差别,目前在很多中小企业还是以 dubbo 为主,不过遗憾的是,dubbo 从官方来讲已经不维护了,很多公司都是自己再去

如何做好网站开发项目的需求分析

一个网站项目的确立是建立在各种各样的需求上面的,这种需求往往来自于客户的实际需求或者是出于公司自身发展的需 要,其中客户的实际需求也就是说这种交易性质的需求占了绝大部分.面对对网站开发拥有不同知识层面的客户,项目的负责人对用户需求的理解程度,在很大程度 上决定了此类网站开发项目的成败.因此如何更好地的了解.分析.明确用户需求,并且能够准确.清晰以文档的形式表达给参与项目开发的每个成员,保证开发过 程按照满足用户需求为目的正确项目开发方向进行,是每个网站开发项目管理者需要面对的问题. 一.那些人应

第六次作业——结对项目之需求分析与原型设计

一.结对成员 方泽慧3022.陈慧玲3004 二.需求分析(学习网站) 运用NABCD模型所做需求分析如下: 1. N(need,即用户的需求) (1)不受时间及空间约束的网络自主学习 (2)可以在同一个网站上进行多种方式的学习 (3)可以在同一个网站上查找到经过筛选的优质资源 (4)可以在此平台上找到感兴趣的学习圈子 (5)发帖提问能够在短时间内得到系统的智能回复或人工解答 2. A(approach,即解决用户需求的做法) (1)设置个人信息栏,即可以实现账户注册.发表学习笔记.加入学习圈.

结队项目之需求分析与原型设计

结对项目之需求分析与原型设计 结对者:3011 卢凯欣    3034 戚景晓 一.需求分析(NABCD模型) 1.N(Need,需求) l  游戏玩家可以以游客的身份游览游戏界面. l  玩家可以注册登录,在玩家的个人主页中可以看到个人战绩. l  游戏包括“单机模式”与“对战模式”,“单机模式”为玩家独自练习,“对战模式”为玩家与其他在线玩家对战. l  游戏可以创建房间,输入房间号即可与好友共玩 l  玩家解不出题时,游戏可以给出正确解法.   2.A(Approach,做法) l  对于

社团项目之需求分析--第六组

社团项目之需求分析 小组成员: 姓名 学号 分工 邵昱程 31701014 软件需求分析,数据库设计,后端程序编写优化 钮文剑 31701044 需求分析,前端 罗宇 31701043 需求分析,框架 郑逸旸 31701331 原型设计,后端 沈亦骞  31701045 ER图设计,前端 吴雨翰 31701051 文档撰写,前端 随着我国高等教育的快速发展,高校办学规模不断扩大社团活动日益丰富,高校中大大小小的社团犹如雨后春笋般地建立起来.然而,其中许多的社由于缺乏管理而发展困难,于是便纷纷在昙

软件开发项目做需求分析的一点心得

1.需求分析前的准备 在软件开发过程中,需求分析可以说是核心任务之一,就像一支将要远航的船队,要在指定时间内到达目录地,他们需要一条正确的航线,才能到达目的地,如果航线有误,他们将会误时到达,或是不回到原位将永远到达不了,这么重要的东西,但在国内很多团队中缺少,虽然我也做了一些,但在项目完成的时候,回头看看,其实我们做了很多不必要的事,浪费了很多时间.人力和物力,为保证在今后的开发中减少这些错误的发生,现将一些问题记录下来. 为了了解系统需求,先可以从概要式的需求着手,再细化需求,需求分析必须拟

关于做团队项目时需求分析工作中所学的一部分知识

近期,我们小组在完成了立项说明书后,开始着手准备需求分析说明书的相关工作,在需求分析过程中,少不了用结构化的方法或面向对象的方法进行需求建模,在这其中,需要画很多图形,比如:DFD图.E-R图,状态转换图等,经过实践发现,要画好这些图,除了需要会设计外,还需要熟练使用相关的软件. 开始时,在电脑上安装了IBM的Rational Rose,因为听老师说可以生成部分代码,但安装以及破解过程却是极其复杂的,安装好之后,发现学习使用其进行UML建模,并不是我想的那么简单,为了使需求说明书能够尽快写好,使