软件工程(三)-软件需求分析

任务

深入描述软件的功能和性能。
确定软件设计的约束和软件。
同它系统元素的接口细节。
定义软件的其它的有效性需求。
需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统的“做什么”的问题。

过程

1.问题的识别
从系统的角度来理解软件并评审软件范围是否恰当
确定对目标系统的综合要求,即软件的需求
提出这些需求实现条件,以及需求应达到的标准。
软件的需求包括:
(1).功能需求
(2).性能需求
(3).环境需求
(4).可靠性需求
(5).安全保密要求
(6).用户界面需求
(7).资源使用需求
(8).成本消耗需求
(9).开发进度需求
(10).预先估计以后系统可能达到的目标
问题识别的另一项工作是建立分析所需要的通信途径,以保证能顺利地对问题进行分析。

2.分析与综合
从信息流和信息结构触发,逐步细化所有的软件功能,找出系统各元素之间的联系。接口特性和设计上的约束,分析它们是否满足功能要求,是否合理。
常用的分析方法:
(1).面向数据流的结构化分析方法(SA)
(2).面向数据结构的Jackson方法(JSD)
(3).结构化数据系统开发方法(DSSD)
(4).面向对象的分析方法(OOA)

3.编制需求分析阶段的文档
(1).软件需求说明书
(2).数据要求说明书
(3).初步的用户手册
(5).修改、完善与确定软件开发实施计划

4.需求分析的评审
(1).系统定义的目标是否与用户的要求一致.
(2.系统需求分析阶段提供的文档资料是否齐全.
(3).文档中的所有描述是否完整、清晰、准确反映用户要求.
(4).与所有其他系统成分的重要接口是否都已经描述.
方法:必须从一致性、完整性、现实性和有效性等四个不同角度验证软件需求的正确性.

原则

1.必须能够表达和理解问题的数据域和功能域
2.按自顶向下、逐步分解问题
3.要给出系统的逻辑视图和物理视图

方法

1.结构化的分析方法。
结构化的分析方法是传统的分析法,它的好处是在需求阶段可以不需要精确地定义系统,只需要根据业务框架确定系统的功能范围,以及每个功能的处理逻辑和业务规则,功能需求规格书等。因为不需要精确描述,因此描述系统的方式比较灵活多样,可以采用图表、示例图、文字等等方式来描述系统。
2.面向对象的分析方法。
面向对象的分析方法的最大好处是在需求阶段,就能够非常精确地描述一个系统,采用程序语言的方式和最终用户交流(最终用户必须要熟悉这种语言),能够在项目一开始就发现很多问题,避免在开发的过程中出现需求的反复,而且在系统设计和开发阶段不需要最终用户参与。在实施上,一般可以采用场景、业务功能等方式来描述,比较适合于业务流程环节多的系统,或者软件产品的开发。但是,我们也要看到,在现实中,绝大多数的应用系统都很难在需求阶段就可以被精确地抽象化定义,所以这种方法的缺点和困难也是显而易见的:首先,用户要非常清楚地知道最终的业务系统应该是什么样,或者采用一种抽象的方式能够确定最终的应用系统;其次,因为最终用户不需要参与设计和开发阶段的工作,所以双方确定业务需求的过程也会比较长;同时,因为是精确描述,因此描述系统的语言是非常逻辑化的,一般通过某种方式可以使机器识别业务需求,采用这种方式写的业务需求是非常格式化的,一方面描述一个系统需要的信息非常多,可能使需求说明的篇幅非常长,不便于理解和阅读;另外由于通过抽象的方式来推演最终系统的运行方式,对业务人员的要求非常高。

问题

1.传统的软件开发模型的缺陷是什么?
答:传统软件开发一般采用瀑布式模型,缺陷是应变能力不强,无法再开发初期获得交付,不利于风险的回避 。
2.你认为一个系统分析员的理想训练和基础知识是什么?
答:系统分析员处在用户和高级程序员之间,负责沟通用户和开发人员的认识和见解,起着桥梁的作用。一方面要协助用户对所开发的软件阐明要求,另一方面还要与高级程序员交换意见,探讨用户所提要求的合理性以及实现的可能性。最后还要负责编写软件需求规格说明和初步的用户手册。

猜你喜欢

转载自blog.csdn.net/qq_41306240/article/details/82287839