X
xiaorang
Unregistered / Unconfirmed
GUEST, unregistred user!
从事软件开发十年多,回想以前开发过的软件,几个不同行业的信息管理系统,机器人开发工具,LOGO语言编译器,游戏软件,教育软件,天文软件,各种各样的工具小软等等。并不曾致力于深入一个行业,而是一直立足于纯然的软件开发本身。乐于研究软件开发自身的逻辑,自以为有一些感受。本文将尝试从一个不同视角来看软件开发的各个方面。以Delphi语言开发的软件为例,但其分析方法可以用于各种编程语言。软件的形体 软件真的有魄与魂么?任何事物复杂到一定程度程度之后,都会有一些新的概念出现,魄与魂正是一种典型的复杂形态的称谓。所以这是真的。不过在研究魄与魂之前,我们不得不先研究魄与魂的表现载体,软件的形体。 如同现代医学通过人体解剖的方式永远搞不懂经络概念,因为经络只存在于活动的生命体之中。 说到软件的形体,同样有两个含义,静态的与动态的。所谓静态含义,是指软件的磁盘载体(即磁盘文件),这就好比是解剖台上的软件结构;所谓动态含义,是指软件运行时的内存结构,那才是活动中的软件结构。 静态地看,计算机软件我们可以理解为一组文件(当然也可以是一个),这些文件可以相对独立的运行,帮我们完成某一项工作。一般来说,我们可以把这些文件分成几类: 1、可运行文件(exe或dll)。这是软件的核心,所谓软件开发,大部分工作就是制作这些可运行文件。 2、配置文件。用于描述软件的运行状态,一般数据量很小,但很关键。有三种常见的方式,ini文件、xml文件和系统注册表。 3、数据文件。软件本身携带的用于软件工作时使用的资料。可以是各种多媒体资料,也可以是数据库数据,形式最为多种多样。 4、用户文件。不是由软件事先携带,用户在使用软件过程中形成的文件。比较典型的是游戏软件中用户进度的存档文件,还有各种用户的定制信息。 静态的软件形体,就如同是没有生命的身体,对它的研究,多少会有一些软件维护方面的作用。但对软件开发来说,是远远不够的。至少我们得进一步研究软件的动态形体,也就生命体的行为规律。 而当软件运行的时候,各种静态文件被调入内存,一起完成各种具体工作,则似乎显得浑然一体。继续以静态的观点来看软件,对我们没有多少实际的帮助。这时,我们就应该了解其动态结构。对软件的动态结构的认识才是帮助我们理解软件和创造软件的关键关节。 就如同中医和西医对人体的运行模式有着不同的视角,不同对于软件的运行模式,也存在着许多不同的视角。基于不同的视角都可以进行软件开发,软件的运行时模式,我先介绍三种比较典型的整体模式。 第一种典型模式,是从汇编视角看软件的运行时模式。软件呈现为许多组相互协作的机器指令序列。指令序列保存于不同的内存空间段,软件所用的数据也保存于不同的内存空间段。为了方便寻找这些指令和数据,就把内存空间进行了地址编排。所以汇编语言发展了有许多不同的方法进行所谓的“寻址”工作。这种模式,我们知道就可以了,在软件开发过程中基本不会用到。 第二种典型模式,是标准窗口应用程序。软件就如同一台有着显示窗和各种按钮、控制杆的机器设备。按下不同的按钮,软件可以做出不同的响应,完成不同的工作。在软件内部,表现为事件驱动的模式,各种可能的对这台软件机器的操作,都被命名为事件,软件开发的过程就是写出各种事件的处理程序。 第三种典型模式,是网络软件。软件成为通过各种“超链接”联系在一起的一系列“页面”。有些页面用于展示内容,有些页面用于获取用户交互信息。软件的开发工作也就是设计和制作这些页面及其相互关联。