第六章 结构化设计

6.1结构化软件设计概述

6.2结构化设计与结构化分析的关系

结构化设计与结构化分析的关系图

6.3体系结构设计

6.3.1表示软件结构的图形工具

一、层次图和HIPO图

通常使用层次图描绘软件的层次结构。层次图中一个矩形框代表一个模块,框间的连线表示调用关系(上方的矩形框所代表的模块调用位于下方的矩形框所代表的模块)。每个框可以带编号,像这样带编号的层次图称为HIPO图。

二、结构图

结构图中的一个方框代表一个模块,框内注明模块的名称或主要功能;方框之间的箭头(或直线)表示模块的调用关系。使用带注释的箭头表示模块调用过程中来回传递的信息(数据或控制信息),箭头尾部是空心圆表示传递的是数据,尾部是实心圆表示传递的是控制信息。

选择调用:

循环调用:

结构图的形态特征:深度、宽度、扇入、扇出

结构化设计方法

6.3.2面向数据流的设计方法

面向数据流的设计方法是常用的结构化设计方法,多在总体设计阶段使用。数据流图中,数据流分为变换型数据流和事务型数据流。

变换型数据流:所谓变换,是指把输入的数据处理后转变为另外的输出数据。

事务型数据流:指非数据变换的处理,将输入的数据流分散成许多数据流

一、变换型数据流:

区分变换型数据流中的输入数据、变换中心和输出数据,得到系统的初始结构图,并进行优化。

二、事务型数据流:

确定事务中心、接收数据和处理路径,得到系统的初始结构图,并进行优化。

6.3.3面向数据结构的设计方法

面向数据结构的设计方法通常在详细设计阶段使用。Jackson方法和Warnier方法。

一、Jackson图

Jackson方法把数据结构分为3种基本结构:顺序结构、选择结构和循环结构。

顺序型:

选择型:

循环型:

Jackson方法的步骤:

1、分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构

2、找出输入数据结构和输出数据结构中有对应关系的数据单元

3、按照一定规则从描绘数据结构的Jackson图导出描绘程序结构的Jackson图。

4、列出所有操作和条件,并且把它们分配到程序结构图的适当位置。

5、用伪代码表示程序。

6.4接口设计

在结构化设计中的结构化设计是依据数据流图中的自动化系统边界。

自动化系统边界将数据流图的处理划分为手工处理部分和系统处理部分。

接口设计一般包括3个方面:

(1)用户接口

(2)外部接口

(3)内部接口

6.6过程设计

任何程序总可以用三种结构化元素来设计和实现:顺序、条件、重复

过程设计工具可分为以下三类:

(1)图形设计符号:流程图、N-S图、PAD图

(2)表格设计符号:判定表

(3)程序设计语言:PDL等

6.6.1程序流程图

程序流程图也称为程序框图,是一种比较直观、形象地描述过程的控制流程的图形工具,包括:顺序型、选择型、先判定型循环(while)、后判定型循环(util)和多分支(case)选择型。

基本符号:

流程图的控制结构:

6.6.2 N-S图

N-S图也称为盒图,基本符号如下:

6.6.3 PAD图

PAD图也称为问题分析图,用二维树形结构的图来表示程序的控制流及逻辑结构。

基本符号如下:

PAD图中,一条竖线代表一个层次,最左边的竖线是第一层控制结构,随着层次的加深,图形不断地向右展开。

6.6.4结构化语言

结构化语言也称为程序设计语言,也称为伪代码。

第七章 面向对象方法与UML 

7.1面向对象的软件工程方法

7.1.1面向对象的基本概念—类的特性

对象、类、消息、类的特性(抽象、继承、多态、封装、重载)、包

        1、对象

对象是指现实世界中各种各样的实体。

        2、类

类是具有相似内部状态和运动规律的实体的集合。

类是对象的抽象,对象是类的实例。

        3、消息

是指对象间互相联系和相互作用的方式

        4、类的特性(抽象、继承、多态、封装、重载)

继承是不同抽象级别类之间的关系。

封装是把数据和实现操作的代码集中起来放在内部。

多态是指同名的方法(操作)在不同的类中具有不同的运动规律

重载是指类的同名方法在给其传递不同参数时具有不同的运动规律。

7.1.2 面向对象的软件工程方法的特征与优势

1、面向对象的软件工程方法的特征

面向对象的方法的最重要的特点就是把事物的属性和操作组成一个整体,从问题域中客观存在的事物出发来识别对象并建立由这些对象所构成的系统。

2、面向对象的软件工程方法的优势

7.1.3面向对象的实施步骤

1、面向对象分析

2、面向对象设计

3、面向对象实现

4、面向对象测试

7.2统一建模语言UML

7.2.1UML简述

统一建模语言是一种通用的可视化建模语言。

7.2.2UML的特点

统一标准、面向对象、可视化,表达能力强大、独立于过程、容易掌握使用

7.2.3UML的应用范围

7.2.4UML的图

UML的主要内容可以由下列5类图来定义:

7.3静态建模机制

7.3.1用例图

用例图是从用户的角度描述系统的功能。

主要元素:

用例:对一组动作序列的描述,系统通过执行这一组动作序列为参与者产生一个可观察的结果。用例之间的关系有3种:包含关系、扩展关系、泛化关系

参与者:是指外部用户或外部实体在系统中扮演的角色

关系连线:参与者执行用例的关系、参与者与参与者之间的关系、用例与用例之间的关系

7.3.2类图和对象图

类图使用类和对象描述系统的结构,展示了系统中类的静态结构,即类与类之间的相互关系。

对象图是类图的示例。

类图:

类属性的语法:

[可见性] 属性名:[类型][=初值]

可见性:公有(+)、私有(-)、保护(#)

类操作的语法:

[可见性] 操作名 [(参数列表)]:[返回类型]

类的版型:

1、边界类:位于系统与外界的交界处

2、控制类:

3、实体类:

4、接口类

类与类之间的关系

1、关联

二元关联

多元关联

受限关联

如果关联时需要从多重数的端中指定一个对象来限定,可以通过使用限定符来指定特定对象

聚合和组合:

整体和部分之间的关系

关联类:

2、依赖

表示的是两个元素之间语义上的连接关系。

3、泛化

4、实现:

实现关系是将一个模型连接到另一个模型

7.3.3包图

7.4动态建模机制

UML的动态建模机制包括顺序图、协作图、状态图和活动图

对象间交互通过消息

1、简单消息:没有描述通信的细节

2、同步消息:调用者发出信息等待消息返回后再继续执行

3、异步消息:调用者发出消息后不等待消息返回就继续执行

4、返回消息:代表从过程调用的返回

7.4.1顺序图

顺序图由对象、生命线、控制焦点、消息等组成。

生命线是一条垂直的虚线,表示对象的存在时间

控制焦点是一个细长的矩形,表示对象执行一个操作所经历的时间段

消息是作用于控制焦点上的一条水平带箭头的实线,表示消息的传递,虚线带箭头表示返回消息。

7.4.2协作图

协作图又称为通信图(或合作图),用于显示系统的动作写作,类似顺序图中的交互片段,但也显示对象之间的关系(上下文)。

7.4.3状态图

状态图由状态机扩展而来,用来描述对象对外部对象响应的历史状态序列,即描述对象所有可能的状态,以及哪些事件将导致状态的改变。状态图侧重于描述某个对象的动态行为,是对象的生命周期模型。

7.4.4活动图

活动图中的活动是展示整个计算步骤的控制流(及其操作数)的结点和流的图。执行步骤可以是并发的或顺序的。

活动图的开始结点和结束结点与状态图相同,活动图中的状态称为动作状态,用平滑的曲边矩形表示。

动作状态之间使用箭头连接,表示动作迁移。

带泳道的活动图

7.5描述物理架构的机制

系统架构:逻辑架构、物理架构

逻辑架构:描述系统功能,用例图、类图、对象图、状态图、活动图、协作图、顺序图

物理框架:关心的是实现,类和对象物理上分布在那个程序或进程中

7.5.1构件图

构件图展现了一组构件的类型、内部结构和它们之间的依赖关系。

构件又称组件,是系统中可重用的模块封装成为可替换的物理单元。

7.5.2部署图

部署图描述了系统硬件和软件物理配置情况和系统体系结构。

一个系统模型只能有一个部署图。

部署图里面主要的就是节点,节点就是存在于运行时并代表一项计算资源的物理元素,一般至少拥有一些内存,一般是硬件设备。

第八章 面向对象分析

8.1面向对象分析方法

8.1.1面向对象分析过程

8.1.2面向对象分析原则

1、定义有实际意义的对象

2、模型的描述要规范、准确

3、共享性、封装性

8.2面向对象建模

8.2.1建立用例模型

步骤:

1、识别外部参与者

2、识别用例

3、建立用例图

4、补充用例描述

建立对象模型

1、划分主题

A、主题

主题是把一组具有较强联系的类组织在一起而得到的类的集合。

主体的划分有以下两种方式:

自底向下

自顶向上

B、主题图

主题划分的最终结果能够形成一个完整的对象类图和一个主题图。

2、确定类与对象

识别类与对象的技巧:

建立候选类列表、需求陈述中的名词、根据用例确定类

3、确定关系(识别结构)

(1)初步确定关联

(2)筛选

(3)进一步完善

4、确定属性

5、确定服务

8.2.2建立动态模型

动态模型描述对象和关系的状态、状态转换的触发事件、对象的服务(行为)。

步骤:

1、编写典型交互行为脚本

2、从脚本中提取事件及相关对象,用顺序图表达

3、确定对象状态及状态间转换关系,用状态图描述

一、编写脚本

脚本通常起始于一个系统外部的输入事件,结束于一个外部的输出事件,它可以包括发生在这个期间的系统所有的内部事件(包括正常情况脚本和异常情况脚本)。

二、画UML顺序图

从脚本提取所有的外部事件,确定每类事件发送和接受对象。

三、画状态图

用一张状态图描述类的行为,集中考虑具有交互行为类。

8.2.3建立功能模型

功能模型表明了系统中数据之间的依赖关系,以及有关的数据处理功能,它由一组数据流图组成。数据流图中的处理对应于状态图中的活动或动作,数据流对应于对象图中的对象或属性。

8.2.4 三种模型之间的关系

通过面向对象分析得到的模型包含对象模型、动态模型和功能模型。

第九章 软件体系结构与设计模式

9.1软件体系结构的概念

9.1.1 什么是软件体系结构

构件:客户端、服务器、数据库、程序包、过程

连接件:过程调用、消息传递、共享内存变量、客户端/服务器的访问协议、数据库的访问协议等。

刻画构件与连接件之间的关系来描绘整个软件的结构。

9.1.2软件体系结构建模

软件体系结构的模型分为结构模型、框架模型、动态模型、过程模型和功能模型。

1、结构模型(骨头)

2、框架模型(骨骼)

。。。。。。。

最常用的是结构模型动态模型

9.1.4软件体系结构的作用

1、规范软件开发的基本架构

2、便于开发人员与用户的沟通

3、模块化、层次化设计,有利于减少返工,提高效率。

4、便于系统开发前、后期的筹备与服务。

9.2典型的软件体系结构风格

9.2.1 数据流风格

包括批处理序列、管道/过滤器

9.2.2调用/返回风格

9.2.3独立构件风格

9.2.4虚拟机风格

9.2.5仓库风格

9.3软件质量性质

软件质量属性是指系统在其生存周期过程中所表现出的各种特征。

质量属性可分为三类:系统属性、商业属性、构架属性

1、系统属性:按照运行时是否可见又分为性能、安全性、可见性、易用性,可修改性、可移植性、可测试性、可集成性、可重用性

2、商业属性:包括投放市场时间、成本和预计的系统生命周期长短。

3、构架属性:包括软件体系结构本身的概念完整性、正确性和可构建性。

9.4分布式系统结构

9.4.1多处理器体系结构

9.4.2 客户机/服务器体系结构

9.4.3分布式对象体系结构

9.5 体系结构框架

9.5.1模型-视图-控制器(MCV)

模型代表数据,是指业务领域的对象及其属性。

控制器是模型与视图的联系纽带。

视图是模型的外在表现形式。

9.5.3 J2EE体系结构框架

J2EE模型是分层结构,中间是3层(表示层、业务层和集成层)包含应用构件,客户层和资源层处于应用的外围。

9.6软件系统的设计模式

每种设计模式都包含4个元素

1、模式名称相当于模式的助记符

2、问题描述了模式的使用场景,即模式可以解决的某种设计问题

3、解决方案描述了针对特定的设计问题

4、效果描述了特定模式的应用对系统灵活性、扩展性、可移植性等各种特性的影响。

软件工程复习知识点汇总(2)相关推荐

  1. 软件工程复习知识点汇总(1)

    目录 第一章 软件工程概述 1.1软件 1.2软件危机 1.2.1软件危机的表现与原因 1.2.2软件危机的启示 1.3软件工程 1.3.1软件工程的概念 1.3.2软件工程研究的内容 1.3.3软件 ...

  2. 软件工程复习知识点汇总(3)

    目录 第十章 面向对象设计 10.1 面向对象设计与结构化设计 10.2 面向对象设计与面向对象分析的关系 10.3面向对象设计的过程与规则 10.3.1 面向对象设计的过程 10.3.2面向对象设计 ...

  3. 【2022】计算机视觉算法岗面试题目和复习知识点汇总

    计算机视觉算法岗面试题目和复习知识点汇总 1.讲一下BN.LN.IN.GN这几种归一化方法 2.为什么Transformer 需要进行 Multi-head Attention 3.讲一下self a ...

  4. 2021 合工大软件工程期末复习知识点汇总

    --知识点范围整理自wkw闭卷复习要点群文件.txt 闭卷考概念的滚出中国 题型 判断题 10分 选择题 10分 填空题 10分 名词解释 4×5分 简答题 5×4分 综合题 30(课堂作业) 押个题 ...

  5. 软件工程导论知识点汇总

    文章目录 一.填空题 二.简答题 专为大学生期末创造奇迹整理的知识点 一.填空题 1.软件是一种逻辑产品 2.软件开发方法是指导软件开发的一系列规则和约定 3.软件生存周期中花费最多的阶段是软件维护阶 ...

  6. 软件工程基础知识点汇总

    第四章 软件工程基础 4.1 软件工程基本概念 4.1.1 软件定义与软件特点 4.1.2 软件危机与软件工程 4.1.3 软件过程与生命周期 1.软件过程 2. 软件开发生命周期(softeware ...

  7. 合工大python期末复习知识点汇总

    文章目录 Python序列 map函数 eval函数 divmod sort sorted os与os.path模块 列表 切片 列表推导式 编写算法实现嵌套列表的平铺 列出当前文件夹下所有Pytho ...

  8. C语言复习知识点汇总2--计算机二级(C语言)

    感谢众多小伙伴关注,特此提供此文档word版完整版下载链接:https://download.csdn.net/download/qq_41451521/10231099 第一章C语言的基础知识 第一 ...

  9. 离散数学简单复习知识点汇总

    命题是非真必假的陈述句. 联结词:与原子命题一起构成复合命题. 原子命题公式:命题常元.命题变元同城为原子命题公式,简称原子公式. 合式公式是由下列规则形成的字符串: (1) 真值 T 和 F 是合式 ...

最新文章

  1. 2022-2028年中国封装用胶膜行业运营现状及投资发展潜力报告
  2. 一种快速统计SQL Server每个表行数的方法
  3. VSCode插件开发全攻略(六)开发调试技巧
  4. if you buy grove
  5. Linux下运行Jmeter脚本
  6. 153是一个非常特殊的数,它等于它的每位数字的立方和
  7. SAP UI5 应用 XML 视图的加载逻辑分析
  8. *【UVA - 10382】Watering Grass(贪心,区间覆盖问题,思维)
  9. 基于改进SSD的车辆小目标检测方法
  10. Python之旅.第八章.网络编程
  11. ASP.NET程序中常用的三十三种代码一
  12. Android studio 更换maven源
  13. 在Html5中与服务器交互
  14. 进阶篇:3.1.8)注塑件-成型不良的原因及调节方法详解
  15. 利用模版元编程将传统冒泡排序性能提升两倍以上
  16. WPS宏不可用解决方法
  17. mysql百万数据迁移_Mysql百万级数据迁移实战笔记
  18. PPT修行之路(二)-素材库
  19. 1、NVIDIA Quadro P600 Linux显卡驱动安装
  20. WebGL实践篇(九)—— 光照:点光源

热门文章

  1. 读《深入浅出MySQL数据库开发、优化与管理维护(第2版)》笔记1
  2. RT-Thread:STM32F407虚拟U盘,无法识别拔出问题解决方案
  3. [NLP比赛推荐]商品标题实体识别
  4. 正在找工作的程序员们,一定要注意新型劳务派遣套路
  5. NYOJ 1248 海岛争霸 (利用最短路径可解)
  6. 深入理解Java虚拟机之走进Java之Java的发展历程
  7. Learning to Predict Context-adaptiveConvolution for Semantic Segmentation阅读笔记
  8. 【深度学习环境配置】手把手实战配置深度学习环境(win10版)
  9. autohold有什么弊端吗_autohold一直开着伤车吗
  10. 公开课分享《如何快速有效地编写一份商业计划书》