zoukankan      html  css  js  c++  java
  • 软件工程本质性工作的四大难题--没有银弹

    http://www.cnblogs.com/wyx-xyz/p/7290902.html

    软件工程的本质性与附属性工作

    所有的软件创作都包括本质性和附属性工作:前者是创造由软件实体组成的复杂概念模型;后者是用程序语言表达软件实体,并在时间和空间的限制下翻译成机器语言。本质性工作存在四大难题:复杂性、隐匿性、配合性和易变性。

    软件工程本质性工作的四大难题

    1.复杂性

    随着“软件吞噬世界”不断深入,软件对应的社会活动也越来越复杂。所实现业务的复杂,代表着软件系统的成功,同时意味更容易失败。

    微服务提出以业务边界作为划分依据,将大系统拆分为由多个微服务构成的系统组,以降低单个系统的复杂性 ,同时增加了整个系统组的总体附属性问题。

    2.隐匿性

    未完成的软件在所有参与软件工程的人眼中都有盲区,盲人摸象造成了极大的沟通障碍。

    微服务强调业务独立,缩短单个业务从需求到交付的开发周期。虽然没有降低系统的隐匿性,但是通过减少隐匿时间,以降低软件工程的总体隐匿性。快速交付要求团队具备持续交付和持续部署的能力,也模糊了需求、设计、开发、测试、验收、运维、运营等环节,造成了一定的生产力损耗。

    3.配合性

    软件开发到一定规模后,协同成本成为新增或修改业务的主要障碍,维持较高生产效率的一个思路是将系统控制在一定规模内。

    微服务架构将单个系统内部的配合性问题转移到了各系统之间,由于系统间配合性问题通常更加复杂,所以微服务的划分变得非常重要。划分的原则是减少对外配合,将复杂的配合性问题留在单个系统内部。

    4.易变性

    软件所应用的环境由各各种易变的因素组成,单体架构对需求和性能的变化难以做出及时响应。

    微服务业务独立,由负责本功能的团队直接面向用户需求,有利于想法在短时间内快速交流,加快响应速度。要求小团队拥有独立决策权,对传统IT公司的组织结构是一种挑战。同时微服务的交付模式也会挑战客户接受软件更新的习惯。

    总结:微服务的价值

    解放小团队的生产力,快速响应用户需求。

  • 相关阅读:
    比赛-h47学长的训练赛 (27 Aug, 2018)
    比赛-OBlack学长的训练赛2 (26 Aug, 2018)
    比赛-OBlack学长的训练赛 (25 Aug, 2018)
    比赛-xxxxxyt学姐的训练赛 (25 Aug, 2018)
    比赛-一场训练赛
    比赛-wxh学长的训练赛 (23 Aug, 2018)
    比赛-sparrow学长的训练赛2 (22 Aug, 2018)
    深入JVM内核--JVM简介
    GitHub之初始化
    B-Tree索引
  • 原文地址:https://www.cnblogs.com/feng9exe/p/7598303.html
Copyright © 2011-2022 走看看