软件随想

软件是什么东西?
一个从人开始从人结束的东西:由人提出需求、人进行系统分析、设计和编码,人进行测试和维护,人直接或间接的使用软件提供的服务;整个过程都没有离开人,所以软件的问题本质上就是人的问题。
关于软件的价值:
软件最大的价值在于能够无限期、无次数限制的使用也不会坏掉。而且一旦开发出来其快速再生产(拷贝)的能力使其几乎没有成本。这样看上去软件似乎很完美但问题是软件是给人用的工具,一方面开发的一定存在bug只要被使用就需要专门的人进行维护,另一方面人的需求总是在变化的,即使软件不会坏掉能够轻易的复制,随着需求不断改变,软件必须要做出调整。所以软件开发从来都不会是一个一劳永逸的事情。从某个角度上说:软件开发不是为了软件的现在和不远的将来,而是为了一个无法预期的将来,因为软件的生命周期我们通常是无法预知的。因此可以说这个世界上不可能出现完美的软件,你不能准确预知软件在什么时候会变,在哪个地方需要变化。只有尽可能做到在一些我们认为最可能产生变更的地方使其容易扩展或修改,使修改成本降到最低。
很多事情我们没办法预测,但在最开始软件开发,我们尽量把需求做的全面细致,设计和开发尽量通用易于扩展和维护,测试尽量找出所有bug;这样做是无可厚非的,但是这样一个好的软件可能还么使用多久,业务发生调整它以后会很少被人使用,因此也不需要扩展和投入很多精力维护了。很明显但从生产成本和软件使用价值两方面衡量的话生产这个软件是“亏本生意”。如果把软件声明周期分成:婴儿 幼年 青壮年 老年 结束;这么几个阶段,一个“不亏本”的软件在其每个时期的投入和产出应该满足一定的占比,婴儿和幼年期是投入成本的时期,青壮年和老年期是产出但同时也有消耗(维护和扩展)。
上面的描述说明的一个问题是:软件开发的到底值不值完全是由业务方向的发展来决定的。改变这种状况有很多方法:1.明显降低开发、测试周期,这样技术业务方向变了生产成本降低也不会太亏;2.开发过程中,我们自己能不能产生一些业务增长点尽量延长它的青壮年时间。对于第一个方法,解决的方法是复用:复用的粒度应该满足基本功能单元的组件,在不同的业务场景通过组装形成满足完整业务需求的软件。可以基于某个领域来生产领域“零件”,形成零件仓库到时候可以通过组装各种业务场景下的软件或应用。说到底这就是一种自底向上的软件开发方式,当组件达到一定规模可以很方便的产出一个软件。


关于耦合与聚合:
不正确的聚合即为耦合,合理的耦合即为聚合;关键是要找到可能产生变化以及受变化影响的因素。


需求分析
设计编码
测试
维护
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值