软件设计思路(PPT92页)
软件设计概要讲义PPT(83张)
三、软件设计的概念和原理
自顶向下,逐步细化将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据细节逐层细化,直到用程序设计语言的语句能够实现为止,从而最后确立整个的体系结构。 软件结构 ①软件结构包括两部分。程序的模块结构和数据的结构。 ②软件的体系结构通过一个划分过程来完成。该划分过程从需求分析确立的目标系统的模型出发,对整个问题进行分割,使其每个部分用一个或几个软件成份加以解决,整个问题就解决了。
项目经理
负责分配设计任务,追踪设计阶段进度,在项目组内协调设计过程中所需资源,参与设计文档的同行评审
系统分析员
完成相关的设计任务,编写设计文档,修改设计评审中发现的问题
项目组开发人员代表
参与设计文档的同行评审
其他项目经理
参与设计文档的同行评审
其他项目系统分析员
参与设计文档的同行评审
质量保证员
检查设计过程及设计阶段产生的文档,跟踪发现的问题的解决情况
一、软件设计的目标和任务
1、目标 系统结构设计定义软件系统各主要成份之间的关系。 过程设计。把结构成份转换成软件的过程性描述。
开发阶段的信息流
把需求翻译成文档
2、软件设计的任务 概要设计(系统设计),将软件需求转化为数据结构和软件的系统结构。概要设计由技术总监,部门经理和项目经理来做的,有可能会加一两个核心程序员。
二维画图又分为以下CASE,案例,任务的集合
(2)数据抽象 在不同层次上描述数据对象的细节,定义与该数据对象相关的操作。 例如,在CAD软件中,定义一个叫做drawing绘图的数据对象。可将drawing规定为一个抽象数据类型,定义它的内部细节为:
软件工程结构化软件设计PPT
软件工程结构化软件设计PPT 在当今数字化的时代,软件已经成为了驱动社会发展和创新的重要力量。
而软件工程中的结构化软件设计则是确保软件质量、可维护性和可扩展性的关键环节。
本 PPT 将深入探讨软件工程结构化软件设计的相关概念、原则、方法和技术。
一、结构化软件设计的概念结构化软件设计是一种基于模块化、自顶向下、逐步细化的设计方法。
它将软件系统分解为多个相互独立、功能明确的模块,通过清晰的接口进行通信和协作。
这种设计方法有助于提高软件的可读性、可理解性和可维护性,降低开发成本和风险。
二、结构化软件设计的原则1、模块化原则将软件系统划分为若干个模块,每个模块具有独立的功能和明确的接口。
模块之间的耦合度要低,内聚度要高,以提高模块的独立性和可复用性。
2、自顶向下原则从软件系统的顶层开始,逐步向下分解和细化,直到最底层的模块。
这种方法有助于把握软件系统的整体结构和功能,避免出现混乱和遗漏。
3、信息隐藏原则模块内部的实现细节对其他模块隐藏,只通过公开的接口进行交互。
这样可以减少模块之间的相互影响,提高软件的稳定性和可修改性。
4、高内聚低耦合原则模块内部的元素之间具有紧密的联系,形成一个高度内聚的整体;模块之间的联系要尽量松散,降低耦合度。
这样可以使软件系统更容易理解和维护。
三、结构化软件设计的方法1、数据流图(DFD)用于描述软件系统中数据的流动和处理过程。
通过绘制 DFD,可以清晰地了解系统的功能需求和数据流程,为后续的设计提供依据。
2、结构图展示软件系统的模块结构和模块之间的层次关系。
结构图可以帮助开发人员直观地了解系统的整体架构,便于进行模块的划分和设计。
3、程序流程图用于描述程序的控制流程和逻辑结构。
通过绘制程序流程图,可以清晰地了解程序的执行过程,便于进行代码的编写和调试。
四、结构化软件设计的技术1、模块划分技术根据功能需求和设计原则,将软件系统划分为合理的模块。
在划分模块时,要考虑模块的大小、功能的独立性和复用性等因素。
软件工程 软件项目的详细设计PPT课件
•
处理S1
•
处理S2
•
……
•
处理Sn
第29页/共45页
四、详细设计的工具
• 2)选择结构
• ① IF—ElSE结构
• IF 条件
IF 条件
• 处理S1
或
处理S
• ELSE
ENDIF
• 处理S2
• ENDIF
第30页/共45页
四、详细设计的工具
• ② IF—ORIF—ElSE结构
• IF 条件1
• 处理 S1
第15页/共45页
第16页/共45页
第17页/共45页
第18页/共45页
四、详细设计的工具
• (2)每一个N-S图开始于一个大的矩形,表示它所描述的模块。该矩形 的内部被分成不同的部分,分别表示不同的子处理过程,这些子处理过程 又可以进一步分解成更小的部分。
第19页/共45页
四、详细设计的工具
清屏;
•
显示××系统用户界面;•PUT(“输入用户口令:”);•
GET(password);
•
IF password <> 系统口令
•
提示警告信息;
•
退出运行
•
ENDIF
第39页/共45页
四、详细设计的工具
• • • • • • • • • • • END
显示本系统主菜单; WHILE(true)
• ORIF 条件2
• 处理 S2
•
……
• ELSE 处理Sn
• ENDIF
第31页/共45页
四、详细设计的工具
• ③ CASE结构 • CASE OF • CASE(1) 处理S1 • CASE(2) 处理S2 • …… • ELSE 处理Sn • ENDCASE
软件设计模式(ppt文档)
};
theOnlyInstance和一个公开的 静态函数getInstance ,前者 用来指向Log的唯一实例,后 者用来获取该实例的指针;
主程序 main.cpp
#include<log.h> void main() {
Log * pLog = Log::getInstance(); pLog->SetFile("myapp.log"); PLog->Print("App starts...") ... }
• 模式分析
– 在单例模式的实现过程中,需要注意如下三点:
系统分析与设计 之
设计模式
主讲人:张琪
什么是设计模式?
设计模式(Design pattern)是一套被 反复使用、多数人知晓的、经过分类编目 的、代码设计经验的总结。使用设计模式 是为了可重用代码、让代码更容易被他人 理解、保证代码可靠性。
设计模式使代码编制真正工程化;设计 模式是软件工程的基石脉络,如同大厦的 结构一样。
• 单例类的构造函数为私有; • 提供一个自身的静态私有成员变量; • 提供一个公有的静态工厂方法。
• 模式优缺点
– 单例模式的优点
• 提供了对唯一实例的受控访问。因为单例类封装了 它的唯一实例,所以它可以严格控制客户怎样以及 何时访问它,并为设计及开发团队提供了共享的概 念。
• 由于在系统内存中只存在一个对象,因此可以节约 系统资源,对于一些需要频繁创建和销毁的对象, 单例模式无疑可以提高系统的性能。
软件系统设计总体思路
软件系统设计总体思路1.需求分析:首先,我会与客户充分沟通、了解客户的需求和期望。
通过需求分析,我可以准确地把握系统开发的目标和工作重点。
在需求分析阶段,我会使用一些工具,如用户故事、用例图等,来帮助理清需求的逻辑关系和功能要求。
2.架构设计:在需求分析的基础上,我会进行系统的架构设计。
架构设计是系统设计的基石,它涉及到系统各个模块的组织、接口的定义、数据的流动等,对系统的后续开发和维护具有重要的指导意义。
在架构设计中,我会考虑到系统的可扩展性、可维护性、安全性等方面。
3.功能模块划分:在架构设计的基础上,我会对系统的功能模块进行划分。
功能模块划分是为了使不同模块之间的工作职责清晰,并且方便团队合作开发。
在划分功能模块时,我会考虑到模块之间的依赖关系,尽量减少模块之间的耦合,提高系统的可维护性和可测试性。
4.数据交互流程设计:在系统设计中,数据的交互流程是不可忽视的一部分。
我会绘制数据流程图,清晰地描述数据在系统中的流动路径。
通过数据交互流程设计,可以帮助开发人员更好地理解系统的工作原理,避免数据错误和冗余。
5.接口设计:在设计系统时,接口的定义是非常重要的。
我会设计清晰的接口,规范接口的输入输出和参数的定义。
通过良好的接口设计,可以降低不同模块之间的耦合度,提高系统的可维护性和扩展性。
6.安全性设计:在系统设计中,安全性是一个重点和难点。
我会考虑系统的安全需求,并设计相应的安全措施,如身份认证、访问控制等。
此外,我还会对系统进行风险评估和安全测试,确保系统的安全性。
7.性能优化:在系统设计中,性能优化是一项关键任务。
我会关注系统的性能瓶颈,并采取一些优化措施,如缓存优化、数据库索引优化等,来提高系统的响应速度和并发能力。
总之,软件系统设计是一个综合性的任务,需要综合考虑需求分析、架构设计、模块划分、数据交互流程设计、接口设计、安全性设计、性能优化等多个方面。
通过合理的设计,可以帮助开发人员高效开发、维护和升级系统,同时满足用户需求。
软件设计PPT课件
软件测试的目标
确保软件质量
通过测试发现软件中存在的缺陷和错误,提 高软件的质量和稳定性。
验证软件功能
验证软件是否符合需求规格,是否能够完成 预定的功能和任务。
提高软件可靠性
通过不断测试和修复,提高软件的可靠性和 可用性,降低故障率。
优化性能
通过测试发现软件的性能瓶颈,优化软件性 能,提高运行效率。
社交网络设计案例,以微信为例,介 绍其功能、特点、技术实现和用户体 验等方面的设计。
用户体验
微信注重用户体验,通过不断优化界 面设计和交互细节,提升了用户的使 用感受。
01
02
功能设计
微信作为一款社交应用,其功能设计 主要包括聊天、朋友圈、公众号等, 满足了用户社交需求。
03
特点
微信具有简洁、易用、安全等特点, 用户可以快速上手并享受优质的社交 体验。
页面布局
淘宝采用清晰的页面布局,将商品信 息、搜索框、导航栏等元素合理排布, 方便用户浏览和查找。
购物流程
淘宝的购物流程设计简洁明了,用户 可以轻松完成注册、登录、浏览、购 买等操作。
案例三:移动应用的设计
抖音的界面设计简洁大方,色彩搭配 合理,图标和按钮符合用户习惯,提 升了用户体验。
抖音在性能优化方面做得很好,无论 是启动速度还是运行流畅度都得到了 保障。
提高数据完整性
保证数据的准确性和可靠性,确保 数据的正确性和一致性。
04
数据库设计的基本步骤
概念设计
根据需求分析结果,设计出符 合业务需求的数据库概念模型。
物理设计
根据逻辑模型,设计出数据库 的物理结构,包括存储结构、 索引、分区等。
需求分析
了解用户需求,收集相关数据, 分析业务流程和数据流程。
软件系统设计总体思路
软件系统设计总体思路软件设计的核心在于建立合适的模型,以满足用户需求并具备灵活性、有效性、可靠性、可理解性、维护性、重用性、适应性、可移植性、可追踪性和互操作性等特性。
因此,软件设计并不是一套放之四海而皆准的方法和模板,而是需要根据软件项目的特点进行沟通和协调,整理出适合软件项目团队的方式进行设计,并保障设计文档的一致性、完整性和可理解性。
在软件开发过程中,设计文档的详细程度可以根据项目实际情况进行约定,但需要保障文档的完整性和一致性。
在项目进度紧张的情况下,设计文档可以更为简略;在项目时间充裕的情况下,可以更为详尽。
但是,软件设计开发团队需要对设计文档有共同的理解。
软件项目通常需要包括需求说明文档、功能设计文档、系统架构说明书、模块概要设计文档和模块详细设计文档。
不同项目对于这些文档的要求可以不同,可能需要将所有文档放在一个文档中说明,也可能需要编写多个文档。
设计文档并不是额外的工作,而是在软件设计开发过程中形成的用于沟通的文档,记录了各种知识、方案思路和决策意见。
在架构设计工作中,用户参与程度通常很低。
虽然软件开发团队中的需求人员也不太参与,但是团队中的核心设计和开发人员都应该参与其中,并达成一致意见。
架构设计的主要成果是将系统的不同视图呈现出来,并将其落实到开发中。
这些视图包括系统开发视图及技术路线选择、系统逻辑视图、系统部署视图、系统模块视图和系统的领域模型。
在软件开发过程中,系统的架构会随着设计人员和开发人员对于系统的理解不断深入而发生演化。
因此,在软件项目中,架构设计是开发团队沟通的统一语言,设计文档必须随着系统的变化进行更新,以保证开发团队对于系统的理解和沟通的一致性。
在模块/子系统的概要设计中,架构师参与,核心设计和开发人员负责。
在这个阶段,我们需要在架构确定的开发路线的指导下,完成模块功能实现的关键设计工作。
在概要设计阶段,需要关注模块的核心功能和难点进行设计。
在这个过程中,我们更多地推荐采用UML来进行概要设计,并进行模块实现机制设计、模块接口设计、关键类设计、画出时序图和交互图等。
软件设计(详细设计)PPT课件
Case条件
Case1 Case2 … Casen
AB
N
c.多分支结构
循环条件 Do-While
部分
d.当型循环结构
Do-Until 部分
循环条件
e.直到型循环结构
A f.调用子程序A
图3.4 盒图的基本符号
F A
盒图例子
T B C D
A:
Case 1234 E FGH
(3) PAD图
PAD(Problem Analysis Diagram)是问题分析图。 日立公司发明和推广(1973)。
实用软件工程
第三章 软件设计 (详细设计)
第3章 软 件 设 计 软件设计通常分为两个阶段:总体设计阶段和详
细设计阶段。 总体设计
详细设计
详细3设.1计软的件基设本计任的务基本任务
详细设计是总体设计的进一步的具体化,主 要确定每个模块的具体执行过程,故也称为过程 设计。其基本任务有: (1).为每个模块进行详细的算法设计。 (2).为模块内的数据结构进行设计。 (3).对数据库进行物理设计 。 (4).界面设计。 (5).编写文档 (6).评审
打开数据库 SQL查询语句赋值 通过记录集对象打开SQL语句设定的记录
Y 记录集末端?
N 记数变量加1,输出记录字段值及图像
转跳下一记录 关闭数据库链接对象、记录集对象,并释放资源
输出记录数和提示 结束
程序流程图的缺点: 1)程序流程图本质上不是逐步求精的好工具,它诱
使程序员过早地考虑程序的控制流程,而不去考 虑程序的全局结构。
5)可用于表示程序逻辑,也可用于描绘数据结构; 6)PAD图的符号支持自顶向下、逐步求精的方法。
2)程序流程图中用箭头代表控制流,因此程序员不 受任何约束,可以完全不顾结构程序设计的精神, 随பைடு நூலகம்转移控制。
软件设计模式ppt课件
*
* @author Administrator
*
*/
精选ppt
42
创建型模式之一(工厂方法模式)
package com.demo.factory;
import com.demo.factory.itf.ISwordFactory; import com.demo.factory.model.AbstractSword; import com.demo.factory.model.object.QixingSword;
实例二(多文档)
精选ppt
25
接口的作用
接口的定义方面来说,接口其实就是类和类之间的一种 协定,一种约束(安全性).
方便统一管理.另一个是方便调用
提高模块内的内聚性,降低模块间的耦合性.
扩展性
使用方便,可读性强,结构清晰的特点。
interface IBark { void Bark(); }
够有静态的不能被修改的数据成员(也就是必须 是static final的,不过在 interface中一般不定义 数据成员),所有的成员方法都是abstract的。
abstract class和interface所反映出的设计理念不
同。其实abstract class表示的是"is-a"关系,
精选ppt
精选ppt
3
设计模式的基本概念-软件危 机
软件危机的产生原因
✓ 与软件本身的特点有关。软件不同于硬件,它是计算机 系统中的逻辑部件而不是物理部件;软件不会因使用时 间过长而“老化”或“用坏”;在写出程序代码并在计 算机上试运行之前,软件开发过程的进展情况较难衡量, 软件质量也较难评价,因此管理和控制软件开发过程十 分困难;软件质量不是根据大量制造的相同实体的质量 来度量,而是与每一个组成部分的不同实体的质量紧密 相关,因此,在运行时所出现的软件错误几乎都是在开 发时期就存在而一直未被发现的,改正这类错误通常意 味着改正或修改原来的设计,这就在客观上使得软件维 护远比硬件维护困难;软件是一种信息产品,具有可延 展性,属于精柔选p性pt 生产,与通用性强的硬件相比,软件更 4
软件系统设计-总体设计 PPT 课件
2. 内 聚
• 一个模块内部元素在功能上相互关联的强度
设计目标:高内聚,模块在软件过程中完成单一的任务
(1) 功能内聚 (Functional Cohesion)
公共数据区指: • 全局数据结构 • 共享通讯区 • 内存公共覆盖区等
A
B
C
公共数据区
公共耦合存在的问题: (1)软件可理解性降低 (2)诊断错误困难 (3)软件可维护性差, (4)软件可靠性差 (公共数据区及全程变量无保护措施) 慎用公共数据区和全程变量!!!
(7) 内容耦合
A
B
A B
Entry1 ……
在较低抽象层次采用更过程化的方法,把面向问题的术语和面向实现的术 语结合起来叙述问题的解法;最后在最低的抽象层次用可直接实现的方式 叙述问题的解法。
• 软件工程过程的每一步都是对软件解法的抽象层次的一次精化。
在可行性研究阶段,软件作为系统的一个完整部件;在需求分析期间,软 件解法是使用在问题环境内熟悉的方式描述的;当由总体设计向详细设计 过渡时,抽象的程度也就随之减少了;最后,当源程序写出来以后,也就 达到了抽象的最低层。
模块1
模块3
模块4
模块2
(2) 数据耦合
一模块调用另一 模块时,被调用 模块的输入、输 出都是简单的数 据(若干参数)。 属松散耦合。
开发票
单价 数量
金额
计算水费
(3) 标记耦合(特征耦合)
如两个模块通过传 递数据结构(不是 简单数据,而是记 录、数组等)加以 联系,或都与一个 数据结构有关系, 则称这两个模块间 存在标记偶合。
《软件工程》课件第3章 软件设计
第3章 软件设计
3.1 软件概要设计概述 3.2 软件设计的基本原理 3.3 软件结构准则 3.4 基于IDEF0图的设计方法 3.5 软件详细设计 3.6 软件详细设计表示法 3.7 小结 习题
第3章 软件设计
3.1 软件概要设计概述
3.1.1 概要设计基本任务 1.设计软件系统结构(简称软件结构) 为了实现目标系统,最终必须设计出组成这个系
4.评审 在该阶段,对设计部分是否完整地实现了需求中 规定的功能、性能等要求,设计方案的可行性、关键 的处理和内外部接口定义正确性、有效性以及各部分 之间的一致性等,都一一进行评审。
第3章 软件设计
3.1.2 软件概要设计文档 概要设计说明书是概要设计阶段结束时提交的技
术文档。按国标GB8576—88的《计算机软件产品开发文 件编制指南》规定,软件设计文档可分为“概要设计 说明书”、“详细设计说明书”和“数据库设计说明 书”。
在大多数情况下,模块间的控制耦合并不是必需的, 可以将被调模块内的判定上移到调用模块中去,同时将 被调模块按其功能分解为若干单一功能的模块,将控制 耦合改变为数据耦合。
第3章 软件设计
(5) 公共耦合:指通过一个公共数据环境相互作 用的那些模块间的耦合。公共数据环境可以是全程变 量或数据结构、共享的通信区、内存的公共覆盖区及 任何存储介质上的文件和物理设备等(也有将共享外部 设备分类为外部耦合的)。
概要设计说明书的主要内容如下: (1) 引言:编写目的,背景,定义,参考资料。 (2) 总体设计:需求规定,运行环境,基本设计 概念和处理流程,结构。
第3章 软件设计
(3) 接口设计:用户接口,外部接口,内部接口。 (4) 运行设计:运行模块组合,运行控制,运行时 间。 (5) 系统数据结构设计:逻辑结构设计,物理结构 设计,数据结构与程序的关系。 (6) 系统出错处理设计:出错信息,补救措施,系 统恢复设计。
软件系统设计总体思路
软件/系统设计的总体思路一、概念软件设计的本质就是针对软件的需求,建立模型,通过将模型映射为软件,来解决实际问题。
因此软件设计需要解决的核心问题是建立合适的模型,使得能够开发出满足用户需求的软件产品,并具有以下特性:•灵活性(Flexibility)•有效性(Efficiency)•可靠性(Reliability)•可理解性(Understandability)•维护性(Maintainability)•重用性(Reuse—ability)•适应性(Adaptability)•可移植性(Portability)•可追踪性(Traceability)•互操作性(Interoperability)因此,软件设计并没有一套放之四海而皆准的方法和模板,需要我们的设计开发人员在软件的设计开发过程中针对软件项目的特点进行沟通和协调,整理出对软件项目团队的行之有效的方式,进行软件的设计。
并保障软件设计文档的一致性,完整性和可理解性。
我们经常听到这样的话:•“设计文档没有用,是用来糊弄客户和管理层的文档”;•“用来写设计文档的时间,我的开发早就做完了”;•“项目紧张,没有时间做设计”;这些言论,并不是正确的观念,根据软件项目的实际情况,软件开发设计团队可以约定设计文档的详细程度.项目团队需要保障设计文档的完整性和一致性,在项目进度紧张的情况下,软件设计文档可以更初略一些;在项目时间充裕的情况下,相关文档可以更为详尽.但是在项目开发过程中,需要软件设计开发团队对于设计文档有共同的理解。
二、设计文档分类与使用通常来说,作为软件项目,我们需要有这几类文档•需求说明文档•功能设计文档•系统架构说明书•模块概要设计文档•模块详细设计文档就像我之前说到的,在某个软件团队,对于以上的文档的要求是可以完全不同的,在简单项目中,可能所有类型的文档放在一个文档中进行说明;在复杂项目中,每一类文档可能都要写几个文档;而在最极端的情况下,可能每一类文档都能装订成几册。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4. 功能分解
为了最终实现目标系统,必须设计出组成这个系统的所有 程序和文件(或数据库)。对程序(特别是复杂的大型程序)的设计, 通常分为两个阶段完成:首先进行结构设计,然后进行过程设 计。结构设计确定程序由哪些模块组成,以及这些模块之间的 关系;过程设计确定每个模块的处理过程。结构设计是总体设 计阶段的任务,过程设计是详细设计阶段的任务。
5. 设计软件结构
通常程序中的一个模块完成一个适当的子功能。 应该把模块组织成良好的层次系统,顶层模块调用 它的下层模块以实现程序的完整功能,每个下层模 块再调用更下层的模块,从而完成程序的一个子功 能,最下层的模块完成最具体的功能。软件结构(即 由模块组成的层次系统)可以用层次图或结构图来描 绘,第5.4节将介绍这些图形工具。
软件设计( 续)
概要设计的基本目的是回答“概括地说,软件系统应 如何实现”这一问题。因此,概要设计有时称为初步 设计或总体设计。 这个阶段的工作将划分出组成系统的物理元素——程 序、文件、数据库、人工过程和文档等,每个物理元 素仍处在黑盒子级,具体内容将在以后仔细设计。 概要设计的关键是确定软件的总体结构,即确定软件 系统的组成成份(子系统或模块)以及各组成成份之 间的相互关系。
总体设计的必要性
可以站在全局高度上,花较少成本,从较抽象的层次上分析 对比多种可能的系统实现方案和软件结构,从中选出最佳方 案和最合理的软件结构,从而用较低成本开发出较高质量的 软件系统。
总体设计过程由两个主要阶段(包括9个步骤)组成:
(1)系统设计阶段,确定系统的具体实现方案; (2)结构设计阶段,确定软件结构。
设计原理:模块化、抽象、信息隐藏和局部化、模块独立 模块的独立程度度量:内聚和耦合,在软件设计中应该追
求尽可能松耦合、高内聚的系统。
启发规则:7条规则 描绘软件结构的图形工具:层次图、HIPO图、结构图 面向数据流的设计方法:变换流分析、事务流分析
5.1 设计过程
总体设计过程通常由两个主要阶段组成: (1)系统设计阶段,确定系统的具体实现方案; (2)结构设计阶段,确定软件结构。 典型的总体设计过程包括下述9个步骤:
1.设想供选择的方案 2.选取合理的方案 3.推荐最佳方案 4.功能分解 5.设计软件结构
6. 设计数据库 7. 制定测试计划
8. 书ห้องสมุดไป่ตู้文档
9. 审查和复审
1. 设想供选择的方案
在总体设计阶段分析员应该考虑各种可能的实现方案, 并且力求从中选出最佳方案。在总体设计阶段开始时只有 系统的逻辑模型,分析员有充分的自由分析比较不同的物 理实现方案,一旦选出了最佳的方案,将能大大提高系统 的性能/价格比。
如果数据流图已经细化到适当的层次,则可以 直接从数据流图映射出软件结构,这就是第5.5节中 将要讲述的面向数据流的设计方法。
6. 设计数据库
对于需要使用数据库的那些应用系统,软件工程师应该 在需求分析阶段所确定的系统数据需求的基础上,进一步设 计数据库。
在数据库课中已经详细讲述了设计数据库的方法,本书 不再赘述。
第5章 总体设计
5.1 设计过程 5.2 设计原理 5.3 启发规则 5.4 描绘软件结构的图形工具 5.5 面向数据流的设计方法 5.6 小结 习题
软件设计
需求分析:软件系统必须“做什么” ; 软件设计:“如何做”才可以满足需求规格说明中 规定的各项需求。 从工程管理的角度来看,软件设计通常分为两步, 即概要设计和详细设计。
需求分析阶段得出的数据流图是总体设计的极好的出 发点。设想供选择的方案的一种常用的方法是,设想把数 据流图中的处理分组的各种可能的方法,抛弃在技术上行 不通的分组方法(例如,组内不同处理的执行时间不相容), 余下的分组方法代表可能的实现策略,并且可以启示供选 择的物理系统。
2. 选取合理的方案
应该从前一步得到的一系列供选择的方案中选取若干 个合理的方案,通常至少选取低成本、中等成本和高成本 的三种方案。在判断哪些方案合理时应该考虑在问题定义 和可行性研究阶段确定的工程规模和目标,有时可能还需 要进一步征求用户的意见。 对每个合理的方案分析员都应该准备下列4份资料: (1) 系统流程图; (2) 组成系统的物理元素清单; (3) 成本/效益分析; (4) 实现这个系统的进度计划。
3. 推荐最佳方案
分析员应该综合分析对比各种合理方案的利弊,推荐一 个最佳的方案,并且为推荐的方案制定详细的实现计划。制 定详细实现计划的关键技术是本书第13章中将要介绍的工程 网络。
用户和有关的技术专家应该认真审查分析员所推荐的最 佳系统,如果该系统确实符合用户的需要,并且是在现有条 件下完全能够实现的,则应该提请使用部门负责人进一步审 批。在使用部门的负责人也接受了分析员所推荐的方案之后, 将进入总体设计过程的下一个重要阶段——结构设计。
7. 制定测试计划
在软件开发的早期阶段考虑测试问题,能促使软 件设计人员在设计时注意提高软件的可测试性。本书 第7章将仔细讨论软件测试的目的和设计测试方案的 各种技术方法。
为确定软件结构,首先需要从实现角度把复杂的功能进一 步分解。分析员结合算法描述仔细分析数据流图中的每个处理, 如果一个处理的功能过分复杂,必须把它的功能适当地分解成 一系列比较简单的功能。一般说来,经过分解之后应该使每个 功能对大多数程序员而言都是明显易懂的。功能分解导致数据 流图的进一步细化,同时还应该用IPO图或其他适当的工具简 要描述细化后每个处理的算法。
软件设计( 续)
详细设计是对概要设计结果的进一步细化,其主要任 务是确定软件系统各组成成份内部的数据结构和算法 过程 方法:结构化方法、面向对象方法
总体设计过程
首先寻找实现目标系统的各种不同的方案(需求分析阶段 得到的数据流图是设想各种可能方案的基础)。 然后分析员从这些供选择的方案中选取若干个合理的方案, 为每个合理的方案都准备一份系统流程图,列出组成系统的 所有物理元素,进行成本效益/分析,并且制定实现出一个最 佳方案的进度计划。 系统分析员推荐最佳方案,用户接受后,为这个最佳方案 设计软件结构。进行必要的数据库设计,确定测试要求并制 定测试计划。