云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

香港带宽_电锯惊魂2百度云_哪家好

小七 141 0

我在SAP的一个叫做创新业务解决方案的部门工作。我们专注于客户特定的解决方案。

这个博客是我的工程师对我们正在使用的开发方法的看法。我想为您概括一下我们的方法,同时强调系统思维。

您还记得20年前软件开发的样子吗?您从需求工程阶段开始,然后编写了一个包含单片体系结构的规范。您开始使用瀑布方法进行开发。没有敏捷,没有领域驱动的设计,没有用户体验,没有设计思维,没有DevOps,没有微服务,没有云。

在过去的几年里,我们部门已经改变了它的开发方法,大数据解决方案,就像SAP和整个行业一样。第一步是引入设计驱动开发(D³),它结合了需求工程、用户体验和敏捷开发。然后我们沿着DevOps的道路前进。

我们还创建了一个特殊的初始解决方案设计阶段——创新冲刺。我们使用这个阶段使用设计思维元素来设计解决方案。我们并不是在每个项目中都有一个创新冲刺,但是在我们处理一个不明确的问题陈述或者没有明显的解决方案的情况下,它被证明是有用的。这在创新项目中是经常发生的。

如果你在设计和构建复杂的系统,复杂性将需要一些额外的努力。系统思维可以帮助你解决这种复杂性。系统思维是一种特殊的思维方式,一种思维方式,风控大数据,可以用来设计和处理复杂的系统。您还可以在软件工程中找到系统思维的痕迹,例如,大数据前景怎么样,在凤凰计划、构建进化体系结构和混沌工程等书籍中。设计思维是系统思维的支柱之一。

概括¶

如果你将系统思维、解决方案设计、架构、构建和运行结合起来,你将得到一个设计、构建和运行软件系统的端到端过程。这叫做系统工程。因为我们在这里谈论的是软件系统,更具体的术语是软件系统工程

在软件系统工程中使用系统思维¶

在我们的一些项目中,我们面临着高度的复杂性——例如:

问题陈述不明确,没有明显的解决方案:一个例子是这样的请求:"我们想用机器学习来提高IT票证处理的效率。"写一个积压工作或给出项目规模的估计是相当困难的。问题陈述必须细化。这需要与业务相关人员进行讨论,淘客发单软件,并对机器学习场景进行一些设计和验证。需要一个解决方案设计。复杂项目:我们有一些跨多个子项目的项目。在这些项目中,我只是数据,仅仅独立地交付子项目可能是不够的。微服务具有复杂的运行时,因为可能有许多服务和服务实例。弹性是必须解决的问题之一。单一服务的故障不应导致系统中断。

在所有项目中,您不一定会遇到所有这些问题。但在这些方面,您都有机会为整体解决方案做出贡献,并解决项目的特殊挑战。以下是一些如何将系统思维应用于软件工程过程的每个部分的例子:

解决方案设计:在每个项目中,您必须描述业务上下文、业务需求、体系结构、范围内的内容和范围外的内容。使用系统视角,您定义了您想要构建的系统的背景、目的、结构、流程和边界。

以整体解决方案的可行性、可行性和可取性为目标是一种涵盖业务目标、人为因素和,

如果你有一个不清楚的问题陈述或没有明显的解决方案,你可以用设计思维来解决问题。这将帮助您定义问题并设计解决方案。您还可以应用诸如fail-early-fail-frequency之类的原则来支持快速原型和迭代。

用户故事映射(USM)提供了解决方案范围的概述。您可以使用这种方法来组织和优先考虑连接解决方案设计和系统开发的用户情景。

体系结构:这与系统的结构密切相关,可能包括子系统。而且,由于没有完全独立的系统,因此总会有一个周围的系统。例如,这可能是为该系统构建的企业。因此,这可能需要与企业架构保持一致。

反馈回路是测量和控制系统行为的系统的重要组成部分。必须设计这样的回路。这包括诸如业务度量、经验度量、使用度量、适应度函数或操作度量等度量。反馈回路的第二部分是测量。第三个是学习。

例如,在进行弹性工程时,如果您处理的是微服务体系结构,则必须确保单个服务的可用性。同时,您还必须解决系统级别的问题,以便系统部分的故障不会影响整个系统。

构建、运行和DevOps:解决方案的部分,如子系统、UI设计或用户情景,应该对解决方案的整体业务价值作出贡献。局部优化并不一定能提高整体性能。

运营部负责系统运行,以确保系统和组件的可用性和健康。