1 何为软件

软件工程是随着计算机系统的发展而逐步形成的计算机科学领域中的一门新兴学科。软件工程的发展经过了三个时代。
1、程序设计时代
1946年到1956年为程序设计年代。这个时代人们用很大力气研究和发展计算机硬件,经历了从电子管计算机到晶体管计算机的变革,然而对计算机软件的研究和发展却不够重视。当时,由于硬件的价格昂贵,运行速度低,内存容量小,所以当时的程序员非常强调“程序设计技巧”,把缩短每一个微秒的CPU时间和节省每一个二进制存储单元,作为程序设计的重要目标,但设计的程序难读、难懂、难修改。
2、程序系统时代
1956年到1968年为程序系统时代,或者程序+说明时代。在这个时代硬件经历了从晶体管计算机到集成电路计算机的变革,CPU速度和内存容量都有了很大的提高,从而为计算机在众多领域中的应用提供了潜在的可能性。这个时代的另一个重要特征是出现了“软件作坊”。这是因为随着计算机应用的普及和深化,需要的软件往往规模相当庞大,以致单个用户无法开发,此外许多不同的部门和企业往往需要相同或者类似的软件,各自开发就会浪费很大人力。在这种形势下,“软件作坊”就应运而生了。不过这个时代的开发方法基本上沿用了程序设计时代的开发方法,但开始提出了结构化的方法。随着计算机应用日益普及,软件需求量急剧增长,用户的需求和使用环境发生变化时,软件可修改性很差,往往需要重新编制程序,其研制时间很长,不能及时满足用户要求,质量得不到保证,开发人员的素质和落后的开发技术不适应规模大、结构复杂的软件开发,因此产生了尖锐的矛盾,所谓的“软件危机”便由此产生了。
IBM公司的360 OS和美国空军后勤系统,在开发过程中都花费了几千人/年的工作量,最后以失败告终。其中360 OS由4000个模块组成,共约100万条指令,花费了5000人/年的工作量,经费达数千万美元,拖延几年才交付使用,交付使用后每年发现近100个错误,结果以失败告终。360 OS开发负责人Brooks生动描述了研制过程中的困难和混乱:“……像巨兽陷入泥潭作垂死挣扎,挣扎得越猛,泥浆就沾得越多,最后没有一个野兽能逃脱淹没在泥潭中的命运……程序设计就像这样的泥潭,一批批程序员在泥潭中挣扎……没有料到问题会这样棘手……”。比360 OS更糟的软件系统并不少,即花费大量的人力、物力、财力结果半途而废,或者说完成之日就是遗弃之时。这就是人们常说的“软件危机”。
3、软件工程时代
1968 年至今为软件工程年代,或者程序+文档时代。这个时代硬件发展的特点是集成电路计算机发展到超大规模集成电路计算机,高性能低成本的微处理机大量出现,硬件速度的发展已经超过人们提供支持软件的能力。然而,硬件只提供了潜在的计算能力,对于复杂的大型软件开发项目,需要十分复杂的计算机软件才能实现。也就是说,如果没有软件来驾驭和开发的这种能力,人类并不能有效地使用计算机。在这个时代,软件维护费用、软件价格不断上升,没有完全摆脱软件危机。
瞿中, 宋琦, 刘玲慧等著.软件工程.人民邮电出版社.2016:14.

“软件危机”是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。软件危机主要包含了两方面的问题:一是如何开发软件以满足软件日益增长的需求;二是如何维护数量不断增长。
换言之软件危机是指软件开发过程中出现的成本超支、进度延迟、质量低下、难以维护等一系列严重问题,导致软件项目频繁失败或无法满足需求。其中成本超支问题,是导致软件不能顺利交付进而开发失败一个主要原因。主要表现在:
(1)对软件开发成本和研制进度的估计常常很不精确。经费预算经常突破,完成时间一拖再拖。这种现象降低了软件开发组织的信誉,而且有时为了赶进度和节约成本所采取的一些权宜之计又往往影响了软件产品的质量,从而不可避免地会引起用户的不满。
(2)“已完成”的软件不能满足用户要求。软件开发人员常常在对用户需求只有模糊的了解,甚至对所要解决的问题还没有确切认识的情况下,就匆忙着手编写程序了。软件开发人员和用户又未能及时交换意见,使得一些问题不能得到及时解决,导致开发的软件不能满足用户要求,使得开发失败。
(3)软件产品质量差,可靠性得不到保证。软件质量保证技术(审查、复审和测试)还没有坚持不懈地应用到软件开发的全过程中,提交给用户的软件质量差,在运行中暴露大量问题。
(4)软件产品可维护性差,软件开发人员在开发过程中按各自的风格工作,各行其是,没有统一、公认的规范和完整规范的文档,发现问题后进行杂乱无章的修改。程序结构不好,运行时发现错误也很难修改,导致维护性差。
(5)软件成本在计算机系统总成本中所占的比例逐年上升。由于微电子技术的进步和生产自动化程度的不断提高,硬件成本逐年下降,然而软件开发需要大量人力,软件成本也随着通货膨胀以及软件规模和数量的不断扩大而持续上升。
(6)软件开发生产率提高的速度远远跟不上计算机应用速度普及深入的趋势。软件的发展跟不上用户的要求。软件产品“供不应求”的现象使人类不能充分利用现代计算机硬件提供的巨大潜力。
后续,我还将对软件危机的解决途径、软件成本的计划与控制、软件估算概述、标准功能点软件估算思路及快速功能点法陆续为大家加以介绍,敬请关注。

关于“造价师郑在宇”
贵州省建筑设计研究院有限责任公司(贵州省贵阳市观山湖区林城西路28号)副主任工程师 一级注册造价工程师 数据分析师 软件工程造价师
zhengyu_victor@foxmail.com
团队核心价值
全 —— 全周期覆盖,深度参与项目核心环节
具备从项目立项、可行性研究、决策评估到最终结算、审计的**全流程闭环工作经验**,熟悉各阶段造价逻辑与风险节点,能为项目提供贯穿始终的专业支撑。
重 —— 重点项目背书,管控能力可追溯
深度参与多个省级重点建设项目的全过程造价管控,项目成果可通过官方平台或案例库查询验证,积累了应对大型复杂工程的实战经验与风险化解能力。
专 —— 聚焦造价核心,以专业创造项目价值
专注于造价领域深度耕耘,通过“前期精准造价管控”与“全过程咨询深度参与”,从成本优化、资源配置等维度挖掘项目潜在价值,助力项目实现效益最大化。
精 —— 对标行业标杆,迭代成长为专业典范
学习行业优秀,融入行业优秀,成为行业优秀。持续学习行业前沿技术与优秀实践,将先进经验融入团队作业标准,以“成为行业优秀”为目标,推动自身与团队专业能力的迭代升级。
更多业务交流与咨询,欢迎后台私信或留言。

夜雨聆风