团队成员的责任 一、需求分析概述 什么是需求卖肉之人发问: 要啥。买肉之人回应: 要点肉。卖肉之人又问: 是啥肉? 是精肉还是五花肉。买肉之人回说: 是做饺子用的。卖肉之人说道: 那来点五花肉。问: 几斤?当打算去购买一辆汽车时, 需要具备这样一些条件, 即车子能够看光碟, 车子带有导航系统, 车子的价格处于适中的状态, 车子可以节省燃油, 以及车子拥有良好的刹车系统等。美国电气与电子工程师学会, 也就是IEEE, 把需求定义成这样: 用户求解问题时必须具备的种种条件, 抑或是能力。什么是软件需求关乎软件的需求, 乃是指用户针对软件提出来的, 具备功能性以及非功能性性质的要求, 前者进行了系统所做之事的定义, 后者则对系统工作之际的特性予以了定义。软件需求的定义用户为解决问题, 或达成目标, 所需要具备的条件, 或者能力。系统, 或者系统部件, 为满足合同, 以及标准, 和规范, 还有其它正式规定文档, 所必须拥有的条件, 或者能力。一种能够反映上述所说的, 那两个方面所描述的条件, 或是能力的文档说明。如何去理解上面的软件需求定义呢软件需求的定义涵盖两个方面, 一方面是从用户角度出发, 即系统的外部行为, 另一方面是从开发人员角度出发, 即系统的内部特性, 而其中的关键之处在于需求必须要文档化。二、什么叫做需求分析任务? 为何要开展需求分析? 好多大型应用系统走向失败, 追到最后竟然都归结于需求分析出了问题。要么是获取需求采用的办法不合适, 使得需求分析做得不到位或者不周全, 造成开发者频繁多次去做需求验证, 进而让设计、编写代码、测试没办法顺利向前推进要么是客户配合得不理想, 致使客户对需求内容不予以确认, 又或者客户需求不停地发生改变同样让设计、编写代码、测试没办法顺利推进下去。需求规格说明书, 是客户、软件开发人员、软件测试人员以及项目管理人员共同工作的基线, 是项目Alpha测试的准则, 也是项目Beta测试的准则, 是供方交付产品用以界定边界、标注范围维度时所依循确定界限层级之凭据法则, 是需方验收产品用以审核评定、检验核准其品质是否达标的依据凭证。需求分析, 通常要占用整个软件开发时间的30%左右, 或者是整个软件开发工作量的30%上下。需求分析阶段所出现的那些错误, 属于软件开发全过程程序步骤进程环节中的早期时段所出现的前期错误, 会给整个项目带来极大风险, 因为这些错误会在后续的设计以及实现过程中呈现出一种发散式外扩式的传播态势。因上述四项缘由, IT企业对需求分析极为看重, 一般会派遣经验最为丰富的人员去开展软件或项目的需求分析, 需求分析做些什么? 需求分析要怎么做?从概念上讲需求分析主要涉及以下三项活动或工作。三、为了获取需求, 要借助同用户交互沟通, 去收集用户针对新系统开展各项要求的内容, 那应该怎样采用办法去赢得用户需求呢?获取需求是否彻底与成功直接关系到软件开发的成败。获取需求为什么难?用户需求具备动态性, 也就是需求存在不稳定性, 在整个软件生命周期里, 应用软件的需求会跟着时间的推进而产生变化, 个别用户甚至会反复无常地表露出变化, 用户需求具有模糊性, 鉴于有些用户的业务素质并非很高, 业务流程也没有达到非。常规范的程度, 故而时常会出现需求表达不太清晰且不够明确的状况。软件问题的幽默画常用的获取需求的方法有哪些通常采用以下方法去获取用户需求1、访谈用户面谈、问卷调查、现场考察等1用户面谈一种理解业务功能和业务规则的最有效方法。面谈过程需要认真的计划和准备在面谈之前需要信息收集中的主要问题主题对用户来说的问题业务过程和操作是什么你要干什么业务过程应该怎样完成如何完成它或需要哪些步骤需要什么样的信息你要使用哪些信息你要使用什么样的表单或报告2问卷调查在完成了最初的面谈之后, 又予以了分析, 之后, 作为一项协作技术, 能够收到良好的效果。3现场观察商业过程和工作流程掌控用户实际运用一个系统的方式, 以及确切知晓用户所需的信息, 最为有效的办法乃是亲自去观察用户完成实际工作的具体情状。一般方法注意现场考察可能造成用户紧张。2、针对数据流展开, 从顶部开始, 朝着下方, 一步一步地进行精确细致的处理, 这是一种采取由顶级向底层, 一层一层予以细化这么一种方式的结构化分析。着手分析是从数据流图的输出端开始的, 这原因在于系统拥有基本功能, 而产生这些输出, 此基本功能是关键因素。决定必须具备最基本组成元素系统的因数据影响呈现含所涉功能与之数据结构构成, 是输出数据。3、简易的应用规格说明技术在前面的两种方法里头, 用户处于相对而言比较被动的状态。本技术, 它是一种朝着团队方向的需求获取办法, 还是一种居于主流地位的技术。它倡导用户跟开发者紧密地协作, 一起去标识问题, 进而提出相应的解决方案, 最终确定基本的需求。简易的应用规格说明技术流程它也不是万能药。但是它有以下优点4、快速原型法可运行的能用于示例主要作用体现目标体系的程序得以迅速造就, 对于需求获取一项技术最为精准、实用且强大的特性而言, 它是这样的存在。基本特性把软件意图以及要求获取过来, 其来源可是自身, 也可是软件项目发起人, 然后朝着明确有序推进, 从一开始模糊的那种状态, 这样的一个过程, 称作需求分析, 或者也叫问题分析。目前常用的方法有 结构化分析方法和面向对象分析方法。表达需求 编写需求规格说明书按照分析得出的结果, 运用规定好的规格描述模型, 或者运用规格描述语言, 去编写需求规格说明书。什么是需求规格说明使软件需求得以严谨地界定, 且把它予以书面化呈现的事物那便是需求规格说明。需求规格说明写什么内容可描述为具备特定功能所对应的规格说明, 有着关于性能方面的规格说明, 存在针对可靠性的规格说明, 还有涉及接口的规格说明, 诸如此类。仅限于针对功能规格说明而言, 要把它进行特别严谨的定义, 绝对不是一件简单容易的事情。撰写需求规格说明书以下是需求规格说明书需要撰写内容的例子1. 系统目标2. 新系统的业务需求适用于业务的构成, DFD新逻辑模型, 那种系统化的对象范围, 还有新规需求列表等。3. 新系统的数据需求表示实体关系的ER图, 以及彰显规范化成果的规范化数据项目表, 还有充当数据字典角色的数据项目定义书。4. 新系统的质量需求以及其他设计上的前提条件和制约事项需要按照要求, 对其与其他系统以及外部的接口需求, 进行描述, 还要描述监察和保密的需求、容量以及性能需求、备份以及恢复需求、移植需求、系统的扩展需求等内容。另外, 对系统再利用与其关联的部品化相关之方针, 加以描述, 同时也描述和质量特征中的功能性相关的前提, 或者特别之事, 以及与可靠性相关的前提或特殊事项, 和与可用性相关的前提或者特殊事项, 还有与效率性相关的前提或特殊事项, 以及与可维护性相关的前提或者特殊事项, 以及与可移植性相关的前提或者特殊事项。5. 平台硬件/软件/网络需求有关运行环境的需求 有关开发环境和手段的需求6. 费用对效果附录关于业务术语集方面, 存在DFD呈现出的物理模型, 以及DFD呈现出的逻辑模型, 其中包含保留的事项, 还有未决的事情。为什么描述需求规格说明比较困难等等。。谁负责编写需求规格说明书实施软件项目发起行为的人, 要把需求传递给别的人, 把软件开发托付给别的人。开发者, 在以确认发起者意图为目标时, 或者, 于开发面向市场的软件产品之际, 就得对该产品的功能与运行情况去进行清晰的表述。谁使用需求规格说明书用户检查开发人员是否真正理解了和正确表达了需求。需求规格说明书被依据, 设计人员由此展开设计工作, 还包括实现工作, 实现工作涵盖编写代码以及测试。进行检查的人员, 要去查看所做成的软件, 是不是能够符合规格说明, 这里面用户本身也是涵盖在内的。好的需求规格说明应满足什么条件 四、分析建模与规格说明现存的软件开发方法里, 结构化开发方法是最为成熟的, 同时也是应用最为广泛的方法, 其主要具备的特点是快速, 还有自然以及方便。结构化开发方法是由, 结构化分析方法, 也就是SA法, 以及结构化设计方法, 即SD法, 还有结构化程序设计方法, 也就是SP法, 共同构成的。结构化分析方法, 也就是SA法, 是一种面向数据流的需求分析方法, 它是在20世纪70年代末的时候, 由相关人员提出并发展起来的, 而且还得到了广泛应用。它适用于分析大型的数据处理系统, 尤其是企事业的业务管理系统。结构化分析方法会采用数据流图, 也就是DFD, 它属于关注某种构造方法的典型代表, 这种构造方法是数据流的构造方法。在面向对象方法出现之前就存在的 SA 方法, 虽然 DFD 未被 UML 采用, 然而, 鉴于它具备如下特性, 即便到了当下, 它依旧是一种具备效力的方法。SA法属于一种“建模”活动 , 这种活动主要依据软件内部的数据传递 , 以及变换关系 , 自顶向下进行逐层分解 , 进而描绘出满足功能要求的软件模型。建模模型, 是针对理解事物所做的一种抽象, 是关于事物的一种不存在歧义的书面描述。在软件系统进行结构化分析建模期间, 系统分析员针对软件系统, 需从多元角度, 也就是功能角度、数据角度以及行为角度, 抽取出目标系统具备的特性, 借助精确无比的表达方法, 像DFD、ER、STD、IPO、DD等等, 去构建系统的模型。结构化分析模型的组成结构化分析方法创建的几个主要模型及关键元素如下根据上述模型整理出软件需求规格说明书。基本思想分解对于一个具备复杂特性的系统而言, 为了能够将其复杂性降低至能够被掌控的程度, 那么可以把大问题拆解成若干个小问题, 之后再分别对这些小问题进行解决。各个击破抽象分解能够分层来展开, 也就是说, 首先去思索问题最为本质的属性, 暂且将细节给略掉, 接着再一层层地去添加细节, 一直到涉及最为详细的内容的地步, 这种借助最本质的属性来呈现一个系统的方法便是“抽象”。结构化分析工具-数据流图名称定义数据流图Data Flow DFD数据流图-符号 数据流图-数据传递数据流图-处理数据流图的作用 数据流图的特征 如何绘制数据流图1.用自然语言描述业务场景接单中心从〇〇公司接到了货物订单。订单内容为4套N型配电盘。接单中心接到订货之后, 开展了库存调查, 针对库存调查的情况, 给〇〇公司做出了报价回复, 给出了报价。因N型配电盘当下不存在库存, 故而系统自行朝着厂家发送了委托生产的请求。收到厂家交割的N型配电盘之后, 将其存入仓库。紧接着, 系统自行发出出库指令。随后, 物流中心把四套N型配电盘运送至〇〇公司。2.把握数据的产生和使用DFD是通过数据流来把握业务全貌的因此是重点要掌握的。从刚才的例子看数据的产生在以下两个地方接到定单中心的是顾客的订货请求, 对此进行回答的是价格。从厂家收到的是产品, 将其进行入库处理。数据的使用是在在给物流中心发出送货指示业务完了的地方。3.把握数据的存储紧接着, 梳理出诸如「接单数据」这般的数据存储, 以及像「库存数据」这类的数据存储, 把属于长期或者偶尔需要留存的数据于该处进行存放。4.列举出所需要的处理最后整理出和上述的13相关的处理完成DFD。绘制数据流图的注意事项 结构化分析的步骤案例下面以任课教师收到课表后, 就依据课表安排的教学周次, 向实验室管理部门申请实验室的使用, 通过这个例子, 来说明结构化需求分析的步骤。其手工操作的业务流程图如下构建DFD现物理模型通过对现实环境的调查研究获取当前系统的物理模型。条件是, 得让客户予以很好的协助, 将现有业务的工作流程, 毫无遗漏地给收集起来, 还有事务处理的手册, 现有系统的报表, 其画面、其文件以及数据库格式等。目的整理出现有业务的内容、作用以及业务上存在的问题点。在构建DFD现物理模型之际, 抽取出当下业务所运用的全部数据项, 把它们登记到数据字典当中, 有未使用过的数据项, 或者存在「同词异义」, 又或者出现「异词同义」的状况, 此阶段不进行整理, 径直登记到数据字典就行, 这些数据项皆是从现有系统朝着新系统转换进程里极为重要的信息。何为数据字典Data 简称DD 数据流图里出现的所有被命名的图形元素, 会以字典方式作为一个词条来定义, 这就是数据字典的作用, 能让每一个图形元素的名字都获得确切的解释。应用数据字典的一项关键目的在于, 处理当置身于系统开发进程期间所浮现的下述两个问题。“同词异义”和“异词同义”数据字典的记述事项构建DFD现逻辑模型把DFD现物理模型里, 关于那些实施业务的“物理上的要素”以及“非本质成分”去掉, 这些“物理上的要素”包括谁实施业务, 这里的谁可以是个人或者组织, 还包括现有系统, 同时还要去掉何时实施业务以及怎样实施业务, 这里的怎样实施业务涵盖手段或者媒介, 最终提炼出所谓的DFD现逻辑模型, 就此。明确系统的范围前提做好需求调查与整理。方式: 把需求借助自然语言或者条目列表予以整理。要是运用迭代过程模型, 像是敏捷开发这种来开展实施开发, 并且还得对功能需求排列优先顺序。No功能需求优先级备注实现任课教师根据课表创建实验教学申请并安排实验项目功能。实现任课教师向指定的实验室管理部门提交实验申请的功能。完成实验室管理人员, 依据任课教师递交的实验教学申请, 去编排实验室的功用。实现校历管理功能。用于创建实验教学申请。实现部门管理功能。用于创建实验教学申请、实验室管理等。实验室管理功能。用于编排实验室。实验设备管理功能。用于实验室管理。实现用户管理功能。用于系统登录和权限管理。实现系统登录功能。10实现课程类型、实验设备类型等基础信息的管理功能。构建DFD新逻辑模型这是重中之重前提确定好功能需求的范围。方法1.用分层次逐步细化求精的方式绘制DFD。实验教学申请系统的顶层DFD实验教学申请系统的第二层DFD实验教学申请系统中的1.创建申请的第三层DFD2.去针对, 绘制好的, 处于最底层的, 也就是最详细的DFD的各个要素, 展开必要的说明。对数据存储进行说明什么是IPOIPO被简称为输入(Input)/处理或者加工()/输出()图, 它是由美国IBM公司所提出的一种图形工具, 其有这样一些作用, 即能够方便地描绘出, 输入数据与处理或加工以及输出数据之间究竟是怎样的关系。在需求分析阶段它可以用来描绘数据流图中处理或加工的过程。在设计的阶段之中, 它能够被用以针对模块结构图里的每一个模块, 对其输入的数据, 对其输出的数据, 以及对其数据加工的情况, 展开说明。IPO的形式如何描述IPO对处理进行说明采用IPO形式描述“1.1新建申请”的处理过程3.将新产生的数据项追加到数据字典中。要把, 构建DFD新逻辑模型期间, 所产生的, 新的要素, 追加到, 下述数据字典里。数据项名称数据项含义别名数据项类型长度取值范围取值含义取值含义取值范围取值含义任课教师需要申请实验教学的任课老师任课老师合适的申请与课表安排的周次、星期、节次没有冲突的申请没有问题的申请与课表安排的周次、星期、节次没有冲突的申请实验室管理人员B负责为申请的实验进行实验室编排的实验室管理人员编排人员进行数据规范化的实施, 第五节所作的是详细说明, 绘制系统ER图这件事, 第六节所作的是详细说明, 要把规范化得出的结果反映到DFD之上呀。下图是还未实施数据规范化的DFD下图是实施数据规范化后的DFD撰写需求规格说明书, 其中指出在第三节的最后面存在着详细的说明, 关于五、数据规范化的相关询问, 即什么是数据规范化, 同时还问数据规范化的长处和短处究竟是什么。优点显示为, 数据在维护以及管理方面具备容易的特性。该同一数据结构亦即在众多层面当中展现出可以达成利用方面多样场合的情况, 并进而呈现出可被利用的状态。不足在于, 随着表结构数量渐渐增多, 管理负荷相应变重。要想得到一组关联信息, 就得逐一查看多个表结构, 如此一来, 获取的效率将会受到影响。如何实施数据规范化下面是目前使用的Word版实验教学申请表的模板。通过这个模板, 我们能够得到实验教学申请的数据结构, 如下: 因为存在重复的数据项, 所以其属于非规范型的对于含有重复数据项的非规范化的数据结构, 或其对应的表依次依据「第一范式」、「第二范式」 、「第三范式」来施行规范化。直至「第三范式」这种情况 , 便可实现数据结构、或者表当中不存在重复数据项的结果。针对下面的数据结构, 或者表, 依照上述步骤, 实施规范化, 该采取怎样的做法呢?通过第一范式化, 把下表里导出的数据项, 也就是「金额」以及「订单合计金额」给删除掉, 之后呢, 还要把重复的数据项, 像是「商品No」、「商品名」、「单价」、「数量」, 分解到另外的表当中去。第二范式化, 订单明细表含主键「商品No」, 此主键能够决定「商品名」以及「单价」, 所以要把它们分解, 分到另外的表当中去。处在一个特定的范式化进程里, 也就是第三范式化, 鉴于订单表之中, 除主键部分别存在的「客户名」以及「客户地址」, 它们单单由「客户代码」来决定, 所以呢, 要把这两者分解开来, 放置到另外一个表里面去。回到实验教学申请表的例子。依照上面所介绍的, 三个范式的要求, 那能够将上述格式的, 一个数据结构, 分解成如下五个数据结构。再次回到实验教学申请系统实验教学申请系统的第二层DFD将实验教学申请系统的数据存储, 依据上面所介绍的三个范式的要求, 予以规范化处理。六、实体-联系图 什么是ER图实体联系图, 又被称作ERD括弧型或者实体- 联系模型, 这家伙啊, 经由在调查分析用户需求之后形成, 把用户对于数据的要求, 凭借实体联系模型予以表达, 将这些要求明确地描述出来, 从而呈现出应用系统的概念数据模型。概念数据模型的实质, 在于对现实里的数据予以分析, 还要梳理其中的数据联系, 进而为后续的数据库设计奠定基础。概念数据模型的构成 实体 属性 联系什么是实体代表一个离散对象的是实体, 它是有着一系列不同性质或者属性的事务, 实体一般借助名词来表示, 像计算机、雇员、歌曲、数学定理等, 在ER模型里实体是用矩形框去表示的, 矩形框内部要写上实体名。什么是属性拥有特征的是实体, 实体所拥有的特征被称作属性, 一个实体有着多个属性, 在ER形式的模型里, 椭圆框借助无向边与实体相连接的方式用来表示属性, 椭圆框之内要写下属性的名称。什么是联系描述了如何使两个或者更多的实体相互产生关联, 这种关联能被大致地当作动词看待。比如说, 雇员与部门之间会产生一定性质的管理关联。在 ER 模型体系当中, 实体之间的联系是通过菱形框来进行表示的, 联系会依据恰当的含义来进行命名, 其名字会被书写在菱形框之间, 以此来表明该框与其他部分的关联。同时, 会使用无向连线把参与联系的实体矩形框分别与菱形框连接在一起, 并且在连线上标注出联系的具体类型, 像是 1 - 1、1 - N 或者 M - N 这些类型。如何绘制ER图根据上面所阐述的, 关于ER图的符号以及其对应的含义, 进而进行绘制, 最终获取到了实验教学申请系统的全体ER图, 也就是ER模型, 情况如下。上面绘制的整体ER模型之外, 通常呢还得另行去绘制各个实体所具备的属性, 比如, 实验教学申请实体有着这样一些属性, 如下。七、状态转换图 八、验证软件需求小结 需求分析任务1、确定对系统的综合要求2、分析系统的数据要求数据建模层次方框图层次方框图不但具备反映系统机能构成关联的能力, 而且拥有反映现实世界里信息构成关联的能力, 所以, 于数据建模期间能够被用以展现信息的构成关联。图它也是用来表示信息层次结构的图形工具。它可以指出信息是重复出现的或者是有条件出现的。图形包括3、在可行性分析的基础上分析系统的功能模型使得系统综合要求得以确定, 并且系统数据要求经分析亦顺利告终之后, 便能够导出详尽的系统功能模型。阶段性成果4、分析描述软件系统动态的行为模型确定系统的动态变化的方式采用状态转换图来描述。阶段性成果 状态转换图(STDState )行为模型与状态转换图有时候, 在进行需求分析期间, 为了能够体现事物不断变化的规律, 是需要去构建系统行为模型也就是动态模型的。系统的行为, 是由状态转换图, 通过描绘系统的状态, 以及引起系统状态转换的事件, 来进行表示的。例如上课铃响了同学们应该进入教室准备上课。存在表示状态转换的图, 该图还指出了, 作为特定事件所产生的结果, 系统是会去做哪些动作的, 这里比如说, 像是对数据进行处理。状态转换图-状态状态代表系统的行为模式。它规定了系统对事件的3种响应方式。三种状态类型初态、终态和中间态。状态图可表示循环运行过程以及单程运行过程。状态转换图-事件某个特定时刻发生的“事情”。它是对外界事件的抽象, 该外界事件能引起系统做出动作, 或者是能使系统从一个状态转换到另一个状态, 或者是两者兼具。它是控制信息状态是受事件触发的。状态转换图-状态转换图的符号于状态转换图里头, 初态借由实心圆予以表示 , 终态借助一对同心圆内圆乃实心圆加以呈现 , 中间状态凭借圆角矩形进行示意。 此圆角矩形能够借由两条横线将其划分戍上、中、下三个部分。上部是状态的名称 , 该部分属于必填项。中部为状态变量的名字以及值 , 此属于可选项。下部是活动表 , 同样属于可选项。两个状态之间带有箭头的连线称作状态转换 , 箭头明确了转换的方向。举例5、编写软件需求规格说明书并根据需要修改开发计划把前面所说的阶段性成果, 进行汇总, 变成“软件需求规格说明书”, 用来提交评审。在可行性分析的基础上较准确地估计系统的开发成本和进度。修改开发计划。通俗来讲呢, 需求分析的任务在于, 精准地去定义未来系统具备的目标究竟是什么, 还要判断为切实可以满足用户产生需求的状态状况时, 这个系统一定要执行的某种行为动作。然后务必以规范的既定形式, 确切地表述出用户所拥有的需求。需求分析阶段关键在于“理解”和“表达”。“理解”, 是开发人员针对系统需求所形成的理解, 在这一过程中, 其一要去挖掘用户需求, 然后呢, 其二, 在此需要做的是要对需求进行修正。“表达”是把理解借助逻辑模型描绘出来, 一方面要让民众看得明白, 另一方面要让设计工作者以及程序编写人员领会。需求分析建模需求分析过程需求分析所应具备的基本技能做好需求分析任务所必备的四项基本技能确定需求分析的方法论, 要是没确定需求分析的顺序、工作内容以及成果物, 依照自身方式开展需求分析, 就会出现有的项目成功而有的项目失败这种状况。确定方法论能够降低项目失败的风险。掌握图形表现工具, 绘制业务流程图、DFD、ER图以及UML图, 能减少文字描述所引发的模糊性。借助图和客户展开讨论与沟通, 能够更好地共有思考过程, 易于与客户达成一致。常出现于沟通过程的问题是, 用户参与不积极还不认真听我们的解决方案等, 要解决这些就得掌握与人沟通的技能, 要了解如客户业务规则、行业用语、竞争对手经营状况等这类本就该知道的行业及业务知识, 要是没有行业和业务知识就跟客户没共同语言, 也就没法了解客户真实需求, DFD和用例图的比较。如果想了解可行性分析可以看这篇文章针对软件工程的可行性分析, 软件可行性分析所具备的作用, 不学无术的博客在CSDN博客上所呈现的内容, 什么是可行性分析, 为什么要开展可行性分析, 可行性分析的主要任务究竟是什么, 可行性分析拥有哪些主要过程, 怎样去评估所提出的可行性方案, 进行可行性分析时经常会用到的工具有哪些, 可行性分析报告的内容要求以及写法说明又是什么, 首先, 什么是可行性分析, 是要检查并确定是不是值得为项目或者产品投入时间、金钱以及资源, 像这样的评估活动就被称作“可行性分析”, 其次, 为什么要进行可行性分析。于软件项目开展进程里, 只要资源以及时间不存在限制, 差不多所有项目皆是可行的。然而, 因受到资源与交付时间的限定, 致使软件系统的开发愈发困难。所以。