《软件工程导论》第3章需求分析

尤其是里面的E-R图、数据流图,状态装换图的画法,非常的重要!!!

第3章需求分析

为了开发出真正满足用户需求的软件产品,首先必须知道用户的需求。对软件需求的深入理解是软件开发工作获得成功的前提条件,不论人们把设计和编码工作做得如何出色,不能真正满足用户需求的程序只会令用户失望,给开发者带来烦恼。

需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么”这个问题。

需求分析的任务是还不是决定系统怎样完成它的工作,仅仅是确定系统必须完成哪些工作。

需求分析的四个准则:

虽然功能需求是对软件系统的一项基本需求,但却并不是唯一的需求。通常对软件系统有下述几方面的综合要求。

这方面的需求指定系统必须提供的服务。通过需求分析应该划分出系统必须完成的所有功能

这类需求说明系统对环境错误应该怎样响应。例如,如果它接收到从另一个系统发来的违反协议格式的消息,应该做什么?

接口需求描述应用系统与它的环境通信的格式。常见的接口需求有:用户接口需求;硬件接口需求;软件接口需求;通信接口需求。

设计约束或实现约束描述在设计或实现应用系统时应遵守的限制条件。常见的约束有:精度;工具和语言约束;设计约束;应该使用的标准;应该使用的硬件平台。

逆向需求说明软件系统不应该做什么。理论上有无限多个逆向需求,人们应该仅选取能澄清真实需求且可消除可能发生的误解的那些逆向需求。

应该明确地列出那些虽然不属于当前系统开发范畴,但是据分析将来很可能会提出来的要求。这样做的目的是,在设计过程中对系统将来可能的扩充和修改预做准备,以便一旦确实需要时能比较容易地进行这种扩充和修改。

任何一个软件系统本质上都是信息处理系统,系统必须处理的信息和系统应该产生的信息在很大程度上决定了系统的面貌,对软件设计有深远影响。因此,必须分析系统的数据要求,这是软件需求分析的一个重要任务。利用数据字典可以全面准确地定义数据,但是数据字典的缺点是不够形象直观。为了提高可理解性,常常利用图形工具辅助描绘数据结构。常用的图形工具有层次方框图、Warnier图。

综合上述两项分析的结果可以导出系统的详细的逻辑模型。通常用数据流图、实体-联系图、状态转换图、数据字典和主要的处理算法描述这个逻辑模型。

根据在分析过程中获得的对系统的更深入更具体的了解,可以比较准确地估计系统的成本和进度,修正以前制定的开发计划。

访谈是最早开始使用的获取用户需求的技术,也是迄今为止仍然广泛使用的需求分析技术。访谈有两种基本形式,分别是正式的和非正式的访谈。

当需要调查大量人员的意见时,向被调查人分发调查表是一个十分有效的做法。

在访问用户的过程中使用情景分析技术往往非常有效。所谓情景分析就是对用户将来使用目标系统解决某个具体问题的方法和结果进行分析。

情景分析技术的用处主要体现在下述两个方面。

结构化分析方法的实质:面向数据流自顶向下逐步求精进行需求分析的方法。通过可行性研究已经得出了目标系统的高层数据流图。

数据流图是帮助复查的极好工具,从输入端开始,分析员借助数据流图、数据字典和IPO图向用户解释输入数据是怎样一步一步地转变成输出数据的。这些解释集中反映了通过前面的分析工作分析员所获得的对目标系统的认识。

随着分析过程的进展,经过提问和解答的反复循环,分析员越来越深入具体地定义了目标系统,最终得到对系统数据和功能要求的满意了解。

面向数据流自顶向下求精过程:

简易的应用规格说明技术是为了解决使用传统的访谈或面向数据流自顶向下求精方法定义需求时,用户处于被动地位而且往往有意无意地与开发者区分“彼此”。由于不能像同一个团队的人那样齐心协力地识别和精化需求,这两种方法的效果有时并不理想,经常发生误解、还可能遗漏重要信息。为解决上述问题,提出面向团队的需求收集发;面向团队的需求收集法,称为简易的应用规格说明技术。提倡用户与开发者密切合作,共同标识问题,提出解决方案要素,商讨不同方案并指定基本需求。

简易的应用规格说明技术分析需求的典型过程如下:

快速原型就是快速建立起来的旨在演示目标系统主要功能的可运行的程序,快速原型应该具备的特性:

为了快速地构建和修改原型,通常使用下述3种方法和工具。

模型,就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。

为了开发复杂的系统,应从不同角度(模型)抽象出目标系统的特性(数据模型、功能模型、行为模型)

尽管目前有许多不同的用于需求分析的结构化分析方法,但是,所有这些分析方法都遵守4条准则。

3种建模的图形工具:

通过需求分析,除了创建分析模型之外,还应该写出软件需求规格说明书,它是需求分析阶段得出的最主要的文档。

通常用自然语言完整、准确、具体地描述系统的数据要求、功能需求、性能需求、可靠性和可用性要求、出错处理需求、接口需求、约束、逆向需求以及将来可能提出的要求。自然语言的规格说明具有容易书写、容易理解的优点,为大多数人欢迎和采用。

使用实体-联系图建立数据模型;实体-联系图简称E-R图(EntityRelationshipDiagram),ER图描绘的数据模型称为ER模型。

数据模型中包含3种相互关联的信息:

数据对象是对软件必须理解的复合信息的抽象。

总之,可以由一组属性来定义的实体都可以被认为是数据对象。

属性定义了数据对象的性质。必须把一个或多个属性定义为“标识符”,也就是说,当人们希望找到数据对象的一个实例时,用标识符属性作为“关键字”(通常简称为“键”)。

客观世界中的事物彼此间往往是有联系的。数据对象彼此之间相互连接的方式称为联系,也称为关系。联系可分为以下3种类型。

ER模型可以作为用户与分析员之间有效的交流工具。

例如,某学校教学管理E-R图:

请为某仓库的管理设计一个ER模型,该仓库主要管理零件的订购和供应等事项。仓库向工程项目供应零件,并且根据需要向供应商订购零件。“零件”的主要属性是:零件编号,零件名称,颜色,重量。“工程项目”的属性主要是:项目编号,项目名称,开工日期。“供应商”的属性主要有:供应商编号,供应商名称,地址。

数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。数据流图建立软件系统的功能模型。在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程,即使不是专业的计算机技术人员也容易理解它,因此是分析员与用户之间极好的通信工具。

数据流图的4种基本符号:

一个简单的数据流图:附加符号:

工厂采购部采购员每天需要一张订货报表,报表按零件编号排序,表中列出所有需要再次订货的零件。对订货零件列出下述数据:零件编号,零件名称,订货数量,目前价格,主要供应者,次要供应者。零件入库或出库称为事务,通过仓库CRT终端把事务报告给订货系统。当某种零件的库存数量少于库存量临界值时就应该再次订货。

从问题描述中提取数据流图的4种成分从上面对系统的描述可以知道“采购部每天需要一张订货报表”。“通过放在仓库中的CRT终端把事务报告给订货系统”,所以采购员是数据终点,而仓库管理员是数据源点。

再一次阅读问题描述,“采购部需要报表”因此必须有一个用于产生报表的处理。事务的后果是改变零件库存量,然而任何改变数据的操作都是处理,因此对事务进行的加工是另一个处理。注意,在问题描述中并没有明显地提到需要对事务进行处理,但是通过分析可以看出这种需要。

分析结果:源点:仓库管理员终点:采购员处理:处理事务、产生报表等数据流:事务、订货信息、订货报表等数据存储:订货信息、库存信息

数据流图中每个成分的命名是否恰当,直接影响数据流图的可理解性。因此,给这些成分起名字时应该仔细推敲。

数据流命名时应注意的问题

为“处理”命名时应注意的问题

状态转换图(简称为状态图)通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。此外,状态图还指明了作为特定事件的结果系统将做哪些动作。因此,状态图建立软件系统的行为模型。

软件行为模型:状态、事件、行为。

状态是任何可以被观察到的系统行为模式。

在状态图中定义的状态主要有:

在一张状态图中只能有一个初态,而终态则可以有0至多个。

状态图既可以表示系统循环运行过程,也可以表示系统单程生命期。

事件是在某个特定时刻发生的事情,它是对引起系统做动作或(和)从一个状态转换到另一个状态的外界事件的抽象。例:用户移动鼠标或单击鼠标等都是事件。

事件就是引起系统做动作或(和)转换状态的控制信息。

行为:进入某状态后所作动作

在状态图中,

活动表的语法格式如下:事件名(参数表)/动作表达式“事件名”可以是任何事件的名称。在活动表中经常使用下述3种标准事件:entry,exit和do。

活动表中的动作表达式描述应做的具体动作。

状态图中两个状态之间带箭头的连线称为状态转换,箭头指明了转换方向。状态变迁通常是由事件触发的,在这种情况下应在表示状态转换的箭头线上标出触发转换的事件表达式;如果在箭头线上未标明事件,则表示在源状态的内部活动执行完之后自动触发转换。事件表达式的语法如下:事件说明[守卫条件]/动作表达式事件说明的语法为:事件名(参数表)。

为了具体说明怎样用状态图建立系统的行为模型,下面举一个例子。

概念:数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合,半形式化方法表达。

数据字典的作用是在软件分析和设计的过程中给人提供关于数据的描述信息。

数据字典由以下4类元素的定义组成:典型的情况下,在数据字典中记录数据元素的下列信息:数据元素的别名就是该元素的其他等价的名字。出现别名的原因主要有下述三个原因:(1)对于同样的数据,不同的用户使用了不同的名字。(2)一个分析员在不同时期对同一个数据使用了不同的名字。(3)两个分析员分别分析同一个数据流时,使用了不同的名字。应该尽量减少出现别名,但是不可能完全消除别名。

定义数据字典的方法:对数据自顶向下分解。

4种由数据元素组成的数据的方式:

举例2:某程序设计语言规定,用户说明的标识符是长度不超过8个字符的字符串,其中,第一个字符必须是字母字符,最后的字符既可以是字母字符也可以是数字字符。标识符=字母字符+字母数字串字母数字串=0{字母或数字}7字母或数字=[字母字符|数字字符]

数据字典最重要的用途是作为分析阶段的工具。数据字典中包含的每个数据元素的控制信息是很有价值的。数据字典是开发数据库的第一步,而且是很有价值的一步。

在开发大型软件系统的过程中,数据字典的规模和复杂程度迅速增加,人工维护数据字典几乎是不可能的。

在开发小型软件系统时暂时没有数据字典处理程序,建议采用卡片形式书写数据字典,每张卡片上保存描述一个数据的信息。下面给出第2.4节的例子中几个数据元素的数据字典卡片,以具体说明数据字典卡片中上述几项内容的含义。

描述复杂的事物时,图形远比文字叙述优越得多,它形象直观容易理解。(1)用于建立功能模型的数据流图;(2)用于建立数据模型的实体-联系图;(3)用于建立行为模型的状态图。本节再简要地介绍在需求分析阶段可能用到的另外3种图形工具。

层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次结构。例如,描绘一家计算机公司全部产品的数据结构可以用下图表示。这家公司的产品由硬件、软件和服务3类产品组成,软件产品又分为系统软件和应用软件,系统软件又进一步分为操作系统、编译程序和软件工具等。

和层次方框图类似,Warnier图也用树形结构描绘信息,但是这种图形工具比层次方框图提供了更丰富的描绘手段。用Warnier图可以表明信息的逻辑组织,它可以指出一类信息或一个信息元素是重复出现的,也可以表示特定信息在某一类信息中是有条件地出现的。

IPO图是输入、处理、输出图的简称,它是由美国IBM公司发展完善起来的一种图形工具,能够方便地描绘输入数据、对数据的处理和输出数据之间的关系。

它的基本形式是在左边的框中列出有关的输入数据,在中间的框内列出主要的处理,在右边的框内列出产生的输出数据。用粗大箭头清楚地指出数据通信的情况。

IPO图的一个例子:改进的IPO图的形式:

需求分析阶段的工作结果是开发软件系统的重要基础,大量统计数字表明,软件系统中15%的错误起源于错误的需求。为了提高软件质量,确保软件开发成功,降低软件开发成本,一旦对目标系统提出一组要求之后,必须严格验证这些需求的正确性。一般说来,应该从下述4个方面进行验证。(1)一致性:所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾。(2)完整性:需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能。(3)现实性:指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的。(4)有效性:必须证明需求是正确有效的,确实能解决用户面对的问题。

至少必须从一致性、完整性、现实性和有效性这4个不同角度验证软件需求的正确性。那么,怎样验证软件需求的正确性呢验证的角度不同,验证的方法也不同。

验证需求的一致性当需求分析的结果是用自然语言书写的时候,除了靠人工技术审查验证软件系统规格说明书的正确性之外,目前还没有其他更好的“测试”方法。但是,这种非形式化的规格说明书是难于验证的,特别在目标系统规模庞大、规格说明书篇幅很长的时候,人工审查的效果是没有保证的,冗余、遗漏和不一致等问题可能没被发现而继续保留下来,以致软件开发工作不能在正确的基础上顺利进行。为了克服上述困难,人们提出了形式化的描述软件需求的方法。

验证需求的现实性为了验证需求的现实性,分析员应该参照以往开发类似系统的经验,分析用现有的软、硬件技术实现目标系统的可能性。必要的时候应该采用仿真或性能模拟技术,辅助分析软件需求规格说明书的现实性。

验证需求的完整性和有效性只有目标系统的用户才真正知道软件需求规格说明书是否完整、准确地描述了他们的需求。因此,检验需求的完整性,特别是证明系统确实满足用户的实际需要,只有在用户的密切合作下才能完成。然而许多用户并不能清楚地认识到他们的需要,不能有效地比较陈述需求的语句和实际需要的功能。只有当他们有某种工作着的软件系统可以实际使用和评价时,才能完整确切地提出他们的需要。使用原型系统是一个比较现实的方法,用户通过试用原型系统,能获得许多宝贵的经验,从而可以提出更符合实际的要求。

为了更有效地保证软件需求的正确性,特别是为了保证需求的一致性,需要有适当的软件工具支持需求分析工作。

(1)必须有形式化的语法(或表),因此可以用计算机自动处理使用这种语法说明的内容。(2)使用这个软件工具能够导出详细的文档。(3)必须提供分析(测试)规格说明书的不一致性和冗余性的手段,并且应该能够产生一组报告指明对完整性分析的结果。(4)使用这个软件工具之后,应该能够改进通信状况。

1977年美国密执安大学开发了PSL/PSA(问题陈述语言/问题陈述分析程序)系统。这个系统是CADSAT(计算机辅助设计和规格说明分析工具)的一部分。其中PSL是用来描述系统的形式语言,PSA是处理PSL描述的分析程序。

THE END
1.试举例简要说明如何开发新用户。[主观题] 试举例简要说明如何开发新用户。答案每种产品都有吸引新用户、增加用户数量的潜力使那些尚未使用本行业产品的人开始使用把潜在顾客转变为现实顾客。一个制造商可从三个方面找到新用户:通过市场渗透战略.转变未使用者如香水企业可设法说服不用香水的女性使用香水;通过市场开发战略进入新的细分市场如说服男性使用...https://www.shangxueba.cn/daxue/in7gg7a2.html
2.试举例简要说明如何开发新用户。试举例简要说明如何开发新用户。 参考答案:每种产品都有吸引新用户、增加用户数量的潜力、使那些尚未使用本行业产品的人开始使用,把潜在顾客转变为现实顾客。一个制造商可... 点击查看答案http://www.ppkao.com/wangke/daan/25b4cb79802b4c09a0d198068f2d5aa3
3.《软件工程导论》考研复试整理脚本必须从用户的观点来描述每个重要的功能序列,因此,脚本应该能够说明系统的一类重要功能或具体的使用方法。 【第5版】8、为什么说参数化类有助于提高可重用性? 在实际的应用程序中,有一些软件元素,从逻辑功能看,彼此是相同的,所不同的主要是处理的对象类型不同。参数化类就是使用一个或者多个类型去参数化一个类...https://www.jianshu.com/p/050697c84836
4.嵌入式开发学习总结——Linux服务器配置hzy428910interfaces = 192.168.16.177/24 //举例说明 wins support = yes //设置将samba服务器作为wins服务器,默认不使用 //wins服务器由微软开发,功能是将NetBIOS名称转换为对应的ip地址 username map = /etc/samba/smbusers //去掉前面的;号,用于用户映射 http://blog.chinaunix.net/uid-29709024-id-4310660.html
5.一文详解:如何找准产品各阶段的北极星指标如果你要开发一款APP,需要经历从想法-商业价值闭环-功能梳理-产品设计-产品架构-产品开发-产品测试-产品上线的过程。 又或者你要开一家特色面馆,需要经历从学会几道招牌面-客群筛选-选址租店面-设计装修-试营业-改善味道-正式营业的过程。 这个过程基本没有用户的参与,因此也不会使用6个标准来评判这个过程的北极星...https://www.niaogebiji.com/article-80463-1.html
6.Java语言程序设计试卷6套12、下列哪些语句关于内存回收的说明是正确的? (正确答案:B) A、程序员必须创建一个线程来释放内存; B、内存回收程序负责释放无用内存 C、内存回收程序允许程序员直接释放内存 D、内存回收程序可以在指定的时间释放内存对象 13、在 Java 中,用 package 语句说明一个包时,该包的层次结构必须是___。(正确答案:B...https://developer.aliyun.com/article/1431557
7.齐了!Data+AI的技术大佬1、了解新一代数据质量审查工具,让人快速看清数据质量,让机器自动发现问题 2、了解如何才能把数据采集的效率做好 谢凝 华为 技术专家 个人介绍:华为翻译中心技术专家,华为机器翻译产品和数据负责人,中国翻译协会翻译技术委员会副主任委员。于2006年加入华为,有丰富的机器翻译产品开发和数据构建经验。 https://hub.baai.ac.cn/view/32597
1.四种用户增长方法论渠道合作:与其他有用户流量的渠道合作,如与网红、博主合作,让他们推荐产品;或者与其他应用、网站进行合作,通过在对方平台上展示自己的产品或服务,如应用内的交叉推广,获取新用户。 四、数据驱动的用户增长 用户行为分析 收集用户数据:通过产品内置的分析工具(如 Google Analytics for websites、Firebase for mobile apps...https://blog.csdn.net/chc340121/article/details/144086771
2.APP用户增长策略:从零到无限大的秘密武器——APP用户增长技巧...1、明确目标:确定您的APP的目标是什么,是希望吸引新用户?还是希望提高现有用户的活跃度?明确目标有助于制定更具体、更有针对性的策略。 2、定位用户:了解您的目标用户是谁,并深入了解他们的需求和痛点,这有助于您在APP中提供更好的用户体验,从而吸引更多用户。 https://www.wenanmiao.com/24397.html
3.中等职业学校汽车运用与维修专业课程标准本课程是中等职业学校汽车运用与维修专业的一门专业核心课程。其功能是使学生掌握汽车发动机和底盘机械结构方面必要的基础理论知识和基本技能。它是汽车运用与维修专业的基础课程,也是学生学习其它后续专业课程作铺垫。 1.2设计思路 本课程的总体设计思路是遵循学以致用原则,参照汽车维修工国家职业标准,根据工作任务与职业能...http://qpzx.qpedu.cn/jhkx/kcgl/kcbz/249092.htm
4.听说科技隐私权政策听说科技希望通过本政策向您说明听说科技在向您提供产品或服务过程中可能会收集的信息(包括收集方式)、收集这些信息的用途、听说科技及您如何保护这些信息的安全等, 您使用听说科技产品或服务时,听说科技有权用数字代码、通用唯一标识符、cookies或其他技术确定进入服务的计算机以及其他智能或非智能终端设备。 听说科技有可...https://www.waiyutong.org/Policy/privacyPolicy.html
5.2022软件测试面试题大全(整理版)1000+面试题附答案详解,最全面...11、写出5个Loadrunner中常用函数,并对其中2个举例说明用法。 12、简述LoadRunner的工作原理? 13、什么是集合点?设置集合点有什么意义? LoadRunner 中设置集合点的函数是哪个? 14、HTML-based script与URL based script的脚本有什么区别? 15、如何设置LaodRunner才能让集合点只对一半的用户生效? https://maimai.cn/article/detail?fid=1700715497&efid=tA7eC1eCPIrzCZI7LISXLQ
6.史上最全软件笔试题目及答案Alpha测试(α测试)是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha测试不能由程序员或测试员完成。Alpha测试发现的错误,可以在测试现场立刻反馈给开发人员,由开发人员及时分析和处理。目的是评价软件产品的功能、可使用性、可靠性、性能和支持。尤其注重产品的界面...https://www.yjbys.com/qiuzhizhinan/show-502047.html
7.和你有关!《上海市加快经济恢复和重振行动方案》百问百答来了...目前上海市通信管理局督促行业推出惠企政策,督促各基础运营企业为新老中小企业用户提供免费体验、免费升速、资费优惠等不同的宽带和专线优惠政策,鼓励基础电信企业设计推广适合中小企业经营发展的产品和应用。在前期疫情期间推出免费提供在线会议、企业上云服务等帮扶措施的基础上,推动各企业将现有优惠措施延长至2022年10月...https://web.shobserver.com/staticsg/res/html/web/newsDetail.html?id=494188
8.需求分析报告(通用12篇)5)能够举例说明生物和生物之间的关系,包括种内关系和种间关系。 6)知道什么是种群,认识到种群的数量变化规律。 7)了解种群数量变化规律对人类生产实践活动的重要意义。 教学重点: 1)非生物环境(水、阳光、温度)对生物的影响。 2)保护色、警戒色、拟态等适应的方式。 https://www.ruiwen.com/word/xuqiufenxibaogao.html
9.开发者个人信息保护合规指引开发者接入穿山甲平台SDK产品前,应当详细阅读理解并同意穿山甲平台的用户服务协议、穿山甲平台隐私政策、《开发者个人信息保护合规指引》、具体SDK产品的隐私政策及其《SDK合规使用说明》等协议规范(前述协议规范以下统称为“平台规范”),并依据相关内容对开发者APP收集、存储、使用、共享等处理个人信息的情况及《隐私政策...https://www.pangle.cn/en/support/doc/60cee2eeecf02000460af4fb
10.第四章项目基本设置·REDCap最终用户指南(中文版)·看云当对话框出现时,即使在不是第一个表单的表单上输入新数据(即创建记录时),用户也会发现这种对纵向或多表单项目的干扰 8.10 数据输入触发器(在“项目设置”选项卡上的其他自定义设置中) 输入网址,无论何时创建或修改数据输入表或调查记录。REDCap将把数据发布到指定的位置。 8.11 数据输入触发器说明 数据输入触发器...https://www.kancloud.cn/xjtu_sph/redcap_user_guide/1345446