软件评审机制.doc_第1页
软件评审机制.doc_第2页
软件评审机制.doc_第3页
软件评审机制.doc_第4页
软件评审机制.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1. 软件评审概述1.1简介/软件评审 软件评审是以提高软件质量为目的的技术活动。缺乏质量概念的技术评审是一种拘于形式的为评审而评审的盲目工作。通常,把质量定义为用户的满意程度。为使用户满意,有两个必要条件:设计质量:设计的规格说要符合用户的要求。程序质量:程序要按照软件规格说明所规定的情况正确执行。与上述质量的观点相对应,软件的规格说明可以分为外部规格说和内部规格说明。外部规格说明是从用户角度来看的规格,包括硬件与软件系统设计(在分析阶段进行)、功能设计(在需求分析阶段与总体设计阶段进行),而内部规格说明是为了实现外部规格说明的更详细的规格,即程序模块结构与模块加工的设计(在总体设计和详细设计阶段进行)。因此,内部规格说明是从开发者角度来看的规格说明。将上述两个概念联系起来,则可以说明设计质量是由外部规格说明决定的,程序质量是由内部规格说明决定的。软件评审原理1.2评审的目的评审的目的是检验软件开发、软件评测各阶段的工作是否齐全、规范,各阶段产品是否达到了规定的技术要求和质量要求,以决定是否可以转入下一阶段的工作。1.3评审阶段的划分;1) 系统分析与设计;2) 软件需求分析;3) 软件概要设计;4) 软件详细设计;5) 编码和单元测试;6) 软件部件测试;7) 软件配置项测试;8) 软件系统测试;9) 系统验收。1.4评审的组织与管理1) 内部评审内部评审是由公司研发部门组织的评审2) 外部评审外部评审是由交办组织的评审,特殊情况下,交办方委托其他单位代理组织外部评审。2.评审内容/软件评审2.1设计质量设计质量的评审对象是在需求分析阶段产生的软件需求规格说明、数据要求规格说明,在软件总体设计阶段产生的软件总体设计说明书等。通常,需要从12个方面进行评审。(1)评价软件的规格说明是否合乎用户的要求。 (2)评审可靠性。 (3)评审保密措施实现情况。 (4)评审操作特性实施情况。 (5)评审性能实现情况。 (6)评审软件是否具有可修性。 (7)评审软件是否有可扩充性。 (8)评审软件是否具有互换性。 (9)评审软件是否具有可移植性。 (10)评审软件是否具有可测试性。 (11)评审软件是否具有复用性。 (12)评审软件是否具有互连性。2.2程序质量的评审内容程序质量评审着眼与软件本身的结构、与运行环境的接口、变更带来的影响而进行的评审活动。通常它是从开发者的角度进行评审,直接与开发技术有关。(1) 软件的结构。为了使得软件能够满足设计规格说明中的要求,软件的结构本身必须是优秀的。功能结构。在软件的各种结构中,功能结构是用户惟一能见到的结构。因此,功能结构可以说是联系用户和开发者的规格说明,它在软件的设计中占有极其重要的地位。软件功能的本质是把输入信息变换为输出信息。因此,在讨论软件的功能结构时,必须明确软件的数据结构。需要检查的项目有以下几项:数据结构、功能结构、数据结构和功能结构之间的对应关系。功能的通用性。在软件的功能结构中,某些功能有时可以作为通用功能反复出现多次。从功能便于理解、增强软件的通用性及降低开发的工作量等观点出发,希望尽可能多地使功能通用化。实现功能通用化的最一般方法是通过提取公用功能来实现通用模块化。而进一步的功能通用化方法就是信息隐蔽或数据抽象。它的基础就是抽象数据类型。在实现功能通用性方面,检查项目是:抽象数据结构:包括抽象数据的名称和含义、抽象数据构成元素的定义。抽象功能结构:包括中的抽象数据进行操作的各个功能的一览表、上述各功能的定义及各个功能之间的关系。(2)与运行环境的接口。运行环境包括硬件、其他软件和用户。与运行环境的接口应设计得较理想,要预见到环境改变,并且当一旦要变更时,应尽量限定其变更范围和变更所影响的范围。主要检查项目如下:与其他软件的接口:包括与上层软件的接口,如与操作系统等控制该软件的那些软件的接口;与同层软件的接口,如通过文件连接起来的那些软件的接口;与下层软件的接口,如编译程序与作为其输入的源程序之间的接口。与硬件的接口:包括与硬件的接口约定(即根据硬件的使用说明等所做出的规定)和硬件故障时的处理和超载时的处理。与用户的接口。2.3模块的层次 模块的层次就是指程序模块结构。由于模块是功能的具体体现,所以模块层次应当根据功能层次来设计。模块层次中保有一部分功能层次,但模块层次并不全与功能层次系统,重要的是应明确模块层次与功能层次之间的关系。为此,要检查以下项目。1)模块层次:模块层次的定义,包括各层次的含义、各层次物理容量的上限;模块的层次结构,包括各模块间的联系、各模块与层次的对应关系。2)与功能层次的对应关系:功能与模块的对应关系;功能层次与模块层次的匹配程度。2.4模块结构 以上所述的模块层次结构是模块的静态结构,现在要检查模块间的动态结构。模块分为处理模块和数据模块两类。模块间的动态结构也与这些模块分类有关。对这样的模块结构进行检查的项目有以下几项。1)控制流结构:这种结构规定了处理模块与处理模块之间的流程关系。因此,要检查处理模块之间的控制转移关系和控制转移形式(调用方式)。2)数据流结构:这种结构规定了数据模块是如何被处理模块进行加工的流程关系。因此,要检查处理模块与数据模块之间的对应关系和处理模块与数据模块之间的存取关系(建立、删除、查询、提取、修改等)。3)模块结构与功能结构之间的对应关系:包括功能结构与控制流结构的对应关系和功能结构与数据流结构的对应关系。4)每个模块的定义:包括功能,输入与输出数据。3.5处理过程的结构处理过程是指模块划分到最底层的那些模块的实现方式,也就是最基本的加工逻辑过程。对它的检查项目有以下几项。1)要求模块的功能结构与实现这些功能的处理过程的结构应明确对应。2)要求控制流应是结构化的。3)数据的结构与控制流之间的对应关系应是明确的,并且可依这种对应关系来明确数据流程的关系。4)用于描述的术语标准化。3.软件阶段评审3.1需求评审3.1.1需求评审的概述1)软件需求是软件开发的最重要的一个步骤,需求的质量很大程度上决定了项目质量或产品质量。2)需求评审是所有的评审活动中最难的一个,也是最容易被忽视的一个评审。评审内容:软件需求说明书是否覆盖了用户的所有要求(用户需求调研报告,软件需求说明书);软件需求说明书和数据要求说明书的明确性、完整性、一致性、可测试性、可跟踪性(软件需求说明书 数据流图 数据字典);项目开发计划的合理性(用户方 公司技术委员会 项目组等);文档是否符合有关标准规定。3.1.2如何做好需求评审1)分层次评审用户的需求层次目标性需求:定义了整个系统需要达到的目标功能性需求:定义了整个系统必须完成的任务(中层管理人员关注)操作性需求:定义了完成每个任务的具体的人机交互(具体操作人员关注)2)正式评审与非正式评审结合正式评审:开评审会,将需求涉及到人员集合在一起,并定义好参与评审人员的角色和职责非正式评审:不需要将人员集合在一起,通过电子邮件、网络聊天等多种形式。3)分阶段评审在需求形成的过程中进行分阶段的评审,而不是在需求最终形成后再进行评审。将原来需要进行的大规模评审拆分成各个小规模的评审。降低了需求返工的风险,提高了评审的质量。4)精心挑选评审人员需求评审可能涉及的人员:需方:高层管理人员,中层管理人员、具体操作人员、IT主管、采购主管。供方:市场人员、需求分析人员、设计人员、测试人员、实施人员、项目经理等等。这些人员所处的立场不同,对同一个问题的看法是不相同的,不同的观点可能形成互补的关系。要保证不同类型的人员的都要参与进来,否则很可能会漏掉了很重要的需求。不同类型的人员中要选择那些真正和系统相关的,对系统有足够了解的人员参与进来,否则使评审的效率降低。5)对评审员进行培训很多情况下,评审员是领域专家而不是进行评审活动的专家,没有掌握进行评审的方法、技巧、过程等,需要培训。对于主持评审的管理者也需要进行培训,使参与评审的人员能够围绕评审的目标来进行,能控制评审节奏,提高评审效率。6)充分利用需求评审检查单需求检查单:需求形式检查单和需求内容检查单。需求形式检查:由QA人员负责,主要是针对需求文档的格式是符合质量标准。需求内容检查:是由评审员负责,主要检查需求内容是否达到了系统目标、是否有遗漏、是否有错误等等。检查单可以帮助评审员系统全面地发现需求中的问题,检查单随着工程经验的积累逐渐丰富和优化。7)建立标准的评审流程需求评审需要建立正规的需求评审流程,按照流程中定义的活动进行规范的评审过程。8)做好评审后的跟踪工作根据评审人员提出的问题进行评价:确定那些问题必须纠正(给出理由与证据):书面的需求变更申请,进入需求变更的管理流程,并确定变更的执行。在变更完成后,进行复审。切忌评审完毕后,没有对问题进行跟踪,而无法保证评审结果的落实,使前期的评审努力付之东流。9)充分准备评审评审质量与评审会议前的准备活动关系密切。常见问题:需求文档在评审会议前并没有提前下发给参与评审会议的人员,没有留出更多的时间让参与评审的人员阅读需求文档。没有执行需求评审的进入条件,在评审文档中在大量的低级的错误或者没有在评审前进行沟通,文档中存在方向性的错误。评审准备,应当定义一个检查单,在评审之前对照检查单落实每项准备工作。3.2概要设计评审开始时间:软件概要设计结束后评审内容:1) 总体结构2) 外部接口3) 主要部件功能分配4) 全局数据结构5) 各主要部件之间的接口一般应考察以下几个方面:1) 概要设计说明书是否与软件需求说明书的要求一致2) 概要设计说明书是否正确、完整、一致3) 系统的模块划分是否合理4) 接口定义是否明确5) 文档是否符合有关标准规定软件产品概要设计评审报告中文名称英文名称英文简称版本项目时间 年 月 日 至 年 月 日评审状态初审复审评审会成员技术评估评审会结论:评审组长签名: 日期: 年 月 日3.3详细设计评审开始时间:软件详细设计阶段结束后一般应考察以下几个方面:1)详细设计说明书是否与概要设计说明书要求一致 2)模块内部逻辑结构是否合理,模块之间的接口是否清晰 3)数据库设计说明书是否完全,是否正确反映详细设计说明书的要求 4)测试是否全面、合理 5)文档是否符合有关标准规定评审报告项目名称项目编号评审日期评审性质评审 复审阶段名:(请在需要评审的内容左侧“ ”内打“ ”) 合同评审 立项 开发计划 需求规格分析 概要设计 详细设计 编码 测试 验收 变更评审评审材料: 概要设计说明书评审内容: 根据评审材料概要设计说明书以及系统开发已经完成的模型,对总的监控调度中心子项目的概要设计工作进行评审,主要从包括几个方面: 可追溯性:确认该设计是否覆盖了所有已确定的软件需求,且可追溯到某一项目需求; 接口:确认该软件的内部接口与外部接口是否已经明确定义; 风险:确定该设计在现有技术条件下和预算范围内是否能按时实现; 实用性:确认该设计对于需求的解决方案是否实用; 可维护性:确认该设计是否考虑了方便未来的维护。评审小组意见职务姓名评审意见签名组长成员成员成员详细设计评审检查表项目名称评委姓名评审检查日期评审检查用时(小时)主要检查内容意见详细设计书每一个单元的关键算法,关键数据结构是否清楚详细设计是否覆盖了所有的总体设计条目详细设计和总体设计之间是否存在冲突?总体设计是否经过相应的变更?设计是否可以实现的?设计是否有遗漏和缺陷?单元测试样例是否形成?样例是否合理?单元测试方案是否可行?需求追溯表详细设计中的每一条目是否都能追溯到总体设计中对应条目?问题编号12. .评审检查结论(邮件评审时填)通过 有条件通过 不通过3.4数据库设计评审 在数据库设计阶段结束后必须进行数据库设计评审,以评价数据库的结构设计及运用设计的合适性。 一般应考察以下几个方面: 1)概念结构设计; 2)逻辑结构设计; 3)物理结构设计; 4)数据字典设计; 5)安全保密设计。数据库设计评审内容表序号检查项目通过不通过1数据库设计是否满足软件设计的一般要求?注:数据库设计应该满足软件设计的一般要求。2数据库设计是否与其他设计内容一致?注:作为软件设计的一部分,数据库设计应该与其他设计内容保持一致。3设计是否充分考虑了新系统与现有系统的关系,与现有系统的接口是否被充分考虑?注:在数据库设计中应该充分考虑新系统与现有系统的关系,与现有系统的接口应被充分考虑。4如果基础数据的一部分来源于其他系统,那么是否有工具或方案实现快速导入?注:如果有必要,应该设计工具或者方案将来源于其他系统的数据快速导入数据库。5反规范化(违反3NF)的设计是否有明确的说明,理由是否充分?注:反规范化的设计有时是必要的,但是要注明理由。通常的理由包括:1、 为了提高查询效率,在频繁查询但不频繁更新的表中增加冗余列;2、 为了提高查询效率,将大容量表作水平分割(分割列);3、 为了方便进行统计,引入派生列;4、 . .如无恰当理由,所有设计均应遵循3NF。6对反规范化(违反3NF)设计部分的数据完整性是否进行了充分的考虑?注:反规范化的设计可能产生数据冗余,因此应该视具体情况建立一定的机制(如触发器、过程)保证反规范化数据的完整性。7孤立表的设计理由是否充分?注:设计中应该对孤立表的设计理由作出明确的说明。8为保证查询和更新效率,是否对大容量表(千万行以上或100列以上)作了必要的设计?注:通常在打容量表上采用的设计包括:1、 将大容量表设计成分区表;2、 将大容量表作水平分割(分割行)或垂直分割(分割列);3、 . .9是否避免深度超过三层的视图?注:为了保证效率,视图的深度一般不超过三层。可以建立临时表降低视图的深度。10是否遵循统一的命名规范?注:对所有数据库元素应该采用统一的命名规范。11表、列、视图、触发器、过程的注释是否完整?注:应在表和列上建立中文说明;应在复杂视图的脚本中增加注释;应该在触发器和过程脚本中增加注释。12命名是否避免使用数据库的保留字?注:命名应绝对避免使用数据库的保留字。13数据类型是否存在溢出的可能?注:检查数据的逻辑取值范围是否超出数据的设计类型,重点检查integer,smallint,char型字段。14数据类型的长度是否保留了未来扩展的余量?注:数据类型应保留一定的扩展余量。由此产生的典型问题包括:电话号码升位、身份证升位、千年虫等。15在作为查询条件的列上是否建立了NOT NULL约束?若果没有,理由是否充分。注:如果把为建立not null约束的列作为查询条件,查询结果中往往会漏掉取值为null的列。16是否谨慎地使用日期型字段?注:外部输入或导入的日期应使用varchar型或char型字段。典型的问题是:如果有的日期精确到日,有的日期只精确到年,那么这些数据在日期型字段中得不到准确的记录。17主键是否采用系统生成的键?如果不是,理由是否充分。注:现在的设计越来越倾向于使用系统生成的键作为主键,而不使用带有业务含义的主键,由系统生成的主键字段通常包括:自增长列、序列、GUID。18是否尽量避免将可能变动的字段作为主键?注:如果不使用系统生成的键,那么应该避免将可能变动的键作为主键。19如果外键字段未建立NOT NULL约束。那么理由是否充分。注:外键字段要么引用关联的主键,要么置空的外键字段有确定的业务含义,那么最好将这样的“业务含义”定义在外键关联表中,并且在外键字段上建立not null约束。20是否尽量使用数据库的约束机制实现数据的完整性?注:应该尽量利用数据库的约束机制(例如键、非空、唯一、check、触发器等),而不是应用程序,保证数据的完整性。21索引是否正确地建立在查询操作频繁的表上?注:应该索引建立在查询操作频繁的表上。建立索引的常用原则还包括:1、 使索引最可能被用在where子句中;2、 查询时不应对索引列作为函数运算,否则应建立函数索引;3、 在大型表上建立索引有可能降低查询效率,可以将大表建立分区索引;4、 . .22索引是否尽量避免建立在大容量字段上?注:应尽量避免将索引建立在name,lob或大文本这样的大容量字段上。23索引是否避免建立在小数据表(少于5个块)上?注:在小容量表上建立索引没有意义。24是否将索引建立在独立的表空间上?如果不是,理由是否充分。注:将索引建立在独立的表空间上能够提高查询效率。25是否依据一定的原则,恰当地划分了表空间注:划分表空间的一般原则包括:1、 将访问方式相同的字段(例如lob字段)储存在一起2、 将系统数据和业务数据分开存储3、 将数据和索引分开存

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论