热门
最新
红包
立Flag
投票
同城
我的
发布
雨宫Lin
2 年前
trueweixin_40794083
激动人心的时刻即将到来,因为人工通用智能继续推动创新的边界!物联网和AGI的融合为智能互联解决方案打开了新的大道,彻底改变了我们与技术互动的方式。探索无限的可能性。
下一条:
软件开发的本质困难Fred Brooks 认为软件开发的困难,来自于软件系统中无法规避的内在特性:复杂度、一致性、可变性和不可见性。复杂度。和很多现实中其它的设计工作(比如房子,汽车等)不同的是,软件是动态的,软件是状态与动作的结合,根据不同的状态要执行不同的动作,不同的动作又为导致更多不同的状态。如果说一辆汽车是三维的,那么软件系统可以认为是四维的,(当然,现在自动驾驶已经将汽车也变成了一个软件)。而且,随着系统中元素的增加,软件的复杂度的增加是非线性的。当系统大到需要多个团队协作时,信息的完整性,沟通和管理又成了新问题。一致性。即使是同一个开发者,间隔一段时间再看自己过去的代码,也经常一头雾水。更不用说那些运行了好几年,由多个业务系统组成的,换了好几拨开发人员的大型系统,要始终保持一致基本是不可能的,为了解决这些不一致,需要付出巨大的成本。可变性。业务流程本身是不断变化的,快速地响应变化,已经成为我们对现代软件的基本要求。相对于房子,汽车,人们普遍认为软件的变更是很容易的。但是,如果系统缺乏良好的可维护性,这个变化的成本就不可控了,你想象不到这里改一个枚举类型,可能关联多少个上下游的代码都需要改动。不可见性。软件是不可见的和无法可视化的,虽然我们现在已经有很多工具来表示软件的结构、流程、数据关系等内容。但是我们没有类似于建筑平面图一样直观的工具。
立即登录