笔记-分析设计阶段监理-22.1 分析设计阶段的系统建设任务

这章节实在要背诵,太重要了。

22.1 分析设计阶段的系统建设任务

22.1.1 需求分析的进入条件

业主单位与承建单位正式签订建设合同,并对初步的项目开发计划达成一致意见,即可进入需求分析阶段。

22.1.2 需求分析的目标

需求分析的目标是深入描述软件的功能和性能,确定软件设计的约束和软件同其他系统元素的接口细节,定义软件的其他有效性需求。

需求分析阶段研究的对象是软件项目的用户要求。一方面,必须全面理解用户的各项要求,但又不能全盘接受所有的要求;另一方面,要准确地表达被接受的用户要求。只有经过确切描述的软件需求才能成为软件设计的基础

通常软件开发项目是要实现目标系统的物理模型。作为目标系统的参考,需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统的“做什么”的问题。

22.1.3 软件需求分析的任务

软件产品或软件服务的开发始于业主单位的需要、期望和限制条件,需求开发过程识别这些需要、期望和条件,在特定的限制条件下把这些需要和期望转换成产品需求的集合,对这个产品需求集合进行分析,产生一个高层次概念的解决方案,进一步分解直到确定特定产品的构件为止。

需求开发的产品将成为软件设计的基础,需求开发的过程不仅涉及所有的业主单位的需要和期望,除了业主单位的需要和期望外,还可能从所选择的解决方案中派生产品和产品构件的需求。

需求开发的功能分析不同于软件开发中的结构化分析,不是假定面向功能的软件设计。功能分析的功能定义和逻辑分组,合并在一起成为功能体系结构。需求开发涉及对产品基本功能体系结构的进一步演变,这种基本功能体系结构把业主单位的需要和期望赋予到各个功能实体上。

对功能体系结构的细节层次可能需要不断地进行递归分析,直到细化程度足以推进产品的详细设计、采办和测试为止。

从软件产品支持、维护和使用的分析,还能派生出更多的功能需求和界面需求,在分析这些需求时需要予以注意的内容包括:限制条件、技术制约、成本制约、时间限制、软件风险、业主单位未明确(隐含)的问题,以及由开发者业务经验和能力引出的需求。这些分析对需求加以精练,进行派生,形成一个完备的逻辑实体。持续进行这些活动,可以确保需求始终得到恰当的定义。

22.1.4 需求分析阶段成果

在制定开发计划时应兼顾用户给定的要进度和经费要求,又要注意按照软件工程规定的程序和技术要求进行开发工作。软件需求规格说明应满足需求分析的完整性要求,并保证软件需求规格说明应满足需求说明中的所有功能,性能需求均是可实现的。阶段成果有:▲

(1)项目开发计划
(2)软件需求说明书
(3)软件质量保证计划
(4)软件配置管理计划
(5)软件(初步)确认测试计划
(6)用户使用说明书初稿

22.1.5 设计阶段的的进入条件

1.软件概要设计进入条件

(1)项目开发计划、质量保证计划、配置管理计划等配套计划通过评审并正式批准;
(2)软件需求规格说明书通过评审
(3)以软件需求规格说明书为核心的配置管理分配基线建立

2.软件详细设计进入条件

(1)软件概要设计说明通过评审;
(2)软件概要设计说明,外部接口设计己纳入配置管理受控库

22.1.6 软件设计的目标

根据软件需求,以及功能和性能需求,进行数据设计、系统结构设计和过程设计。数据设计侧重于数据结构的定义系统结构设计定义软件系统各主要成分之间的关系。过程设计则是把结构成分转换成软件的过程性描述。在编码步骤,根据这种过程性描,生成源程序代码,然后通过测试最终得到完整有效的软件。

从工程管理的角度来看,软件设计任务分两步完成,即:概要设计,将软件需求转化为数据结构和软件的系统结构详细设计,也就是过程设计。通过对结构表示进行细化,得到软件的详细的数据结构和算法

软件设计是后续开发步骤及软件维护工作的基础。如果没有设计,只能建立一个不稳定的系统结构。

22.1.7 软件设计的任务

软件概要设计是以需求分析所产生的文档为依据,着手解决实现“需求”的软件体系结构,简称软件结构。就像建筑工程中的盖大楼,需求分析主要是确定要盖满足什么样功能的大楼,而概要设计就是施工,盖起满足用户要求的大楼的框架。这一阶段确定软件结构的具体任务是将系统分解成模块,确定各模块的功能及调用关系,将用户的需求分配到适当的位置上去,得出系统的结构图。为了得到好的结构,需要一组标准化准则和工具,软件设计的基本原理、优化软件结构的准则及结构化设计方法在相应的软件工程化书籍中有详细的技术介绍。

软件详细设计就是要在概要设计的结果的基础上,考虑“怎样实现”这个软件系统,直到对系统中的每个模块给出足够详细的过程性描述。主要任务是:为每个模块确定采用的算法,选择某种适当的工具表达算法的过程,写出模块的详细过程性描述;确定每一模块使用的数据结构;确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其他模块的接口,以及模块输入数据、输出数据及局部数据的全部细节;为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试,模块的测试用例是软件测试计划的重要组成部分,通常应包括输入数据,期望输出等内容。

概要设计确定了系统的体系结构,即划分了模块,将每个模块的功能及其相互间的联系确定了下来。详细设计是解决如何实现每个模块功能的问题,即设计处理过程,构造模块的实现算法,给出明确的表达,使之成为编程的依据。描述算法除了流程图外,还有一些别的工具,如PAD图、PDL语言(伪码)、HIPO图等。

软件设计的基础首先是深刻理解模块、模块化、分解与抽象、信息隐蔽、模块独立性及其定性标准这些基本概念,以及由这些概念形成的软件结构设计优化准则所起的作用。

实际上,软件设计过程的前后活动是彼此支持的,同时贯穿于软件需求和软件编码之间。软件设计在选择解决方案时,可以运用原形设计作为充分掌握情况的手段,要充分考虑候选解决方案及其优缺点,应该确定关键需求、设计问题和限制条件,以便在分析各种候选方案时使用。

软件设计要考虑软件体系结构,合理的软件体系结构是提高软件可维护性和可移植性的基础。在软件设计中,对于是否选择使用商业软件成品,要结合成本、进度、性能和风险来考虑。

软件设计方案的选择准则应该具备实质意义上的区别点,能指示达到某个平衡的生存周期解决方案。一般地,这些准则包括有成本、进度、性能和风险等的度量,也包括可维护性和可移植性的考虑。同时也受到那些影响开发活动和产品生存周期的需求驱动。

软件也和硬件一样,它的质量是设计出来的,生产出来的。其中,设计对软件质量具有关键性的影响。设计的重要性可从图22.1看出,(a)为经历了设计步骤后的效果,在软件使用和维修阶段,软件的问题少;反之,(b)为跳过设计步骤,到了使用和维修阶段,软件问题成堆,到了不可收拾的地步。基于这种情况,监理应强调:软件设计未完成,不得转入软件编码阶段。

软件设计的重要性

良好的软件设计与所采用的软件设计方法、设计工具和设计准则有关。软件设计方法主要有面向数据流的设计和面向对象的设计。这些方法均有其优缺点和不同的应用领域。

软件设计监理的基本准则包括:审查提交的文档是否齐全审查文档编制与描述工具是否符合规范确定承办单位提出的软件总体结构设计是否实现了软件需求规格说明的要求,评价软件设计方案与数学模型的可行性,评价接口设计方案和运行环境的适应性,审查软件集成测试计划的合理性和完备性,审查数据库设计的完备性和一致性。并确定该阶段文档能否作为详细设计的依据决定可否转入详细设计阶段确认软件详细设计文档的内容符合软件编码的要求。

22.1.8 软件设计阶段成果

设计阶段完成时应编写的文档
(1)概要设计说明书
(2)数据库设计说明书
(3)用户手册
(4)软件概要设计说明书(数据库设计部分可单列一册)
(5)软件详细设计说明书
(6)软件编码规范
(7)集成测试计划

--------------本文结束 感谢您的阅读--------------