位置:编程技术网 > 产品设计 > 正文 >

架构师和开发团队应该如何协作?

2020年10月07日 12:45来源:未知手机版

满洲八大姓,lol凛冬之怒出装,大冠军杯

账号设置我的关注我的收藏退出登录登录搜索未来汽车日报零售老板内参未来地产KrASIATech星球超人测评媒体品牌企服严选EClub企业项目库36Kr研究院Kr8创新平台36Kr创新咨询氪榜企业服务城市之窗政企对接政府服务LP源计划VClubVClub投资机构库投资人服务寻求报道寻求融资36氪Pro创业者服务开氪知识服务首页快讯资讯推荐Markets科技金融城市最新创投汽车企服生活直播视频专题活动搜索寻求报道我要投稿架构师和开发团队应该如何协作?36氪的朋友们?·?2016-01-31关注在这篇文章里,我回顾了自己在传统瀑布式软件架构和敏捷软件架构下的工作经历。

编者按:本文作者Boyan Mihaylov,36氪经授权转载自微信公众号“聊聊架构”(微信号:archtime)。

软件架构构成了一个系统的骨架。它定义了当面对不同的功能性和非功能性需求时的系统行为。一方面,传统瀑布式方法对项目开发的所有阶段提出了硬性约束要求,因此传统瀑布式方法显得僵化。另一方面,敏捷运动让我们拥抱改变,即使是处于开发阶段后期的改变。尽管我们正推动自己从僵化的开发模式迈向更灵活的模式,软件架构由于其系统骨架的定位,天然地对变化敏感。因此关键之处在于,敏捷运动拥抱的软件架构必须是可持续的——具备可持续概念的软件架构,支持在项目复杂度不断增加的同时,系统能以渐进式的、简单的以及可维护的方法进行扩展。

在这篇文章里,我回顾了自己在传统瀑布式软件架构和敏捷软件架构下的工作经历。描述了两者在以下三个方面表现出来的相似性及差异性:

软件架构扮演的具体角色 软件架构的时间跨度 软件架构的输出

什么是软件架构?

软件架构的定义(实际上你也能添加你自己下的定义)成百上千。存在这么多种定义的原因在于每个人都是基于自身情境下定义。我对IEEE给出的定义特别推崇,这个定义描述的基本概念非常形象化。此外,该定义描述出了软件架构的精髓本质,同时适用于瀑布式和敏捷流程,而不是只能匹配某一个。在本文的后续部分,我会引述到该定义:

一个系统的基本组织结构、基本组成构件和互相之间的关系,以及构件于外部环境间的关系。同时,软件架构为后续的设计和架构演化提供了指导性原则。

瀑布式软件架构

传统瀑布式开发的特征在于其由一系列有明确的开始和结束时间的阶段构成,每个阶段包含确定的活动集。所有阶段串接在一起,每个阶段严重依赖于前一个阶段的交付产出。图1阐述了瀑布式开发过程涉及到的常见阶段。


图1:传统的瀑布式模型

软件架构工作通常在软件需求确定后开始启动,认为在此时,关于系统应做什么,已经确定好了。下一步是审查负责确定软件架构的人以及当前阶段的实际输出结果。

传统软件架构

软件架构实践中通常由软件架构师完成。软件架构师拥有丰富的技术知识和经验——往往是由公司中已经达到一定等级的开发人员晋升而来的。软件架构师负责分析软件需求,并基于这些需求为未来系统的演化做某些技术决策。许多公司通常是一个项目对应一个软件架构师,但在一些更大的公司里,软件架构师们可能以团队的形式共同合作。当项目所在领域非常复杂或者项目的周期很长,比如长达2到3年甚至更久时,通常情况下就会有软件架构师团队。不是所有的公司都有指定的软件架构师角色——许多公司把这部分职责委托给他们的高级开发人员承担。在本文的后续部分,我所谈的是指由软件架构师执行的具体活动项,而不是执行活动项的人,除非另有明确说明。

传统的软件架构师有4大主要特征:

关注大格局——软件架构师应当思考,系统在未来的几个月(有时间甚至是几年)会变成什么样子。此外,他还应当一并考虑到所有其他相关的系统(比如第三方系统和数据库),以及系统间的通讯问题。 遵从性导向——软件架构师应考虑到可能的遵从性问题。可能的有法律规范、许可证、标准或其它,身为软件架构师他应确保系统在未来能够满足这些至关重要的标准。 绘制蓝图——软件架构师的一项重要交付是从不同角度描述架构设计的文档和图表集。开发团队利用这些交付件开始进行系统构建。 不太多的实际操作经验——软件架构师的工作目标是产出最终文档以供开发人员使用。尽管软件架构师通常拥有开发经验,但他很少参与到开发过程中去——而是指导开发人员构建已设计好的系统。在某些时候他甚至可能调去参加另一个项目,留下开发人员自己完成开发。

本文地址:http://www.reviewcode.cn/chanpinsheji/176499.html 转载请注明出处!

今日热点资讯