对文档的理解:
历经大量的借鉴,我的第一次文档生涯就这样结束了。整个过程下来,自己对机房收费系统的整体脉络和业务流程有了更加深刻清晰的认识。而且有这样一个感悟:一个不会写文档的程序员和一个不会写文档的程序员两者之间的行业地位又好比武林高手和武学宗师的关系。但凡武学宗师必定是一名武林高手甚至超级武林高手,而武林高手就不一定是武学宗师了。
从上面的小比喻,我们不难看出来文档的重要性。确实,文档帮助我们加深了对软件工程各个阶段的理解,并且帮助我们将一整个繁琐复杂的软件开发过程细分为一个个具体的额阶段,明确了每个阶段的任务和注意事项。正是通过这样一个自顶向下逐层分解的过程,一个难以下咽的软件开发就变成了一道美味。就好像我们的培养计划那样,将整个事件对策脉络清晰明了的展现在每个人的面前,让所有人知道什么时间进行什么阶段,每个阶段该做些什么。一句话,文档解决了我们在面对繁琐事务的茫然不知所措的问题,让我们明确的下一个落脚点在哪里。借此机会,和大家分享一下通过编写文档我获得的对软件工程的最新理解。
对软件工程的新理解:
概要:
之前写过一篇介绍软件生命周期的文章,但是那篇文章内容基本上属于那种人云亦云的被动接受。编写过一整套软件开发的文档后,对软件工程我终于有了自己的理解。借助文档这个线索,我将软件工程分为战略和战术这两部分。战略和战术的关系,相信大家都有了一定的了解,在这里我们就不在赘述了。具体来说,我定义的软件工程的战略阶段主要包括问题定义阶段和可行性分析阶段。换言之,即相当于一场战役或者异常博弈的谋划阶段;而我所谓的软件工程的战术阶段则是确定可行之后的具体实施阶段,即需求分析、软件设计、软件实现、软件测试、运行维护等具体的步骤。下面请看具体的介绍。
战略阶段:
没有无缘无故的爱,同样这个世界上没有不问青红皂白的战争。每一件可以用理智丈量的事情,都有它迫不得已的利益诉求。而为了利益的最大化,开始之前的分析谋划是必不可少的。相对于软件开发来说,问题定义和可行性分析应运而生。我们需要确定我们将要做的是一件怎样的狂欢,需要知道这样一场我们缔造的狂欢的可行性以及其的投入、风险和收益。
帮助我们了解现行系统的状况、遇到的问题,现行系统与新需求的之间的矛盾;以及对新系统的具体期望,新系统应在怎样一个环境下使用那些必要的设备运行以满足实现怎样的功能。这两者就是问题定义阶段的使命。
而在明确新系统的开发已经势不可挡后,我们需要对新系统的开发进行一个理智的分析。我们需要知道开发一个设想中的新系统在技术上、道德上、法律上有多大的可行性;需要多大的人力、物力和财力的投入;可能会产生怎样的风险以及新系统是否能带来一个让人满意的收益。这些都是需要在可行性分析阶段逐一解决的问题。每一个问题都需要引起我们百分之一百的重视。
战术阶段:
在经过战略阶段的分析解读后,我们队新系统的开发已经明确了大概的方向。下面就需要我们就需要我们解决一个个具体的问题,进而向着确定的大方向迈进。首先,我们需要有一个阶段和客户进行良好有效的阶段,即大家约定俗称的需求分析阶段。我个人认为这个阶段是继可行性分析阶段后的一个最重要的阶段,没有之一。我们都清楚,如果没有客户的需要,就没有所谓的软件开发,更没有所谓的软件工程。在这一阶段,我们需要准确的获取客户的需求并进行分析,确定概念模型并将其以图形这种可理解的形式展示给客户,与客户进行修正。所以个人认为,需求分析阶段是一个重中之重。客户的需求理解不好,何谈开发软件的优良品质?
明确了客户需求并与客户交流确定无误后,我们就要将概念模型转化为逻辑模型了。这个任务需要在软件设计阶段完成。相对于需求分析,软件设计的难度大大降低。因为这一阶段不再是两个团体之间的碰撞,而是一个团体内部之间的沟通。良好的专业知识和共同的专业语言,使得软件设计比需求分析要来的轻松。设计人员只需要将具体的数据流程图、模块的内部结构、模块之间的关系清晰的表述出来并交付给编程人员即可。
而具体实现软件的过程,就是一些重复性质的工作了,没有多大的创新性。(PS:从中也可以看出程序员和开发管理人员有所区别的原因)。软件实现后,我们将迎来另一个不容忽视的大家伙:测试。曾经天真的我一直以为所谓测试就是为了向大家证明自己编写的程序可以流畅运行。现在看来,当初的自己天真的可爱。软件测试,不是为了证明一个软件可以流畅五无阻的运行;相反,对软件进行测试,是为了找出开发阶段没有被我们发现的问题并进行相应的调试以确保软件在交付给客户后可以良好的运行。而在将软件交付给用户使用前,我们需要编写相应的使用说明并对客户进行一些必要的培训,以确保客户可以得心应手的使用开发出来的软件。
也许大多数人认为软件交付给客户使用后,开发方的认为就结束了。没有系统学习软件工程之前的我也是这样认为的。但是现在我不在这样认为了。开发方的任务结束是在客户淘汰新系统后而非将软件交付给客户。客户在使用新系统后,开发方还应负责新系统的维护工作。怎么理解呢,这个关系就好像淘宝的客服和买家之间的关系。
总结:
怎么说呢,机房收费系统的系列文档是在借鉴了大量资料之后才完成的。尽管自己对如何编写一个软件开发的系列文档以及负责各个阶段的工作有了一个清晰的认识,但是这些都还在停留在一个初步的阶段。一句话,菜鸟虽然进步了,但还没进化,仍需努力!
感谢您的宝贵时间,谢谢~~~