软件开发的核心是什么?

简介:
   软件开发的核心是什么?
   我们一直这样做开发,时间做久了,便忘了当初的本意。

  有关软件系统开发,我们谈些什么?
  我们谈过程,编码规范、开发流程、同行评审、结对编程、持续集成,从瀑布到敏捷再到极限编程。
  我们谈架构,企业级、J2EE、容器化、SOA(面向服务架构)、Microservices(微服务化)。
  我们谈规模,大容量、高并发、大数据。
  这一切的核心是什么?
  先讲个电力行业的一个故事:
  记得有个给我们上培训课的主讲老师是个须发皆白的老先生,进门后掏出一堆零件放在讲台上, 一盏酒精灯、一个小水壶、一个叶片、一个铜光闪闪的小电机、一盏小灯泡。 老先生往壶里倒了些水,点燃酒精灯,不一会儿水开了,从壶嘴里喷出了蒸汽,带动叶片旋转,然后小灯泡就亮了。
  他说:这就是电厂。
  他还说:如果烧的是煤炭,这就是燃煤电厂;如果烧的天然气,这就是燃气电厂;
  如果获得热能的方式是核裂变,这就是核电厂;如果带动叶片的能量来自水从高处流向低处,这就是水电厂。
  老先生说:你们或许会问 “那我们看到的电厂怎么这么复杂”,答案其实很简单, 电力项目需要复杂系统的目的,一是为了确保安全(Safety),二是为了提高效率(Efficiency)。
  安全和效率的平衡,是所有工程技术的核心。
  听他如此说来,我就感觉到所谓 “大道至简” 大概就是这样的。
  开发软件系统的根本在于满足需求,不能满足需求的系统本身是没有意义的。 就像一个再安全、有效率的电厂不能发电又有什么意义呢。 所以软件系统开发也就是围绕根本的基础上确保安全与提高效率。
  需求作为软件的根本差异很大,需求是多样,需求也是复杂的。 一个大型 ERP 系统,一个大型仓储系统,一个大型网站系统,到底谁更复杂,没有一个定量标准,甚至都不好定性分析。 所以前面我们谈软件系统开发那么多内容都是关于 “安全” 和 “效率” 这两个围绕根本的核心。
  所有软件开发的方法论,像瀑布、敏捷到极限编程围绕的是开发活动的效率问题,而编码规范、流程制定、同行评审等等则是有关开发的安全问题。 那么进一步微服务化其实同时考虑到了安全与效率,服务化拆分有利于大规模开发团队的并行开发,提升了开发效率, 但上线部署复杂了降低了运维效率,但运维效率可以通过自动化来得到弥补,而开发则不可能自动化。
  同理,可靠性、可用性和容灾设计这些活动都是围绕 “安全” 这个核心,而性能优化,提升响应性则是围绕 “效率”。 有些关键的软件系统必须同时兼顾 “安全” 和 “效率”,例如用在飞机、汽车内用于控制起落、刹车、油门的软件系统, 不安全或无效率造成事故是会死人的,而另外一大部分软件系统因为不安全或无效率造成的事故则死的是钱。
  汇新云—软件协同产业生态链平台友情提醒需求方和开发方,请把握好软件开发的核心!软件开发不是必须复杂,而是不能太简单。

目录
相关文章
|
6月前
|
存储 C++ 开发者
C++程序设计基础:构建稳固的编程基石
C++程序设计基础:构建稳固的编程基石
47 1
|
1月前
|
安全 物联网 5G
5G技术在软件开发中的应用
5G技术作为新一代移动通信标准,凭借高速度、大带宽和低延迟的特点,正深刻改变软件开发领域。本文介绍了5G技术的基本概念及其在实时应用优化、物联网集成、增强现实/虚拟现实和云计算等方面的应用,并讨论了安全性、技术兼容性和成本等挑战。5G为开发者带来了新机遇,但也需应对各种挑战,以充分利用其潜力。
|
4月前
|
数据采集 传感器 项目管理
LabVIEW软件开发人员的核心能力是什么
LabVIEW软件开发人员的核心能力是什么
35 3
|
5月前
|
Java 关系型数据库 开发者
Java编程设计原则:构建稳健、可维护的软件基石
Java编程设计原则:构建稳健、可维护的软件基石
|
6月前
|
安全 程序员 数据库
软件开发功能如何准备
该文档介绍了功能开发的准备工作,包括创建功能清单以明确项目需求,以及制定开发计划。在评估工期方面,程序员需要考虑需求分析、技术复杂度、任务分解、风险评估、团队协作和沟通等多个因素。准确的工期评估对于团队效率至关重要。
51 6
|
6月前
|
缓存 监控 安全
如何设计大型项目技术运营服务架构
【2月更文挑战第3天】如何设计大型项目技术运营服务架构
437 1
|
前端开发 Java 数据库连接
软件开发者的时间都去哪儿了?后端开发核心技能——抽象建模
服务端开发工程师在大部分工作时间里并不是在写代码,而是在抽象建模。工程师需将业务需求抽象成领域模型、模块、服务和系统,面向对象开发时需抽象出类和对象,面向过程开发时抽象出方法和函数。某种意义上,软件的本质就是抽象,建模则是系统地实施抽象的过程。作为一种将事物形象化的有效手段,建模可将现实世界中的事物及事物之间的关系准确地表达出来。本文通过一个实际案例,详细解读业务抽象建模的好处。
138 1
软件开发者的时间都去哪儿了?后端开发核心技能——抽象建模
|
监控 测试技术 开发者
软件工程高效学 | 软件项目的开发模型
软件工程是计算机领域的一门专业基础课,它对于培养开发者的软件素质、提高开发者的软件开发能力与软件项目管理能力具有重要意义。本篇介绍软件项目的开发模型。
169 0
软件工程高效学 | 软件项目的开发模型
技术开发、产品开发和平台开发的区别
技术开发、产品开发和平台开发的区别
1061 0