软件设计的目标和任务软件设计基础模块独立性结构化设计方.ppt
《软件设计的目标和任务软件设计基础模块独立性结构化设计方.ppt》由会员分享,可在线阅读,更多相关《软件设计的目标和任务软件设计基础模块独立性结构化设计方.ppt(86页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、软件设计的目标和任务软件设计基础模块独立性结构化设计方法数据设计和文件设计过程设计,软件概要设计,软件设计的目标和任务,根据软件需求进行 数据设计 系统结构设计 过程设计。,数据设计侧重于数据结构的定义。系统结构设计定义软件系统各主要成份之间的关系。过程设计则是把结构成份转换成软件的过程性描述。,开发阶段的信息流,程序模块,测试,编码,设计,信息域需求,功能与性能需求,数据设计,过程设计,系统结构设计,组装好的有效的软件,软件设计是后续开发步骤及软件维护工作的基础。如果没有设计,只能建立一个不稳定的系统结构,软件设计任务,从工程管理的角度来看,软件设计分两步完成。 概要设计,将软件需求转化为数
2、据结构和软件的系统结构。 详细设计,即过程设计。通过对结构表示进行细化,得到软件的详细的数据结构和算法。,概要软件设计过程,1. 制定规范在进入软件开发阶段之初,首先应为软件开发组制定在设计时应该共同遵守的标准,以便协调组内各成员的工作。,2. 软件结构的设计,基于功能层次结构建立系统。 采用某种设计方法,将系统按功能划分成模块的层次结构 确定每个模块的功能确定模块间的调用关系 确定模块间的接口 评估模块划分的质量,3. 数据结构设计,确定数据库的模式、子模式,进行数据完整性和安全性的设计确定输入,输出文件的详细的数据结构,4.可靠性设计,可靠性设计也叫做质量设计在运行过程中,为了适应环境的变
3、化和用户新的要求,需经常对软件进行改造和修正。在软件开发的一开始就要确定软件可靠性和其它质量指标,考虑相应措施,以使得软件易于修改和易于维护。,5.编写概要设计阶段的文档,概要设计阶段完成时应编写以下文档: 概要设计说明书 数据库设计说明书 用户手册 制定初步的测试计划,6.概要设计评审,可追溯性:确认该设计是否复盖了所有已确定的软件需求,软件每一成份是否可追溯到某一项需求接口:确认该软件的内部接口与外部接口是否已经明确定义。模块是否满足高内聚和低耦合的要求。模块作用范围是否在其控制范围之内风险:确认该设计在现有技术条件下和预算范围内是否能按时实现,实用性:确认该设计对于需求的解决方案是否实用
4、技术清晰度:确认该设计是否以一种易于翻译成代码的形式表达可维护性:确认该设计是否考虑了方便未来的维护质量:确认该设计是否表现出良好的质量特征,各种选择方案:看是否考虑过其它方案,比较各种选择方案的标准是什么限制:评估对该软件的限制是否现实,是否与需求一致其它具体问题:对于文档、可测试性、设计过程.等进行评估,软件设计基础,自顶向下,逐步细化 软件结构 结构图 模块化 抽象化 信息隐蔽,自顶向下,逐步细化,将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据细节逐层细化,直到用程序设计语言的语句能够实现为止,从而最后确立整个的体系结构。,软件结构,软件结构包括两部分。程序的模块结构和数据的
5、结构软件的体系结构通过一个划分过程来完成。该划分过程从需求分析确立的目标系统的模型出发,对整个问题进行分割,使其每个部分用一个或几个软件成份加以解决,整个问题就解决了,结构图,结构图反映程序中模块之间的层次调用关系和联系:它以特定的符号表示模块、模块间的调用关系和模块间信息的传递, 模块:模块用矩形框表示,并用模块的名字标记它。,结构图的基本元素, 模块的调用关系:模块之间用单向箭头联结,箭头从调用模块指向被调用模块。,在模块A的箭头尾部标以一个菱形符号,表示模块A有条件地调用另一个模块B。当一个在调用箭头尾部标以一个弧形符号,表示模块A反复调用模块C和模块D。, 模块间的信息传递:当一个模块
6、调用另一个模块时,调用模块把数据或控制信息传送给被调用模块,以使被调用模块能够运行。而被调用模块在执行过程中又把它产生的数据或控制信息回送给调用模块,结构图的形态,模块化,软件系统的模块化是指整个软件被划分成若干单独命名和可编址的部分,称之为模块。这些模块可以被组装起来以满足整个问题的需求。把问题子问题的分解与软件开发中的系统子系统或系统模块对应起来,就能够把一个大而复杂的软件系统划分成易于理解的比较单纯的模块结构。,模块化是为了使一个复杂的大型程序能被人的智力所管理。 设函数C(x)定义问题x的复杂程度,函数E(x)确定解决问题x需要的工作量(时间)。 对于两个问题P1和P2,如果C(P1)
7、C(P2),显然E(P1)E(P2) 根据人类解决一般问题的经验,另一个有趣的规律是C(P1+P2)C(P1)+C(P2) 综上所述,有下面的不等式E(P1+P2)E(P1)+E(P2),模块化和软件成本,抽象,抽象就是抽出事物的本质特性而暂时不考虑它们的细节软件系统进行模块设计时,可有不同的抽象层次。在最高的抽象层次上,可以使用问题所处环境的语言概括地描述问题的解法。在较低的抽象层次上,则采用过程化的方法。,(1) 过程的抽象在软件工程中,从系统定义到实现,每进展一步都可以看做是对软件解决方法的抽象化过程的一次细化。 在软件需求分析阶段,用“问题所处环境的为大家所熟悉的术语”来描述软件的解决
8、方法。 在从概要设计到详细设计的过程中,抽象化的层次逐次降低。当产生源程序时到达最低抽象层次。,(2) 数据抽象在不同层次上描述数据对象的细节,定义与该数据对象相关的操作。,信息隐蔽,由 parnas 方法提倡的信息隐蔽是指,每个模块的实现细节对于其它模块来说是隐蔽的。也就是说,模块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用。,模块的独立性,模块(Module)“模块”,又称“组件”。它一般具有如下三个基本属性:功能:描述该模块实现什么功能逻辑:描述模块内部怎么做状态:该模块使用时的环境和条件,在描述一个模块时,还必须按模块的外部特性与内部特性分别描述模块的外部特性 模
9、块的模块名、参数表、其中的输入参数和输出参数,以及给程序以至整个系统造成的影响模块的内部特性 完成其功能的程序代码和仅供该模块内部使用的数据,模块独立性 模块独立性, 是指软件系统中每个模块只涉及软件要求的具体的子功能, 而和软件系统中其它的模块的接口是简单的一般采用两个准则度量模块独立性。即模块间耦合和模块内聚,耦合是模块之间的互相连接的紧密程度的度量。 内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。 模块独立性比较强的模块应是高内聚低耦合的模块。,模块间的耦合,非直接耦合(Nondirect Coupling) 两个模块之间没有直接关系,它们之间的联系完全是通过主模块
10、的控制和调用来实现的。非直接耦合的模块独立性最强。,数据耦合 (Data Coupling)一个模块访问另一个模块时,彼此之间是通过简单数据参数 (不是控制参数、公共数据结构或外部变量) 来交换输入、输出信息的。标记耦合 (Stamp Coupling)一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。,控制耦合 (Control Coupling) 如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。,外部耦合(External Coupling)一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是
11、通过参数表传递该全局变量的信息,则称之为外部耦合。公共耦合(Common Coupling)若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。,公共耦合的复杂程度随耦合模块的个数增加而显著增加。若只是两模块间有公共数据环境,则公共耦合有两种情况。松散公共耦合和紧密公共耦合。,内容耦合 (Content Coupling)如果发生下列情形,两个模块之间就发生了内容耦合 (1) 一个模块直接访问另一个模块的内部数据; (2) 一个模块不通过正常入口转到另一模块内部; (3) 两个模块有一部分程序代码重迭(只可能出
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件设计 目标 任务 基础 模块 独立性 结构 设计
限制150内