5.10概念问题

Jackson设计方法
概述
     Jackson方法是面向数据结构的设计方法。
JSP方法定义了一组以数据结构为指导的映射过程,它根据输入、输出的数据结构,按一定的规则映射成软件的过程描述,即程序结构,而不是软件的体系结构,因此该方法适用于详细设计阶段。


Jackson结构图
    由于Jackson方法面向数据结构设计,所以提供了自己的工具——Jackson结构图。Jackson指出,无论数据结构还是程序结构,都限于三种基本结构及它们的组合,因此,他给出了三种基本结构的表示。
   1. 顺序结构
   2. 选择结构
   3. 重复结构


 JSP设计步骤
    JSP方法一般通过以下五个步骤来完成设计:
   (1)分析并确定输入数据和输出数据的逻辑结构,并用Jackson结构图来表示这些数据结构。
   (2)找出输入数据结构和输出数据结构中有对应关系的数据单元。
   (3)按一定的规则由输入、输出的数据结构导出程序结构。
   (4)列出基本操作与条件,并把它们分配到程序结构图的适当位置。
   (5)用伪码写出程序。

 

JACKSON分析方法

面向数据流的分析方法

JACKSON方法是一套完成的分析和设计方法。Jackson认为有三种形式的数据结构。、顺序、选择和重复。三种数据结构可以进行任意嵌套,组合。形成复杂的结构体系。JACKSON方法的从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其它细节,就可得到完整的描述程序结构的JACKSON图。

我在实际中,我没有完整的使用过JACKSON方法(实际上,我也没有系统的学习过这种方法)。我只在分析阶段,经常使用JACKSON图描述复杂的要处理的数据的逻辑结构。我把这种只把JACKSON方法用来做分析的方法,称为JACKSON方法。

JACKSON方法的主要思路,就是:通过对要处理的复杂数据,绘制JACKSON图进行分析,了解需求。

另外,除了使用JACKSON图来完成分析,我还使用过JACKSON图,来描述过复杂配置文件的文件结构。因为JACKSON图关注与数据的逻辑结构,而不比关心数据的具体存在形式。用来设计配置文件的格式,挺合适的。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lizhenyuan/archive/2009/04/18/4090104.aspx

 

结构化方法

结构化方法是一种传统的软件开发方法面向数据流的开发方法,它是由结构化分析、结构化设计和结构化程序设计三部分有机组合而成的。它的基本思想:把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。

结构化方法的基本要点是:自顶向下、逐步求精、模块化设计。

结构化分析方法(Structured Method,结构化方法)是强调开发方法的结构合理性以及所开发软件的结构合理性的软件开发方法。结构是指系统内各个组成要素之间的相互联系、相互作用的框架。结构化开发方法提出了一组提高软件结构合理性的准则,如分解与抽象、模块独立性、信息隐蔽等。针对软件生存周期各个不同的阶段,它有结构化分析(SA)、结构化设计(SD)和结构化程序设计(SP)等方法。

结构化分析方法给出一组帮助系统分析人员产生功能规约的原理与技术。它一般利用图形表达用户需求,使用的手段主要有数据流图、数据字典、结构化语言、判定表以及判定树等。

结构化分析的步骤如下:①分析当前的情况,做出反映当前物理模型的DFD;②推导出等价的逻辑模型的DFD;③设计新的逻辑系统,生成数据字典和基元描述;④建立人机接口,提出可供选择的目标系统物理模型的DFD;⑤确定各种方案的成本和风险等级,据此对各种方案进行分析;⑥选择一种方案;⑦建立完整的需求规约。

结构化设计方法给出一组帮助设计人员在模块层次上区分设计质量的原理与技术。它通常与结构化分析方法衔接起来使用,以数据流图为基础得到软件的模块结构。SD方法尤其适用于变换型结构和事务型结构的目标系统。在设计过程中,它从整个程序的结构出发,利用模块结构图表述程序模块之间的关系。结构化设计的步骤如下:①评审和细化数据流图;②确定数据流图的类型;③把数据流图映射到软件模块结构,设计出模块结构的上层;④基于数据流图逐步分解高层模块,设计中下层模块;⑤对模块结构进行优化,得到更为合理的软件结构;⑥描述模块接口。

结构化设计方法的设计原则:

(1)使每个模块执行一个功能(坚持功能性内聚)

(2)每个模块用过程语句(或函数方式等)调用其他模块

(3)模块间传送的参数作数据用

(4)模块间共用的信息(如参数等)尽量少

 

 

维也纳开发方法


Vienna development method, VDM
we!yena kaifa fangfa 维也纳开发方法(Vienna develoP~t method,、飞〕M)vL)M是在70年代由侣M维也 纳实验室的C.J~和D.Bj~er提出的,最初是作 为描述程序设计语言指称语义的元语言,后来发展 成支持程序开发的形式化方法。 Vl〕M基于集合论,其出发点是用一阶谓词(断 言)来描述程序的状态空间(程序状态即程序中所使 用的全体非局部变量的取值)。VI〕M提供了四个基 本类型:集合、复合、映射和序列,作为书写规约的基 础。每个基本类型都具有相应的运算和关系,可以 在断言中使用。程序的功能由刻画其初始状态的前 断言及刻画其终止状态的后断言规定。由于程序的 功能描述往往涉及到某些变量在其执行后与执行前 的取值之间的关系,在后断言中可以用特定的符号 来引用变量在程序执行前的初值。Vl)M采用“面向 模型”的方法来描述数据类型(参见形式规约)。一 数据类型的规约由三要素组成:①状态集;②初始 值;③各运算的描述。每个运算均用前、后断言描 述。 例先进先出队列的Vl)M规约 Queue=s闺of Qel q。=[] ENQUEtjL:(e:Qel) ext wrq:Queue 泌tq二瓦八仁e〕 1)EQL!EUE()e:Qel ext wrq:Queue preq共仁] 卿t荀=[e]八q 这个例子利用序列来给出队列的规约。其中【〕表示 空序列。[e」是仅含e的单元素序列,八连接两个序 列。保留字pre,娜t分别引出前、后断言。出现在 后断言中的句表示变量q在程序开始执行时的值 (即前断言中的值)。保留字extwr表示随后的变 量是外部的,其值在本程序中被引用(r)且被修改 (w)。施加于Queue上的运算有两个:ENQUEUE 和1)EQUEUE。ENQUEUE不带前断言,表示其前 断言为真。 、勺M提供了一套变换规则。按这些规则可以 将规约精化,逐步转换为可执行程序,并保证最终得 到的程序满足起初的规约。 Vl)M的提倡者十分重视将其应用于工业规模 的软件开发实践。他们与工业界联合举办Vl)M研 讨班,训练系统设计员和程序员掌握、使用这种方 法。设计国际标准化组织(I以〕)规约语言VDM~sL 的工作目前正在进行之中。

面向对象开发方法

教学要求

1.理解面向对象的基本概念

2.理解UML建模语言

3.了解面向对象方法构造软件的过程

4.了解面向对象的分析方法

5.了解面向对象的设计方法

面向对象基础

面向对象开发方法是建立在对象概念(对象、类和继承)基础上的方法;

面向对象方法是一种运用对象、类、继承、聚合、消息传送、多态性等概念来构造系统的软件开发方法。

对象:是构成世界的一个独立单元,它具有自己的静态特征和动态特征,从面向对象程序设计的角度看:对象是具有相同状态的一组操作的集合。

一个对象由一组属性和对这组属性进行存取的操作构成。

类:是具有相同属性和操作的一组对象的抽象

面向对象的程序设计语言具有数据抽象、信息隐藏、分类继承等特征;

继承:继承是使用已存在的定义作为基础来建立新定义的技术,一个类可以是多个一般类的特殊类,它从多个一般类中继承了属性和操作,这种继承模式叫多继承,否则就是单继承。

消息:一个对象与另一个对象的通信单元,是要求某个对象执行类中定义的某个操作的规格说明。

多态性:是指在一般类中定义的属性或操作被特殊类继承后,可以具有不同的数据类型或表现出不同的行为;

面向对象分析

面向对象分析(OOA):面向对象方法从编程领域向分析领域发展延伸的产物。它具有作为分析方法的一切,包括一套符合软件工程要求的概念、原则、表示法、过程、策略及文档规范。

OOA的目标和步骤

OOA的目标是定义所有与被求解问题相关的类,以及和这些类相关联的关系和行为。

面向对象分析必须完成的任务:

在客户和软件工程师之间沟通,了解基本的用户需求;

标识类(及其属性和操作);

刻画类的层次结构;

刻画(类)对象之间的关系;

为对象行为建模;

增量式/递进地重复上述任务,直到完成建模任务。

面向对象分析步骤:

获取用户对面向对象系统的需求,包括表示场景/用例,建造需求模型;

为每个系统对象标识属性和操作;

定义组织类的结构和层次;

建造对象-关系模型;

建造对象-行为关系;

使用场景/用例复审OOA分析模型。

面向对象分析过程

面向对象的分析过程

面向对象的分析过程一般包括:获取用户对系统的需求、标识类和对象以及定义类的结构和层次。

获取用户对系统的需求:在分析阶段需要搞清的重点重点问题包括系统需要提供哪些功能、要达到何种性能指标及其可靠性、安全性要求、人机交互要求、系统的对外接口等。

标识类和对象:在得到问题域的清晰、精确的定义后,开始标识类以及类的属性和操作。

定义类的结构和层次:对象(以及它们的类)与外部的关系结构主要有两种:“一般-特殊”结构和“整体-部分”结构,“整体-部分”结构体现了面向对象方法的聚合原则,“一般-特殊”结构体现了分类及继承原

面向对象设计

OOD模型及过程:OOD以OOA模型作为输入,根据实现的要求对OOA作必要的修改与调整,或补充某些细节,其结果是OOD模型的主要部分,问题域部分。OOD还要补充几个相对独立并隔离了具体实现条件对问题域部分 影响的外围组成部分:人机交互部分、控制驱动部分、数据接口部分。

问题域部分设计

问题域部分是由与问题域有关的对象构成,并且在特定的实现条件下提供用户所需功能的组成部分。

人机交互部分设计

人机交互部分所包含的对象构成了系统的人机界面。

控制驱动部分设计

控制驱动部分由系统中全部主动类构成。这些主动类描述了整个系统中所有的主动对象,每个主动对象都是系统中一个控制流的驱动者。

数据接口部分设计

数据接口部分是OOD模型中负责与具体的数据管理系统衔接的外围组成部分,客观存在为系统中需要长久存储的对象提供了在选定的数据管理系统中进行数据存储与恢复的功能。

在OOD中可以采用文件系统、关系数据库系统、面向对象数据库管理系统等实现对象的永久存储。

典型的面向对象方法设计简介

统一建模语言(UML)

UML概述

UML是一个通用的、标准的建模语言,常用于建立软件系统的模型。也可描述非软件领域的系统。

在UML中视图是由若干个图组成的一种抽象。一个图描述了系统某个特殊方面的信息;图又由若干个模型元素构成。模型元素是UML的基本构造单元。

模型元素有:类、对象、状态、用例、结点、接口、包、注释、构件等。

对象之间的关系一般有:关联(association)、泛化(generalization)、依赖(dependency)和聚合(aggregation)。

关联:连接模型元素及实例

泛化:表示一般与特殊关系,一般元素是特殊元素的泛化,特殊元素是一般元素的特化。

依赖:一个元素以某种方式方式依赖另外一个元素

聚合:表示整体与部分,部分元素是整体元素的一部分。

UML视图包括:用例视图、逻辑视图、构件视图、并发视图和部署视图,共5种;

用例视图:从用户角度描述系统功能指出各功能的操作者;

逻辑视图:为系统分析员展示了系统内部是如何提供系统功能的;该视图通过类图、对象图来描述系统的静态结构、用状态图、顺序图、协作图和活动图描述系统的动态行为。

构件视图:展示代码构件的组织,描述了实现模块和它们之间的依赖关系。

并发视图:展示了系统的并发性。

部署视图:展示了系统的物理部署。

UML中有九种图:用例图、类图、对象图、状态图、顺序图、协作图、活动图、构件图、部署图。

用例图:展示了各个类外部参与者与系统所提供的用例之间的连接;

类图:描述了系统中所有类型、类所具有的属性和操作以及类与类之间的静态相互关系;

对象图:展示了系统执行在某一时间点上的一个可能的快照。

状态图:对某个类可能所处的不同状态和该类从一个状态转换到另一个状态的描述;

顺序图:显示特定用例的详细流程,显示了它们之间的交互,显示对象之间发送消息的顺序;

协作图:展示对象间的动态协作关系

活动图:展示示连续的活动流,描述完成一个操作所需要的活动。

构件图:以代码构件为单位展示代码的物理结构。构件可以是源代码构件、二进制构件或可执行构件。

部署图:显示系统运行时刻的结构,展示了系统中硬件和软件的物理结构以及在此结构上执行的软件。

UML建模包括:用例模型、静态模型、动态模型和实现模型;

用例模型:用于系统需求的获取、描述系统的功能需求。用例模型主要成份有用例、参与者和系统。

静态模型:是对问题域的一个抽象过程,把问题域与应用域有关的各种类、对象以及它们之间的关系进行适当的抽象和分类以揭示系统结构。静态模型将使用类图、对象图和包图。

类图:用类和它们之间的关系描述系统的一种图示,它描述了类的属性、操作以及对模型中中成份的约束。类图包含有类、关联和关系等模型元素。

类的表示:上中下三个长方形区域分别表示类名、属性和操作

类的属性定义形式:可见性 属性名: 类型=缺省值{约束特性}

可见性表示该属性对类以外的用户是否可见。有公用、私有、保护三种。

属性名是一个字符串,表示属性的名字。

类型定义属性的种类,可以是基本数据类型,也可以是用户自定义类型。

缺省值为属性的初始值。

约束特性用于描述对该属性的约束。

类的操作定义:可见性 操作名(参数表):返回类型{约束特性}

关联:表示类之间的某种语义联系。

关系:聚合关系、组成关系、泛化关系

对象图:类图的一种变形,是类图的实例化。描述系统在某一时期或某个特定时刻可能存在的具体对象实例以及它们之间的具体关系。

包图:把各种各样的模型元素通过内丰的语义连在一起成为一个整体。包可以嵌套,包之间可以有依赖、细化、泛化的关系。

动态模型

动态模型:描述系统的动态行为,显示对象在系统运行期间不同时刻的动态交互从而实现一组对象的相应功能。使用:用状态图、顺序图、协作图和活动图。

消息:在所有动态模型图中,消息是连接发送者和接收者的一条带箭头的线,UML用箭头的类型来表示消息的类型。

状态图:描述对象所具有的状态,以及怎样的事件影响着这些状态。

顺序图:描述对象是如何交互的,并且将重点放在消息发送和接收的顺序上。

协作图:描述协作对象间的交互和连接。

活动图:描述完成一个操作所需要的活动,并显示其动作及结果。

实现模型

实现模型:描述了系统实现时的一些特性。它包括构件图和配置图。

构件图:描述软件构件及其构件之间的关系,显示代码结构。构件是逻辑架构中定义的概念和功能在物理架构中的实现。在UML中,软件构件分为源代码构件、二进制构件和可执行构件。

配置图:描述系统硬件的物理拓朴结构以及在此结构上执行的软件,即系统运行时刻的结构。

使用UML的过程

UML的过程的基本特征是:以架构为中心,用例驱动,迭代,增量式开发。

使用UML的过程:系统需求、系统需求分析、静态结构模型、动态结构模型。

1.什么是对象、类和消息?

对象是构成世界的一个独立单元,它具有自己的静态特征和动态特征。

类是具有相同属性和操作的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,包括属性和操作两个部分。

消息是一个对象与另一个对象的通信单元,是要求某个对象执行类中定义的某个操作的规格说明。发送给一个对象的消息定义为一个操作名和一个实参数表(可能是空的)。

2.简述类之间的关系。

类之间的关系有:关联;聚合;组成和泛化

关联表示类与类之间的一种抽象关系,从说明层观点看,关联代表一种职责;

聚合关系表示类和类之间的整体和部分的关系;

组成关系是另外一种形式的聚合关系,部分对象仅属于一个整体对象,且部分对象与整体对象共存亡;

泛化关系也称继承关系。

3.什么叫面向对象?面向对象方法的特点是什么?

Coad和Yourdon对面向对象给出了一个定义:“面向对象 = 对象 + 类 + 继承 + 消息通信”。

面向对象技术是一个非常实用的软件开发方法,具有以下特点。第一,开发方法的唯一性,即方法是对软件开发过程所有阶段进行综合考虑而得到的。二是从生存期的一个阶段到下一个阶段的高度连续性,即在一个阶段所用到的部分与在下一个阶段所使用的部分是衔接的,所使用的技术经过生存期每一阶段后不改变。最后,把面向对象分析、面向对象设计和面向对象程序设计集成到生存期的相应阶段。

4.什么是用例模型?

用例模型用于系统需求的获取,描述系统的功能需求。

用例模型的主要成分有用例、参与者和系统。系统被看作一个提供用例的黑盒,系统如何做、用例如何实现、内部如何工作,这些对用例模型都是不重要的。创建用例模型的工作包括:定义系统,寻找参与者和用例,描述用例,定义用例之间的关系,最后确认模型,用例模型由用例图组成。

5.简述面向对象分析的一般步骤。

面向对象分析的一般步骤是:

1)获取用户对OO系统的需求,包括表示场景或者用例;建造需求模型。

2)为每个系统对象标识属性和操作。

3)定义组织类的结构和层次。

4)建造对象-关系模型。

5)建造对象-行为模型。

6)使用用例/场景复审OO分析模型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值