软件设计的几种方法个人笔记
2016-02-15 22:24
190 查看
设计方法有以下几种:
根据系统的数据流进行设计:
面向数据流的设计(Data Flow-Oriented Design)或过程驱动的设计(Process-driverDesign)
根据系统的数据结构进行设计:
面向数据结构的设计(Data Structure-Oriented Design)或数据驱动的设计(Data-drivenDesign)
面向对象的设计(Object-Oriented Design)
面向数据流的设计方法:
结构化(SD:Structured Design):以数据流图为基础设计系统的模块结构。
思想:认为一个程序、一组程序或一个系统,是由一组功能操作来构成的。
目标:将软件设计为结构合理、功能单一的模块,建立系统的模块结构图。
表示方法:分层次的结构图。
优点:
(1)减少了设计复杂性。结构化设计将对大目标的实现转化为一些小目标来实现,是一种减少设计复杂性的技术。
(2)结构独立。结构化设计将功能性程序划分成多个相对独立的程序模块。
(3)单一的功能模块,可以使软件设计获得最大的益处。易于进行软件修改。
面向数据结构的分析设计方法:
把问题分解为由三种基本结构形式表示的各部分的层次结构,分别为:顺序,选择和重复。
结构化程序设计的思想主要是模块分解与功能抽象,通过将一个较复杂的任务按照功能分解成相对独立的多个子任务,采用自顶向下,分而治之的手段有效地解决问题。
本质仍是面向过程的,它以算法为核心,数据与过程之间无必然联系,二者完全分离,程序设计者在进行程序设计师首先考虑软件的功能,然后在模块内定义必要的数据支持功能的实现,程序员在编写程序模块是要注意始终保持数据和操作的一致性,一但由于修改或其他原因导致两者出现偏差,系统将提示出错。
面向对象技术的特点:
(1)它是对软件开发过程所有阶段进行综合考虑得到的。
(2)从生存期的一个阶段到下一个阶段所使用的方法与技术具有高度的连续性。
(3)它将面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程设计(OOP)集成到软件生存期相应阶段。
面向对象设计方法是以对象(object)为核心,首先分析现实世界中的问题,抽象出对象集合,然后确定这些对象之间的关系,并正确描述对象的状态和行为,映射到解空间中用数据来表示对象的状态,用过程来实现对象的行为,且两者是统一体。
详细设计(即过程设计或算法设计)
这一阶段任务主要包括:
(1)模块的算法设计:确定为每个模块采用的算法,选择某种适当的工具表达算法的过程,写出模块的详细过程性描述。
(2)模块内的数据结构设计:确定每一模块所使用的数据结构。
(3)模块接口设计:确定模块接口细节,包括对系统外部的接口和用户界面,对系统内部其他模块的接口,以及模块输入数据、输出数据及局部数据的全部细节。
(4)其他设计:根据软件系统的特点,还可以进行数据库设计、代码设计、输入/输出格式设计以及人机界面设计等。
(5)模块测试用例设计:为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试,模块的测试用例是软件测试计划的重要组成部分,通常应包括输入数据、期望输出等内容。
(6)编写详细计划说明书:再详细设计结束时,应该把上述结果写入详细设计说明书,并且通过复审形成正式文档,作为下一阶段(编码阶段)的工作依据。
(7)详细设计评审:对详细设计的结果进行评审。
详细设计说明的内容主要包括:
(1)表示软件结构的图表。
(2)对逐个模块的程序描述,包括算法和逻辑流程、输入输出项、与外部接口等。
根据系统的数据流进行设计:
面向数据流的设计(Data Flow-Oriented Design)或过程驱动的设计(Process-driverDesign)
根据系统的数据结构进行设计:
面向数据结构的设计(Data Structure-Oriented Design)或数据驱动的设计(Data-drivenDesign)
面向对象的设计(Object-Oriented Design)
面向数据流的设计方法:
结构化(SD:Structured Design):以数据流图为基础设计系统的模块结构。
思想:认为一个程序、一组程序或一个系统,是由一组功能操作来构成的。
目标:将软件设计为结构合理、功能单一的模块,建立系统的模块结构图。
表示方法:分层次的结构图。
优点:
(1)减少了设计复杂性。结构化设计将对大目标的实现转化为一些小目标来实现,是一种减少设计复杂性的技术。
(2)结构独立。结构化设计将功能性程序划分成多个相对独立的程序模块。
(3)单一的功能模块,可以使软件设计获得最大的益处。易于进行软件修改。
面向数据结构的分析设计方法:
把问题分解为由三种基本结构形式表示的各部分的层次结构,分别为:顺序,选择和重复。
结构化程序设计的思想主要是模块分解与功能抽象,通过将一个较复杂的任务按照功能分解成相对独立的多个子任务,采用自顶向下,分而治之的手段有效地解决问题。
本质仍是面向过程的,它以算法为核心,数据与过程之间无必然联系,二者完全分离,程序设计者在进行程序设计师首先考虑软件的功能,然后在模块内定义必要的数据支持功能的实现,程序员在编写程序模块是要注意始终保持数据和操作的一致性,一但由于修改或其他原因导致两者出现偏差,系统将提示出错。
面向对象技术的特点:
(1)它是对软件开发过程所有阶段进行综合考虑得到的。
(2)从生存期的一个阶段到下一个阶段所使用的方法与技术具有高度的连续性。
(3)它将面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程设计(OOP)集成到软件生存期相应阶段。
面向对象设计方法是以对象(object)为核心,首先分析现实世界中的问题,抽象出对象集合,然后确定这些对象之间的关系,并正确描述对象的状态和行为,映射到解空间中用数据来表示对象的状态,用过程来实现对象的行为,且两者是统一体。
详细设计(即过程设计或算法设计)
这一阶段任务主要包括:
(1)模块的算法设计:确定为每个模块采用的算法,选择某种适当的工具表达算法的过程,写出模块的详细过程性描述。
(2)模块内的数据结构设计:确定每一模块所使用的数据结构。
(3)模块接口设计:确定模块接口细节,包括对系统外部的接口和用户界面,对系统内部其他模块的接口,以及模块输入数据、输出数据及局部数据的全部细节。
(4)其他设计:根据软件系统的特点,还可以进行数据库设计、代码设计、输入/输出格式设计以及人机界面设计等。
(5)模块测试用例设计:为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试,模块的测试用例是软件测试计划的重要组成部分,通常应包括输入数据、期望输出等内容。
(6)编写详细计划说明书:再详细设计结束时,应该把上述结果写入详细设计说明书,并且通过复审形成正式文档,作为下一阶段(编码阶段)的工作依据。
(7)详细设计评审:对详细设计的结果进行评审。
详细设计说明的内容主要包括:
(1)表示软件结构的图表。
(2)对逐个模块的程序描述,包括算法和逻辑流程、输入输出项、与外部接口等。
相关文章推荐
- 现代软件工程开发体验:结对编程
- 最牛B的编码套路
- 软件开发的组织和角色分工
- 软件工程中的模型
- jsp股票K线图控件
- 计算机专业
- 架构师之路(1)---面向过程和面向对象 王泽宾
- 架构师之路(5)---面向对象的设计原则
- 四个月,我看到了一个不一样的自己
- 对软件测试的认识你了解多少
- 如何成为一名优秀的软件测试工程师
- 怎么成为一个优秀的程序员,而不是一个优秀的码农?
- 现代软件工程讲义 2 开发技术 - 效能分析
- python 新手入门+概括 小技巧整理
- 软件工程院校排名
- 211、985高校招收软件工程硕士,自主命题考试,无学位也可报考
- 《软件工程里面的大学十年》(转载上半部分)
- 《软件工程里面的大学十年》(转载下半部分)
- Facebook 没有QA 如何发布代码 (How Facebook Ships Code 译文)
- 软件工程管理