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

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

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

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

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

1.复杂性

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

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

2.隐匿性

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

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

3.配合性

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

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

4.易变性

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

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

总结:微服务的价值

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

时间: 2024-11-02 23:45:37

软件工程本质性工作的四大难题的相关文章

Summary of《认识微服务——一颗银弹》

(P.s. 本文系摘要,点我阅读原文.) --从<没有银弹>提出的软件工程本质性工作的四大难题讨论微服务的价值 软件工程的本质性与附属性工作 所有的软件创作都包括本质性和附属性工作:前者是创造由软件实体组成的复杂概念模型:后者是用程序语言表达软件实体,并在时间和空间的限制下翻译成机器语言.本质性工作存在四大难题:复杂性.隐匿性.配合性和易变性. 软件工程本质性工作的四大难题 1.复杂性 随着"软件吞噬世界"不断深入,软件对应的社会活动也越来越复杂.所实现业务的复杂,代表着软

软件工程专业毕业到底能做什么工作?考研还是工作?

有很多刚刚踏入软件工程专业的学生或许对该专业还不太熟悉,不知道自己的努力方向,没有想好自己未来的路怎么走,如何走. 没错,我原来就是其中的一员.当我真正将要踏入社会的那一刻,在写简历的那一刻,我才明白自己的大学生活缺少了什么.以下的内容只是我个人对这个行业的一点理解和一些建议.希望能帮助那些刚刚进入这个专业的学弟学妹们. 前言 该文主要分为三大部分 互联网行业相关工作分类及描述 考研还是工作? 一些零散的宝贵经验(给学弟学妹们的) 一.互联网行业相关工作分类及描述 其他的学校我不知道,我们学校在

软件工程的本质是管理复杂性

为什么软件工程的本质是管理复杂性 软件工程是软件的形成过程,除了概念本身,涉及到了工具和人.主要是how,如何形成软件,如果使用技术,人又如何.软件工程的本质是复杂性对软件工程而言,不可避免的东西是(需求)变化:而软件是的本质是概念和概念之间的关系,这个本质类似什么,类似于中子会影响原子裂变.所以,这导致了软件的复杂性爆炸. 这也是为什么<人月神话>作者在论述到这个本质和变化的时候说:"如果这是事实,那么终究没有银弹". 这里且不去论证他这个论断是否正确,但是的确反应了人月

敏捷软件工程(agile software development) VS传统软件工程(traditional software development)

敏捷软件工程(agile software development) VS传统软件工程(traditional software development)      Agile principle    The Agile Manifesto is based on twelve principles(敏捷开发12原则) 1. Customer satisfaction by early and continuous delivery of valuable software 2. Welcom

对软件工程这门课程的回顾、分析、总结

首先,在此诚挚地:对<构建之法>的作者献以十万分的感谢:还有,对软件工程这门课程的授课老师献以十万分的感谢:最后但并不最少,对软件工程这门课程的助教献以十万分的感谢. 为什么要感谢<构建之法>的作者? 自读书以来,阅读过很多教材.以往的教材都是很枯燥无味的,就像天书一样,看久了都会睡着.相反,<构建之法>这本教材冲破了这层枷锁.老实说,第一次打开这本书时,里面的生动形象和有趣的内容就已经深深的吸引了我.另外,这本书最大的魅力特点在于:用虚拟人物(例如小飞)的对话和活动,

浅谈人们工作时存在的2种思维模式

工作的思维模式分2种:即时回报型和延时回报型. 即时回报型的表现:注重立刻见效的方式,比如刀钝了舍不得花时间磨,提刀急忙去砍柴:比如每天都大老远的去提水,而舍不得花时间和钱去修条水管:比如工作上遇到难题了,直接上网搜答案,而舍不得花时间从基础学起:比如执行某个软件操作时舍不得花时间去找快捷键,每次都从菜单里点. 相对的是延时回报式,表现为:刀钝了就先去磨刀,磨快了再去砍柴:修水管而不是去提水:学习先从基础的开始:注意使用快捷键. 表现远远不止这些.从表面上看,即时回报的方式短期见效快,长期效率差

IAR for STM8系列教程(一)_新建软件工程详细过程

Ⅰ.写在前面 本文使用目前(2017年04月)最新版本的IAR for STM8(EWSTM8)V2.20开发环境.STM8S103的处理器及最新版本STM8S标准外设库(STM8S_StdPeriph_Lib_V2.2.0)为例给大家讲述新建一个软件工程的详细过程. 本文分如下几个章节来讲述: 1.准备工作 ? 下载安装EWSTM8 ? 下载STM8标准外设库 ? 整理工程文件夹 2.新建软件工程 ? 创建工程 ? 添加文件 ? 配置工程 为了方便大家阅读,本文内容已整理成PDF文件,供大家下

摆拍韦节宾:Testin云测雪中送炭般解决开发者测试难题

摆拍韦节宾:Testin云测雪中送炭般解决开发者测试难题 2014/11/26 · Testin · 开发者访谈 定格动画是通过逐格地拍摄对象然后使之连续放映,从而产生仿佛活了一般的人物或你能想象到的任何奇异角色,一般都是由黏土偶,木偶或混合材料的角色来演出的.这种动画形式的历史和传统意义上的手绘动画历史一样长,甚至可能更古老.由于定格动画制造出的人物富有鲜明的个性,故事情节丰富,且易于操作,而受到年轻人越来越多的追捧. "摆拍"就是一款主打定格动画的APP,用来拍摄定格动画的软件,并

换工作?请记得8、18、48与72这四个密码

换工作写简历时,最常碰到要填写的数字,当然是你过去的工作经历与工作多久的年限,小心,时间的长短,其实是 HR 决定录不录用你的关键因素,怎么说呢? 根据<Fortune>杂志报导,8.18.48 与 72 这四个数字,就是找工作的四大地雷数字,不可不慎. 以 8 来说,如果你上一个工作只待了 8 个月,建议你在填简历表时,还不如不要写上去比较好. 为什么呢?因为这代表你可能没有通过该公司的试用期或是每半年一次的绩效审核,所以被踢出来了,因此,看起来多写一项工作经历好像可以为简历表加分,实则如果