软件需求分析_软件的需求分析怎么写啊?

如何进行软件需求分析1.概念
需求的定义包括从用户角度(系统的外部行为),以及从开发者角度(一些内部特性)来阐述需求.
关键的问题是一定要编写需求文档.我曾经目睹过一个项目中途更换了所有的开发者,客户被迫与新的需求分析者坐到一起.系统的分析人员说:"我们想与你谈谈你的需求."客户的第一反应便是:"我已经将我的要求都告诉你们前任了,现在我要的就是给我编一个系统".
百事通
而实际上,UGGs,需求并未编写成文档,因此新的分析人员不得不从头做起.所以如果只有一堆邮件、会谈记录或一些零碎的未整理的对话,你就确信你已明白用户的需求,那完全是自欺欺人.
需求的另外一种定义认为需求是"用户所需要的并能触发一个程序或系统开发工作的说明".有些需求分析专家拓展了这个概念:"从系统外部能发现系统所具有的满足于用户的特点、功能及属性等".这些定义强调的是产品是什么样的,而并非产品是怎样设计、构造的.而下面的定义则从用户需要进一步转移到了系统特性:
需求是指明必须实现什么的规格说明.它描述了系统的行为、特性或属性,是在开发过程中对系统的约束.
从上面这些不同形式的定义不难发现:并没有一个清晰、毫无二义性的"需求"术语存在,真正的"需求"实际上在人们的脑海中,这个人们主要是指客户,但一般情况下,用户并不能描述自己的需要,只就需要系统分析人员根据用户的自己语言的描述整理出相关的需要再进一步和客户核对.系统分析员和客户需要确保所有项目风险承担者在描述需求的那些名词的理解上务必达成共识.
任何文档形式的需求(例如如下将要描述的需求规格说明书)仅是一个模型,一种描述.
2.需求分析的任务
开发软件系统最为困难的部分就是准确说明开发什么.最为困难的概念性工作便是编写出详细技术需求,这包括所有面向用户、面向机器和其它软件系统的接口.同时这也是一旦做错,将最终会给系统带来极大损害的部分,并且以后再对它进行修改也极为困难.
目前,国内产品的庞杂,一家企业可能有几个系统并立运行,它们之间接口是系统开发人员最头痛的问题.
对于商业最终用户应用程序,企业信息系统和软件作为一个大系统的一部分的产品是显而易见的.但是对于我们开发人员来说,并没有编写出客户认可的需求文档,我们如何知道项目于何时结束?而如果我们不知道什么对客户来说是重要的,那我们又如何能使客户感到满意呢?
然而,即便并非出于商业目的的软件需求也是必须的.例如库、组件和工具这些供开发小组内部使用的软件.当然你可能偶尔勿需文档说明就能与其他人意见较为一致,但更常见的是出现重复返工这种不可避免的后果,而重新编制代码的代价远远超过重写一份需求文档的代价,这些血的教训正在国内的软件开发者身上发生.
近来,我遇到一个开发小组开发包括代码编辑器在内的一套内部使用的计算机辅助软件.不幸的是,当他们开发完这个工具后,发现这个工具不能打印出源代码文件,使用者当然希望有这个功能.结果这个小组只好手工抄写源代码文档以供代码检查.这说明那怕需求明确无误并构思准确,如果我们没有编写文档,软件达不到期望目标也只能是咎由自取了.
相反的情况,我曾见一个要集成到"错误跟踪系统"中的简单界面写了一页需求说明.而操作系统系统管理员在为处理脚本时发现简单的一张需求清单竟是如此有用.他们依据需求对系统进行测试时,此系统不仅非常清晰地实现了所有必需功能,而且未发现任何错误.
事实上,需求文档在开发过程中一直起指导作用.
3.需求分析过程
可把整个软件需求工程研究领域划分为需求开发和需求管理两部分更合适,如图4-1所示:
图4-1 需求工程域的层次分解示意图
需求开发可进一步分为:问题获取、分析、编写规格说明和验证四个阶段.这些子项包括软件类产品中需求收集、评价、编写文档等所有活动.需求开发活动包括以下几个方面:
确定产品所期望的用户类别.
获取每个用户类的需求.
了解实际用户任务和目标以及这些任务所支持的业务需求.
分析源于用户的信息以区别用户任务需求、功能需求、业务规则、质量属性、建议解决方法和附加信息.
将系统级的需求分为几个子系统,并将需求中的一部份分配给软件组件.
了解相关质量属性的重要性.
商讨实施优先级的划分.
将所收集的用户需求编写成文档和模型.
评审需求规格说明,确保对用户需求达到共同的理解与认识,并在整个开发小组接受说明之前将问题都弄清楚.
需求管理需要"建立并维护在软件工程中同客户达成的合同" .这种合同都包含在编写的需求文档与模型中.客户的接受仅是需求成功的一半,开发人员也必须能够接受他们,并真正把需求应用到产品中.通常的需求管理活动包括:
定义需求基线(迅速制定需求文档的主体).
评审提出的需求变更、评估每项变更的可能影响从而决定是否实施它.
以一种可控制的方式将需求变更融入到项目中.
使当前的项目计划与需求一致.
估计变更需求所产生影响并在此基础上协商新的承诺,这种承诺具体体现在项目解决方案上.
让每项需求都能与其对应的设计、源代码和测试用例联系起来以实现跟踪.
在整个项目过程中跟踪需求状态及其变更情况.
以上几点说明是我总结了成功实施项目后系统分析人员的经验,同时也根据国内外的其他系统实施的相关成功经验,进行了总结.
4.需求的类型
下面这些定义是需求工程领域中常见术语的定义.
软件需求包括三个不同的层次:业务需求、用户需求和功能需求(也包括非功能需求).
1.业务需求(business requirement)反映了组织机构或客户对系统、产品高层次的目标要求,它们在项目视图与范围文档中予以说明.
2.用户需求(user requirement) 文档描述了用户使用产品必须要完成的任务,这在使用实例(use case)文档或方案脚本说明中予以说明.
3.功能需求(functional requirement)定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求.
在软件需求规格说明书 (SRS)中说明的功能需求充分描述了软件系统所应具有的外部行为.软件需求规格说明在开发、测试、质量保证、项目管理以及相关项目功能中都起了重要的作用.对一个大型系统来说,软件功能需求也许只是系统需求的一个子集,因为另外一些可能属于子系统(或软件部件).
作为功能需求的补充,软件需求规格说明还应包括非功能需求,它描述了系统展现给用户的行为和执行的操作等.它包括产品必须遵从的标准、规范和合约;外部界面的具体细节;性能要求;设计或实现的约束条件及质量属性.所谓约束是指对开发人员在软件产品设计和构造上的限制.质量属性是通过多种角度对产品的特点进行描述,从而反映产品功能.多角度描述产品对用户和开发人员都极为重要.
下面以一个字处理程序为例来说明需求的不同种类.业务需求可能是:"用户能有效地纠正文档中的拼写错误",该产品的包装盒封面上可能会标明这是个满足业务需求的拼写检查器.而对应的用户需求可能是"找出文档中的拼写错误并通过一个提供的替换项列表来供选择替换拼错的词".同时,该拼写检查器还有许多功能需求,如找到并高亮度提示错词的操作;显示提供替换词的对话框以及实现整个文档范围的替换.
从以上定义可以发现,需求并未包括设计细节、实现细节、项目计划信息或测试信息.需求与这些没有关系,它关注的是充分说明你究竟想开发什么.项目也有其它方面的需求,如开发环境需求或发布产品及移植到支撑环境的需求.尽管这些需求对项目成功也至关重要,但它们并非本书所要讨论的.
5.需求分析的原则
不重视需求过程的项目队伍将自食其果.需求工程中的缺陷将给项目成功带来极大风险,这里的"成功"是指推出的产品能以合理的价格、及时地在功能、质量上完全满足用户的期望.下面将讨论一些需求风险.
不适当的需求过程所引起的一些风险:
1. 无足够用户参与
客户经常不明白为什么收集需求和确保需求质量需花费那么多功夫,开发人员可能也不重视用户的参与.究其原因:一是因为开发人员感觉与用户合作不如编写代码有意思;二是因为开发人员觉得已经明白用户的需求了.在某些情况下,与实际使用产品的用户直接接触很困难,而客户也不太明白自己的真正需求.但还是应让具有代表性的用户在项目早期直接参与到开发队伍中,并一同经历整个开发过程.
系统人员在实践过程中,也有些感觉,在实施一家公司的项目时,若无足够的用户参与,系统人员获得的需求是片面的,不完整的,这样系统在需求之初就埋下风险.
2. 用户需求的不断增加
在开发中若不断地补充需求,项目就越变越庞大以致超过其计划及预算范围.计划并不总是与项目需求规模与复杂性、风险、开发生产率及需求变更实际情况相一致,这使得问题更难解决.实际上,问题根源在于用户需求的改变和开发者对新需求所作的修改.
要想把需求变更范围控制到最小,必须一开始就对项目视图、范围、目标、约束限制和成功标准给予明确说明,并将此说明作为评价需求变更和新特性的参照框架.说明中包括了对每种变更进行变更影响因素分析的变更控制过程,有助于所有风险承担者明白业务决策的合理性,即为何进行某些变更,相应消耗的时间、资源或特性上的折中.
产品开发中不断延续的变更会使其整体结构日渐紊乱,补丁代码也使得整个程序难以理解和维护.插入补丁代码使模块违背强内聚、松耦合的设计原则,特别是如果项目配置管理工作不完善的话,收回变更和删除特性会带来问题.如果你尽早地区别这些可能带来变更的特性,你就能开发一个更为健壮的结构,并能更好地适应它.这样设计阶段需求变更不会直接导致补丁代码,同时也有利于减少因变更导致质量的下降.
3. 模棱两可的需求
模棱两可是需求规格说明中最为可怕的问题.它的一层含义是指诸多读者对需求说明产生了不同的理解;另一层含义是指单个读者能用不止一个方式来解释某个需求说明.
模棱两可的需求会使不同的风险承担者产生不同的期望,它会使开发人员为错误问题而浪费时间,并且使测试者与开发者所期望的不一致.一位系统测试人员曾告诉我,她所在的测试组经常对需求理解有误,以致不得不重写许多测试用例并重做许多测试.
处理模棱两可需求的一种方法是组织好负责从不同角度审查需求的队伍.仅仅简单浏览一下需求文档是不能解决模棱两可问题的.如果不同的评审者从不同的角度对需求说明给予解释,但每个评审人员都真正了解需求文档,这样二义性就不会直到项目后期才被发现,那时再发现的话会使得更正代价很大.
4. 不必要的特性
"画蛇添足"是指开发人员力图增加一些"用户欣赏"但需求规格说明中并未涉及的新功能.经常发生的情况是用户并不认为这些功能性很有用,以致在其上耗费的努力"白搭"了.开发人员应当为客户构思方案并为他们提供一些具有创新意识的思路,具体提供哪些功能要在客户所需与开发人员在允许时限内的技术可行性之间求得平衡,开发人员应努力使功能简单易用,而不要未经客户同意,擅自脱离客户要求,自作主张.
同样,客户有时也可能要求一些看上去很"酷",但缺乏实用价值的功能,而实现这些功能只能徒耗时间和成本.为了将"画蛇添足"的危害尽量减小,应确信:你明白为什么要包括这些功能,以及这些功能的"来龙去脉",这样使得需求分析过程始终是注重那些能使用户完成他们业务任务的核心功能.
5. 过于精简的规格说明
有时,客户并不明白需求分析有如此重要,于是只作一份简略之至的规格说明,仅涉及了产品概念上的内容,然后让开发人员在项目进展中去完善,结果很可能出现的是开发人员先建立产品的结构之后再完成需求说明.这种方法可能适合于尖端研究性的产品或需求本身就十分灵活的情况.但在大多数情况下,这会给开发人员带来挫折(使他们在不正确的假设前提和极其有限的指导下工作),也会给客户带来烦恼(他们无法得到他们所设想的产品).
6. 忽略了用户分类
大多数产品是由不同的人使用其不同的特性,使用频繁程度也有所差异,使用者受教育程度和经验水平也不尽相同.如果你不能在项目早期就针对所有这些主要用户进行分类的话,必然导致有的用户对产品感到失望.例如,菜单驱动操作对高级用户太低效了,但含义不清的命令和快捷键又会使不熟练的用户感到困难.
7. 不准确的计划
据统计,导致需求过程中软件成本估计极不准确的原因主要有以下五点:频繁的需求变更、遗漏的需求、与用户交流不够、质量低下的需求规格说明和不完善的需求分析.
对不准确的要求所提问题的正确响应是"等我真正明白你的需求时,我就会来告诉你".基于不充分信息和未经深思的对需求不成熟的估计很容易为一些因素左右.要作出估计时,最好还是给出一个范围.未经准备的估计通常是作为一种猜测给出的,听者却认为是一种承诺.因此我们要尽力给出可达到的目标并坚持完成它.
6.需求分析人员和用户的合作关系
优秀的软件产品是建立在优秀的需求基础之上的.而高质量的需求来源于客户与开发人员之间有效的交流与合作.通常,开发人员与客户或客户代理人,如市场人员间的关系反而会成为一种对立关系.双方的管理者都只想自己的利益而搁置用户提供的需求从而产生摩擦,在这种情况下,不会给双方带来一点益处.
只有当双方参与者都明白要成功自己需要什么,同时也应知道要成功合作方需要什么时,才能建立起一种合作关系.由于项目压力与日渐增,所有风险承担者有着一个共同的目标这一点容易被遗忘.其实大家都想开发出一个既能实现商业价值,又能满足用户需要,还能使开发者感到满足的优秀软件产品.
软件客户需求权利书列出了十条关于客户在项目需求工程实施中与分析人员、开发人员交流时的合法要求.每一项权利都对应着软件开发人员、分析人员的义务.而软件客户需求义务书也列出了十条关于客户在需求过程中应承担的义务.如果愿意,可以将其作为开发人员的权利书.
客户有如下权利:
1:要求分析人员使用符合客户语言习惯的表达
需求讨论应集中于业务需要和任务,故要使用业务术语,你应将其教给分析人员,而你 不一定要懂得计算机的行业术语.
2:要求分析人员了解客户的业务及目标
通过与用户交流来获取用户需求、分析人员才能更好地了解你的业务任务和怎样才能使产品更好地满足你的需要.这将有助于开发人员设计出真正满足你的需要并达到你期望的优秀软件.为帮助开发人员和分析人员,可以考虑邀请他们观察你或你的同事是怎样工作的.如果新开发系统是用来替代已有的系统,那么开发人员应使用一下目前的系统,这将有利于他们明白目前系统是怎样工作的,其工作流程的情况,以及可供改进之处.
3:要求分析人员编写软件需求规格说明
分析人员要把从你和其他客户那里获得的所有信息进行整理,以区分开业务需求及规范、功能需求、质量目标、解决方法和其它信息.通过这些分析就能得到一份软件需求规格说明.而这份软件需求规格说明便在开发人员和客户之间针对要开发的产品内容达成了协议.软件需求规格说明书可以用一种你认为易于翻阅和理解的方式组织编写.要评审编写出的规格说明以确保它们准确而完整地表达了你的需求.一份高质量的软件需求规格说明能有助于开发人员开发出真正需要的产品.
4:要求得到需求工作结果的解释说明
分析人员可能采用了多种图表作为文字性软件需求规格说明的补充.因为如工作流程图那样的图表能很清楚地描述出系统行为的某些方面.所以需求说明中的各种图表有着极高的价值.虽然它们不太难于理解,但是你很可能对此并不熟悉.因此可以要求分析人员解释说明每张图表的作用或其它的需求开发工作结果和符号的意义,及怎样检查图表有无错误及不一致等.
5:要求开发人员尊重你的意见
如果用户与开发人员之间不能相互理解,那关于需求的讨论将会有障碍,共同合作能使大家"兼听则明".参与需求开发过程的客户有权要求开发人员尊重他们并珍惜他们为项目成功所付出的时间.同样,客户也应对开发人员为项目成功这一共同目标所作出的努力表示尊重与感激.
6:要求开发人员对需求及产品实施提供建议,拿出主意
通常,客户所说的"需求"已是一种实际可能的实施解决方案,分析人员将尽力从这些解决方法中了解真正的业务及其需求,同时还应找出已有系统不适合当前业务之处,以确保产品不会无效或低效.在彻底弄清业务领域内的事情后,分析人员有时就能提出相当好的改进方法.有经验且富有创造力的分析人员还能提出增加一些用户并未发现的很有价值的系统特性.
7:描述产品易使用的特性
你可以要求分析人员在实现功能需求的同时还要注重软件的易用性.因为这些易用特性或质量属性能使你更准确、高效地完成任务.例如,客户有时要求产品要"用户友好"或"健壮"或"高效率",但这对于开发人员来说,太主观了并无实用价值.正确的应是:分析人员通过询问和调查了解客户所要的友好、健壮、高效所包含的具体特性.
8:调整需求,允许重用已有的软件组件
需求通常要有一定的灵活性.分析人员可能发现已有的某个软件组件与你描述的需求很相符.在这种情况下,分析人员应提供一些修改需求的选择以便开发人员能够在新系统开发中重用一些已有的软件.如果有可重用的机会出现,同时你又能调整你的需求说明,那就能降低成本和节省时间,而不必严格按原有的需求说明开发.所以说,如果想在产品中使用一些已有的商业常用组件,而它们并不完全适合你所需的特性,这时一定程度上的需求灵活性就显得极为重要了.
9:获得满足客户功能和质量要求的系统
每个人都希望项目获得成功.但这不仅要求你要清晰地告知开发人员关于系统"做什么"所需的所有信息,而且还要求开发人员能通过交流了解清楚取舍与限制.一定要明确说明你的假设和潜在的期望.否则,开发人员开发出的产品很可能无法让你满意.
客户有下列义务:
1:给分析人员讲解你的业务
分析人员要依靠你给他们讲解的业务概念及术语.但你不能指望分析人员会成为该领域的专家,而只能让他们真正明白你的问题和目标.不要期望分析人员能把握你们业务的细微与潜在之处,他们很可能并不知道那些对于你和你的同事来说理所当然的"常识".
2:抽出时间清楚地说明并完善需求
客户很忙,经常在最忙的时候还得参与需求开发.但无论如何,你有义务抽出时间参与"头脑风暴"会议的讨论,接受采访或其它获取需求的活动.有时分析人员可能先以为明白了你的观点,而过后发现还需要你的讲解.这时,请耐心一些对待需求和需求的精化工作过程中的反复,因为它是人们交流中的很自然的现象,何况这对软件产品的成功极为重要.
3:准确而详细地说明需求
编写一份清晰、准确的需求文档是很困难的.由于处理细节问题不但烦人而且又耗时,故很容易留下模糊不清的需求.但是,在开发过程中,必须得解决这种模糊性和不准确性.而你恰是为解决这些问题作出决定的最佳人选.不然的话,你就只好靠开发人员去正确猜测了.在需求规格说明中暂时加上待定(to be determined, TBD也可采用汉语拼音略写"DQD:待确定")的标志是个不错的办法.用该标志可指明了哪些需要进一步探讨、分析或增加信息的地方.不过,有时也可能因为某个特殊需求难以解决或没有人愿意处理它而注上TBD标志.尽量将每项需求的内容都阐述清楚,以便分析人员能准确的将其写进软件需求规格说明中.如果你一时不能准确表述,那就得允许获取必要的准确信息这样一个过程.通常使用所谓的原型技术.通过开发的原型,你可以同开发人员一起反复修改,不断完善需求定义.
4:及时地作出决定
正如一位建筑师为你修建房屋,分析人员将要求你做出一些选择和决定.这些决定包括来自多个用户提出的处理方法或在质量特性冲突和信息准确度中选择折衷方案等.有权做出决定的客户必须积极地对待这一切,尽快做处理、做决定.因为开发人员通常只有等你做出了决定才能行动,而这种等待会延误项目的进展.
5:尊重开发人员的需求可行性及成本评估
所有的软件功能都有其成本价格,开发人员最适合预算这些成本(尽管许多开发人员并不擅长评估预测).你所希望的某些产品特性可能在技术上行不通,或者实现它要付出极为高昂的代价.而某些需求试图在操作环境中要求不可能达到的性能或试图得到一些根本得不到的数据,开发人员会对此作出负面的评价意见,你应该尊重他们的意见.有时,你可以重新给出一个在技术上可行、实现上便宜的需求,例如,要求某个行为在"瞬间"发生是不可行的,但换种更具体的时间需求说法("在50ms以内",但若没有准确的技术分析不能轻易下结论),这就可以实现了.
6: 划分需求优先级别
大多数项目没有足够的时间或资源来实现功能性的每个细节.决定哪些特性是必要的,哪些是重要的,哪些是好的,是需求开发的主要部分.只能由你来负责设定需求优先级,因为开发者并不可能按你的观点决定需求优先级.开发者将为你确定优先级提供有关每个需求的花费和风险的信息.当你设定优先级时,你帮助开发者确保在适当的时间内用最小的开支取得最好的效果.在时间和资源限制下,关于所需特性能否完成或完成多少应该尊重开发人员的意见.尽管没有人愿意看到自己所希望的需求在项目中未被实现,但毕竟是要面对这种现实的.业务决策有时不得不依据优先级来缩小项目范围或延长工期,或增加资源,或在质量上寻找折衷.
7:评审需求文档和原型
正如我们将在第1 4章讨论的,无论是正式的还是非正式的方式,对需求文档进行评审都会对软件质量提高有所帮助.让客户参与评审才能真正鉴别需求文档是否的确完整、正确说明了期望的必要特性.评审也给客户代表提供一个机会,给需求分析人员带来反馈信息以改进他们的工作.如果你认为编写的需求文档不够准确,就有义务尽早告诉分析人员并为改进提供建议.通过阅读需求规格说明,很难想象实际的软件是什么样子的.更好的方法是先为产品开发一个原型.这样你就能提供更有价值的反馈信息给开发人员,帮助他们更好地理解你的需求.必须认识到:原型并非是一个实际产品,但开发人员能将其转变、扩充成功能齐全的系统.
8:需求出现变更要马上联系
不断的需求变更会给在预定计划内完成高质量产品带来严重的负面影响.变更是不可避免的,但在开发周期中变更越在晚期出现,其影响越大.变更不仅会导致代价极高的返工,而且工期也会被迫延误,特别是在大体结构已完成后又需要增加新特性时.所以一旦你发现需要变更需求时,请一定立即通知分析人员.
9:应遵照开发组织处理需求变更的过程
为了将变更带来的负面影响减少到最低限度,所有的参与者必须遵照项目的变更控制过程.这要求不放弃所有提出的变更,对每项要求的变更进行分析、综合考虑,最后作出合适的决策以确定将某些变更引入项目中.
10:尊重开发人员采用的需求工程过程
软件开发中最具挑战性的莫过于收集需求并确定其正确性.分析人员采用的方法有其合理性.也许你认为需求过程不太划算,但请相信花在需求开发上的时间是"很有价值"的.如果你理解并支持分析人员为收集、编写需求文档和确保其质量所采用的技术,那么整个过程将会更为顺利.尽管去询问分析人员为什么他们要收集某些信息,或参与与需求有关的活动.
系统分析人员在开发过程中可能会遇到以下问题,一些很忙的客户可能不愿意积极参与需求过程,而缺少客户参与将很可能导致不理想的产品.故一定要确保需求开发中的主要参与者都了解并接受他们的义务.如果遇到分歧,通过协商以达成对各自义务的相互理解,这样能减少今后的摩擦.
7.需求文档
需求开发的最终成果是:客户和开发小组对将要开发的产品达成一致协议.协议综合了业务需求、用户需求和软件功能需求.就像我们早先所看到的,项目视图和范围文档包含了业务需求,而使用实例文档则包含了用户需求.你必须编写从使用实例派生出的功能需求文档,还要编写产品的非功能需求文档,包括质量属性和外部接口需求.只有以结构化和可读性方式编写这些文档,并由项目的风险承担者评审通过后,各方面人员才能确信他们所赞同的需求是可靠的.
你可以使用以下三种方法编写软件需求规格说明:
用好的结构化和自然语言编写文本型文档.
建立图形化模型,这些模型可以描绘转换过程、系统状态和它们之间的变化、数据关系、逻辑流或对象类和它们的关系.
编写形式化规格说明,这可以通过使用数学上精确的形式化逻辑语言来定义需求.
由于形式化规格说明具有很强的严密性和精确度,因此,所使用的形式化语言只有极少数软件开发人员才熟悉,更不用说客户了.虽然结构化的自然语言具有许多缺点,但在大多数软件工程中,它仍是编写需求文档最现实的方法.包含了功能和非功能需求的基于文本的软件需求规格说明已经为大多数项目所接受.图形化分析模型通过提供另一种需求视图,增强了软件需求规格说明.
如果解决了您的问题请!
如果未解决请继续扩展
怎样做软件的需求分析?软件需求的定义:
(1)用户解决问题或达到目标所需的条件或能力 。
(2)系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或能力 。
(3)一种反映上面(1)或(2)所描述的条件或权能的文档说明 。实通俗的讲,“需求”就是用户的需要,它包括用户要解决的问题、达到的目标、以及实现这些目标所需要的条件,它是一个程序或系统开发工作的说明,表现形式一般为文档形式 。
需求工程的定义:
需求分析的过程,也叫做需求工程和需求阶段,它包括了需求开发和需求管理两个部分 。需求开发是指从情况收集、分析和评价到编写文档、评审等一系列产生需求的活动,分为四个阶段:情况获取、分析、制订规格说明和评审 。这四个阶段不一定是遵循线性顺序的 , 他们的活动是相互独立和反复的 。需求管理是软件项目开发过程中控制和维持需求约定的活动 , 它包括:变更控制、版本控制、需求跟踪、需求状态跟踪等工作 。
需求开发与管理的一些方法:
(1)绘制关联图:绘制系统关联图是用于定义系统与系统外部实体间的界限和接口的简单模型 。
(2)可行性分析:在允许的成本、性能要求下,分析每项需求实施的可行性,提出需求实现相关风险,包括与其它需求的冲突,对外界因素的依赖和技术障碍 。
(4)系统原型:当用户自身对有的需求不十分清楚时,我们可以建立一个系统原型 , 用户通过评价原型更好地理解所要解决的问题 。。
(5)图形分析模型:绘制图形分析模型是编制软件需求规格说明重要手段 。它们能帮助分析人员理清数据、业务模式、工作流程以及他们之间的关系,找出遗漏、冗余和不一致的需求 。这样的模型包括数据流图、实体关系图、状态变换图、对话框图、对象类及交互作用图 。
(6)数据字典:数据字典是对系统用到的所有数据项和结构的定义 , 以确保开发人员使用统一的数据定义 。在需求阶段,数据字典至少应定义客户数据项,确保客户与开发小组是使用一致的定义和术语 。
需求管理的方法主要包括以下一些方面:
1)确定需求变更控制过程 。制定一个选择、分析和决策需求变更的过程,所有的需求变更都需遵循此过程 。
2)进行需求变更影响分析 。评估每项需求变更,以确定它对项目计划安排和其它需求的影响,明确与变更相关的任务并评估完成这些任务需要的工作量 。通过这些分析将有助于需求变更控制部门做出更好的决策 。
3)建立需求基准版本和需求控制版本文档 。确定需求基准,这是项目各方对需求达成一致认识时刻的一个快照,之后的需求变更遵循变更控制过程即可 。每个版本的需求规格说明都必须是独立说明 , 以避免将底稿和基准或新旧版本相混淆 。
4)维护需求变更的历史记录 。将需求变更情况写成文档,记录变更日期、原因、负责人、版本号等内容,及时通知到项目开发所涉及的人员 。为了尽量减少困惑、冲突、误传,应指定专人来负责更新需求 。
5)跟踪每项需求的状态 。可以把每一项需求的状态属性(如已推荐的,已通过的,已实施的,或已验证的)保存在数据库中,这样可以在任何时候得到每个状态类的需求数量 。
6)衡量需求稳定性 。可以定期把需求数量和需求变更(添加、修改、删除)数量进行比较 。过多的需求变更"是一个报警信号",意味着问题并未真正弄清楚 。
4.需求分析评价标准
(1)清晰:目前大多数的需求分析采用的仍然是自然语言 , 自然语言对需求分析最大的弊病就是它的二义性,所以开发人员需要对需求分析中采用的语言做某些限制 。例如尽量采用主语+动作的简单表达方式 。需求分析中的描述一定要简单,千万不要采用疑问句、修饰这些复杂的表达方式 。除了语言的二义性之外,注意不要使用行话,就是计算机术语 。需求分析最重要的是和用户沟通 , 可是用户多半不是计算机的专业人士 , 如果在需求分析中使用了行话,就会造成用户理解上的困难 。
(2)完整:需求的完整性是非常重要的,如果有遗漏需求,则不得不返工,在软件开发过程中,最糟糕的事情莫过于在软件开发接近完成时发现遗漏了一项需求 。但实际情况是,需求的遗漏是常发生的事情,这不仅仅是开发人员的问题,更多发生在用户那里 。要做到需求的完整性是很艰难的一件事情,它涉及到需求分析过程的各个方面,贯穿整个过程 , 从最初的需求计划制定到最后的需求评审 。
(3)一致:一致性是指用户需求必须和业务需求一致,功能需求必须和用户需求一致 。在需求过程中,开发人员需要把一致性关系进行细化,比如用户需求不能超出预前指定的范围 。严格的遵守不同层次间的一致性关系,就可以保证最后开发出来的软件系统不会偏离最初的实现目标 。
(4)可测试:一个项目的测试从什么时候开始呢?有人说是从编码完成后开始,有人说是编码的时候同时进行单元测试 , 编码完成后进行系统测试,这些结论都不完全正确 。实际上,测试是从需求分析过程就开始了,因为需求是测试计划的输入和参照 。这就要求需求分析是可测试的,只有系统的所有需求都是可以被测试的 , 才能够保证软件始终围绕着用户的需要,保证软件系统是成功的 。
什么是需求分析,其目标是什么?《软件工程》需求分析 , 也叫软件需求分析、系统需求分析或需求分析工程等,是开发人员经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求 , 将用户非形式的需求表述转化为完整的需求定义,从而确定系统功能的过程 。
需求分析的目标是把用户对待开发软件提出的要求或需要进行分析与整理,确认后形成描述完整、清晰与规范的文档 , 确定软件需要实现的功能 , 完成的工作 。此外,软件的一些非功能性需求、软件设计的约束条件、运行时与其他软件的关系等也是软件需求分析的目标 。

软件需求分析_软件的需求分析怎么写啊?

文章插图
扩展资料:
需求分析阶段分为四个方面:问题识别、分析与综合、制订规格说明、评审 。
1、问题识别:从系统角度来理解软件 , 确定对所开发系统的综合要求 , 并提出这些需求的实现条件,以及需求应该达到的标准 。这些需求包括功能需求、性能需求、环境需求、可靠性需求、安全保密需求、用户界面需求、资源使用需求、软件成本消耗与开发进度需求 。
2、分析与综合: 逐步细化所有的软件功能 , 找出系统各元素间的联系,接口特性和设计上的限制 , 分析他们是否满足需求,剔除不合理部分,增加需要部分 。最后综合成系统的解决方案,给出要开发的系统的详细逻辑模型(做什么的模型) 。
3、制订规格说明书: 编制文档,描述需求 。需求分析阶段的成果是需求规格说明书,向下一阶段提交 。
4、评审: 对功能的正确性 , 完整性和清晰性,以及其它需求给予评价 。评审通过才可进行下一阶段的工作,否则重新进行需求分析 。
参考资料来源:百度百科-需求分析软件开发过程中的需求分析与开发框架的区别需求分析奠定了软件工程和项目管理的基础 。我们在建造软件系统这座大厦的时候 , 如果需求分析的基础不够坚实和牢固,那么往往会导致软件系统问题百出,甚至被马上丢弃 。在建造软件系统的过程中,如果我们经常习惯地沿用一些不规范的方法,其后果便是产生一条鸿沟──开发者开发的与用户所想得到的软件存在着巨大的“期望差异” 。因此“需求”这个名词的定义不仅仅是从用户角度对系统外部行为的描述,以及从开发人员角度对系统内部特性的描述,其关键的一点是“需求”必须文档化 。
需求的类型
软件需求包括三个不同的层次──业务需求、用户需求和功能需求 。除此之外,每个系统还有各种非功能需求 。
业务需求(BusinessRequirement)表示组织或客户高层次的目标 。业务需求通常来自项目投资人、购买产品的客户、实际用户的管理者、市场营销部门或产品策划部门 。业务需求描述了组织为什么要开发一个系统,即组织希望达到的目标 。使用前景和范围(vision and scope)文档来记录业务需求,这份文档有时也被称作项目轮廓图或市场需求(project charter 或 market requirement)文档 。用户需求(UserRequirement)描述的是用户的目标,或用户要求系统必须能完成的任务 。用例、场景描述和事件响应表都是表达用户需求的有效途径 。也就是说用户需求描述了用户能使用系统来做些什么 。
功能需求(Functional Requirement)规定开发人员必须在产品中实现的软件功能 , 用户利用这些功能来完成任务,满足业务需求 。功能需求有时也被称作行为需求(behavioral requirement),因为习惯上总是用“应该”对其进行描述:“系统应该发送电子邮件来通知用户已接受其预定” 。功能需求描述是开发人员需要实现什么 。
非功能需求(Non-functional Requirement) 定义了软件产品为满足用户业务需求而必须具有的除功能需求以外的特性 。包括系统的完整性(联机帮助、 数据管理、用户管理、软件发布管理、在线升级等)、性能、可靠性、可维护性、可扩充性、对技术和业务的适应性等 。
需求分析的任务
1 解决的问题
1) 齐全、准确地找出目标系统全部的功能、性能、限制; 2) 找出全部的输入流、输出流; 3) 找出所有的加工;
4) 产生完整的分层的DFD、数据字典、加工的描述; 5) 补充的意见 。
2 综合要求
确定对系统的综合要求,系统功能要求,系统性能要求 , 运行要求,将来可能提出的要求 。
3 任务
图1为需求分析任务图,需求分析阶段要完成的具体明确的最终任务就是形成一份经开发方和用户认可或达成共识的软件需求分析文档(需求规格说明书、修改后的项目开发计划、初步的用户手册、确认测试计划、数据要求说明书) 。这个文档能清晰准确地说明系统将要开发什么,能够规定出详细的技术需求,包括所有面向用户、面向机器和其它软件系统的接口 。可以说需求文档在开发过程中一直起指导作用 。
为了更好地完成软件开发第一阶段的需求分析任务,提高质量,需求管理是必不可少的 。
需求管理的目的是在客户与开发方之间建立对需求的共同理解,维护需求与其他工作成果的一致性,并控制需求的变更,主要体现在跟踪和控制需求变更管理 。需求管理是开发工作有效进行的保证,是一种很高层次的系统行为,涉及整个开发过程和产品本身 。
需求分析的方法
需求分析方法由对软件问题的信息域和功能域的系统分析过程及其表示方法组成,大多数的需求分析方法是由信息驱动的 。信息域具有三种属性: 信息流、信息内容和信息结构 。
常用的需求分析方法有:面向数据流的结构化分析方法(SA),面向数据结构的Jackson方法(JSD),面向数据结构的结构化数据系统开发方法(DSSD),面向对象的分析方法(OOA)等 。选择那种方法要根据哪些资源在什么时间对开发人员有效,不能盲目套用 。这里着重阐述面向数据流的结构化分析方法(SA) 。
面向数据流的结构化分析方法
面向数据流的结构化分析方法(Structured Analysis,简称SA),是面向数据流进行需求分析的方法,是需求分析使用最多的方法之一 。SA也是一种建模活动,该方法使用简单易读符号,根据软件内部数据传递、变换的关系 , 自顶向下逐层分解,描绘出满足功能要求的软件模型 。适用于数据处理类型软件的需求分析 , 这一方法除了简单,容易掌握之外 , 还能和设计阶段的结构化设计(SD)衔接,从而取得良好的设计结果 。
自顶向下逐层分解的分析策略
SA方法的基本手段:“分解”和“抽象” 。这是系统开发技术中控制复杂性的两种手段 。它先将系统“抽象”成一个模型,此模型是有输入和输出并有系统名称的盒子,然后打开这个盒子,对它进行逐层分解 , 直到能被理解,可以实现为止 。因此分析的策略是自顶向下,逐层加细 , 由抽象到具体的过程 。如图2 。
结构化分析方法使用工具
SA方法利用图形等半形式化的描述方式表达需求,简明易懂,用它们形成需求规格说明书中的主要部分 。描述工具是
1) 数据流图:描述系统由哪几部分组成,各部分之间有什么联系等等 。2) 数据字典:定义了数据流图中每一个图形元素 。
3) 描述加工逻辑的结构化语言、判定表、判定树:详细描述数据流图中不能被再分解的每一个加工 。
由于分析中的主要依据是数据传递及数据变换所形成的数据流,所以结构化分析一般采用的方法是使用数据流图的分析方法,最终结果是产生需求规格说明书 , 该文档包括一套数据流图,对数据流图中的成分进行定义的一本数据字典及对加工逻辑的描述 。
结构化分析步骤
用结构化分析方法进行系统需求分析的具体步骤是:1) 了解当前系统的工作流程,获得当前系统的物理模型 。通过对当前系统的详细调查,了解当前系统的工作过程,同时收集资料、文件、数据、报表等,将看到的、听到的、收集到的信息和情况用图形描述出来 。也就是用一个模型来反映自己对当前系统的理解 , 如画系统流程图 。
2) 抽象出当前系统的逻辑模型 。物理模型反映了系统“怎么做”的具体实现 , 去掉物理模型中非本质的因素,抽取出本质的因素,构造出当前系统的逻辑模型,反映了当前系统“做什么”的功能 。
3) 建立目标系统的逻辑模型 。分析、比较目标系统与当前系统逻辑上的差别,明确目标系统到底要“做什么”,从而从当前系统的逻辑模型导出目标系统的逻辑模型 。
4) 作进一步补充和优化 。为了对目标系统做完整的描述,还需要对得到的逻辑模型做一些补充 。
说明目标系统的人机界面 。
说明至今尚未详细考虑的细节(包括出错处理、系统的启动与结束、系统的输入/输出和系统性能方面的需求等) 。
其他(系统特有的其他必须满足的性能和限制 , 也需要用适当的形式做出书面记录 。分析阶段结束时,系统分析员必须和用户再次认真地审查系统文件,争取在系统开始设计之前,尽可能地发现其中存在的一些错误并及时纠正,直至用户确认这个模型表达了他们的要求后,系统文件(软件需求规格说明书等)才作为用户和软件开发人员之间的“合同”而最后得到确定 。
结构化分析方法的优缺点
1) 优点: 结构化分析方法是软件需求分析中公认的、有成效的、技术成熟的、使用广泛的一种方法,它较适合于开发数据处理类型软件的需求分析,该方法利用图形等半形式化工具表达需求,简明易读,也易于使用,为后一阶段的设计、测试、评价提供了有利条件 。2) 缺点:① 传统的SA方法主要用于数据处理方面的问题,主要工具DFD体现了系统“做什么”的功能,但它仅是一个静态模型,没有反映处理的顺序,即控制流程 。因此,不适合描述实时控制系统 。② 上世纪60年代末出现的数据库技术,使许多大型数据处理系统中的数据都组织成数据库的形式,SA方法使用DFD在分析与描述“数据要求”方面是有局限的 , DFD应与数据库技术中的实体联系图(ER图)结合起来(如同IDEF0功能模型与IDEF1信息模型相结合一样) 。ER图能增加对数据存储的细节以及数据与数据之间,数据与处理过程之间关系的理解,还解决了在DD中所包含的数据内容表示问题,这样才能较完整的描述用户对系统的需求 。③ 对于一些频繁的人机交互的软件系统,如飞机订票、银行管理等系统,用户最关系的是如何使用它,输入命令、操作方式、系统响应方式、输出格式等都是用户需求的重要方面,DFD不适合描述人机界面系统的需求,SA方法往往对这一部分用自然语言作补充 。④ 描述软件需求的精确性有待提高 。5 需求的变更
在开发项目过程中,用户随时会提出一些新的需求,要求开发方解决 , 这些需求的提出,有时在开发阶段中有时在开发阶段后 。这种在需求分析的两个相邻子阶段中,或者在迭代周期的需求分析中,后一段或周期的需求分析结果与前一次不一致,我们把这种不一致称为需求变更 。产生需求变更的原因主要有以下几个方面:1) 在需求分析阶段,开发方与用户的沟通不够 。在需求分析阶段,开发方与用户没有很好的交流 , 开发方就根据用户提供的大概信息 , 自己推导出用户的需求 。通过这种需求分析得出的需求往往会和用户的实际需求相差甚远,导致用户提出更改需求 。2) 项目的实施周期过长 。随着时间的推移,用户对整个系统的了解也越来越深入 。他们会对模块的界面、功能和性能方面提出更高更多的要求 。3) 技术更新过快 。由于技术的快速更新, 企业可能引进一些新的设备,而这些设备可能就会与我们的目标系统有直接的关系,由于这一变化可能发生在解决用户原先问题之前或者之中,那么开发方不得不加入这一新的需求 。[3]
为了尽可能地避免发生需求变更 , 以及保证需求分析的高稳定性,可以采用以下方法:1) 分工明确,系统分析员和程序员各有不同的职责 。系统分析员处在用户和程序员之间,沟通用户和开发人员的认识和见解 。系统分析员一方面要协助用户对所开发的软件提出需求,另一方面还要和程序员充分交换意见,探讨其合理性和实现的可能性 。如图3所示,系统分析员在需求分析阶段起着重要的作用 。
2) 开发方与用户进行协作和交流 。在用户提出需求变更时系统分析员应该认真听取用户的要求并加以整理和分析 。分析需求变更的原因并提出可行的替代方案;同时向用户说明这些需求变更会对整个项目的开发带来的不良后果 。3) 合同约束 。由于需求变更可能会对整个项目产生影响,所以,开发方和用户在签定项目合同时,可以对需求变更增加一些相关的合同条款 。4) 建立需求文档并进行版本控制 。需求分析的最终成果是一份客户和开发方对所开发的产品达成共识的系统文档 。有了这份文档,即使开发方人员的角色有所变动 , 也不会对需求分析的前期工作有所影响 。对每次的需求变更都用一个新的版本来标识 。5) 需求评审和设立需求基线 。为了让开发方详细了解用户的需求,让不同人员从不同的角度对需求进行验证,作为需求的提出者(用户方),在需求评审过程中,往往能提出许多有价值的意见,同时,也是对需求进行最后确认的机会,可以有效减少需求变更的发生 。需求在通过正式评审和批准之后,应该确定需求基线 , 进一步的需求变更将在此基线的基础上,依照项目定义的变更过程进行 。设置需求基线可以将变更引起的麻烦减至最小 。
软件架构(software
architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计 。软件架构是一个系统的草图 。软件架构描述的对象是直接构成系
统的抽象组件 。各个组件之间的连接则明确和相对细致地描述组件之间的通讯 。在实现阶段 , 这些抽象组件被细化为实际的组件,比如具体某个类或者对象 。在面向
对象领域中,组件之间的连接通常用接口_(计算机科学)来实现 。
软件体系结构是构建计算机软件实践的基础 。与建筑师设定建筑项目的设计原则和目标,作为绘图员画图的基础一样,一个软件架构师或者系统架构师陈述软件构架以作为满足不同客户需求的实际系统设计方案的基础 。
软件构架是一个容易理解的概念,多数工程师(尤其是经验不多的工程师)会从直觉上来认识它,但要给出精确的定义很困难 。特别是 , 很难明确地区分设计和构架:构架属于设计的一方面,它集中于某些具体的特征 。
在“软件构架简介”中,David Garlan 和 Mary Shaw
认为软件构架是有关如下问题的设计层次:“在计算的算法和数据结构之外 , 设计并确定系统整体结构成为了新的问题 。结构问题包括总体组织结构和全局控制结
构;通信、同步和数据访问的协议;设计元素的功能分配;物理分布;设计元素的组成;定标与性能;备选设计的选择 。
但构架不仅是结构;IEEE Working Group
on Architecture 把其定义为“系统在其环境中的最高层概念” 。构架还包括“符合”系统完整性、经济约束条件、审美需求和样式 。它并不仅注
重对内部的考虑,而且还在系统的用户环境和开发环境中对系统进行整体考虑 , 即同时注重对外部的考虑 。
在Rational Unified Process 中,软件系统的构架(在某一给定点)是指系统重要构件的组织或结构,这些重要构件通过接口与不断减小的构件与接口所组成的构件进行交互 。
从和目的、主题、材料和结构的联系上来说,软件架构可以和建筑物的架构相比拟 。一个软件架构师需要有广泛的软件理论知识和相应的经验来事实和管
理软件产品的高级设计 。软件架构师定义和设计软件的模块化 , 模块之间的交互,用户界面风格,对外接口方法,创新的设计特性,以及高层事物的对象操作、逻辑
和流程 。
一般而言,软件系统的架构(Architecture)有两个要素:
它是一个软件系统从整体到部分的最高层次的划分 。
一个系统通常是由元件组成的 , 而这些元件如何形成、相互之间如何发生作用,则是关于这个系统本身结构的重要信息 。
详细地说,就是要包括架构元件(Architecture Component)、联结器(Connector)、任务流(Task-flow) 。
所谓架构元素,也就是组成系统的核心"砖瓦",而联结器则描述这些元件之间通讯的路径、通讯的机制、通讯的预期结果,任务流则描述系统如何使用这些元件和
联结器完成某一项需求 。
建造一个系统所作出的最高层次的、以后难以更改的,商业的和技术的决定 。
建造一个系统之前会有很多的重要决定需要事先作出 , 而一旦系统开始进行详细设计甚至建造,这些决定就很难更改甚至无法更改 。显然,这样的决定必定是有关系统设计成败的最重要决定,必须经过非常慎重的研究和考察 。
对于较大的通常应用应该使用框架,可能节省不少时间. 。能使你很轻松的开发出一款软件来 。
(软件开发一般比较会关注设计模式而不是架构设计)
软件的需求分析怎么写?。?/h3>【软件需求分析_软件的需求分析怎么写啊?】1. 引言
1.1 编写目的:编写此文档的目的是进一步定制软件开发的细节问题,便于用户与开发商协调工作.本文档面向的读者主要是项目委托单位的管理人员.希望能使本软件开发工作更具体.
1.2 项目背景
1.2.1项目委托单位:****公司
1.2.2开发单位:***公司
1.3 定义
1.4参考资料
2. 任务概述
2.1 目标:
<1> 决策支持:根据公司的要求及时提供所需报表及文件,并在适当时候对各部门领导给予销售及进货等方面的提示
<2>提高效率:利用软件进行管理,避免人工管理的失误以及 延迟性,从而实现高效率的管理.
2.2 运行环境:
<1> 硬件方面:Pentium级处理芯片
1兆显存的兼容显卡
256色,800*600的兼容显示器
标准兼容打印机
<2>软件方面: WIN95操作系统
2.3 条件与限制:
编程用计算机一台
完成期限2000/7/1
无资金供给
3. 数据概述
数据流程图如下:
3.1 静态数据:包括系统登录密码,各数据库所在位置,系统分析原始数据
3.2动态数据:包括各数据库内各项显示数据,用户登录信息,系统时间
3.3 数据库描述:
人事管理数据库:公司内人员的个人详细信息,包括档案信息
销售管理数据库:当日销售记录及以前的销售统计,用于销售分析
财务管理数据库:公司内部账目及收支情况详表
技术管理数据库:公司所需各技术档案的详细记录(包括文档)
3.4 数据字典:
<1>数据流词条描述:
1.数据流名:登录信息
来源:用户的输入
去向:系统内部检验部分
组成:用户名,密码
流通量:每次登录输入一次
2.数据流名:登录结果
来源:系统
去向:用户
组成:返回信息
流通量:每次登录返回一次
3.数据流名:输入修改信息
来源:用户
去向:系统判断部分
组成:根据各数据库内容而不同
流通量:依用户输入而定
4.数据流名:反馈信息
来源:系统判断部分
去向:用户
组成:系统经判断后发回的字符数据
流通量: 依系统当前信息而定
5.数据流名:识别信息
来源:系统内部检验部分
去向:系统判断部分
组成:系统各数据库的标识信息
流通量:用户每次输入流通一次
6.数据流名:处理信息
来源:系统判断部分
去向:各数据库处理部分
组成:读取/修改标识,读取/修改的变量名称
流通量:用户每次输入流通一次
7.数据流名:读取修改
来源:系统判断部分
去向:系统各数据库
组成:读取/修改标识,读取/修改内容
流通量: 用户每次输入流通一次
<2>数据文件词条描述:
1.数据文件名:人事数据
简述:存储人员信息
数据文件组成:人员的各项信息(以CString类型为主)
2.数据文件名:销售数据
简述:存储当日及从前的销售记录
数据文件组成:销售的各项信息
3.数据文件名:财务数据
简述:存储财务管理信息
数据文件组成:财务管理的各项记录
4.数据文件名:技术数据
简述:存储公司内部使用的技术档案信息
数据文件组成:技术档案名称,内容
<3>加工逻辑词条描述:
1.加工名:检验
简要描述:判断用户的许可性
输入数据流:登录信息
输出数据流:登录结果
加工逻辑:判断是否与系统内部用户信息相符合
2.加工名:判断
简要描述:判断用户的操作并进行相应的读取/存储工作
输入数据流:输入修改信息
输出数据流:反馈信息
加工逻辑:判断用户的操作->调用数据库->读取/修改->反馈
3.加工名:人事档案管理
简要描述:对人事数据库进行相应要求的操作,并与判断部分交互
输入数据流:处理信息,读取修改
输出数据流: 读取修改, 处理信息
加工逻辑:判断用户要读取/修改的内容->反馈用户所需信息
4.加工名:销售统计
简要描述:对销售数据库进行相应要求的操作,并与判断部分交互
输入数据流:处理信息,读取修改
输出数据流: 读取修改, 处理信息
加工逻辑:判断用户要读取/修改的内容->反馈用户所需信息
5.加工名:财务统计
简要描述:对财务数据库进行相应要求的操作,并与判断部分交互
输入数据流:处理信息,读取修改
输出数据流: 读取修改, 处理信息
加工逻辑:判断用户要读取/修改的内容->反馈用户所需信息
6.加工名:技术管理
简要描述:对技术统计数据库进行相应要求的操作,并与判断部分交互信息
输入数据流:处理信息,读取修改
输出数据流: 读取修改, 处理信息
加工逻辑:判断用户要读取/修改的内容->反馈用户所需信息
<4>源点及汇点词条描述:
名称:用户
简要描述:既是源点又是汇点,发出动作信息给"检验"和"判断"加工,通过交互界面接受反馈信息有关数据流:登录结果,登录信息,输入修改信息,反馈信息
数目:一个
4. 功能需求
4.1 功能划分
可细分为四部分:人事管理,销售管理,财务管理,技术档案管理
4.2 功能描述
<1>人事功能:
(1)能对公司内部的所有人员有关档案详细资料记录并保存 。
(2)能对数据库内人事档案的数据进行查阅和修改 。
(3)能按部门或姓名检索人员 。
(4)当某员工的雇用期限达到整年时,按时提醒 。
<2>销售统计功能
(1)按日对公司的销售情况进行统计,包括销售额\销售数量\各地区销售比例\不同销售方式的销售量比例以及销售毛利润情况
(2)制定销售情况的月报表\季报表以及年报表对销售情况进行分析,对不同销售人员的业绩进行评定
<3>财务管理功能
(1)协助财务人员进行计算机管理,对库存情况\进货情况\销货进行登录和输出
(2) 根据预设的库存情况提醒进货
(3) 对收款情况进行统计,在应收帐款达到预设值时进行提示
<4>技术管理功能
(1)对技术资料进行登录
(2)对维修记录进行登录和统计,按不同型号的机器进行故障整体分析,并作出分析报告
(3)对维修配件的需求进行管理并及时提示备货
5. 性能需求
5.1 数据精确度:因为此数据为公司内部数据,所以要求不能有误差
5.2 时间特性:当日销售统计要求有即时性,马上能反应出存货的问题;同时财务管理数据计算当前存货情况,并对进货情况进行估算
5.3适应性:此软件只在公司内部管理人员的机器上使用,因此不考虑适应性
6. 运行需求
6.1 用户界面:
屏幕格式:
(1)要求有菜单及工具栏以方便操作
(2)各数据库信息可在屏幕上直接修改
(3)各数据统计结果可在屏幕上显示
(4)进行系统分析后的结果在另一窗口中显示
报表格式:
(1)人事管理报表只要求有个人的普通数据
(2)销售统计报表要求可分别打印当日统计或之前的统计
(3)财务统计报表要求打印出存货及公司帐务详表
(4)技术管理报表要求可以分别打印技术档案总表和任一技术档案文档内容菜单格式:要求菜单项大致与WIN95标准相同,另外附加的功能做到新的单项中输入输出时间:年份以4位数字表示
6.2 硬件接口:需要标准打印机接口进行报表打印
6.3软件接口:Windows标准接口
7. 其他需求
可使用性:要求容易使用,界面友好
安全保密性:因本数据属于公司内部管理用关键数据,因此除公司管理人员外,其他人员不得访问.要求设有登录密码检验功能,并且此密码可以在以后进行修改
可维护性:要求本软件的维护文档齐全,便于维护