(软件)设计方法

2008-04-09 04:04:27来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折


(软件)设计方法
作者:Larry Brinn 翻译: CKER


1. 简介
2. (软件)设计是什么?
3. (软件)设计过程
4. (软件)设计基础
5. (软件)设计方法论
6. (软件)设计文档
7. 面向对象的(软件)设计
8. 结论

简介
您是如何开始一个新工程的?是不是跳到计算机前,打开您喜爱的 RAD 工具开始输入代码?有没有想过程序会执行些什么或者系统是如何操纵数据的?有没有想过要记下些东西来帮助提醒您或阐明您已经开发的代码的逻辑实现?如果您对第一个问题答 " 不 " ,而其他问题答 " 是 " 的话,您可以跳过这篇文档。否则的话,请 好好读读 这篇文章。您应该有个计划、蓝图,并且在手边有个对您的问题解决方案的简明安排。 " 您必须知道您要去哪儿得到一切! " 让我们来看看开发一个能实现您所设计的功能的程序时,什么最棘手。

(软件)设计是什么?
E.S. Taylor 给设计下的定义是 :
" …the process of applying various techniques and principles for the purpose of defining a device, a process or a system in sufficient detail to permit its physical realization. "
" … 应用各种各样的技术和原理,并用它们足够详细的定义一个设备、一个程序或系统的物理实现的过程。 "

对任意的工程产品或系统,开发阶段绝对的第一步是确定将来所要构建的制造原型或实体表现的目标构思。这个步骤是由多方面的直觉与判断力来共同决定的。这些方面包括构建类似模型的经验、一组引领模型发展的原则、一套启动质量评价的标准、以及重复修改直至设计最后定型的过程本身。计算机软件设计与其他工程学科相比还处在幼年时期,仍在不断变化中,例如更新的方法、更好的算法分析、以及理解力的显著进化。软件设计的方法论的出现也只有三十年多一点,仍然缺乏深度、适应性和定量性质,通常更多的与经典工程设计学科相联系。尽管如此,现今的软件技术已经存在、设计质量的标准也可使用、设计符号亦可以应用。带着这些意见,我们一起来看看什么有助于程序员们找到他们的软件涅盘 ( 天堂的意思 

(软件)设计过程
软件的设计是一个将需求转变为软件陈述(表达)的过程。这种陈述给我们一个对软件的全局观点。系统通过逐步求精使得设计陈述逐渐接近源代码。这里有两个基本步骤;第一步是 初步设计 Preliminary design ,关注于如何将需求转换成数据和软件框架。第二步是 详细设计 Detail design ,关注于将框架逐步求精细化为具体的数据结构和软件的算法表达。发生中的设计行为、数据、算法和程序设计都需要由现代程序所需的界面设计这一清晰的行为来结合起来。 界面设计 Interface design 建立程序布局和人机交互机制。贯穿设计过程的质量由一系列的 正式技术评定 formal technical reviews 或 设计排演 design walkthroughs 来评价。良好的设计规范必须建立在对设计陈述(表达)的评估之上,以下是一些指导方针:

1. 设计应该展现层次结构使得软件各部分之间的控制更明智。

2. 设计应当模块化;这就是说,软件应在逻辑上分割为实现特定的功能和子功能的部分。

3. 设计应当由清晰且可分离的数据和过程表达来构成。

4. 设计应使得模块展现独立的功能特性。

5. 设计应使得界面能降低模块之间及其与外部环境的连接复杂性。

6. 设计应源自于软件需求分析期间获得的信息所定之可重复方法的使用。

要拥有良好的设计特征不是靠碰运气,而在设计过程中通过综合运用基础设计原理、系统方法论、彻底的评定回顾可以有助于良好的设计。软件设计方法每天都在进化,作为已经经过测试和细化的方法,良好的设计应具有以下的四种特性,并在所有这些特性之间保持一致。
1. 将信息领域的表达转换为软件设计的表达的机制。

2. 表示功能组件及其界面的符号。

3. 逐步求精和分割的试探。

4. 质量评估的指导方针。

开发软件的时候,不管采用何种设计方法您必须能够熟练运用一套关于数据、算法和程序设计的基本原理。

(软件)设计基础
软件设计方法论的这套基本原理已经经过了多年的进化。每种概念的影响程度不尽相同,但它们都经历了时间的洗礼。基于这些基本原理设计者可以采用更多更成熟的设计方法。这些基本原理有助于设计者回答以下的问题:

1. 将软件分割成独立的组件时会采用何种标准?
2. 怎样将软件的原则性表示详细分割成函数或数据结构?
3. 有没有定义一个软件设计的技术质量的统一标准?

M.A. Jackson 曾经说过: " 对一个计算机程序员来说,分辨让程序运行和让程序 正确 之间的差异是一个良好的开端。 " 为了 " 使程序 正确 " ,基本设计原理提供了必须的框架。因此让我们来对这些基本原理作个简短的检视。

抽象 Abstraction 在最高层次上指的是使用待解决的问题领域内的术语描述的解决方案。相对较低层次的抽象则更多的面向程序语言,最低层的抽象则是解决方案的可直接实现的方式描述。软件设计的每一个步骤都是对相应层次解决方案的抽象的逐步求精。

求精 Refinement 又叫做逐步求精指的是通过程序细节连续细化来开发程序体系的策略。分步骤的对程序抽象进行分解直至成为编程语言的过程同时造就了程序的层次结构。在这一点上要对细节多做考虑,这也展示了求精实际上是个苦心经营的过程。

模块化 Modularity 指的是软件可被分割为分别命名并可寻址的组件(也叫做模块),将模块综合起来又可以满足问题的需求的性质。 " 软件的模块化是允许智能化管理程序的唯一属性。 " 换句话说,当您将一个复杂问题分解为一些小问题时会更容易解决。需要重点解释的是即使一个系统必须象 " 单片机 " 一样来实现,它也可以采用模块化设计。

软件体系(架构) Software Architecture 涉及到程序的两个重要特性: 1) 模块的层次结构。 2) 数据结构 。这源自于需求分析时将真实世界问题的含蓄定义与软件解决方案的要素关联起来的分割过程。当问题的每个部分通过一个或多个软件要素得到解决后,与问题的定义和解决相一致软件和数据结构的进化就开始了。这个过程代表了软件的需求分析和设计之间的位置。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:如何做好项目软件分析

下一篇:Larry Brinn谈(软件)设计方法