专题出品人: 邹欣

Microsoft Principal Software Engineering Manager

专题:软件工程

软件工程是将工程化的方法运用到软件的开发、运行和维护之中,以达到提高软件质量,降低开发成本的目的。我们邀请知名大公司的软件工程负责人,讲解如何通过科学的方法降低软件系统的复杂性、提高其可控性,以此在软件开发、维护、测试等各个阶段提高效率。

本专题下的议题

软件工程危机与系统重构之道
孤尽 阿里巴巴集团 高级技术专家
所属专题:软件工程

课程概要

背景介绍:
近年来,软件生态的瞬息万变和软件企业经营的巨大压力,使软件工程质量遇到前所未有的挑战,架构设计的扩展性和可维护性似乎成了口号,“短平快”地实现软件的经营效益价值,是摆在首位考虑的,但这是以系统维护的痛苦和重构的纠结为代价的。重构是软件剧烈发展过程中的必选项,但是这个必选项的背后思考是需要认真审视的,比如,重构动机、重构时机、重构ROC,就是三个需要深思熟虑的环节。重构不应该是KPI的温床,也不应该是新技术栈的试验田。那么如何去宏观地思考这些问题,是摆在大、中型企业面前的难题。

解决思路/成功要点:
1. 系统架构上以SOLID原则延迟重构的产生。
2. 组件之间的边界尽可能清晰,基础组件不依赖于外围组件。
3. 从功能需求、业务价值驱动角度来审视重构的第1层必要性
4. 从分布式、高可用、高并发三个横向维度来审视重构的第2层必要性
5. 从存储、服务、GUI三个纵向维度来审视重构的第3层必要性
6. 从艾森豪威尔矩阵分析重构时机
7. 从时间成本、人力成本、机会成本三个角度来判断重构ROC

成果:
阿里巴巴代码平台运行在原来的 Gitlab社区版本上进行改造,数据量大,重构挑战的必要性如下:
1. Gitlab社区版不支持分布式。
2. Gitlab社区版在系统吞吐率上严重制约研发效能提升。
3. 社区版本无法与企业技术框架有效整合。
这次艰难的重构,是脱胎换骨的,除了数据库底层的数据结构是复用之外,其它都进行了大幅度的改造,命名为原力系统,在整个架构设计中,Web层与服务层完全解耦。(更多细节,法务审核之后才可以披露)

听众收益

1、 如何评估本项目的软件工程危机
2、 如何评估重构的必要性,以及何时进行重构,以及如何衡量其ROC
3、 如何避免软件工程危机
4、 如何避免打乱企业正常软件生产秩序的冗余重构行为

软件开发中的碎片化问题
范飞龙 巴克云 高级软件工程师
所属专题:软件工程

课程概要

背景介绍:现代软件开发中,在需求/设计/实现/测试/发布的整个生命周期中,每个环节的质量,决定了软件开发的整体质量和软件团队的综合开发水平。软件=程序+软件工程,在软件开发的每个环节中,现代软件开发又面临着大量的异构开发环境导致的各种碎片化问题,这些问题的忽视和累积就容易形成破窗效应,对所构建软件的质量和软件团队的水平无形之中产生着影响。如何把这些碎片问题解决好,决定着软件团队的敏捷水平。BuckyCloud通过构建Serverless平台为核心,旨在解决开发环境日益异构的问题,让开发回归到单机一般的体验。而在构建BuckyCloud的过程中,无论是平台内部还是平台外部,都需要有效解决这些碎片化问题。

解决思路/成功要点:为了解决软件开发中的碎片化问题,我们在平台内部开发和外部开发者使用场景中,都保持着对开发中碎片化问题的敏锐与及时响应,做出针对性的分析、设计与解决。主要包括以下几个方面:
1)项目中的脚本地狱
2)非IDE环境下的项目管理
3)分布式系统的测试,以BuckyCloud为例
4)开发中的文档问题
5)项目中的ISSUE管理
6)自动化构建
7)团队构建:能力+动机+饱和度
8)软件工程教学

成果:通过上述针对软件开发中碎片化问题的敏捷响应,痛点分析,及时有效的工具设计,即保证了内部平台开发的质量和水平,又不断改进了面向开发者的工具质量,真正做到了以开发者为核心构建平台和工具,助力开发者专注于业务,让开发重新变的简洁。

听众收益

1、了解并识别软件开发中的碎片问题,并获得特色和独到的解决方式
2、了解如何分析碎片化问题的痛点,如何遵循一定的原则设计工具解决这些痛点问题,如何通过工具和自动化解决工程问题
3、了解如何识别并有效解决项目管理中的流程与人的问题
4、了解参与线上线下结合的软件工程教学并获得个人成长

软件工程在微软的演化
邹欣 Microsoft Principal Software Engineering Manager
所属专题:软件工程

课程概要

微软公司在过去的30年中一直是软件业的一流公司,它的软件工程流程与文化在过去的 30 年终经历了哪些变化? 在 30 年中有很多技术兴旺又衰落,很多流程时髦过又被冷落,一些企业文化被吹嘘过又成为笑谈。那么,在 30 年的经历中,微软哪些经验教训?这些经验教训对于其他团队有什么价值?
在30年各个浪潮冲击下, 哪些是软件开发中暂时的技术, 哪些是长期有效的核心原则?软件开发中各个角色的相对关系经历了什么变化?我们如何做软件工程师的绩效评估?这个讲座给你透露了微软软件工程基业长青的一些秘密。

听众收益

1.了解软件工程中核心的要素
2.产品开发中如何掌握技术/商业/人员管理的规律
3.对于软件流程中一些似是而非的思潮有清醒的认识

成为高效程序员:将软件工程思想运用于个人工作
郑晔 火币集团 研发中心,首席架构师
所属专题:软件工程

课程概要

案例背景介绍:
程序员是一个忙碌的群体,但我们却面临很多郁闷的事情:代码没上线,需求就变了;做出的东西总是和产品经理想得不一样;一点小变更,却要大幅度修改代码;工作量评估不准,只能加班搞定。

解决思路/成功要点:
通过引入一个思考框架,结合着诸多软件工程中的最佳实践,比如,持续集成、DoD、验收标准等,让自己的工作更有针对性,更加高效。

成果:
希望听众能够更有效地工作,不盲目地接受工作任务。

听众收益

懂得以终为始,任务分解,沟通反馈,自动化的工作原则,应用于实际工作中

现任微软亚洲研究院首席研发总监,参与AI 平台的研发和推广工作。 从1996 开始, 他在微软Outlook,Visual Studio, Bing,Windows 团队从事研发工作。 他在亚洲研究院从事过多年的技术创新项目,推出了FaceSDK 和学术搜索等创新产品。
他于2007年出版了《移山之道》,于2008年出版了《编程之美》 (合作)。2014年出版了《构建之法 – 现代软件工程》, 已经成为40多所大学的软件工程教科书。

专题:软件工程

软件工程是将工程化的方法运用到软件的开发、运行和维护之中,以达到提高软件质量,降低开发成本的目的。我们邀请知名大公司的软件工程负责人,讲解如何通过科学的方法降低软件系统的复杂性、提高其可控性,以此在软件开发、维护、测试等各个阶段提高效率。

其他相关专题

CopyRight © 2008-2019 Msup & 高可用架构