软件工程学系统分析

可行性研究分析

目标

用最小的代价在尽可能短的时间内确定所识别的问题是否有解,是在较高层次上以抽象的方式进行的系统分析和设计过程。

可行性研究的任务

进一步分析和澄清问题定义;

导出系统的高层逻辑模型;

探索若干可供选择的主要解法;

研究每种解法的可行性。

可行性研究的过程

复查系统规模和目标

研究当前正在运行的系统

建立新系统的高层逻辑模型

进一步定义问题

导出和评价供选择的解法,推荐行动方针

草拟开发计划(进度、人员、资源等)

编写文档并提交审查

系统流程图

系统流程图是概括地描绘物理系统的的传统工具,它用图形符号以黑盒方式描述系统的每个部件。 系统流程图表达的是信息在系统各部件间的流动情况,不是对信息进行加工处理的控制过程。

系统流程图由一系列符号组成,尽管一些符号与程序流程图的符号一致,但它却是物理数据的数据流程图而不是程序流程图。

符号:

(图片摘自百度百科)

四个分析方向

技术可行性(技术风险分析)技术解决方案的合理性和实用化程度 技术资源的可用性   参与人员的工作基础   硬件/软件的可用性

经济可行性(成本–效益分析)经济为本,运用投入产出的概念分析和指导软件工程的各种活动和环节。

用户操作可行性 用户类型  操作习惯   使用单位的计算机使用情况、制度

法律可行性(侵权和责任问题)

需求分析

对象

软件项目中的用户要求

特点

需求不都是很明显的,可能来自于多个源头;

内容和形式丰富,详细程度不同;

总在不断的发展变化中。

需求分析是一个不断认识和逐步深化过程

需求分析的原则:抽象、分解、多视点分析

基本任务:准确地定义新系统,回答系统必须"做什么"的问题,对目标系统提出完整、准确、清晰、具体的要求。

(1)需求分析任务

确定系统的综合要求

①功能要求 ②性能要求 ③环境要求 ④用户界面要求 ⑤将来可能提出的要求

分析系统的数据要求

导出系统的逻辑模型

修正项目开发计划

(2)需求分析的过程

需求分析过程的四个阶段

问题识别  

研究系统的可行性分析报告和软件项目实施计划; 从系统角度来理解软件,评审软件范围是否恰当; 通过调研确定目标系统的需求; 提出需求实现的条件以及应达到的标准。

分析与综合  

进行各种要求的一致性检查,综合归纳与整理;逐步细化所有的软件功能,分解数据域,分配各子功能,找出各元素间的联系、接口和限制;原则:以层次化的方式对问题进行分解和细化;综合成解决方案,给出详细的逻辑模型。

编制需求分析阶段的文档  

软件需求规格说明、数据要求说明书 、初步的用户手册 、测试计划 、修改和完善项目开发计划

需求分析评审

复查手段,需要确定:系统定义的目标是否与用户的要求一致; 主要功能是否包括在定义的软件范围内; 需求分析阶段的文档资料是否齐全; 文档的描述是否完整、清晰、准确; 与系统其它成分的接口是否都已描述; 有无遗漏、重复或不一致的地方……

(3)需求分析的方法

需求获取可能是软件开发中最困难、最关键、最易出错及最需要交流的方面。

软件需求的层次:①业务需求:反映组织或客户开展相关业务的工作流和业务规则,是对系统、产品高层次的目标要求。②用户需求:从用户角度描述系统功能性和非功能性要求。

访谈

最早使用的获取需求技术,包括正式和非正式两种形式 常用情景分析技术(用户扮演积极主动角色,演示系统行为)

面向数据流自顶向下求精

通过功能分解将数据流和数据存储定义到元素级,完成细化

快速建立软件原型

最准确、最有效、最强大的需求分析技术

一种有效驾驭风险的技术,通过原型使软件需求明确化。原型支持需求工程的需求获取和有效性验证两项活动,还可用于用户培训和系统测试。

运用原型的目的和方法不同,使用时主要采取以下两种策略

进化式开发(追加策略):目标是给出一个实用的系统,意味着必须从对用户需求把握最准的部分做起,优先处理这些部分;对把握程度较差的部分和模糊的需求稍后安排,可以在用户有明确需求之后再处理。比如进化式模型

抛弃式开发(废弃策略):目标是验证和导出需求,从理解得不够好的部分开始实现,从中发现问题。比如探索型模型、实验型模型

进化式开发要想最终成为实用的系统,必须和其它软件的要求一样遵循企业标准,应该是可靠的、高效的。抛弃式开发具有较短的生命期,从原型向正式系统的转换必须要快,不需要长期维护,稍差的系统性能和可靠性是可以接受的,只要对理解用户需求有帮助。

(4)软件需求的验证

需求分析工作是开发软件系统的重要基础,一旦对目标系统提出一组要求后,必须严格验证这些需求的正确性。从以下四个方面进行:

一致性:任何一条需求不能和其他需求互相矛盾

完整性:规格说明书应包括需要的每一项功能或性能

现实性:指定的需求用现有的硬件和软件技术可以实现

有效性:能解决用户面临的问题

分析建模与规格说明

采用抽象模型概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直至找到满足要求的所有可实现的功能为止。

最初只是着眼于数据流,自顶向下逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,给出系统的逻辑模型。

结构化分析方法(SA)

(1)数据建模

数据模型包括三种相互关联的信息:数据对象、描述对象的属性和对象间的关系。

需求分析阶段描述数据对象及之间的关系时,使用E-R图定义一个组织模型,称为“概念模型”。

实体的关联有三种:一对一 (1:1)、一对多(1:m)、多对多(n:m)。

(2)功能建模和数据流图

功能模型使用数据流图来表达系统内数据的运动情况,数据流的变换则用结构化英语、判定表与判定树来描述。

DFD(Data Flow Diagram)描述数据处理过程的图形工具,刻画出数据在系统内的变化。

1、数据流图元素

数据流:沿箭头方向传送数据的通道

数据源点(汇点):又称外部实体,表示数据的输入来源或处理结果要送往何处。它不需要以软件的形式进行设计和实现。

加工:以数据结构或数据内容作为加工对象,通常以动词短语命名,表明完成的是什么工作。

文件:保存数据的作用,称为数据存储。

2、数据流图层次结构

为了表达数据处理过程中的数据加工情况,需要采用层次结构的数据流图。 按系统的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系。 层次化的数据流图能十分清楚地表达和理解整个系统。

顶层图是一个高层的系统逻辑模型,封闭在外部实体之间。反映了目标系统要实现的功能以及系统与外界的交互关系。

中间层父图与子图的平衡原则 数据一致性:输入、输出数据流一致 加工一致性:子图不能超出父图的处理范围

底层

3、功能建模的步骤

①先找系统的源点与汇点,画出外部实体,确定系统与外界的接口; ②找出外部实体的输出数据流与输入数据流; ③从外部实体的输出数据流(源点)出发,按系统的需要,逐步画出一系列逻辑加工,直至找到外部实体所需的输入数据流(汇点); ④按上述步骤,从各加工出发,画出所需的子图。

4、绘制数据流图的原则

①数据流图上的图形符号只限于四种基本图形; ②数据流图的主图必须包括四种基本元素; ③每个元素必须有名字,命名应反映实际含义;④ 顶层数据流图的数据流必须封闭在外部实体之间; ⑤每个加工至少有一个数据输入流和一个输出流;⑥需按层为加工框编号,表明该加工所处层次和上下层的亲子关系(不反映处理顺序);⑦父图与子图的平衡:任何一个数据流子图必须与它上一层的一个加工对应,两者的输入数据流和输出数据流必须一致; ⑧初画时忽略琐碎细节,集中精力于主要数据流; ⑨数据流图说明系统“做什么”而非“如何做”,其中不可夹带控制流,但针对实时系统可以加入控制流,成为数据流图的扩展形式。

(3)行为建模

为了直观地分析系统的动作,从特定视点出发描述系统的行为,采用动态分析方法。 行为建模给出需求分析方法的操作原则,结构化分析方法的扩充版提供这种建模符号。

状态转换图(State Transition Diagram)

状态转换图是描述系统的状态(行为模式)如何响应外部事件(控制模式)进行推移的一种图形表示,从而描述系统的行为。

直观地捕捉到状态间的关系,容易建立分析工具; 如果系统比较复杂,可以将状态转换图分层表示。------>层次框图

Petri网

Petri网已广泛地应用于硬件与软件系统的开发中,适用于描述与分析相互独立、协同操作的处理系统,也就是并发执行的处理系统。 Petri网简称PNG(Petri Net Graph),是一种有向图,有两种结点: 位置:符号“○”,表示系统状态。 转移:符号 “|”,表示系统中的事件。 有向边“”表示向转移的输入或从转移的输出。

为了描述系统的动态行为,引入“标记”的概念,表明系统当前处于什么状态。

标记的游动,出现了“状态的迁移”,通过Petri网的执行完成系统及行为建模。

数据字典

与系统相关的所有数据元素的一个有组织的列表,以及精确、严格的定义,使用户和分析人员对输入、输出、存储成分和中间计算有共同的理解。

(1)数据字典内容

数据字典中所有的定义应是严密、精确的,不可有半点含糊,不可有二义性。包括:

词条的描述

数据字典将数据流图中的所有图形元素作为一个“词条”定义,使每一个图形元素都有一个确切的解释,包括:图形元素的名称、编号、别名、分类、描述、定义、位置等。

①数据流词条(来源、去向、组成等)

数据流是数据结构在系统内传播的路径,一个数据流词条应有以下几项内容:

②数据存储词条(组成、存储方式等)

数据存储是数据结构保存的地方,包括以下内容:

③数据元素词条(类型、长度、取值范围等)

数据元素是数据处理中最小的、不可再分的单位,它直接反映事物的某一特征:

④加工逻辑词条(编号、输入、输出、加工逻辑等)

加工比较复杂,加工的表达方式有结构化英语、判定表、判定树等,主要描述有:

数据结构的描述

数据流图中的数据流和数据存储都有一定的数据结构,必须以清晰、准确、无二义性的方式来描述数据结构。 复杂的数据由许多基本的数据元素组成,数据结构表示数据元素之间的逻辑关系,利用数据字典可以全面准确地定义数据结构。 数据字典的定义就是对数据自顶向下的分解,直至分解到不需要进一步定义。

数据元素组成数据的方式:①顺序:即以确定次序连接两个或多个分量; ②选择:即从两个或多个可能的元素中选取一个; ③重复:即把指定的分量重复零次或多次;④可选:一个分量是可有可无的(重复0次或1次)。

数据结构的图形表示方式

利用数据字典可以全面、准确地定义数据结构,但数据字典的缺点是不够形象直观,在描绘复杂的关系时,图形比文字叙述优越得多。 为了提高可理解性,常常利用图形工具辅助描绘数据结构。 常用的图形工具有层次方框图Warnier图。

基本加工的逻辑说明

对数据流图的每一个基本加工,必须有一个基本加工逻辑说明,满足以下要求:

①描述将输入数据流变换为输出数据流的加工规则;

②描述实现加工的策略而不是加工的细节;

③包含的信息应该是完备、有用、无冗余的。

目前用于描述加工逻辑说明的工具有以下3种:

结构化英语

结构化英语是一种介于自然语言和形式化语言之间的语言,用以消除在语言上的歧义。

结构化英语是一种伪码,它的词汇表由逻辑关系词、命令动词、数据字典中定义的名字和有限的自定义词等组成。

语言的正文用基本控制结构进行分割,加工中的操作用自然语言短语来表示。

三种基本结构:①简单陈述结构②判定结构③重复结构

判定表

如果数据流图的加工需要依赖于多个逻辑条件的取值,使用判定表来描述比较合适。

判定树

判定树也是用来表达加工逻辑的一种工具,有时它比判定表更直观。

树形分支表示条件选项的走向。

(2)数据字典作用

在分析阶段,帮助分析员组织有关数据信息,是与用户交流的有力工具,还能起备忘录的作用;

在设计阶段,可以根据它确定记录、文件或数据库的格式;

在实现阶段,可以根据数据字典确定数据描述;

投入运行后,可以清楚地告诉维护人员,具体的数据元素在系统中是怎样使用的。

(3)数据字典实现

数据字典是系统的一项基础工作,其实现因环境的不同而采用不同的实现方法。

早期在开发小型软件系统时,人们采用手工建立卡片形式建立数据字典。

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

  • 17
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值