软件工程 总体设计 软件工程总体设计模板 - 电脑|办公 - 电脑办公-杀毒安全-网络-V3学习网
微商网
 
 
导航:首页 |电脑|办公|正文

软件工程 总体设计 软件工程总体设计模板

时间:2021-06-15 12:37:07
软件工程总体设计包括什么呢? 设计方法 设计通常被描述为一个多步的过程,其主要任务是从信息需求中综合出数据结构的表示、程序结构、接口特征和过程细节。Feeman在[FRE80]中对设计有较为详细的描述
作者:

软件工程 总体设计

软件工程总体设计包括什么呢?

设计方法 设计通常被描述为一个多步的过程,其主要任务是从信息需求中综合出数据结构的表示、程序结构、接口特征和过程细节。

Feeman在[FRE80]中对设计有较为详细的描述: 设计是一项主要考虑进行重要决策的活动,这些决策通常都与结构有关。

设计与编程都要考虑抽象信息表示,但其详细程度与编程有很大的不同。

设计的结果是一个一致的、合理计划的程序表示,主要描述高层各部分的相互关系和低层所需的逻辑操作… 在前一章我们已经指出,设计是由信息驱动的。

各种软件设计方法主要考虑分析模型中的三个域,因此数据、功能和行为三个域是整个设计创建活动的指南。

本章将讨论多种用于创建设计模型(见图13-1)的各个层次的方法,本章的目标是提供一个系统地完成设计的方法,设计的结果就是构造软件的蓝图。

14.1 数据设计 数据设计是实施软件工程中的四个设计活动的第一个(有人也认为是最重要的一个)。

由于数据结构对程序结构和过程复杂性都有影响,数据结构对软件质量的影响是很深远的。

信息隐蔽和抽象数据的概念为数据设计提供了基础。

Wasseman在参考文献[WAS80]中总结了数据设计的过程: 数据设计的主要活动是选择对需求定义和规约过程中找出来的数据对象(数据结构)的逻辑表示。

选择过程可以包括对候选结构进行算法分析,以决定出效率最高的结构;选择过程也可以只使用一组模块(一个包),在对象的某种表示上提供需要的操作。

设计中的另一个相关的活动是标识要直接作用于逻辑数据结构的程序模块,这样,各个数据设计决策的影响域就受到了约束。

无论采用哪种设计技术,好的数据设计将改善程序结构和模块划分,降低过程复杂性。

Wasseman[WAS80]提出了一组用于数据规约和设计的原则。

在实际应用中,数据设计在创建分析模型(见第12章)就已经开始了,考虑到需求分析和设计经常要重叠,我们主要考虑以下一组数据规约原则[WAS80]: 1.用于功能和行为的系统分析原则也应用于数据。

我们通常要在导出、复审和刻画功能需求和初步设计上花很多时间和工作量;数据对象及其关系、数据流和内容的表示也应该按步骤进行开发和复审,其他可选的数据组织结构也应加以考虑,数据模型对于软件设计的影响也应得到正确的评估,例如,一个多环链表可能可以很好地满足数据需求,但它也可能导致过于复杂的软件设计,而其他替代的数据组织结构可能会得到更好的结果。

2.应该标识所有的数据结构以及其上的操作。

设计一个高效的数据结构必须考虑其上的操作(见参考文献[AHO83]),例如,考虑一个由不同数据元素组成的数据结构,在许多重要的软件功能中都要操作这个数据结构。

通过评估该数据结构上的操作,可定义一个抽象数据类型,以便在以后的软件设计中使用。

抽象数据类型的规约将大大简化软件设计。

3.应当建立数据字典,并用于数据设计和程序设计。

数据字典的概念在第12章中已经介绍,数据字典明确表示了数据对象间的关系以及对数据结构中的元素的约束。

如果有一个类似字典的数据规约存在,那些必须利用某些特定关系的优秀算法的定义将得到简化。

4.低层的设计决策应该推迟到设计过程的后期。

数据设计可以采用逐步求精的过程,也就是说,总体的数据组织可以在需求分析阶段定义,在概要设计中进行精化,并在以后的设计迭代中进行详细描述。

在数据设计中应用自顶向下方法的优点与在软件设计中应用自顶向下方法的优点类似:主要的结构属性要首先进行设计和评估,以便建立数据的体系结构。

5.只有那些需要直接使用数据结构内部数据的模块才能看到该数据结构的表示。

信息隐蔽的概念以及相关的耦合概念为软件设计质量的评估提供了依据。

本原则不但强调了这两个概念的重要性,还强调了“将数据对象的逻辑视图和物理视图分开的重要性”[WAS80]。

6.应该开发一个由有用的数据结构和应用于其上的操作组成的库。

数据结构和操作都应被看作可用于软件设计的资源,数据结构的设计可以考虑到复用。

数据结构模板(抽象数据类型)库可以减少数据规约和设计的工作量。

7.软件设计和程序设计语言应该支持抽象数据类型的规约和实现。

如果没有办法对已有的数据结构直接进行规约,复杂数据结构的实现(以及对应的设计)将变得非常困难。

例如,如果目标语言是Fotan的话,实现(或设计)一个链表或多层异构数组将是非常困难的,因为Fotan不支持直接对这些数据结构进行规约。

以上这些原则为数据设计提供了基础,它们既可以应用在软件工程的定义阶段,也可以应用在开发阶段。

在本书的其他部分我们已经指出,清晰的信息定义是软件开发成功的关键。

软件项目管理的总体流程设计是怎样的?

在软件项目开发管理过程中,不仅要努力实现项目的范围、时间、成本和质量等目标,还必须协调整个项目过程,以满足项目参与者及其他利益相关者的需要和期望;随着软件规模和所涉及的领域不断地扩大,软件项目的管理越来越困难。

纵观所有失败的软件项目,基本原因是不能管理其软件过程,在无纪律的、混乱的项目状态下,组织不可能从较好的方法和工具中获益。

严谨的软件过程控制与管理不仅可以在每个阶段回顾和纠正项目的偏差,识别软件项目的风险甚至果断中止项目,而且可以将人才流动所带来的不利影响减少到最小。

要进行有效的过程控制,必须明确软件项目管理流程。

软件项目管理总体流程设计为项目搜寻、立项、售前、合同生成和合同执行等5个主要阶段,分别以P1、P2、P3、P4、P5表示;同时设计了立项完成、合同签定、功能定义、软件开发、项目验收等5个里程碑,分别以TM1、TM2、TM3、TM4、TM5表示,如图1所示。

在这些流程中,合同执行流程是软件项目管理的核心,其主要过程有:产品定义、软件开发、测试执行、内部验收、项目实施与验收、项目维护。

图1软件项目管理总体流程 软件项目管理总体流程分析 1项目搜寻 项目搜寻是项目立项的基础,项目搜寻阶段的主要任务包括市场信息收集,用户需求跟踪,对潜在的项目进行分析和筛选。

2项目立项 立项阶段的主要任务是确认立项的理由,提出立项建议,提供合适的资金和资源,使立项建议成为正式项目。

3项目售前 售前阶段从项目立项开始到项目合同的签定结束,主要工作有:制定与客户的交流计划,详细了解客户的背景资料,了解客户启动项目的缘由、目的和期望,编制项目方案建议书,准备合同蓝本。

4合同生成 合同生成阶段的主要工作有:项目方案的评估与确定,技术合同、商务合同的商定、评估与签署。

设为首页 5合同执行 合同执行是软件项目管理流程的重点,可分为软件开发、测试执行;内部验收、项目验收、系统维护等五个基本工作过程。

5.1软件开发 软件开发阶段分为:需求调研、系统分析、系统设计、编码、单元测试等过程。

主要从三个方面进行管理: 1)制定项目计划。

软件项目计划是一个用来协调所有其他计划,以指导项目执行和控制的可操作文件。

它体现了对客户需求的理解,考|试/大是开展项目活动的基础,也是软件项目跟踪与监控的依据。

2)确定开发过程。

根据软件项目和项目组的实际情况,建立起一个稳定、可控的软件开发过程模型,并按照该过程来进行软件开发。

3)加强过程控制。

过程控制主要包括过程管理、变更控制和配置管理。

5.2测试与执行 项目测试的目的是检查系统是否符合项目合同与任务书规定的要求。

项目测试分集成测试和系统测试,主要进行功能测试、健壮性测试、性能—效率测试、用户界面测试、安全性测试、压力测试、可靠性测试、安装/反安装测试等。

测试过程在模拟运行环境中进行。

5.3内部验收 项目完成集成测试和系统测试后进行项目内部验收,主要有三个步骤:1)文档准备。

项目经理提交内部验收计划、项目开发总结报告、产品发布清单;财务主管提交项目财务预算报告。

2)内部验收测试。

内部验收测试的测试内容与方法虽然与系统测试基本相同,但应站在用户验收的角度进行,因为它是试运行的基础,通过这一步,为用户验收作充分的准备。

3)内部评审。

对提交的所有文档及测试结果进行内部评审,完成项目开发总结报告。

5.4项目试运行与验收 试运行与用户验收阶段的主要任务是,使所有的工作产品得到用户的确认。

主要工作有: 1)验收前的准备。

项目经理负责检查产品的完整性,包括文档、介质和中间产品等,以确保现场实施的成功;负责应用软件的现场安装调试,考|试/大完成安装调试总结报告;负责制定用户验收计划,并得到客户的确认。

2)用户进行验收测试和系统试运行,进行文档和系统的移交。

3)用户确认。

项目经理负责与客户协调,协助用户进行项目验收,形成用户验收报告。

以上是我对于这个问题的解答,希望能够帮到大家。

【网站详细设计说明书】软件工程详细设计说明书

面向对象软件设计说明书模板 1 概述 1.1 系统简述 对系统要完成什么,所面向的用户以及系统运行的环境的简短描述,这部分主要来源于需求说明书的开始部分。

1.2 软件设计目标 这部分论述整个系统的设计目标,明确地说明哪些功能是系统决定实现而哪些时不准备实现的。

同时,对于非功能性的需求例如性能、可用性等,亦需提及。

需求规格说明书对于这部分的内容来说是很重要的参考,看看其中明确了的功能性以及非功能性的需求。

这部分必须说清楚设计的全貌如何,务必使读者看后知道将实现的系统有什么特点和功能。

在随后的文档部分,将解释设计是怎么来实现这些的。

1.3 参考资料 列出本文档中所引用的参考资料。

(至少要引用需求规格说明书) 1.4 修订版本记录 列出本文档修改的历史纪录。

必须指明修改的内容、日期以及修改人。

2 术语表 对本文档中所使用的各种术语进行说明。

如果一些术语在需求规格说明书中已经说明过了,此处不用再重复,可以指引读者参考需求说明。

3 用例 此处要求系统用用例图表述(UML),对每个用例(正常处理的情况)要有中文叙述。

4 设计概述 4.1 简述 这部分要求突出整个设计所采用的方法(是面向对象设计还是结构化设计)、系统的体系结构(例如客户服务器结构)以及使用到的相应技术和工具(例如OMT、Rose) 4.2 系统结构设计 这部分要求提供高层系统结构的描述,使用方框图来显示主要的组件及组件间的交互。

最好是把逻辑结构同物理结构分离,对前者进行描述。

别忘了说明图中用到的俗语和符号。

4.2.1 顶层系统结构 4.2.2 子系统1结构 4.2.3 子系统2结构 4.3 系统界面 各种提供给用户的界面以及外部系统在此处要予以说明。

如果在需求规格说明书中已经对用户界面有了叙述,此处不用再重复,可以指引读者参考需求说明。

如果系统提供了对其它系统的接口,比如说从其它软件系统导入导出数据,必须在此说明。

4.4 约束和假定 描述系统设计中最主要的约束,这些是由客户强制要求并在需求说明书写明的。

说明系统是如何来适应这些约束的。

另外如果本系统跟其它外部系统交互或者依赖其它外部系统提供一些功能辅助,那么系统可能还受到其它的约束。

这种情况下,要求清楚地描述与本系统有交互的软件类型(比如某某某数据库软件,某某某EMail软件)以及这样导致的约束(比如只允许纯文本的Email)。

实现的语言和平台也会对系统有约束,同样在此予以说明。

对于因选择具体的设计实现而导致对系统的约束,简要地描述你的想法思路,经过怎么样的权衡,为什么要采取这样的设计等等。

5 对象模型 5.1 系统对象模型 提供整个系统的对象模型,如果模型过大,按照可行的标准把它划分成小块,例如可以把客户端和服务器端的对象模型分开成两个图表述。

对象图应该包含什么呢? 在其中应该包含所有的系统对象。

这些对象都是从理解需求后得到的。

要明确哪些应该、哪些不应该被放进图中。

所有对象之间的关联必须被确定并且必须指明联系的基数(一对一、一对多还是多对多,0..1,*,1..*)。

聚合和继承关系必须清楚地确定下来。

每个图必须附有简单的说明。

可能经过多次反复之后才能得到系统的正确的对象模型。

6 对象描述 在这个部分叙述每个对象的细节,它的属性、它的方法。

在这之前必须从逻辑上对对象进行组织。

你可能需要用结构图把对象按子系统划分好。

为每个对象做一个条目。

在系统对象模型中简要的描述它的用途、约束(如只能有一个实例),列出它的属性和方法。

如果对象是存储在持久的数据容器中,标明它是持久对象,否则说明它是个临时对象(tansient oject)。

对每个对象的每个属性详细说明:名字、类型,如果属性不是很直观或者有约束(例如,每个对象的该属性必须有一个唯一的值或者值域是有限正整数等)。

对每个对象的每个方法详细说明:方法名,返回类型,返回值,参数,用途以及使用的算法的简要说明(如果不是特别简单的话)。

如果对变量或者返回值由什么假定的话,Pe-conditions和Post-conditions必须在此说明。

列出它或者被它调用的方法需要访问或者修改的属性。

最后,提供可以验证实现方法的测试案例。

6.1 子系统1中的对象 6.1.1 对象:对象1 用途: 约束: 持久性: 属性描述: 1. 属性:属性1 类型: 描述: 约束: 2. 属性:属性2 方法描述: 1. 方法:方法1 返回类型: 参数: 返回值: Pe-Condition: Post-Condition: 读取修改的属性: 调用的方法: 处理逻辑: 测试例:用什么参数调用该方法,期望的输出是什么…… 7 动态模型 这部分的作用是描述系统如何响应各种事件。

例如,可以建立系统的行为模型。

一般使用顺序图和状态图。

确定不同的场景(Scenaio)是第一步,不需要确定所有可能的场景,但是必须至少要覆盖典型的系统用例。

不要自己去想当然地创造场景,通常的策略是描述那些客户可以感受得到的场景。

7.1 场景(Scenaios) 对每个场景做一则条目,包括以下内容: 场景名:给它一个可以望文生义的名字 场景描述:简要叙述场景是干什么的以及发生的动作的顺序。

顺序图:描述各种事件及事件发生的相对时间顺序。

7.1.1 ...

软件工程之软件设计方法的特点是什么?

实时系统的设计 实时计算系统的设计是一个软件工程师所能从事的最有挑战性和最为复杂的任务。

由于这个特点,用于实时系统的软件需要其他应用领域没有涉及到的分析、设计和测试技术。

实时软件是外部世界高度耦合的,也就是说,实时软件必须在问题域规定的时间框架内对该问题域(现实世界)作出响应。

由于实时软件必须在严格的性能约束下操作,因此软件的设计常常是被硬件及软件体系结构、操作系统特性、应用需求和编程语言的变化所驱动的。

Robert Glass[GLA83]在他关于实时软件的书中,对实时系统主题给出了一段很有帮助的介绍: 数字计算机在我们所有人的日常生活中正变得日益普及。

计算机不但可以让我们玩游戏,还可以报时、优化最新一代汽车的汽油里程以及控制我们的家用电器……[在工业上,计算机可以控制机器、协调过程,并逐渐用自动化系统和“人工智能”来代替手工操作和人的参与。

] 所有上述的计算——不论是有帮助的还是强行引入的——都是实时计算的例子。

计算机正在控制着某些东西与外部世界的实时交互,事实上,时间是交互的核心……反应迟钝的实时系统比完全没有系统还要糟糕。

就在十年前,实时软件开发还被认为是一种黑色的艺术,它的从事者是那些充满嫉妒地保卫着他们封闭世界的巫师们。

如今,巫师们已经供不应求了!然而,实时软件的开发毫无疑问需要特殊的技能。

在本章里我们将对实时软件进行研究,并讨论建造实时软件所需的某些开发技能。

15.1系统考虑 与其他任何基于计算机的系统一样,一个实时系统必须将硬件、软件、人力和数据库元素集成起来,以恰当地实现一组功能和性能需求。

在第10章中,我们探讨了基于计算机的系统任务分配,并指出,系统工程师必须对系统元素分配功能和性能。

实时系统的问题在于恰当的分配。

实时性能常常与功能一样重要,但却很难有把握地作出与性能相关的分配决策。

一个处理算法能满足严格的时间约束吗,或者说我们应该建造特殊的硬件来完成这个工作?一个购买来的操作系统能够满足我们进行高效的中断处理、多任务和通信的需求吗,或者说我们应该使用自定义的执行程序?与推荐的软件配对的特定硬件能够满足性能标准吗?所有这些以及其他许多问题都需要由实时系统工程师来回答。

对实时系统所有成分的详细讨论已经超出了本书的范围,在[SAV85]、[ELL94]和[SEL94]等文献中有大量好的有关这方面的信息,但是,在讨论软件分析和设计问题前我们对实时系统的各个元素能有所理解还是非常重要的。

Everett[EVE95]定义了实时软件开发不同于其他软件工程的三个特征: ·实时系统的设计是受资源约束的。

时间是实时系统的首要资源,关键是要在指定数目的CPU周期内完成一个定义好的任务,除此以外,其他系统资源,如内存大小等,在实现系统目标时都有可能和时间进行折衷。

·实时系统是紧凑而复杂的。

尽管一个复杂的实时系统可能包含上百万行的代码,但软件中有关时间标准的代码一般只占很小一部分。

这一小部分代码是最为复杂的(从算法的角度来说)。

·实时系统的运行常常不需要用户的参与。

因此,实时软件必须能检测到导致故障的问题,并在对数据和控制环境造成破坏前改正这些问题。

在下面一节中,我们将探讨一下实时系统不同于其他类型计算机软件的一些关键性属性。

15.2 实时系统 实时系统产生某种动作以响应外部世界。

为了完成这个功能,它们能高速地获取数据,并在严格的时间和可靠性约束控制下。

由于这些约束是如此苛刻,实时系统通常只用于满足单个的应用。

实时系统广泛地用于各种应用领域,包括军用的命令与控制系统、消费者电器、过程控制、工业自动化、医疗和科学研究、计算机图形、局域和广域通信、航天系统、计算机辅助测试以及大量的工业仪器。

15.2.1集成和性能问题 为了将一个实时系统组织在一起,系统工程师需要作出困难的硬件和软件决策。

(实时系统与硬件相关的分配问题超出了本书的范围;更多的信息请参阅文献[SAV85]。

)一旦分配好软件成分,就要建立详细的软件需求,并必须开发出一个基本的软件设计。

许多实时设计关心的是实时任务间的协调、系统中断的处理、保证不丢失数据的I/O处理、指定系统的内部和外部时间约束、以及确保数据库的准确度等。

实时设计关注的每个部分都必须应用到系统性能这个语境中。

在大多数情况下,一个实时系统的性能是由一个或多个与时间相关的特征来测度的,但也可能用容错性之类的指标来测度。

某些实时系统是设计来用于那些只关注反应时间或数据传输率的应用中,其他实时应用还需要对峰值负载条件下的这两个参数进行优化,而且,实时系统必须在执行一系列并发任务时处理它们的峰值负载。

软件工程求答案高手请进1.在进行总体设计时应加强模块间的联系。

()2....

从心理学意义来分,界面可分为感觉(视觉、触觉、听觉等)和情感两个层次。

用户界面设计是屏幕产品的重要组成部分。

界面设计是一个复杂的有不同学科参与的工程,认知心理学、设计学、语言学等在此都扮演着重要的角色。

用户界面设计的三大原则是:置界面于用户的控制之下;减少用户的记忆负担;保持界面的一致性。

用户界面设计在工作流程上分为结构设计、交互设计、视觉设计三个部分。

结构设计 Structure Design结构设计也成概念设计 (Conceptual Design),是界面设计的骨架。

通过对用户研究和任务分析,制定出产品的整体架构。

基于纸质的的低保真原型(Paper Prototype)可提供用户测试并进行完善。

在结构设计中,目录体系的逻辑分类和语词定义是用户易于理解和操作的重要前提。

如西门子手机的设置闹钟的词条是“重要记事”,让用户很难找到。

交互设计 Interactive Design交互设计的目的是使产品让用户能简单使用。

任何产品功能的实现都是通过人和机器的交互来完成的。

因此,人的因素应作为设计的核心被体现出来。

交互设计的原则如下:1)有清楚的错误提示。

误操作后,系统提供有针对性的提示。

2)让用户控制界面。

“下一步”、“完成”,面对不同层次提供多种选择,给不同层次的用户提供多种可能性。

3)允许兼用鼠标和键盘。

同一种功能,同时可以用鼠标和键盘。

提供多种可能性。

4)允许工作中断。

例如用手机写新短信的时候,收到短信或电话,完成后回来仍能够找到刚才正写的新短信。

5)使用用户的语言,而非技术的语言。

6)提供快速反馈。

给用户心理上的暗示,避免用户焦急。

7)方便退出,如手机的退出,是按一个键完全退出,还是一层一层的退出。

提供两种可能性。

8)导航功能。

随时转移功能,很容易从一个功能跳到另外一个功能。

视觉设计Visual Design 在结构设计的基础上,参照目标群体的心理模型和任务达成进行视觉设计。

包括色彩、字体、页面等。

视觉设计要达到用户愉悦使用的目的。

视觉设计的原则如下:。

1)界面清晰明了。

允许用户定制界面。

2)减少短期记忆的负担。

让计算机帮助记忆,例:User Name,、Password、IE进入界面地址可以让机器记住。

3) 依赖认知而非记忆。

如打印图标的记忆、下拉菜单列表中的选择。

4)提供视觉线索。

图形符号的视觉的刺激;GUI(图形界面设计):Where, What, Next Step。

5)提供默认(default)、撤销(undo)、恢复(redo)的功能6)提供界面的快捷方式。

7)尽量使用真实世界的比喻。

如:电话、打印机的图标设计,尊重用户以往的使用经验。

8)完善视觉的清晰度。

条理清晰;图片、文字的布局和隐喻不要让用户去猜。

9)界面的协调一致。

如手机界面按钮排放,左键肯定;右键否定;或按内容摆放。

10)同样功能用同样的图形。

11)色彩与内容。

整体软件不超过5个色系,尽量少用红色、绿色。

近似的颜色表示近似的意思。

西门子6688:“确定”按键设计的不一致性用户界面设计构筑了产品设计的基础。

如只有首先确定了手机菜单的交互形式,才能在造型设计上决定是采用五项键或上下键。

在国外,用户界面设计人员有了一个新的称谓:Information Architecture,信息建筑师。

它不仅仅是指美工,而是具有心理学、软件工程学、设计学等综合知识的人。

大家还关注
阅读排行
推荐阅读