首页 > 技术文章 > 软件工程与编程总结

rjjs 2017-08-24 16:25 原文

计算机软件

  在大学课本上有一个公式 程序=数据+算法,数据当然就是被操作对象咯,比如说一个变量,一个对象,一个数组,一个集合以及一个数据库等等等,根据粒度不同大小就不同。算法是什么算法就是解决问题的办法咯,

他可以是一个流程,可以是一个数学公式,也可以是一个计算模型,分析模型等等。

 

一 算法与架构

1 机制

  在真实的软件开发中一个软件由很多机制这一要素,常见的机制有比如说生命周期:对象生命周期,组件生命周期等等,生命周期是一种非常典型的算法机制,他是很多计算模型的流程化表现。

  常见的机制:生命周期,会话机制,权限机制,插件化机制,模块化机制

2 程序集

  当很多的机制算法组成了一套程序集的时候,他可以整合到一起形成一个程序集。比如我们的工具集,控件集,驱动集,组件集等等

3 模块化和插件化

  模块化是一种更大粒度的封装吧,模块就像一个容器,他接纳很多东西组成一个高度聚合的功能块。比如他可以包括一个函数,一个类,一个控件,一个组件或者一些服务以及实体模型

4 软件

  可以简单说软件在比较合理的架构下他都应该是模块化的,不管你是客户端也好,还是服务端也好他都是一个模块一个模块,模块内部高度聚合,模块之间高度耦合共同组成一个软件,一个软件系统。

所有模块化的软件架构实现有很多很多了,比如我们常用的vs,androidstudio,或者cm框架,angular框架,什么经典三层结构他们都是模块化的

5 平台化

  平台是在更高的粒度上组织和协作多系统多服务进行有效工作,一个平台由多个系统多个子系统他们要么水平,要么垂直,要么形成复制的关系网组成一个平台

 

二 数据与模型

2.1 数据

   在计算机世界里数据无外乎几种,比如简单的数据,字符串,数字类型,bool,以及复杂的对象,数组,集合模型

2.2 面向对象结构模型

   简单的数据类型是构成对象的基本单元,他们基本上是不开再分的最小粒度了。一个对象他可以由简单类型构成,也可以由简单类型和对象类型复合构成,以达到描述复杂的客观世界

2.3 面向对象结构关系

   前面说到了面向对象结构组成,再来说说关系,关系可以是简单的也可以是非常复杂的,那么有一些什么关系的,在结构与算法的课本中说到,对象的关系有

1)无关系

2)链表关系

3)树形关系

4)二叉树关系

5)集合关系

6)网状关系

对于复杂的关系在处理上需要简单化,也就是将复杂的东西分离到简单的层面在处理各个击破

三 数据模型与协议

  虽然说协议基本上是包含了数据模型,但是他们还是有一些区别,不同在于他们范围和解决的问题点不同。数据模型更关注实际的表示,而协议更多的关注一些规则和规定,让大家在一条线上协作。

那么在协议的层面数据模型一般就那么几种形式了,要么二进制,要么字符串,二进制是所有计算机都兼容的低级语言,字符串估计也就是人能够明白。二进制具有最广泛的机器兼容性,因此他可以传输各种数据

如文本,音频,视频流,图片,图像等,因此在低端嵌入式程序中都是采用二进制与外界进行交流。对于pc机一类的高级计算机来说就不同了他们可以处理复杂一些的东西,比如文本,于是就有了基于文本的http

pop,ftp等等一些列高级协议,还有更高级的如基于json,xml格式的ws协议等等。

  当然协议除了包含数据模型以外还有很多地方,比如协议构成三要素,语义,语法,时序,其中语义基本上就是数据模型了。

 

推荐阅读