第6章 软件项目设计阶段的知识与管理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2)有效解决设计接口问题及采用复用技 术 设计中,不同人员所承担任务之间的接 口工作是设计工作的一个关键。每个人不能 按照自己的想法进行接口的设计,只有通过 与接口方的不断交流和沟通,才能取得满意 的设计效果。 另外在设计工作中,不同模块间的设计 可能具有很大的相似性,有效的沟通可以使 设计人员彼此了解别人的工作内容,从而给 设计上的复用带来了可能,保证或加快设计 工作进度。
6.3.4 界面设计人员的职责与技能要求
用户界面设计是系统的形象设计,它留 给用户的印象直接影响着软件的市场和用户 群的占有率,因此必须得到足够的重视。 主要完成的任务是: (1)分析对用户界面的需求,包括可用性 需求。 (2)构建用户界面原型。 (3)邀请用户界面的其他相关人员参与可 用性复审和使用测试会议。 (4)对用户界面的最终实施方案(由设计员 和实施员等其他开发人员创建)进行复审并提 供相应的反馈。
6.4.2 系统设计阶段质量管理
可通过做好以下工作,把好软件设计质 量关: (1)对需求的正确理解 需求规格说明书是软件设计的重要依据。 软件项目能否最终提供符合用户需要的软件 产品,就要看软件设计是否满足了需求规格 说明书的全部要求。因此,设计人员对需求 规格说明书内容的正确理解,是高质量完成 软件设计工作的前提。
6.3.2子系统设计员的职责与技能要求
子系统设计员是整个设计阶段任务得以顺 利完成的核心成员,他们常常是一个协作的 团队,而不是一个人。是在体系结构设计师 的声接领导和协调下开展工作。
主要完成的任务是: (1)将系统结构提供的行为说明转换为可 作为设计基础的一组元素。 (2)通过制定设计元素如何实现其行为要 求,改进设计元素的定义。 (3)将设计元素作为模块来实施。 (4)测试所实施的模块,以核实构件/单元 级别上的功能和需求满足情况。
6.4 系统设计阶段的管理与控制
6.4.1 系统设计阶段的进度管理
做好设计阶段的进度管理与控制工作, 需要做好以下几方面的具体工作: (1)考虑设计人员的能力 系统设计工作的进度与质量是设计人员 经验和能力的综合体现。 本阶段工作进度安排一定要考虑设计人 员的能力状况。在实际工作中,应结合项目 的规模、费用状况及进度要求,选择合适的 系统设计人员,即在成本允许的条件下,尽 可能选用能力较强、经验丰富的设计人员, 以获得较高的项目进度及质量。
软件设计一般分为概要设计和详细设计 两大步骤。 概要设计是根据需求分析内容确定软件 系统的总体框架,定义系统的初始模型。 详细设计是在概要设计的基础上做进一 步细化的工作,规划出系统的运行结构、功 能结构、信息模型、过程模型和集成接口结 构,并详细到系统编码阶段的各个类、函数、 变量等对象的结构定义、流程定义和实现方 案。
(4)版本控制与管理 对设计阶段的各个阶段性成果也需加强 跟踪和管理,否则,容易使设计人员随意地 进行设计结果的修改,造成设计结果的混乱。 项目经理应加强设计阶段的阶段性成果 的管理和控制工作,即需要将设计阶段再划 分为多个子阶段,对每个子阶段完成的工作 纳入管理。如果设计人员要进行设计变更, 应该按照一定的变更处理流程来进行。通过 这种方式,可有效防止设计工作及版本控制 的混乱,提高设计成果的质量。
(5)注重软件的结构设计 一个好的体系结构应具备以下特征: 1)具有良好的接口定义规范,便于实现与 其他系统的数据交换及构件的复用。 2)具有良好的系统适应性,即在需求发生 变化时,软件系统能够以最小的代价适应变 化的需要。 3)支持并行的软件开发,即优秀的体系结 构,可使软件系统的复杂性降低,使整个开 发工作可管理性增强,便于实现多个开发单 位的并行开发工作。 4)良好的技术适应性,即系统容易适应技 术的发展和变化。
(4)及时沟通 沟通可以有效地解决以下问题: 1)解决设计中的难题 技术进步及用户要求的不断提高,软件 开发工作的技术要求及难度越来越大。每个 设计人员在设计时总会碰到一定的设计难题。 通过团队协作可以充分发挥和调动每位成员 的聪明才智,准确把握、合理解决设计难题, 避免设计中的漏洞及问题,同时也可避免可 能带来的进度延误。
注意:
①负责设计子系统的个人或团队应当熟 悉本系统所采用的开发语言,并具备在系统 所使用的算法或技术方面的专业技能。 ②负责子系统的个人或团队更应是多面 手,能够合理划分设计元素间的功能,并能 够理解不同备选设计方案固有的优缺点。
6.3.3数据库设计员的职责与技能要求
数据库设计员的主要内容是确定系统数 据库对象及其之间的关系,建立系统的信息 模型。 主要完成的任务是: (1)确定设计中的永久类; (2)设计适当的数据库结构,以存储永久 类; (3)定义存储和检索永久性数据的机制和 策略,以满足系统要求的性能标准。
(2)监理与评审 设计阶段完成后,需要对系统设计进行 评审。 评审由质量管理人员发起和组织,参与 的人员有用户、领导、开发方、监理等。 通过评审,为系统实施和质量跟踪提供 依据。通过评审以后,设计阶段的工作成果 将纳入软件配置管理。 设计阶段工作对项目的后续工作影响巨 大,一旦出现设计更改,需要付出的代价是 很沉重的。因此,作为设计阶段的质量把关 与审核,设计过程的监理与设计评审工作应 该予以高度重视。
第6章 软件项目设计阶段的知识和管理
Fra Baidu bibliotek
本章要点:
系统设计是软件项目成败的关键 设计阶段的目标和任务 系统设计阶段的团队管理和技能要求 系统设计阶段的管理与控制 系统设计阶段性成果和考核依据
需求分析解决“做什么”,系统设计则 确定“如何做”。
6.1 系统设计是软件项目成败的关键
系统设计基于需求分析的成果,对系统 做深层次的分析,从而得出一系列行之有效 的系统实现方案,使整个项目在逻辑上和物 理上能够得以实现。 系统设计是获取高质量、低耗费、易维 护的软件系统的最为核心的环节。没有或缺 乏软件设计的工程只能是一个不稳定的、甚 至是失败的软件系统。
6.3 系统设计阶段的团队管理和技能 要求
系统设计团队是软件项目各个阶段中对 技术要求最高的组织之一,并在项目经理的 直接领导和协调下开展工作。 主要团队成员包括:体系结构设计师、 系统设计员、数据库设计员、用户界面设计 员、质量管理员和配置管理员。
体系结构设计师负责系统的总体规划和 集成接口设计。 系统设计员负责完成子系统、子模块, 以及系统构件的规划与设计。 数据库设计员负责整个系统的概念数据 模型,以及物理数据的设计。 用户界面设计员负责系统与用户交互的 界面风格、整体布局及美化设计。 质量管理员负责组织设计结果的质量评 审工作。 配置管理人员进行设计阶段的配置管理, 并将设计阶段成果纳入软件配置管理。
系统设计包含较高的技术和能力因素, 要求设计评审人员的组成要全面,且评审人 员要具有丰富的系统设计经验,只有这样才 能够很好地完成评审和把关任务,防止评审 工作流于形式。 进行设计评审时,评审人员要以正确、 负责的心态对待评审工作:一是要查找设计 中存在的问题,而不是故意找茬,与设计人 员过不去;二是要认识到评审工作责任的重 大,如果评审工作不负责任将很可能使许多 人的辛勤劳动被葬送,企业将因此付出巨大 的代价。
(2)做好阶段工作计划与任务分工 无论何种软件项目,在设计开始时都应制 定详细的阶段工作计划,使整个工作都在计 划的指导下进行。 对参与团队设计的人员要有明确的工作分 工并制定明确的工作职责,防止工作安排中 的遗漏及相互扯皮现象出现,最大限度的发 挥出每个团队成员的能力和经验优势。
(3)采用先进的软件技术与工具 采用先进的软件技术进行设计工作,将会 取得较高劳动效率。 设计阶段新技术的采用主要体现在以下方 面: 1)采用新的系统建模方法及工具 如支持建立系统功能模型的IDEFO方法, 面向对象的建模工具(UML)和方法等。 2)软件复用 许多软件模块的设计和实现具有很大的相 似性,在进行系统设计时,可将其他项目的 设计结果直接拿过来使用,以获得较高的软 件开发效率及较高的软件开发质量。
他们之间的工作关系如下图所示。
6.3.1体系结构设计师职责与技术素质要求
是系统设计团队中的关键人物,其职责 是领导设计组成员开展系统设计任务,协调 和管理系统设计团队内部的各项工作,并参 与整个项目各个阶段的沟通与协调工作。 主要工作包括: (1)初步定义一组在构架方面具有重要意 义的元素,作为系统设计的工作基础。 (2)初步定义系统的分层与组织结构。 (3)提供从分析活动到设计活动的自然转 移——从分析结果中确定适当的设计元素, 从相关分析机制中确定适当的设计机制。
(4)维持体系结构的一致性和完整性,确 保当前迭代所确定的新设计元素与先前已有 的设计元素可以集成;在设计过程中尽可能 早地充分利用现有的构件和设计元素。 (5)描述系统运行时的组织以及部署体系 结构时的组织。 (6)设计实施模型,以实现设计与实施间 的平稳转移。
注意:体系结构架构工作一般由技能互 补人员组成的小型团队来完成。团队应由具 有丰富相关领域设计经验的成员组成;同时, 体系结构设计团队不能由大规模的团队组成。
6.5 系统设计阶段主要工作内容及采用的工具和 方法 软件设计分为两个主要的工作阶段: ①概要设计。主要工作是将软件需求转 化为数据结构和软件的系统结构; ②详细设计。通过对软件结构与功能模 块的细化工作,得到软件程序的数据结构、 算法和实现流程。 软件设计的方法主要有结构化设计方法 和面向对象的设计方法两大类。 本节讨论系统设计阶段的结构设计、功 能设计、信息模型设计、过程模型设计以及 界面设计,并介绍一些在系统设计阶段常采 用的设计工具。
注意: ①数据库设计人员需要了解设计模型中 的永久类,并且必须在关系型数据库、面向 对象的程序设计与软件实施方面具备一定的 应用知识。 ②数据库设计人员还需要充分具备处理数 据库并行及分布问题的背景。 ③数据库设计人员是一种“浮动”的资源, 为几个团队所共有,充当处理永久性问题的 顾问型成员。 ④数据库设计人员与子系统设计人员之间 的紧密协作极为重要。
6.2 设计阶段的目标和任务
系统设计是一个将系统的需求规格转换 成软件系统的说明过程。 系统设计的最终目标是要完成对“软件项 目交付成果如何架构”的准确回答。 任务包括构建系统框架,设计系统功能, 描述系统流程,建立系统的数据模型、接口 模型及界面模型,形成系统的逻辑结构,告 诉程序员软件系统应该“怎样做”。
3)提高人员的工作效率 通过沟通,设计人员可以彼此厂解别人 的工作进度,出于维护个人荣誉,会对进度 较慢的人员形成一定的工作压力,从而保证 设计工作的整体工作进度。 (5)加强跟踪与监控,防止设计工作的反 复 加强项目的跟踪和管理,可以减少设计 工作中的随意性、及时纠正设计中的错误。 从而减少设计中的工作反复,确保设计阶段 的工作进度。 跟踪设计工作进度的方法有两种:一种 是个人询问,另一种是召开例会。
6.5.1体系结构设计
6.5.1.1体系结构设计概述
软件体系结构是具有一定形式的结构化 元素,即构件的集合,包括处理构件、数据 构件和连接构件。处理构件负责对数据进行 加工,数据构件是被加工的信息,连接构件 把体系结构的不同部分组组合连接起来。
6.5.1.2体系结构设计原则
体系结构设计的原则包括:合适性、结 构稳定性、代码可复用性及模块可扩展性。 (1)合适性 是指体系结构是否适合于软件的“功能性 需求”和“非功能性需求”。 (2)结构稳定性 体系结构是系统设计的第一要素,体系 结构变动,建筑在其上的用户界面、数据库、 模块、数据结构等也要跟着变动,这将导致 项目发生混乱。所以体系结构一旦设计完成, 应当保持其相对稳定不变。
(3)复用技术的采用 软件设计复用就是在进行系统设计时, 发现并利用其他项目的设计成果,直接应用 或进行少量修改后应用于新项目的过程。 由于复用的设计已经经过其他项目的应用 检验,所以复用后的设计会具有较高的设计 质量。 在系统设计过程中,设计人员要善于发 现可复用的设计单元,善于使用复用技术提 高自己的工作效率。