软件工程之路(1)——软件工程定义和过程

时间:2024-02-19 11:18:42

自己做软件开发(或许说IT行业更准确一些),已经6年了。如果要让我自己给软件一个定义,我只能按自己的理解来描述了:首先,软件是一个产品,它由各种语言开发实现特定的自动化功能或自动化功能集,由计算机或其它终端承载和执行,满足现实世界中的各种自动化应用,还包括使用的文档。因为没有系统的学习过软件工程,对软件的概念很不定,或者自己用语言表达不出或表达的肤浅。

软件与硬件的对比

1 软件是设计开发的,不是传统意义上生产制造的

2 软件不会磨损,但会退化

以时间为变量的硬件失效率称为浴缸曲线:硬件在早具有相对较高的失效率,但缺陷被纠正后,失效率也降低,且在一段时间内保持平稳。随着时间的推移,因为震动,灰尘,不当使用,环境问题等所累积的硬件组件损耗再次抬高失效率,硬件开始磨损了。软件不会受到这些引起硬件磨损的环境问题的影响。前期,随着软件错误的纠正,曲线趋于平缓,后期,因为一系列因素,可能导致软件的退化。

3 大多数软件是按实际的顾客需求所定制的

工程学科的发展产生一系列标准的设计构件。在硬件设计中,构件复用是工程进程中通用的方法。

 

软件演化

计算机软件随着时间的推移不断演化。软件维护推动了软件演化:程序纠错,调整软件以适应新环境,满足用户新特征和功能需求,以及对软件实施工程以在现代应用中发挥作用。

统一软件演化理论衍生的潜在规律:

E类型系统:现实世界计算环境下实现的软件。

持续变化规律:E类型系统要不断进行适应性修改,否则将逐渐偏离需求

复杂性增长规律:如果不进行维护和精简工作,E类型系统的复杂度随着演化不断增加。

持续增长规律:在整个产品生命周期中,E类型系统的功能性为维持用户满意度一定是持续增长的。

质量衰减规律:如果没有严格的维护和适应性调整使之适应运行环境的变化,E类型系统的质量有衰减的趋势。

反馈系统规律:E类型演化过程可以看作是一个多层次,多循环,多代理的反馈系统,必须如此才能在任何合理的基础上,不断取得重大的提高。

保证通晓规律:随着E类型演化,所有相关人员都必须清楚了演化的内容和过程。

组织稳定性守恒规律:E类型系统,其组织在全球范围内的平均有效活动率在产品生命周期中保持不变。

自我调控规律:E类型系统的发展过程是随着产品发布和过程度量接近于正常,而不断进行自我调控的。

 

过程

过程是个抽象的概念,想到过程这个词,感觉很正常,总是用到,但越想越迷糊:什么叫过程啊?就好像看一个字,刚看时认识,但越看越不认识,到最后,只能看到这个字是由横竖折等组成了。这里就有一个问题:本质的东西,只有理解了,才能从整体上更清晰的进一步认识。

当开发产品或构建系统时,遵循一系列可预测的步骤(路线图)是很重要的,它有助于及时交付高质量的产品,这就是过程。软件开发中所遵循的路线图就称为软件过程。

IEEE给软件工程的定义:

1)将系统化的、规范的、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件。(2)在(1)中所述方法的研究。

软件工程是一种层次化的技术。任何工程方法必须以组织对质量的承诺为基础。软件工程的根基在于质量关注点。

软件工程的基础是过程。软件过程构成了软件项目管理控制的基础,并且建立了一个环境以便于技术方法的采用,工作产品的产生,里程碑的建立,质量的保证,正常变更的正确管理。

软件工程方法为建造软件提供技术上解决方法,包括:沟通,需求分析,设计建模,编程,测试和支持。

软件工程工具为过程和方法提供自动化或半自动化的支持,建立软件开发的支撑系统。

 

过程框架

过程框架定义了若干小的框架活动,为完整的软件开发过程建立了基础。通过过程框架可适用于绝大多数的软件项目:

沟通:获取需求及其他相关活动;策划:为软件工程工作制定计划,描述了技术任务,可能的风险,资源需求,工作产品,工作进度计划;建模:创建模型和设计,模型助于理解软件需求,设计用于实现需求;构建:编码和测试;部署:交付到用户,进行评测和反馈意见。

通用框架由很多普适性活动实现:

软件项目跟踪和控制,风险管理,软件质量保证,正式技术评审,测量,软件配置管理,可复用管理,工作产品的准备和生产。