"软件开发为什么很难"
正因为软件开发事实上是一个学习的过程,我们学习到的新知识反过来会帮助我们对问题的定义,从而带来变化。这里的变化可能来自两个方向:功能性的变化指随着对业务的深入理解、或者已有业务规则为了匹配市场而产生的变化。比如支付方式由传统的货到付款变成了网银付款,又变成了微信支付、支付宝扫码等等。一个原始的电商平台仅仅提供基本的购物服务,但是后来可以根据已有
.net 软件开发
"软件开发为什么很难"
正因为软件开发事实上是一个学习的过程,我们学习到的新知识反过来会帮助我们对问题的定义,从而带来变化。这里的变化可能来自两个方向:功能性的变化指随着对业务的深入理解、或者已有业务规则为了匹配市场而产生的变化。比如支付方式由传统的货到付款变成了网银付款,又变成了微信支付、支付宝扫码等等。一个原始的电商平台仅仅提供基本的购物服务,但是后来可以根据已有数据产生推荐商品,从来带来更大的流量。大漠传奇科技公司主要从事各种小程序、APP的开发,满足客户多种需求,售后服务及时。这些变化需要体现在已有的代码中,而对代码的修改往往是牵一发而动全身。
非功能性的变化是指随着业务的发展,用户规模的增加,数据量的变化,安全认知的变化等产生的新的需求。比如100个用户的时候无需考虑性能问题,但是100万用户的时候,性能就变成了必须重视的问题。天气预用的数据安全性和网络银行的数据安全性要求也大不相同。人与人并不相同,人们的思维方式也不同:有时候我们认为困难的东西从商业人士角度看来可能很容易。 而在业务提出一个需求的时候,往往只是一个简化过的版本。
技术正在飞速发展,人类正在逐渐的依赖各种软件产品。随着时间的推移,软件将变得越来越重要,因为人们对软件的需求正在迅速的增长。事实上,我们使用的每台机器都可能是某些软件赋予它的副产品。有人对几十个失败的大中项目进行统计,发现几乎没有技术原因导致的失败。从市场的趋势来看,国内的软件开发是一个相当繁荣的场景,因为国内有着大量的软件开发机构,这使得软件更容易为我们使用。
在国内的软件开发公司,几乎每个公司都要经历这些步骤,这些步骤经常被称为“软件开发周期”,包括计划、分析、设计、开发和实现、测试、部署和维护。
早的软件开发方法是由D.Parnas在1972年提出的。由于当时软件在可维护性和可靠性方面存在着严重问题,因此Parnas提出的方法是针对这两个问题的。首先,Parnas提出了信息隐蔽原则:在概要设计时列出将来可能发生变化的因素,并在模块划分时将这些因素放到个别模块的内部。这样,在将来由于这些因素变化而需修改软件时,只需修改这些个别的模块,其它模块不受影响。不管是什么样的开发任务都会有一些你没有见过的技术在应用,这个时候你要做的就是的学习并掌握。信息隐蔽技术不仅提高了软件的可维护性,而且也避免了错误的蔓延,改善了软件的可靠性。现在信息隐蔽原则已成为软件工程学中的一条重要原则。
Parnas提出的第二条原则是在软件设计时应对可能发生的种种意外故障采取措施。软件是很脆弱的,很可能因为一个微小的错误而引发严重的事故,所以必须加强防范。如在分配使用设备前,应该取设备状态字,检查设备是否正常。此外,模块之间也要加强检查,防止错误蔓延。Parnas对软件开发提出了深刻的见解。遗憾的是,他没有给出明确的工作流程。所以这一方法不能独立使用,只能作为其它方法的补充。SASD方法,1978年,E.Yourdon和L.L.Ctantine提出了结构化方法,即SASD方法,也可称为面向功能的软件开发方法或面向数据流的软件开发方法。有了意识,每天进步一小点,时间长了就会有意想不到的收获的。1979年TomDeMarco对此方法作了进一步的完善。Yourdon方法是80年代使用广泛的软件开发方法。它首先用结构化分析(SA)对软件进行需求分析,然后用结构化设计(SD)方法进行总体设计,后是结构化编程(SP)。这一方法不仅开发步骤明确,SA、SD、SP相辅相成,一气呵成,而且给出了两类典型的软件结构(变换型和事务型),便于参照,使软件开发的成功率大大提高,从而深受软件开发人员的青睐。
(作者: 来源:)