过程和产品——软件硬币的两面

by

首次出版于 LinkedIn

多年来,宝博体育app下载开发软件的方式是曲折的. 在早期,宝博体育app下载没有规定的工作方式,但宝博体育app下载创建代码. 在1970年代, 结构化方法变得流行起来, 然后是20世纪80年代中期的对象/组件方法 到2000年. 这些都是技术实践. 在那之后,宝博体育app下载采用了专注于人类实践或社会工程的敏捷方法. 现在宝博体育app下载处于敏捷扩展阶段,包括人力实践和技术实践. 

并行, 已经尝试评估软件产品本身的结构质量和宝博体育app下载工作方式的质量. 从20世纪90年代末一直到最近, 世界的焦点是把事情做好——这是一种典型的趋势 能力成熟度模型集成. 然而, CMMI only helped us underst和 how well we knew how to do what we did; there was no measurement of the quality of the product. 2010年左右, 资讯及软件质素协商会 是为了关注软件产品本身的结构质量而诞生的吗.

事实上,你需要一个高质量的开发过程和一个高质量的最终产品. 这需要的不仅仅是知道如何根据组织的文化和标准来做这件事. 它需要评估和应用实践 生产最高质量的软件-有弹性的软件, 安全, 资源效率, 而且易于修改. It is more than simply having a 过程; it is about having a  过程.

本文论述了工艺质量和产品质量. 两者的不平衡会导致许多不可预测的结果, 在一个越来越依赖复杂软件系统的世界里,哪种方法根本行不通. 一种平衡的方法是存在的.

好的过程

后面每一个 过程 有一个 方法. 换句话说,流程是一种可扩展的方法. 这两个术语是如此密切相关,所以在本文中宝博体育app下载将把它们当作同义词. 一个过程或方法是  if 它符合它的背景, 包括应用区域, 技术应用, 以及团队的能力水平.

地球上有超过两千万的软件开发人员, 用多种方法开发软件. 这些年来,方法有了改进, 宝博体育app下载经历了几次范式转变:20世纪70年代的结构化方法, 对象/组件 方法, 敏捷方法, 现在,几种可扩展的敏捷方法正在争夺霸权——宝博体育app下载正处于50年的方法战争中. 

即使宝博体育app下载使用的方法有了显著的改进,宝博体育app下载的方式 一起工作 宝博体育app下载的生产方法——宝博体育app下载的生产“机器”——在过去50年里没有发生显著变化.  宝博体育app下载仍然了解到 新选材方法相同——通稿法, 书, 或网站, 这就是宝博体育app下载所谓的描述. 在宝博体育app下载需要的时候,宝博体育app下载仍然没有从所选的方法中得到任何指导——它可能已经被束之高阁了, 但这并不方便. 宝博体育app下载仍然被时尚界的方法所吸引.

宝博体育app下载怎样才能显著地改进宝博体育app下载使用方法的方式? 宝博体育app下载这门学科的艺术是如此的混乱, 有多种竞争方法可供选择的. We need to fundament所有y change the way we interact with 方法; how we teach, 学习、改变和使用它们. 对象管理组(我的天啊) 本质 标准引领道路:一种新的思维方式 很多东西,以前从未应用到软件工程或系统工程中.

本质是基于这样一个假设诞生的 所有 方法有一个共同点. 在公共基础之上,定义了实践. 实践是通常被认为是方法的一个非常具体的元素. 实践的例子有 用例, 用户故事, 基于组件的开发, DevOps, Scrum——技术实践, 和自组织的团队, 结对编程, 释放的火车, PI规划——人类的实践. 方法是通过选择和使用一组实践创建的. 不同方法之间的区别通常只是少量的实践.

本质为适用于一系列利益相关者的方法规定了新的价值:

个人 获得看到软件工程大局的能力,这对他们整个职业生涯都是有用的, 即使特定的实践围绕着它们变化和演变. 他们将拥有一个经过验证的生态系统 实践 to find what they need; human 实践 such as self-organizing teams, 结对编程; technical 实践 such as 用户故事 or 用例, 组件, micro-services; 和 last but not the least 体系结构.

团队 是否可以灵活地混合和匹配不同来源的实践,以适应他们的情况和需求. 最重要的是, 该指南将团队的注意力集中在基本项目上,并以简单的核对表的形式提供可操作的建议 指导和评估进展情况. 基于卡片的本质让整个团队都参与进来,将他们的实践带入生活和推理中,并改进他们在严肃游戏中的工作方式. 团队获得现场指导,而不是依赖于描述 (论文、书籍或网站).

团队的团队 是否可以通过在重要的地方对协调团队有清晰和共享的实践来提高他们的整体表现, 同时仍然允许团队内部的本地实践的灵活性. 新的实践具有 在他们的一些团队中率先得到验证,然后可以被其他团队共享和使用. 拥有一种看到和衡量进展的共同方式,可以在所有对成功重要的维度上清晰地看到状态. 使用标准 用于跨团队的软件端到端分析, 如下一节所述, 是协调的核心. 这种更系统的软件开发方式使宝博体育app下载从一门手艺变成了一门工程学科,并有了预期的改进 在质量、速度和成本方面.

组织 是否有机会进行精益和敏捷治理, 团队透明地将状态和清单应用到他们的工作中, 避免过多的开销和非增值的官僚主义. 共同的语言和思维方式 关于方法使它更容易形成团队,并让他们与他人协调. 组织仍然可以有通用的实践,但是不会被限制在一个通用的方法中. 这种方法是面向未来的,而不是盲目地遵循 最新的“时尚”行业标准方法框架. 它们可以随着时间的推移自行进化, 练习,再练习, 组织从内部和外部世界学习.

教练及服务提供者 获得常见的表达、教学和实践方法. 本质使这些知识能够插入到行业标准框架中,用于上下文和与其他组合 实践. 的教练, 练习技巧和游戏培养团队的理解和应用能力, 为他们的服务提供结构,并确保他们的知识在他们离开后仍能长久存在.

软件行业,第一次, 好处 从拥有元素的共同基础到使用和表达实践的共同语言. 这允许宝博体育app下载构建组织中经过验证的实践的生态系统 他们的团队可以组合成实用的方法. 作为回报,他们可以将新的或改进的实践回馈给更广泛的社区. 这也使得比较更容易, 混合, 并从各种来源改进实践,使其可用 给别人. 

本质方法将加速跨组织的学习和共享周期,并将知识从世界各地解放出来. 思想领袖们正在采用本质来为他们的方法提供一个共同的基础, 例如Scrum, Scrum在规模, 训练有素的敏捷. 大学越来越多地使用本质作为教学的基础. 软件行业, 印孚瑟斯等两大软件公司, 认识到, 埃森哲咨询公司, 大型产品供应商正在寻找显著提高产品质量的方法 提高他们众多方法的质量. 新工具正在出现, 例如实践工作台, 以及伊瓦尔·雅各布森国际的《宝博体育app下载》, 这允许组织使用由这种最佳实践组成的方法. 未来的学生将在新的工作岗位上一马当先, 全面地理解什么是重要的, 用共同的语言说话和思考.

好的产品

拥有像精思这样的良好基础是任何一个行业发展的必要条件, 快, 便宜的软件. 而敏捷或DevOps和, 在一般条款, 从传统的V型循环转向更灵活的世界, 是否有更好的方式交付 产品 功能 好的、“非功能性”的、结构性的、工程质量越来越差. 当一件产品做了它应该做的事情时,它就是好的,当它做得很好时,所有的 time. 在软件, 不稳定, 平庸的表现, 安全问题, CPU异常, 内存, 或者,云资源消耗会对有史以来最好的功能设计产生毁灭性的影响. 说到底,用户体验是基于这两者的 软件的功能和结构质量. 

在过去的10年里,出现了 方案现在我的天啊标准已经定义了期待已久的工程质量规则 最佳实践集 确保可靠性, 效率, 整个软件系统的安全性和可维护性, 不仅仅是单个组件. 这是一场无声的革命,但仍然是一场革命. 之前的ISO 25000标准都是关于定义一个适当的框架来捕获软件特性, 但没有定义技术层面的问题, 工程如何. 方案和卡内基软件工程研究所所做的工作 梅隆大学, 侧重于补充ISO标准,以适当的定义来评估什么, 基于现实生活:构建安全和敏捷的软件需要应用的最佳编码和架构实践.

软件行业 使用 这些实践?

大多数软件实践者仍然只关注一小部分容易掌握的挑战:他们关注代码的质量. 他们几乎总是对自己工作的实际好处感到失望. 为什么? 完全相同的代码片段可能是安全的,也可能是高度危险的, 这取决于它操作的上下文. 检查文件或程序中的代码质量, 在建筑环境之外, 类似于建造一个复杂的20层建筑, 希望仅靠砖的质量就能让整个建筑发出声音, 安全, 非常高效。 或者很容易改变. 在软件工程中 结构质量 取决于 理解代码块在处理其他代码块时真正做了什么. 方案规则解决了系统级的质量问题,并强调了架构编程错误和生产缺陷之间的经验相关性. 在那里 有很多编码错误, 92%在一个组件内(砖), 但只占生产中所见缺陷的10%. 然而, 系统级的不良实践占所有编码错误的8%,但导致90%最严重的产品 问题. 

 

 

那么,宝博体育app下载该怎么做呢?

宝博体育app下载不能责怪开发者, 哪些人承受着巨大的压力,并在自己的代码块中创造出高质量的代码. 他们很少对整个软件系统有一个全面的、实际的理解. 开发人员应该有一个明确的 并对整个软件系统进行全面的认识和了解 上下文 在这个过程中,他们必须创造、开发和增强砖块. 他们需要一个 对建筑的整体、上下文理解, 以便能够正确地完成他们的工作. 随着软件行业沿着本质规定的路线前进, 语境理解的标准化将变得更加普遍.

一些供应商,例如用于嵌入式实时系统的synosis,和 对于复杂的业务应用, 是否遵循了方案和我的天啊的指导方针,并生产了自动化的软件分析平台,以检查这些规则,重点关注架构. 这样的平台能够让拥有成长心态的开发者每天都在进步,而其他人却可以 明确指出要解决哪些关键缺陷. 这些平台提供关于正在进行的工作及其对整个系统的影响的反馈, 从用户输入或自动数据输入, 一直到数据访问和多个事务链. 它还可以帮助个人和团队更多地了解他们所使用的系统, 并引入新的建筑最佳实践,以提高他们在构建声音方面的专业知识, 安全, 和弹性软件. 

这种软件分析平台的最新进展甚至提供了自动逆向工程和 可视化实际结构 of 整个软件系统. 这进一步帮助架构师和开发人员理解层之间的流, 所有组件间相互依赖关系, 以及改变一块“砖”对“建筑”其他部分的影响.

结论

过程和产品是紧密相连的. 它们是交织在一起的,你不能只关注其中一个. The 过程 you select determines the product you will get; for instance, 您选择的架构实践决定了您得到的架构. ,反之亦然, the product you want specifies what 过程 you need to apply; for instance, 如果您想要一个基于组件的系统,您需要应用一个产生组件的实践.

所有专家都预测,在未来三到五年内,受过训练的软件开发人员将出现严重短缺. 在一些需求旺盛的地区,宝博体育app下载已经开始感受到这种短缺的影响. 每个大公司、所有的系统集成商和大型独立软件开发商 报告已经有太多的“新人”(少于2年工作经验的开发者)在他们的IT工厂和R&D实验室. 这种短缺和世界变得依赖软件的结合 给软件工厂、全球2000 IT部门和所有全球SIs带来了巨大的压力. 

为了避免混乱的软件世界,团队需要响应. 为那, 他们需要采用像本质这样的框架来支持今天的实践和方法,并为快速和毫不费力地采用新的思想和实践提供基础. 他们还需要将其与坚如磐石的工程最佳实践结合起来,并应用诸如 本质 和  方案 以确保他们持续交付高质量的软件.

 

 

Ivar Jacobson
Ivar Jacobson
他是一位著名的工程师、作家和学者. Ivar Jacobson为创建和建立软件行业的最佳实践做出了贡献. 他是组件和组件架构的发明者之一, 用例的概念, 统一建模语言, 以及Rational统一过程. 他曾为爱立信和Objectory的现代业务建模和面向方面的软件开发做出贡献, 他创立的公司, 现在是IBM的一部分. In 2004, 伊瓦尔创立了伊瓦尔雅各布森国际,专注于以敏捷和精益的方式使用方法和工具. 他现在领导SEMAT, 一个致力于通过本质革新软件工程实践的全球网络.
加载更多的评论
谢谢你的评论! 你的审查必须首先得到批准
你已经提交了这个项目的评审
|
()