设计好,就是软件,不用写代码,那该多好!
时间:2011-10-14
来源:互联网
为什么我们的设计变成代码的时候,需要那么复杂的工序?
为什么我们的代码在编写的过程中,往往发现设计的不合理需要反复修改设计?甚至于,有的人在编写的代码的时候根本就不管设计了?
我们的设计,不能直接运行吗?就算先不管效率的情况下,不能直接运行么?我一直有这样的疑问?难道,直接设计好的东西,不能在开发环境上运行么,非要经过复杂的编码才能运行么?
我们在学习程序开发的时候,应该都学习过一种东西,叫流程图,其实这个已经清晰的说明程序运行结构了,但是他仍然不能运行,而需要我们翻译成代码。我有很大疑问,真的需要吗,不能直接运行程序结构图么?
我们来想想程序是什么?
数据 + 函数 = 程序
其实我们真的可以这么理解。
数据是什么?数据就是我们程序需要处理的东西,同时程序处理过后的东西也是数据。
函数是什么?函数就是如何处理数据的过程。我们还可以从更深入来理解,函数可以理解成我们程序的功能模块,可以理解对输入的响应,可以理解成显示成我们要的结果,总之就是对数据的处理,只是处理最后对应的结果不一样而已。比如说我们看到的图像,就是程序把图像数据传输给显示器。
OK,按照这样的理解,我们只要做好 数据 + 函数 , 那就能得到我们需要的软件了!
数据如何做?
从面向对象的概念来讲,程序就是对现实中的数据抽像。我们的数据也是对现实中的数据进行抽象。首先,要理清数据本身结构。其实,是数据之间的关系。
数据的结构是依赖于我们系统的要求。比如我们要描述一个苹果,假设我们需要关心他的大小,重量。那我们可以如下描述:
类名称:苹果
属性: 半径 (浮点数) 我们用半径来描述大小
属性: 重量 (浮点数)
我们已经给出了苹果的数据结构描述。但是,要注意,他只是一个类,而不是一个类的实体。我们在实际的系统中,是需要生成具体的实体,程序也是对具体实体进行操作,而不是类定义,类定义只是描述这种实体的结构。
数据之间有什么关系?
数据之间的关系其实我们可以简单的理解成几个:
继承关系:提出继承关系,是方便我们数据结构抽象,也是我们对现实中事物的一种理解方法。很多事情本身共性,比如苹果,李子,桃子,他们都是水果,我们可以抽象出一个基础的类,水果,而这些都从上面继承就可以了,这样比较方便。
组合:为了设计方便,我们提出一个组合的概念,是方便我们设计。比如说一个电脑,他是有显示器,主机,和输入设备构成。我们可以就是用这样方式来表达。
电脑 由( 显示器, 主机, 输入设备) 构成
关联:事物之间的关系,比如说 学生和老师,老师可能有多个学生,学生有多个名字。
我们可以描述为 学生(0..n) --------- (0..n) 老师。这个就像数据库ER模型的描述那样,具体我们先不讨论。
想想,是不是差不多,我已经把数据的结构描述清楚了。好像是!
但是要注意,我们只是描述一个静态的数据,但是实际的数据往往都是动态的,但是,我们也可以通过抽象多个静态的数据来描述动态数据。
但是数据如何描述,和如何编写还有些问题,我们先放放,我们继续对“函数”讨论。
函数,我当然说的是广义的函数了。程序代码就是函数,流程图也可以理解成函数,反正我就是说能处理数据的东西。
我们如何来描述函数呢?
我们当然不能让程序都写一个个函数来实现。这样可以实现,但是不觉得痛苦和繁琐么?
我的设想是程序结构图,用程序结构图来描述软件的所有,程序结构图通过工具本身就能运行,当然程序结构图里面,还可以写代码,通常我们不需要这么做,但是当我们优化或者特殊情况下时候,我可以这么做。
怎样的程序图?那肯定不是简单的结构图,那只是一个过程,并不能很好描述, 不是么?
我提出一个东西叫做 模块。什么是模块。 模块就是,输入一些数据 输出一些数据。模块的输出数据 又能当其他数据 输出。模块可以相互连接构成更大模块,就像搭积木一样。 只要给出输入数据 , 模块就能运行。模块的调试非常方便。 我们很多时候都需要全局,或者外部的东西,这个怎么办。没有关系,模块可以设置一个上下文。这东西就是我们的全局变量。当然,我们也可以把他理解成输入数据。看怎么做方便吧,这里暂时不讨论这个。我们先就假定,模块就是 处理输入数据 到 输出数据。这个我们用结构图就可以完全的描述,而不比一定要写代码。
状态结构图。光有模块,我们很难描述实际的数据处理过程,我们现实中的数据往往并不是一条线,就算能用那样来描述吗,那也是相当的麻烦。如何描述,我们用状态结构图,也就是带有状态的机构图。换句话话说,他不是像结构图那样直接运行到结束的东西。有个状态的概念。同时我们引入一个东西,叫做事件,状态可以通过事件来触发改变。这样就更符合现实了。就像现实中一个人路上走,随时都有可能被别个叫住聊天一样,当然你也可以不理他。当然,状态结构图也可以有子状态结构图。当然还有其他一些属性,只是我还没有想清楚,暂时这样。
( 还有分布式数据问题、客服端服务端数据模型,这样暂时还不讨论,比较复杂)
大概你已经清楚我想做的东西了。
开发软件就是:
设计数据结构 和 结构之间的关系 + 设计功能模块的状态机构图 + 通用的模块
然后点击运行,就OK了。
代码,只有优化的时候需要写,其他的时候不用了。
当然,还有很多细节,我还没有一一阐述。这只是个开始。
我真心希望,有人能做一个开发环境。
我很懒的,有人做我用就好。没有人做,我只有自己慢慢开始做了。
为什么我们的代码在编写的过程中,往往发现设计的不合理需要反复修改设计?甚至于,有的人在编写的代码的时候根本就不管设计了?
我们的设计,不能直接运行吗?就算先不管效率的情况下,不能直接运行么?我一直有这样的疑问?难道,直接设计好的东西,不能在开发环境上运行么,非要经过复杂的编码才能运行么?
我们在学习程序开发的时候,应该都学习过一种东西,叫流程图,其实这个已经清晰的说明程序运行结构了,但是他仍然不能运行,而需要我们翻译成代码。我有很大疑问,真的需要吗,不能直接运行程序结构图么?
我们来想想程序是什么?
数据 + 函数 = 程序
其实我们真的可以这么理解。
数据是什么?数据就是我们程序需要处理的东西,同时程序处理过后的东西也是数据。
函数是什么?函数就是如何处理数据的过程。我们还可以从更深入来理解,函数可以理解成我们程序的功能模块,可以理解对输入的响应,可以理解成显示成我们要的结果,总之就是对数据的处理,只是处理最后对应的结果不一样而已。比如说我们看到的图像,就是程序把图像数据传输给显示器。
OK,按照这样的理解,我们只要做好 数据 + 函数 , 那就能得到我们需要的软件了!
数据如何做?
从面向对象的概念来讲,程序就是对现实中的数据抽像。我们的数据也是对现实中的数据进行抽象。首先,要理清数据本身结构。其实,是数据之间的关系。
数据的结构是依赖于我们系统的要求。比如我们要描述一个苹果,假设我们需要关心他的大小,重量。那我们可以如下描述:
类名称:苹果
属性: 半径 (浮点数) 我们用半径来描述大小
属性: 重量 (浮点数)
我们已经给出了苹果的数据结构描述。但是,要注意,他只是一个类,而不是一个类的实体。我们在实际的系统中,是需要生成具体的实体,程序也是对具体实体进行操作,而不是类定义,类定义只是描述这种实体的结构。
数据之间有什么关系?
数据之间的关系其实我们可以简单的理解成几个:
继承关系:提出继承关系,是方便我们数据结构抽象,也是我们对现实中事物的一种理解方法。很多事情本身共性,比如苹果,李子,桃子,他们都是水果,我们可以抽象出一个基础的类,水果,而这些都从上面继承就可以了,这样比较方便。
组合:为了设计方便,我们提出一个组合的概念,是方便我们设计。比如说一个电脑,他是有显示器,主机,和输入设备构成。我们可以就是用这样方式来表达。
电脑 由( 显示器, 主机, 输入设备) 构成
关联:事物之间的关系,比如说 学生和老师,老师可能有多个学生,学生有多个名字。
我们可以描述为 学生(0..n) --------- (0..n) 老师。这个就像数据库ER模型的描述那样,具体我们先不讨论。
想想,是不是差不多,我已经把数据的结构描述清楚了。好像是!
但是要注意,我们只是描述一个静态的数据,但是实际的数据往往都是动态的,但是,我们也可以通过抽象多个静态的数据来描述动态数据。
但是数据如何描述,和如何编写还有些问题,我们先放放,我们继续对“函数”讨论。
函数,我当然说的是广义的函数了。程序代码就是函数,流程图也可以理解成函数,反正我就是说能处理数据的东西。
我们如何来描述函数呢?
我们当然不能让程序都写一个个函数来实现。这样可以实现,但是不觉得痛苦和繁琐么?
我的设想是程序结构图,用程序结构图来描述软件的所有,程序结构图通过工具本身就能运行,当然程序结构图里面,还可以写代码,通常我们不需要这么做,但是当我们优化或者特殊情况下时候,我可以这么做。
怎样的程序图?那肯定不是简单的结构图,那只是一个过程,并不能很好描述, 不是么?
我提出一个东西叫做 模块。什么是模块。 模块就是,输入一些数据 输出一些数据。模块的输出数据 又能当其他数据 输出。模块可以相互连接构成更大模块,就像搭积木一样。 只要给出输入数据 , 模块就能运行。模块的调试非常方便。 我们很多时候都需要全局,或者外部的东西,这个怎么办。没有关系,模块可以设置一个上下文。这东西就是我们的全局变量。当然,我们也可以把他理解成输入数据。看怎么做方便吧,这里暂时不讨论这个。我们先就假定,模块就是 处理输入数据 到 输出数据。这个我们用结构图就可以完全的描述,而不比一定要写代码。
状态结构图。光有模块,我们很难描述实际的数据处理过程,我们现实中的数据往往并不是一条线,就算能用那样来描述吗,那也是相当的麻烦。如何描述,我们用状态结构图,也就是带有状态的机构图。换句话话说,他不是像结构图那样直接运行到结束的东西。有个状态的概念。同时我们引入一个东西,叫做事件,状态可以通过事件来触发改变。这样就更符合现实了。就像现实中一个人路上走,随时都有可能被别个叫住聊天一样,当然你也可以不理他。当然,状态结构图也可以有子状态结构图。当然还有其他一些属性,只是我还没有想清楚,暂时这样。
( 还有分布式数据问题、客服端服务端数据模型,这样暂时还不讨论,比较复杂)
大概你已经清楚我想做的东西了。
开发软件就是:
设计数据结构 和 结构之间的关系 + 设计功能模块的状态机构图 + 通用的模块
然后点击运行,就OK了。
代码,只有优化的时候需要写,其他的时候不用了。
当然,还有很多细节,我还没有一一阐述。这只是个开始。
我真心希望,有人能做一个开发环境。
我很懒的,有人做我用就好。没有人做,我只有自己慢慢开始做了。
作者: bbksoft 发布时间: 2011-10-14
设计知识大体架构,哪能考虑到每个细节
作者: bluecat_crystal 发布时间: 2011-10-14
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28