软件工程——8.软件设计基础

上传人:飞*** 文档编号:5787320 上传时间:2017-08-07 格式:PPT 页数:197 大小:2.01MB
返回 下载 相关 举报
软件工程——8.软件设计基础_第1页
第1页 / 共197页
软件工程——8.软件设计基础_第2页
第2页 / 共197页
软件工程——8.软件设计基础_第3页
第3页 / 共197页
软件工程——8.软件设计基础_第4页
第4页 / 共197页
软件工程——8.软件设计基础_第5页
第5页 / 共197页
点击查看更多>>
资源描述

《软件工程——8.软件设计基础》由会员分享,可在线阅读,更多相关《软件工程——8.软件设计基础(197页珍藏版)》请在金锄头文库上搜索。

1、软件工程,Software Engineering,(An Introduction),Foundation of Software Design,与SRA基础一章类似,在讲述具体的软件设计方法之前,本章先讨论一些与软件设计有关的基本问题和基本概念。这些问题和概念贯穿于软件的整个阶段。无论采用哪一种具体的软件设计方法,都无法回避这些问题,都将用到这些基本概念。因此,它们是每个软件设计人员必须理解和掌握的。软件设计的基本概念是从20世纪60年代陆续提出的。虽然经历了不同程度的发展和改变。但大都经受住了实践和时间的考验,成为软件设计人员应用软件方法进行软件设计的基础。,教学目标,掌握软件设计过程四

2、个方面:总体结构设计、数据设计、过程设计和界面设计;可分为概要设计和详细设计两个阶段。掌握软件设计中用到基本概念包括:抽象与逐步求精;模块化与信息隐藏;软件总体结构、数据结构与软件过程。掌握流程图、盒图、判定表和了解PDL语言。,第8章 Foundation of Software Design,8.1 软件设计基本概念 8.1.1 软件设计过程8.1.2 软件设计的基本问题8.1.3 抽象与逐步求精8.1.4 模块化与信息隐藏8.1.5 软件总体结构设计8.1.6 数据结构设计8.1.7 软件设计的启发规则8.1.8 软件过程设计8.1.9 常用的设计方法8.2 过程设计技术和工具8.3 设

3、计规格说明与评审8.4 软件设计CASE工具,第8章软件设计基础,软件设计阶段的工作是以需求分析阶段的成果为前提和基础的,即经过系统分析小组签字认可的需求规格说明书及有关技术文档。经过软件工程师们多年的努力,一些软件设计技术、质量评估标准和设计表示法逐步形成并用于软件工程实践。软件设计是软件工程的重要阶段。软件设计过程是对程序结构、数据结构和过程细节逐步求精、复审并编制文档的过程,本章讨论与软件设计有关的主要概念。,8.1 软件设计基本概念 8.1.1 软件设计过程,软件开发阶段由设计、编码和测试三个基本活动组成,其中“设计”活动是获取高质量、低耗费、易维护软件的一个最重要环节。需求分析阶段获

4、得的需求规格说明书包括对将要实现的系统在信息、功能和行为等各个方面的描述,这是软件设计的基础。对此不论采用何种软件设计方法都将产生: 系统的总体结构设计(architectural design); 系统的数据设计(data design); 系统的过程设计(procedural design)。,8.1.1 软件设计过程,图8-1-1 开发阶段的信息流,程序模块,总体结构设计,设计,编码,信息描述,功能描述,行为描述,其他需求,过程设计,数据设计,集成并确认的软件,测试,8.1.1 软件设计过程,软件设计也可看作将需求规格说明逐步转换为软件源代码的过程。从工程管理的角度软件设计可分为概要(p

5、reliminary)设计和详细(detail)设计两大步骤。概要设计是根据需求确定软件和数据的总体框架详细设计是将其进一步精化成软件的算法表示和数据结构。在技术上,概要设计和详细设计又由若干活动组成,除总体结构设计、数据结构设计和过程设计外,许多现代应用软件,还包括一个独立的界面设计活动。,8.1.2 软件设计的基本问题,软件设计的目标和任务以SRS为依据,设计出能满足SRS中定下的各项需求的软件实现方案,并力求使方案达到最佳。该设计方案是后继阶段(编码实现)的依据。(设计方案也将为问题的软件解solution或软件表示representation),8.1.2 软件设计的基本问题,具体工作

6、1概要设计:(1)data design; (2)architectural design; (3)HCI design;(4)修订用户手册;(5)制定初步的测试计划;(6)概要设计评审;(7)编写初步的操作手册。2、详细设计:(1)确定程序结构中每个模块内部的详细数据结构和具体的算法;(2)把算法用某种表达工具描述出来;(3)详细设计评审。,8.1.2 软件设计的基本问题,工作结果,注:(1) SDS包括概要设计说明书和详细设计说明书(包括文件结构和全局数据描述,测试准备等) (2) 对数据密集的应用可能有独立的“数据库设计说明书”,软件设计是后续开发步骤及软件维护工作的基础。如果没有设计,

7、只能建立一个不稳定的系统结构。,软件设计的作用,8.1.2 软件设计的基本问题,8.1.2 软件设计的基本问题,软件设计的基本原则抽象与逐步求精问题分解与模块化信息隐藏模块独立性高内聚低耦合原则软件设计的启发规则,8.1.3 抽象与逐步求精,抽象是控制复杂性的基本策略。“抽象” 要求人们将注意力集中在某一层次上考虑问题,而忽略那些低层次的细节。软件设计过程应当是在不同抽象级别上考虑和处理问题的过程。最初,应在最高抽象级别上,用面向问题域的语言叙述“问题”,概括“问题解”的形式;而后不断地具体化,不断地用面向过程的语言描述问题;最后,在最低的抽象级别上给出可直接实现的“问题解”,即程序。,8.1

8、.3 抽象与逐步求精,软件工程过程的每一步都是对较高一级抽象的解作一次进一步具体化的描述。在系统定义阶段,软件系统被描述为基于计算机的大系统的一个组成部分;在软件规划和需求分析阶段,软件用问题域约定的习惯用语表达;从概要设计过渡到详细设计时,抽象级再一次降低;编码完成后达到了抽象的最低级。在上述由高级抽象到低级抽象的转换过程中,伴随着一连串的过程抽象和数据抽象。过程抽象把完成一个特定功能的动作序列抽象为一个过程名和参数表;数据抽象把一个数据对象的定义(或描述)抽象为一个数据类型名。,【例8.1】考虑适用于低级CAD的图形软件包。,抽象 该CAD软件系统配有能与绘图员进行可视化通信的图形界面,能

9、用鼠标代替绘图工具,画各种直线和曲线; 能完成所有几何计算以及所有截面视图和辅助视图的设计。 图形设计的结果存在图形文件中,图形文件可包含几何的、正文的和其他各种补充设计信息。 显而易见,在这一抽象级别上,用问题域本身的术语来描述问题的解。,【例8.1】考虑适用于低级CAD的图形软件包。,抽象 CAD软件任务; 用户界面子任务; 创建二维图形子任务; 显示图形子任务; 管理图形文件子任务; end CAD. 在这一抽象级别上,给出了组成CAD软件任务的所有主要子任务,尽管术语已与问题域有所不同,但仍然不是实现所用的语言。,【例8.1】考虑适用于低级CAD的图形软件包。,抽象(仅以“创建二维图形

10、子任务”为例) PROCEDURE 创建二维图形 REPEAT UNTIL DO WHILE 数字仪接口任务; 判断作图请求: 线:画线任务; 圆:画圆任务; END;,【例8.1】考虑适用于低级CAD的图形软件包。,DO WHILE 键盘接口任务; 选择分析或计算: 辅助视图:辅助视图任务; 截面视图:截面视图任务; END; END REPEAT;END PROCEDURE.,【例8.1】考虑适用于低级CAD的图形软件包。,在这一抽象级别上,给出了初步的过程性表示,此时所有术语都是面向软件(比如采用dowhile结构)并且模块结构也开始明朗。求精过程还可继续下去,直至产生源代码。,数据抽象

11、,数据抽象与过程抽象一样,能使设计者按不同的详细程度表示数据对象。仍以CAD软件为例,我们可定义一个称为drawing(图)的数据对象:TYPE drawing IS STRUCTURE DEFINED number IS STRING LENTH(12); geometry DEFINED notes IS STRING LENTH(256); bom DEFINEDEND drawing TYPE;,数据抽象,在此,drawing被表示为一种结构,其各个组成部件本身又可为某种数据抽象,比如geometry(几何图形)和bom。一旦抽象数据类型drawing定义完毕,即可用类型名直接说明数据

12、对象,而不必涉及其内部构造的细节,例如,可用语句: blueprint IS INSTANCE OF drawing; 或 schematic IS INSTANCE OF drawing; 说明blueprint和schematic具有drawing的一切特性。blueprint蓝图,schematic简(略)图。,数据抽象,在抽象数据类型的定义中可以附加一组操作的定义,用以确定在此类数据对象上可进行的操作。以抽象数据类型drawing为例,可以定义擦除(erase)、存储(save)、分类(catalog)和拷贝(copy)等操作。许多程序设计语言都提供了对抽象数据类型的支持,Ada 的程

13、序包机制是对数据抽象和过程抽象的双重支持,过程求精与数据求精,因为求精的每一步都是用更为详细的描述替代上一层次的抽象描述,所以在整个设计过程中产生的,具有不同详细程度的各种描述,组成了系统的层次结构。层次结构的上一层是下一层的抽象,下一层是上一层的求精。在过程求精的同时自然伴随着数据的求精,无论是过程还是数据,每一步细化都蕴涵着某些设计决策,因此设计人员必须掌握一些基本的准则,比较各种可能的候选方案。,第8章 Foundation of Software Design,8.1 软件设计基本概念 8.1.1 软件设计过程8.1.2 软件设计的基本问题8.1.3 抽象与逐步求精8.1.4 模块化与

14、信息隐藏8.1.5 软件总体结构设计8.1.6 数据结构设计8.1.7 软件设计的启发规则8.1.8 软件过程设计8.1.9 常用的设计方法8.2 过程设计技术和工具8.3 设计规格说明与评审8.4 软件设计CASE工具,8.1.4 模块化与信息隐藏,软件总体结构(下一节讨论)体现了模块化思想,即把软件划分为可独立命名和编制的部件,每个部件称为一个模块,当把所有模块组装到一起时,便可获得满足问题需要的一个解。“模块化是唯一对软件中的程序进行智能化管理的一个属性”。,8.1.4 模块化与信息隐藏,假设:函数C(X)问题X的复杂性;函数E(X)求解问题X需要花费的工作量(时间);对于问题P1和P2,如果 : C(P1)C(P2) 则有 : E(P1)E(P2) 结论:解决一个复杂问题总比解决一个简单问题耗费 更多的工作量。 同时 有:C(P1+P2)C(P1)+C(P2) 结论:由P1、P2组合而成的问题的复杂性往往比考虑 单个问题复杂性的和更大。 于是有: E(P1+P2)E(P1)+E(P2),

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 其它文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号