《软件工程.ppt》由会员分享,可在线阅读,更多相关《软件工程.ppt(71页珍藏版)》请在优知文库上搜索。
1、2023-3-101数据词典数据词典数数据据流流图图实实体体关关系系图图状态转换图状态转换图加加工工规规格格说说明明控控制制规规 格格说说明明数数据据对对象象描描述述过程设计过程设计接口设计接口设计体系结构设计体系结构设计数据设计数据设计2023-3-102第八章第八章 软件设计基础软件设计基础o软件设计是软件工程的重要阶段。软件设计是软件工程的重要阶段。o软件设计过程是对程序结构、数据结构和过程细节软件设计过程是对程序结构、数据结构和过程细节逐步求精、复审并编制文档的过程逐步求精、复审并编制文档的过程。o经过软件工程师们多年的努力形成了一些软件设计经过软件工程师们多年的努力形成了一些软件设计
2、技术、质量评估标准和设计表示法并用于软件工程实技术、质量评估标准和设计表示法并用于软件工程实践。践。o本章讨论与软件设计有关的主要概念本章讨论与软件设计有关的主要概念, , 介绍几介绍几个个具具体的软件设计方法。体的软件设计方法。2023-3-1038.18.1软件设计过程软件设计过程软件开发阶段由设计、编码和测试三个基本活动组成软件开发阶段由设计、编码和测试三个基本活动组成, ,其中其中“设计活动设计活动”是是 获取高质量、低耗费、易维护获取高质量、低耗费、易维护软件最重要的一个环节。软件最重要的一个环节。需求分析阶段获得的需求规格说明书包括对欲实现系需求分析阶段获得的需求规格说明书包括对欲
3、实现系统的信息、功能和行为方面的描述,统的信息、功能和行为方面的描述, 这是软件设计这是软件设计的基础。对此采用任一种软件设计方法都将产生系统的基础。对此采用任一种软件设计方法都将产生系统的总体结构设计的总体结构设计( (architearchite cturalctural design) design)、系统的系统的数 据 设 计数 据 设 计 ( ( d a t a d e s i g n )d a t a d e s i g n ) 和 系 统 的 过 程 设 计和 系 统 的 过 程 设 计( (procedural design)( procedural design)( 图图8
4、81)1)。第八章第八章 软件设计基础软件设计基础2023-3-104软件设计过程软件设计过程o不同的软件设计方法会产生不同的设计形式。不同的软件设计方法会产生不同的设计形式。o数据设计把信息描述转换为实现软件所要求的数据数据设计把信息描述转换为实现软件所要求的数据结构结构。o总体结构设计旨在确定程序各主要部件之间的关系总体结构设计旨在确定程序各主要部件之间的关系。 o过程设计过程设计要要完成每一部件的过程化描述。完成每一部件的过程化描述。o根据设计结果编制代码。根据设计结果编制代码。o设计阶段做的决策直接影响软件质量设计阶段做的决策直接影响软件质量, ,没有良好的设没有良好的设计就没有稳定的
5、系统计就没有稳定的系统, ,也不会有易维护的软件。也不会有易维护的软件。o统计表明:设计、编码和测试这三个活动一般占用统计表明:设计、编码和测试这三个活动一般占用整个软件开发费用整个软件开发费用( (不包括维护阶段不包括维护阶段) )的的75%75%以上。以上。8.1软件设计过程软件设计过程2023-3-105图图8 8. .1 1 开发阶段的信息流开发阶段的信息流8.1软件设计过程软件设计过程2023-3-106软件设计过程软件设计过程o软件设计也可看作将需求规格说明逐步转换为软件软件设计也可看作将需求规格说明逐步转换为软件源代码的过程。源代码的过程。o从工程管理的角度从工程管理的角度看,看
6、,软件设计可分为概要设计和软件设计可分为概要设计和详细设计两大步骤。详细设计两大步骤。o概要设计是根据需求确定软件和数据的总体框架概要设计是根据需求确定软件和数据的总体框架o详细设计是将其进一步精化成软件的算法表示和数详细设计是将其进一步精化成软件的算法表示和数据结构。据结构。o概要设计和详细设计由若干活动组成,除总体结构概要设计和详细设计由若干活动组成,除总体结构设计、数据结构设计和过程设计外,许多现代应用软设计、数据结构设计和过程设计外,许多现代应用软件,还包括一个独立的界面设计活动。件,还包括一个独立的界面设计活动。8.1软件设计过程软件设计过程2023-3-1078.28.2软件设计基
7、本概念软件设计基本概念o软件设计基本概念是过去三十年里陆续提出的。软件设计基本概念是过去三十年里陆续提出的。o软件设计者根据这组概念进行设计决策软件设计者根据这组概念进行设计决策, ,如如: :划分子部件划分子部件的的标准标准; ;从软件的概念表示中分离出功能和数据结构的细节从软件的概念表示中分离出功能和数据结构的细节; ;以统一的标准衡量软件设计质量等等。以统一的标准衡量软件设计质量等等。第八章第八章 软件设计基础软件设计基础2023-3-1088.2.18.2.1抽象与逐步求精抽象与逐步求精抽象是管理、控制复杂性的基本策略抽象是管理、控制复杂性的基本策略 。“抽象抽象”是心理学概念是心理学
8、概念, ,它要求人们将注意力集中在某一层次它要求人们将注意力集中在某一层次上考虑问题上考虑问题, ,而忽略那些低层次的细节。而忽略那些低层次的细节。使用抽象技术便于人们用使用抽象技术便于人们用“问题域问题域”的概念和术语描述问题的概念和术语描述问题, ,而无须过早地转换为那些不熟悉的结构。而无须过早地转换为那些不熟悉的结构。软件设计过程是软件设计过程是,在不同抽象级别在不同抽象级别上上考虑、处理问题的过程。考虑、处理问题的过程。()()在最高抽象级别上在最高抽象级别上, ,用面向问题域的语言叙述用面向问题域的语言叙述“问题问题”, ,概括概括“问题解问题解”的形式的形式。()()不断地具体化不
9、断地具体化, ,不断地用面向过程的语言描述问题不断地用面向过程的语言描述问题。()()在最低的抽象级别上给出可直接实现的在最低的抽象级别上给出可直接实现的“问题解问题解”,即,即程序。程序。8.2软件设计基本概念软件设计基本概念2023-3-109抽象与逐步求精抽象与逐步求精软件工程过程的每一步都是对较高一级抽象的解作一软件工程过程的每一步都是对较高一级抽象的解作一次较具体化的描述。次较具体化的描述。o在系统定义阶段在系统定义阶段, , 软件系统被描述为基于计算机的软件系统被描述为基于计算机的大系统的一个组成部分大系统的一个组成部分; ;o在软件规划和需求分析阶段在软件规划和需求分析阶段, ,
10、软件用问题域约定的习软件用问题域约定的习惯用语表达惯用语表达; ;o从概要设计过渡到详细设计时从概要设计过渡到详细设计时, ,抽象级再一次降低抽象级再一次降低; ;o编码完成后编码完成后,达到了抽象的最低级。达到了抽象的最低级。8.2软件设计基本概念软件设计基本概念2023-3-1010抽象与逐步求精抽象与逐步求精在由高级抽象到低级抽象的转换过程中在由高级抽象到低级抽象的转换过程中, ,伴随着一连伴随着一连串的过程抽象和数据抽象。串的过程抽象和数据抽象。o过程抽象把完成一个特定功能的动作序列抽象为一过程抽象把完成一个特定功能的动作序列抽象为一个过程名和参数表,通过指定过程名和实际参数调用个过程
11、名和参数表,通过指定过程名和实际参数调用此过程此过程; ;o数据抽象把一个数据对象的定义数据抽象把一个数据对象的定义( (或描述或描述 ) )抽象为一抽象为一个数据类型名,用此类型名可定义多个具有相同性质个数据类型名,用此类型名可定义多个具有相同性质的数据对象。的数据对象。8.2软件设计基本概念软件设计基本概念2023-3-10118.2.28.2.2模块化与信息隐藏模块化与信息隐藏o模块化的概念模块化的概念把软件划分为可独立命名和编址的部件,每个部件称为一把软件划分为可独立命名和编址的部件,每个部件称为一个模块个模块, ,当把所有模块组装到一起时则获得满足问题需要的一当把所有模块组装到一起时
12、则获得满足问题需要的一个解。个解。o软件总体结构体现了模块化思想软件总体结构体现了模块化思想。o“模块化是软件唯一能使程序获得智能化管理的一个属性模块化是软件唯一能使程序获得智能化管理的一个属性”,没有没有模块的程序控制路径错综复杂模块的程序控制路径错综复杂, ,变量被远距离引用等变量被远距离引用等难于被人掌握。难于被人掌握。8.2软件设计基本概念软件设计基本概念2023-3-10122023-3-1013模块化与信息隐藏模块化与信息隐藏求解问题的过程求解问题的过程假设假设函数函数C(X)C(X)定义了问题定义了问题X X已被觉察到的复杂性已被觉察到的复杂性, ,函数函数E(X)E(X)定义了
13、求解问题定义了求解问题X X所要求的工作量所要求的工作量( (按时间计按时间计) ),对于问题对于问题P1P1和和P2,P2,如果如果C(P1)C(P1)C(P2)C(P2)(8(81a)1a)则则E(P1)E(P1)E(P2)E(P2)(8(81b)1b)C(P1+P2)C(P1+P2)C(P1)+C(P2)C(P1)+C(P2)(8(82)2)E(P1+P2)E(P1+P2)E(P1)+E(P2)E(P1)+E(P2)(8(83)3)o解决一个复杂问题解决一个复杂问题,比解决一个简单问题耗费多。比解决一个简单问题耗费多。o由由P1P1、P2P2组合而成的问题复杂性组合而成的问题复杂性,比单
14、个问题复杂性的和更比单个问题复杂性的和更大。大。8.2软件设计基本概念软件设计基本概念2023-3-1014模块化与信息隐藏模块化与信息隐藏“分治法分治法”一个复杂问题分割成若干个可管理的小问题后更易一个复杂问题分割成若干个可管理的小问题后更易于求解。于求解。o当模块总数增加时当模块总数增加时, ,每个模块的成本减少了每个模块的成本减少了, ,但模块但模块接口所需代价随之增加。接口所需代价随之增加。o如果模块数为如果模块数为M M时将获得最小开发成本时将获得最小开发成本, ,那么模块数那么模块数在在M M附近选择附近选择, ,就能避免模块分割过度和不足。就能避免模块分割过度和不足。这些问题涉及
15、信息隐藏、内聚度与藕合度的概念。这些问题涉及信息隐藏、内聚度与藕合度的概念。8.2软件设计基本概念软件设计基本概念2023-3-1015模块化与信息隐藏模块化与信息隐藏o怎样保证模块数怎样保证模块数“在在M M附近附近”? ?o依据什么标准划分模块依据什么标准划分模块? ?8.2软件设计基本概念软件设计基本概念2023-3-10161 1信息隐藏信息隐藏模块独立的概念模块独立的概念o模块应该设计得使其所含信息模块应该设计得使其所含信息( (过程和数据过程和数据) )对于那对于那些不需要这些信息的模块不可访问些不需要这些信息的模块不可访问; ;o每个模块只完成一个相对独立的特定功能每个模块只完成
16、一个相对独立的特定功能; ;o模块之间仅仅交换那些为完成系统功能必须交换的模块之间仅仅交换那些为完成系统功能必须交换的信息信息,即模块应该独立。即模块应该独立。采用信息隐藏原理指导模块设计采用信息隐藏原理指导模块设计优点优点:o支持模块的并行开发支持模块的并行开发o减少减少软件软件测试和测试和软件软件维护的工作量。维护的工作量。8.2软件设计基本概念软件设计基本概念2023-3-10172023-3-10182 2内聚度内聚度内聚度内聚度模块内部各成分彼此结合的紧密程度。模块内部各成分彼此结合的紧密程度。内聚度按其高低程度可分为七级内聚度按其高低程度可分为七级, ,内聚度越高越好。内聚度越高越好。低级内聚度低级内聚度()()偶然性内聚偶然性内聚( (Coincidental Cohesion)Coincidental Cohesion)。模块内各成分为完成一组功能而组合在一起模块内各成分为完成一组功能而组合在一起, ,它们相互之它们相互之间即使有关系间即使有关系, ,也很松散。也很松散。()()逻辑性内聚逻辑性内聚( (Logical Cohesion)Logical Cohesion