软件工程之软件结构化分析
持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第27天,点击查看活动详情。
关于作者
- 作者介绍
🍓 博客主页:作者主页
🍓 简介:JAVA领域优质创作者🥇、一名在校大三学生🎓、在校期间参加各种省赛、国赛,斩获一系列荣誉🏆、阿里云专家博主、51CTO专家博主
🍓 关注我:关注我学习资料、文档下载统统都有,每日定时更新文章,励志做一名JAVA资深程序猿👨💻
本文将从几个方面来浅谈软件工程的知识,主要介绍结构化的分析,重点介绍了结构化分析概述、与用户沟通的方法、分析建模与规格说明、实体—关系图、数据流图、状态转换图、数据字典、结构化分析实例。
主要知识点:结构化分析过程包括问题定义、可行性研究和需求分析3个阶段。
重点:实体—关系图、数据流图、状态转换图、数据字典
难点:结构化分析
需求分析的四项主要任务:
- 确定对系统的综合要求
- 功能需求
- 性能需求
- 可靠性和可用性需求
- 出错处理需求
- 接口需求
- 约束
- 逆向需求
- 将来可能提出的要求
- 分析系统的数据要求
- 软件系统的本质是信息处理系统
- 通常采用建立数据模型的方法
- 导出系统的逻辑模型
- 综合上述两项分析的结果可以导出系统的详细的逻辑模型,通常用数据流图、实体-联系图、状态转换图、数据字典和主要的处理算法描述这个逻辑模型。
- 修正系统开发计划
- 根据在分析过程中获得的对系统的更深入更具体的了解,可以比较准确地估计系统的成本和进度,修正以前制定的开发计划。
需求—导致项目失败的罪魁祸首
- 根据Standish Group对23000个项目进行的研究结果表明,28%的项目彻底失败,46%的项目超出经费预算或者超出工期,只有约26%的项目获得成功。
- 而在于这些高达74%的不成功项目中,有约60%的失败是源于需求问题。
- 也就是说,有近45%的项目最终因为需求的问题最终导致失败。
- 在Standish Group的报告中总结了导致项目失败的最重要的8大原因中,有5个与需求相关:
- 不完整的需求(13.1%);
- 缺乏用户的介入(12.4%);
- 不实际的客户期望(9.9%);
- 需求和规范的变更(8.7%);
- 提供了不再需要的(7.5%)
- 缺乏资源(10.6%),没有执行层支持(9.3%),缺少规划(8.1%)
问题的根源是什么?
- 用户说的不是他想的:客户提供(陈述的需求)的需求并不是真实的需求,还需要作进一步的分析,以确定客户的真正需求和期望,接下来需要澄清并重新描述。可以这么说客户在理解基础业务过程和描述自己的需求方面有很大的差异。
- 需求分析方法有问题:系统开发人员使用低效的需求分析和项目管理方法。
- 共同责任强调不足:对客户和提供商在项目成功的共同责任方面强调不够。
需求分析方法—结构化分析
- 基于文本分析和规格文档图形建模表示法
- 结构化分析初期的模型:数据流图+E-R图
- 数据流图:体现了流程,但是以数据为中心的流程
- E-R图:体现了要存储的信息
- 数据字典:对数据、数据流的描述
数据字典:分析模型的核心,描述软件使用或产生的所有数据对象。
实体-关系图:描绘数据对象之间的关系,它是用来进行数据建模活动的图形,图中出现的每个数据对象的属性可以在“数据对象描述”中描述。
状态转换图:指明了作为外部事件结果的系统行为。为此,状态转换图描绘了系统的各种行为模式(称为“状态”)和在不同状态间转换的方式。状态转换图是行为建模的基础,在“控制规格说明”中包含了有关软件控制的附加信息。
数据流图:①指出当数据在软件系统中移动时怎样被变换;②描绘变换数据流的功能和子功能。数据流图是功能建模的基础,在“处理规格说明”中给出了对出现在数据流图中的每个功能的描述。其优缺点如下:
- ☻总体概念强,每一层都明确强调“干什么”,“需要什么”,“给出什么”。
- ☻可以反映出数据的流向和处理过程。
- ☻由于自顶向下分析,容易及早发现系统各部分的逻辑错误,也容易修正。
- ☻容易与计算机处理相对照。
- ☻不直观,一般都要在作业流程分析的基础上加以概括、抽象、修正来得到。
- ☻如果没有计算机系统帮助的话,人工绘制太麻烦,工作量较大。
与其它流程图的差别
与系统流程图的区别
系统流程图中不仅有数据流,还有物质流、资金流。 数据流程图仅以数据流的形态来反映一个组织中整个管理业务的过程。 与程序结构图的区别
程序结构图反映模块之间的控制关系,以及模块之间的调用关系,而数据流图则不反映控制关系、调用关系、控制流,只画数据流。
与程序流程图的区别
程序流程图中的处理框之间有严格的时间上的顺序,也就先执行哪个处理框,起始点以及终止点等。而数据流图只反映数据的流向、加工和必要的数据存储,它不反映加工的先后的时间顺序
实践
为了具体说明怎样用状态图建立系统的行为模型,下面举一个例子。下图所示为人们非常熟悉的电话系统的状态图。图中表明,没人打电话时电话处于闲置状态;有人拿起听筒则进入拨号音状态,这时电话的行为是响起拨号音并计时;如果拿起听筒的人改变主意不想打电话了,他把听筒放下(挂断),电话重又回到闲置状态;如果拿起听筒很长时间不拨号(超时),则进入超时状态……
主要内容—思维导图
❤️后语❤️
厂长写博客目的初衷很简单,希望大家在学习的过程中少走弯路,多学一些东西,对自己有帮助的留下你的赞赞👍或者关注➕都是对我最大的支持,你的关注和点赞给厂长每天更文的动力。
对文章其中一部分不理解,都可以评论区回复我,我们来一起讨论,共同学习,一起进步!