第五章 软件设计过程

合集下载

软件工程导论 第5章 总体设计

软件工程导论 第5章 总体设计

第五章总体设计经过需求分析阶段的工作,系统必须“做什么”已经清楚了,现在是决定“怎样做”的时候了。

总体设计的基本目的就是回答“概括地说,系统应该如何实现?”这个问题,因此,总体设计又称为概要设计或初步设计。

通过这个阶段的工作将划分出组成系统的物理元素——程序、文件、数据库、人工过程和文档等等,但是每个物理元隶仍然处于黑盒子级,这些黑盒子里的具体内容将在以后仔细设计。

总体设计阶段的另一项重要任务是设计软件的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。

总体设计过程首先寻找实现目标系统的各种不同的方案,需求分析阶段得到的数据流图是设想各种可能方案的基础。

然后分析员从这些供选择的方案中选取若干个合理的方案,为每个合理的方案都准备一份系统流程图,列出组成系统的所有物理元素,进行成本/效益分析,并且制定实现这个方案的进度计划。

分析员应该综合分析比较这些合理的方案,从中选出一个最佳方案向用户和使用部门负责人推荐。

如果用户和使用部门的负责人接受了推荐的方案,分析员应该进一步为这个最佳方案设计软件结构,通常,设计出初步的软件结构后还要多方改进,从而得到更合理的结构,进行必要的数据库设汁,确定测试要求并且制定测试计划。

从上面的叙述中不难看出,在详细设计之前先进行总体设计的必要性:可以站在全局高度上,花较少成本,从较抽象的层次上分析对比多种可能的系统实现方案和软件结构,从中选出最佳方案和最合理的软件结构,从而用较低成本开发出较高质量的软件系统。

5.1 设计过程总体设计过程通常由两个主要阶段组成:系统设计阶段,确定系统的具体实现方案;结构没计阶段,确定软件结构。

典型的总体设计过程包括下述9个步骤:1.设想代选择的方案如何实现要求的系统呢,在总体设计阶段分析员应该考虑各种可能的实现方案,并且力求从中选出最佳方案。

在总体设计阶段开始时只有系统的逻辑模型,分析员有充分的自由分析比较不同的物理实现方案,一旦选出了最佳的方案,将能大大提高系统的性能/价格比。

软件工程第五章

软件工程第五章

5.2.1、结构化程序设计技术

1. 结构化设计技术的形成
--对“取消GOTO 语句”的争论 --只用“顺序”、“选择”和“循环”三 种基本控制结构就能实现任何单入口单出 口的程序设计 --程序应该只有一个入口和一个出口;自 顶向下,逐步求精
5.2.1、结构化程序设计技术

2. 结构化设计技术的概念 经典定义:“如果一个程序的代码仅仅通 过顺序、选择和循环这三种基本控制结构 进行连接,并且每个代码块只有一个入口 和一个出口,则称这个程序为结构化的。”
1. 模块的逻辑结构设计 逻辑结构设计是结合所开发项目的具体要 求和对每个模块规定的功能,开发出模块 处理的详细算法,选择某种适当的工具加 以精确描述。

5.1.1、详细设计的任务

详细设计阶段的主要任务:
2. 模块的数据设计 为在需求分析阶段的数据对象定义逻辑数 据结构,并且对不同的逻辑数据结构进行 不同的算法设计,选择最有效的方案。同 时,确定实现逻辑数据结构所必需的操作 模块,以便了解数据结构的影响范围。
第五章
详细设计
详细设计
教学提示:

上一章学习了概要设计的有关知识,本章将 介绍详细设计的内容。主要包括详细设计的 任务与原则、设计方法以及详细设计规格说 明及评审等。
详细设计
教学目标:

理解详细设计的设计任务和设计原则。掌握 详细设计的方法和常用工具的使用,了解详 细的设计规格说明书的内容和评审。

5.2.1、结构化程序设计技术
5.2.1、结构化程序设计技术

2. 结构化设计技术的概念 当前结构化程序设计的基本内容如下: (1) 程序的控制结构一般采用顺序、选择、循环3 种结构来构成,确保结构简单。 (2) 使用单入口单出口的控制结构。 (3) 程序设计中应尽量少用GOTO 语句,以确保 程序结构的独立性。 (4) 采用自顶向下逐步求精方法完成算法设计。

软件课程设计过程包括什么

软件课程设计过程包括什么

软件课程设计过程包括什么一、课程目标知识目标:1. 学生能理解软件课程设计的基本概念,掌握其包含的主要阶段和关键步骤。

2. 学生能描述软件需求分析、系统设计、编码实现、测试与维护等环节的基本任务和方法。

3. 学生能运用所学知识,分析并解决简单的软件设计问题。

技能目标:1. 学生具备运用软件工程方法进行需求分析和系统设计的能力。

2. 学生能运用编程语言实现简单的软件功能,并进行测试与调试。

3. 学生能通过小组合作,完成一个简单的软件项目设计,提高团队协作能力。

情感态度价值观目标:1. 学生培养对软件工程的兴趣,认识到软件课程设计在实际应用中的重要性。

2. 学生在学习过程中,形成严谨、认真、负责的工作态度,提高解决问题的自信心。

3. 学生通过团队协作,学会分享、倾听和沟通,培养团队精神和合作意识。

课程性质:本课程为实践性较强的软件工程课程,旨在培养学生的软件设计能力和团队协作能力。

学生特点:学生具备一定的编程基础,对软件设计有一定了解,但缺乏实际项目经验。

教学要求:结合课程性质和学生特点,注重理论与实践相结合,强调学生在实际操作中掌握软件设计方法,提高团队协作能力。

通过分解课程目标为具体的学习成果,为后续教学设计和评估提供依据。

二、教学内容1. 软件课程设计概述:介绍软件课程设计的基本概念、目的和意义,使学生了解软件工程在软件开发中的重要性。

- 教材章节:第一章 软件工程概述- 内容:软件工程基本概念、软件开发过程、软件工程方法2. 软件需求分析:讲解需求分析的基本方法、工具和技术,指导学生进行需求获取、需求分析及需求规格说明书编写。

- 教材章节:第二章 需求分析- 内容:需求获取、需求分析、需求规格说明书编写、用例分析3. 系统设计:介绍系统设计的基本原理和方法,引导学生进行软件架构设计和详细设计。

- 教材章节:第三章 系统设计- 内容:软件架构设计、模块化设计、接口设计、数据设计4. 编码实现:讲解编程规范和技巧,指导学生进行代码编写、调试和优化。

西安工业大学《软件工程》第五章 软件设计

西安工业大学《软件工程》第五章 软件设计

计算机科学与工程学院
软件工程(Software Engineer)
2 文件设计的过程
文件设计的过程 有两个阶段。 第一个阶段是文件的逻辑设计。它包括:
1. 整理必须的数据元素。 2. 分析数据间的关系。 3. 确定文件的逻辑设计。 第二个阶段是文件的物理设计,主要工作有: 4. 理解文件的特性。 5. 确定文件的存储媒体。 6. 确定文件的组织方式。 7. 确定文件的记录格式。 8. 估算存取时间和存储容量
事务中心
结果 内部 表示的作业 输入已分析的作业 作业 信息
结果
调度
给出结果
作业 作业
已分析 的作业
读入作业
分析作业
事务1
事务2
事务3
事务4
操作1
操作2
操作3
操作4
操作5
操作6
细节1
细节2
细节3
细节4
细节5
细节6
细节7
计算机科学与工程学院
软件工程(Software Engineer)
4变换映射
变换映射是体系结构设计的一种策略。 运用变换映射方法建立初始的变换型系统 结构图,然后对它做进一步的改进,最后 得到系统的最终结构图。
维 护 测 试 实 现 设 计 有软件设计
计算机科学与工程学院
维 护 测 试 实 现
没有软件设计
软件工程(Software Engineer)
2软件设计的过程 软件设计是一个把软件需求变换成软件表 示的过程。 从工程管理的角度来看,软件设计分两 步完成。首先做概要设计,将软件需求转 化为数据结构和软件的系统结构,并建立 接口。然后是详细设计,即过程设计。通 过对结构表示进行细化,得到软件的详细 的数据结构和算法。

软件工程导论 第五章总体设计

软件工程导论  第五章总体设计

需要强调一点,信息隐蔽并不意味着某个模块中的内
部信息对其他模块来说是完全不可见或不能使用的, 而是说模块之间的信息传递只能通过合法的调用接口 来实现。显然,信息隐蔽对提高软件的可读性和可维 护性都是非常重要的。
24
(2)局部化:是指把一些关系密切的软件元素 物理地放得彼此靠近。如模块中的局部数据元素 是局部化的一个例子。
分析员从中选出一个最佳方案向用户和使用部门负责人推荐。

如果负责人接受了推荐的方案,分析员应该进一步为这个最 佳方案设计软件结构。
3
总体设计的必要性

可以站在全局高度上,花较少成本,从较抽 象的层次上分析对比多种可能的系统实现方 案和软件结构; 从中选出最佳方案和最合理的软件结构,从 而用较低成本开发出较高质量的软件系统。
不同模块之间 互连程度 的度量。
26
模块独立是模块化、抽象、信息隐藏和局部化概念 的直接结果。 模块的独立性的优点: • 比较容易开发出有效模块化(即具有独立的模块) 的软件。 • 独立的模块比较容易测试和维护。
27
1) 耦合性
耦合性是对一个软件结构内部不同模块间联系紧密程 度的度量指标。 决定耦合性高低的主要因素 由于模块间的联系是通过模块接口实现的,因此,模 块耦合性的高低主要取决于模块接口的复杂程度、调用模 块的方式以及通过模块接口的数据。模块间的耦合性主要 可划分为如下几种类型。
在可行性研究阶段,软件作为系统的一个完整 部件; 在需求分析期间,软件解法是使用在问题环境 内熟悉的方式描述的; 当由总体设计向详细设计过渡时,抽象的程度 也就随之减少; 最后,当源程序写出来以后,也就达到了抽象 的最低层。 20
5.2.3 逐步求精
定义:为了能集中精力解决主要问题而尽量推迟 对问题细节的考虑。 人类的认知过程遵守Miller法则:一个人在任何时 候都只能把注意力集中在(7±2)个知识块上。

软件设计的理解和流程

软件设计的理解和流程

软件设计的理解和流程一、软件设计的概念软件设计是指在软件开发的过程中,结合用户需求以及技术和资源的限制,设计出软件系统的结构和功能,以及解决方案和实现方法的过程。

其中,包括需求分析、功能设计、模块设计、接口设计、数据结构设计等方面的工作。

二、软件设计的流程1.需求分析根据用户需求以及业务流程,明确软件系统的功能、性能、可靠性等要求,并对需求进行分析和细化,形成需求规格说明书。

2.概要设计根据需求规格说明书,确定软件系统的总体架构,包括系统组成部分、各个模块之间的关系和接口,以及数据流程等。

3.详细设计根据概要设计,对每个模块进行详细设计。

包括界面设计、业务逻辑设计、数据结构设计、算法设计等方面。

4.编码实现根据详细设计,进行编码实现。

编写代码、进行单元测试、进行代码审核,确保代码质量。

5.测试验证根据需求规格说明书,制定测试计划和测试用例,并进行测试,以验证软件系统是否达到用户需求以及规格说明书的要求。

6.维护管理在软件系统交付后,进行维护管理工作。

包括维护文档、修改和发布版本、提供技术支持等方面的工作。

三、软件设计的重要性1.减少开发成本软件设计能够在开发的前期进行需求分析和方案设计,能够在开始动手写代码之前,尽可能多的预测到问题并解决掉。

从而可以在开发后期减少不必要的修改和调试工作,降低开发成本。

2.提高开发效率软件设计可以形成完整的软件设计方案,同时也可以分阶段分模块地进行设计、编码和测试,使得开发流程合理顺畅,提高开发效率。

3.降低风险软件设计可以提前发现和解决一些问题,从而避免软件在正式使用前出现错误和漏洞,降低使用过程中的风险。

4.增强软件质量软件设计是创建软件的基础,能够在设计方案中提前规划好软件各方面的要求和特性,保证软件能够达到预期的质量要求。

总之,软件设计是软件开发过程中必不可少的一环,其重要性不言而喻。

只有通过良好的软件设计,才能使软件开发过程更加科学、规范、高效,从而创造出更优质、更安全、更符合用户需求的软件系统。

第五章节软件详细设计

第五章节软件详细设计

10/31/2020
21
界面举例MSN
10/31/2020
22
界面举例红心大战
缺省值
10/31/2020
23
黄金规则:保持界面一致
用户应以一致的方式展示和获取信息
• 所有可视信息的组织均按照贯穿所有屏幕显示 所保持的设计标准
• 输入机制被约束到有限的集合,在整个应用中 被一致地使用
• 从任务到任务的导航机制被一致地定义和实现
10/31/2020
9
其他工具
其他工具:
• HIPO图 • 判定表 • 判定树
10/31/2020
10
软件设计元素
· 模块过程设计 · 代码设计 · 用户界面设计 · 文件格式设计 · 安全控制设计
10/31/2020
11
代码设计
■ 代码是由一些数字、字母或特殊符号组成的用 来表征事物名称、属性、状态和数量等的标识。
10/31/2020
33
用户经验、知识方面的使用需求
• 系统应能让未经专门训练的用户使用
• 系统能对不同经验用户做出不同反应
• 提供同一系统的一致性,建立标准化人机界面
• 系统必须适应用户在应用领域的知识变 化,提供动态的自适应的设计
10/31/2020
34
用户对系统的期望方面的要求
• 用户界面应提供形象、生动、美观的布 局显示和操作环境
界面设计主要包括三个方面:
• 设计软件构件之间的接口 •者设的计界模面块和其他非人的信息生产者和消费 • 设计人(如用户)和计算机间的界面
10/31/2020
17
界面的设计原则
• 分析用户类型 • 应用程序和界面分离 • 一致性 • 尽量减少用户工作 • 出错处理和帮助功能 • 增加可视化图形表示

第5章软件详细设计

第5章软件详细设计

第5章软件详细设计软件详细设计是软件开发过程中的一个重要环节,它是在需求分析的基础上,对软件系统进行具体设计的过程。

本章将对软件的各个模块进行详细设计,包括模块之间的关系和功能实现细节。

在进行软件详细设计时,需要考虑以下几个方面:1.模块划分:根据需求分析中的功能点,将系统划分为多个模块,每个模块实现一个或多个功能。

2.模块之间的关系:分析各个模块之间的依赖关系,确定模块之间的调用关系和数据交互方式。

3.功能实现细节:对每个模块进行详细设计,包括具体的算法实现、数据结构设计、界面设计等。

4.系统性能考虑:考虑系统在各种情况下的性能要求,针对性地进行优化设计,提高系统的运行效率。

在软件详细设计中,需要根据需求分析中的功能点进行模块划分。

以一个电商系统为例,可以将系统划分为用户管理模块、商品管理模块、订单管理模块等多个功能模块。

每个模块负责实现相应的功能,同时模块之间需要进行数据交互和调用。

在模块之间的交互设计中,可以采用面向对象的设计思想,通过定义接口和类来描述模块之间的关系。

例如,在用户管理模块中,可以定义一个User类,该类包含了用户的基本信息和操作方法。

在订单管理模块中,可以通过调用User类的方法来获取用户的信息。

在功能实现细节方面,需要根据模块的功能点来进行具体的实现。

例如,在商品管理模块中,需要实现商品的增删改查功能。

可以使用数据库来存储商品信息,通过SQL语句来进行增删改查操作。

在系统性能考虑方面,可以采用多线程、缓存等技术来提高系统的运行效率。

例如,在订单管理模块中,可以使用多线程来处理订单的并发操作,提高系统的并发性能。

总之,软件详细设计是软件开发过程中的一个重要环节,通过对系统的模块划分、模块之间的关系和功能实现细节的设计,可以确保软件系统按照需求进行正确、高效地实现。

同时,考虑系统的性能要求和优化设计,可以提高系统的运行效率和用户体验。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第五章软件设计过程
本章概述:
本章详细讲解软件设计过程,软件设计过程是对程序结构、数据结构和过程细节逐步求精、复审并编制文档的过程。

通过本章的学习,学生应该掌握从软件分析到设计的各个过程。

本章知识点详述:
o软件设计基础设计过程
数据设计把信息描述转换为实现软件所要求的数据结构。

总体结构设计旨在确定程序各主要部件之间的关系。

过程设计要完成每一部件的过程化描述。

根据设计结果编制代码。

然后交给测试人员测试
设计阶段做的决策直接影响软件质量,没有良好的设计就没有稳定的系统,也不会有易维护的软件。

统计表明:设计、编码和测试这三个活动一般占用整个软件开发费用(不包括维护阶段)的75%以上。

o软件设计基本概念
抽象与逐步求精
抽象
在最高抽象级别上,用面向问题域的语言叙述“问题”,概括“问题解”的形式。

不断地具体化,不断地用面向过程的语言描述问题。

在最低的抽象级别上给出可直接实现的“问题解”,即程序。

求精
“逐步求精”的主要思想是针对某个功能的宏观描述用逐步求精的方法不断地分解,逐步确立过程细节,直至该功能用程序语言描述的算法实现为止。

求精的每一步都是用更为详细的描述替代上一层次的抽象描述,在整个设计过程中产生的,具有不同详细程度的各种描述组成系统的层次结构。

层次结构的上一层是下一层的抽象,下一层是上一层的求精
模块化与信息隐藏
模块化
把软件划分为可独立命名和编址的部件,每个部件称为一个模块,当把所有模块组装到一起时则获得满足问题需要的一个解。

软件总体结构体现了模块化思想。

“模块化是软件唯一能使程序获得智能化管理的一个属性”,完全由一个模块构成的程序,程序控制路径错综复杂,变量被远距离引用,使得程序难于理解与掌握。

信息隐藏
模块应该设计得使其所含信息(过程和数据)对于那些不需要这些信息的模块不可访问。

每个模块只完成一个相对独立的特定功能。

模块之间仅仅交换那些为完成系统功能必须交换的信息,即模块应该独立。

耦合与内聚度
耦合
内聚度:模块内部各成分彼此结合的紧密程度。

内聚度按其高低程度可分为七级,内聚度越高越好。

o软件总体结构设计
由系统中所有过程性部件(即模块)构成的层次结构, 亦称为程序结构。

输入输出数据结构。

o程序结构设计
程序结构也称为控制层次结构。

仅考虑软件总体结构中模块之间的控制分层关系,而不关心模块内各处理元素和判断元素的顺序。

程序结构与软件过程相互关联,程序结构中任一模块的所有从属模块必将被引用出现在该模块的过程说明中。

o数据结构设计
数据结构描述各数据分量之间的逻辑关系,数据结构一经确定,数据的组织形式、访问方法、组合程度及处理策略基本上随之确定,所以数据结构是影响软件总体结构的重要因素。

数据结构与程序结构一样,也可以在不同的抽象级别上表示。

以栈为例,作为一个抽象数据类型,在概念级上只关心“先进后出”特性,而在实现级上则要考虑物理表示及内部工作的细节,比如,用向量实现,或用链表实现等等。

数据结构对程序结构和过程复杂性有直接的影响,数据结构设计很重要,在很大程度上决定软件的质量。

无论采用哪一种软件设计技术,没有良好的数据结构,不可能导出良好的程序结构。

o软件过程设计
过程设计紧跟在数据结构设计和程序结构设计之后,基本任务是描述模块内各处理元素和判断元素的顺序。

过程包括有关处理的精确说明,如事件的顺序、确切的判断位置、循环操作以及数据的组成等等。

程序结构与软件过程相互关联,程序结构中任一模块的所有从属模块必将被引用出现在该模块的过程说明中。

o过程设计技术和工具
结构化程序设计
图形表示法
判定表
过程设计语言(PDL)
o设计规格说明与评审
软件设计方法
o基本概念和设计过程
变换流:输入信息流沿传入路径进入系统,同时由外部形式变换为内部形式,
经系统变换中心加工、处理,作为输出信息流又沿传出路径离开系统,并还原为外部形式。

事务流:单个数据项称为事务(transaction)沿传入路径(接受通道)进入系统,由外部形式变换为内部形式后到达事务中心,事务中心根据数据项计值结果从若干动作路径中选定一条继续执行。

o变换分析:变换分析由一系列设计步骤组成,经过这些步骤就能把具
有变换流特点的数据流图,按预先确定的模式映射成软件结构步骤一、复审基本系统模型。

步骤二、复审和精化软件数据流图。

步骤三、确定DFD为变换流还是事务流。

步骤四、划定输入流和输出流边界孤立变换中心。

步骤五、执行“一级分解”导出具有三个层次的程序结构。

步骤六、执行“二级分解”。

步骤七、采用启发式设计策略,精化所得程序结构雏形,改良软件质量。

o事务分析
步骤一、复审基本系统模型;
步骤二、复审并精化软件数据流图;
步骤三、确定数据流图的特性;前三步与变换分析法相同
步骤四、指出事务中心,确定由事务中心发出的每一动作路径的数据流特性。

步骤五、把数据流图映射为事务处理型的程序结构。

步骤六、分解并精化事务结构以及每条动作路径所对应的结构。

步骤七、使用启发式设计策略,精化所得程序结构雏形,改良软件质量。

o启发式设计策略
改造程序结构,减小耦合度,提高内聚度。

应从增强模块独立性的角度,对程序结构雏形的模块进行分解或合并,力求降低耦合度,提高内聚度。

改造程序结构,减少高扇出,在增加程序深度的前提下追求高扇入。

改造程序结构,使任一模块的作用域在其控制域之内。

模块作用域指,受该模块内部判定影响的所有模块;模块控制域为其所有下层模块。

改造程序结构,减少界面的复杂性和冗余程度,提高协调性。

模块功能应该可预言,避免对模块施加过多限制。

改造程序结构,追求单入口单出口的模块。

为满足设计或可移植性的要求,把某些软件用包(Package)封装起来。

o设计优化原则
在先不考虑时间复杂性的情况下,设计并精化软件结构;
借用CASE工具模拟分析运行时的性能,找出低效部分
详细设计时对最耗时的模块仔细推敲,以便减少时间开销;
用高级语言编程;
对大量占用CPU资源的模块必要时用低级语言(依赖于机器)重新编码,以便提高效率。

相关文档
最新文档