首页 > 代码库 > 我对软件工程的看法

我对软件工程的看法

软件工程(SoftWare Engineering)的框架可概括为:目标、过程和原则。
(1)软件工程目标:生产具有正确性、可用性以及开销合宜的产品。正确性指软件产品达到预期功能的程度。可用性指软件基本结构、实现及文档为用户可用的程度。开销合宜是指软件开发、运行的整个开销满足用户要求的程度。这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题,它们形成了对过程、过程模型及工程方法选取的约束。
(2)软件工程过程:生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。软件工程过程主要包括开发过程、运作过程、维护过程。它们覆盖了需求、设计、实现、确认以及维护等活动。需求活动包括问题分析和需求分析。问题分析获取需求定义,又称软件需求规约。需求分析生成功能规约。设计活动一般包括概要设计和详细设计。概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义。详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。实现活动把设计结果转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。维护活动包括使用过程中的扩充、修改与完善。伴随以上过程,还有管理过程、支持过程、培训过程等。
(3)软件工程的原则是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。
这个问题很复杂,恕在下自不量力说几句。
软件工程的目标是最小的成本、最高的质量、最短的开发时间开发软件产品。眼下流行的各种软件工程方法对这个目标的实现都差强人意。以RUP为代表的重量方法用来做计划、准备的时间太多,真正用在开发的精力却很少,以为只要企业保证软件过程的实施,其他的事情都好办,这种极端压抑人性的方法不会取得很好效果。轻量方法要好一些,毕竟绝大部分注意力都在开发上,大家都很喜欢,可是仅依靠少数几个人,对付不了大型项目。当然,大家都在改进各自的缺点,吸收对方的优点。
G.Booch说过,自动化不足是软件开发过程中大量问题存在的重要原因,在下深以为然,并且认为是最小的成本、最高的质量、最短的开发时间之目标难以实现的根本原因。因此,将来的软件工程必然要发展到以软件自动化技术为核心的阶段——4GL时代。
为什么4GL时代还没有来临,这是因为软件自动化太困难,眼下所取得的成果局限在某些很窄的领域内,达不到实际项目要求,而且这种技术太难理解,需要对理论的深入学习,一般的开发人员难以接受。软件自动化技术没有大发展的重要愿意是目前描述动作语义的技术都很低级,因此即便用形式化方法作设计也是很费时间的,虽然可以提高一定的效率,但是还是远远不够的。
为了解决这个问题,只有从利用以前的成果入手了,也就是复用构件,但不是用今天的构件技术。将来,实现了机器检索的大型构件库,这是计算机实现对构件的查找、转配等自动化的构件库,不是今天的手工构件库。但这样的构件库为什么没有出现,还是老问题,我们还没有一个很理想的描述动作语义的方法,计算机无法判定两个构件或规约和构件之间是否等价,或者有等价的成分,当然也就无法进行自动检索了。
虽然有很多困难,但我相信将来软件工程的发展方向必将是高度自动化的构件式开发方法。

我对软件工程的看法