软件架构师是软件行业中一种新兴职业,工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。主导系统全局分析设计和实施、负责软件构架和关键技术决策的人员。通俗的说,主导系统全局得分析设计和实施、负责软件构架和关键技术决策的人员就是软件架构师。

软件架构师在需求分析阶段介入。在这一阶段软件体系架构师与软件需求人员一起将所有的需求从不同的级别分层数理列表归纳总结建立跟踪矩阵,并划分为不同的类型进行数理列表归纳总结建立影响分析表,找出不同需求类型之间的相互支持、相互制约关系的影响。并同需求分析人员共同建立需求规格说明书。

第二步是确定对架构关键的需求,软件架构师将所有的需求进行筛选,在深思熟虑之后做出合适的需求权衡和取舍,最终确定对软件架构其关键作用的子集,控制架构设计时需要详细分析的用例个数,找到架构的重点非功能需求。要根据需求确定架构目标(即是组成设计过程、确定使用范围并确定什么时候该结束的因素)。并且要了解架构的消费者。要确定架构是否会被其他设计师、开发人员、测试人员、业务人员或管理人员使用。确定架构涉众的需求,以让架构更为成功、更有影响力。了解条件限制。了解技术限制、使用限制、和部署限制。从一开始就要了解这些限制,这样你才不会在将来遇到一些意想不到的麻烦。为后面的工作打下坚实的基础。

第三步进行概念性架构设计,首先分析关键用例和有用例规约,运用鲁棒图(检查用例规约是否正确和完善)等方法构造系统理想化的职责模型(如分层),然后明确架构模式(如MVC),确定交互机制,形成初步的概念性架构,最后通过质量属性分析,制定出满足非功能性需求的高层设计决策,并根据这些决策对之前的工作成果进行增强、调整,以保证概念性架构体现这些设计决策。设计架构的时候还应该对应用进行一定的了解,因为了解应用在完成的时候的大概情况。这将会使架构更实际,并与具体的条件限制和决定有更密切的联系。创建应用的大概视图应该包括以下步骤:决定应用的类型。了解部署限制。确定重要的架构特点。确定相关的技术。还要确定出主要的危险区域即容易出错的区域,可以可以通过质量属性和交叉问题对危险区域进行整理。然后找出对于应用和场景很重要的质量属性。

第四步是细化软件架构,考虑具体技术的运用,设计出实际架构。概念性架构所关注的关键设计要素、交互机制、高层设计决策与具体技术无关,而最终的软件架构设计方案必须和具体技术结合,为开发人员提供足够的指导和限制。必须从系统如何规划、如何开发、如何运行等角度揭示软件系统的结构和机制。一般分别从逻辑架构、开发架构、运行架构、物理架构、数据架构等不同架构视图进行设计。在设计的时候可以使用质量属性帮助设计。

第五步是验证软件构架。不管软件体系架构师有多优秀,都不能保证软件架构是完全符合要求符合标准的,所以要验证软件架构。进行验证的时候要根据架构框架来计划并整理构架测试。利用不同的测试方法来验证构架的各种质量属性。

最后,由于软件项目的不同、开发组织结构的不同、开发团队情况的不同,软件架构的设计粒度是不一定的。比如,航天航空领域中的软件系统对系统的可靠性等质量属性要求非常高甚至可以认为是荷刻,这种情况下对架构的设计详细程度的要求也会比较高;象大的团队中又有小的团队共同开发,架构的设计粒度到子系统级就足够了,各个小团队精通的技术各不相同,可以让其对子系统采用敏捷开发,对缩短工期、人尽其材有好处;有类似项目经验或项目团队所有成员整体技术水平较高的团队架构粒度可适当粗犷,而分布团队或涉及外包的情况则更强调架构的明确性。总之,架构设计对软件的不同部分的设计程度不应是整齐划一的,特别是具体的业务功能模块在架构设计中往往设计程度不深。

转载于:https://www.cnblogs.com/ygl888/p/6437640.html

软件架构师的工作流程相关推荐

  1. 浅谈软件架构师的工作

    老师今天在第一节课是要让我们了解如果要做一名软件架构师,我们应该做什么和怎么做.在课堂上,老师通过<架构漫谈>这本书了解什么是软件架构师.软件架构师是软件行业中一种新兴职业,工作职责是在一 ...

  2. 软件架构师的工作职责

    软件架构师的工作职责 构架设计师负责在整个项目中对技术活动和工件进行领导和协调.构架设计师要确立每个构架视图的整体结构:视图的详细组织结构.元素的分组以及这些主要分组之间的接口.因此,与其他角色相比, ...

  3. GPU—加速数据科学工作流程

    GPU-加速数据科学工作流程 GPU-ACCELERATE YOUR DATA SCIENCE WORKFLOWS 传统上,数据科学工作流程是缓慢而繁琐的,依赖于cpu来加载.过滤和操作数据,训练和部 ...

  4. python爬虫之Scrapy框架的post请求和核心组件的工作 流程

    python爬虫之Scrapy框架的post请求和核心组件的工作 流程 一 Scrapy的post请求的实现 在爬虫文件中的爬虫类继承了Spider父类中的start_urls,该方法就可以对star ...

  5. WifiP2pSettings工作流程

    本文为<深入理解Android Wi-Fi.NFC和GPS卷>读书笔记,Android源码为Android 5.1 Android平台中,P2P操作用户只需执行如下三个步骤: 1)进入Wi ...

  6. Blender+SP+UE5游戏艺术工作流程学习

    Blender到虚幻引擎5 Blender游戏艺术 Blender for Game Art 你会学到: 如何在Blender中创建三维模型 UV如何展开和布局 如何在Substance Painte ...

  7. Revit: Twinmotion工作流程学习

    Revit: Twinmotion Workflow MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 技能等级:中级|语言:英语+中英文字幕(根据原英文字幕机译 ...

  8. iOS应用模块化的思考及落地方案(一)模块的划分及模块化工作流程

    1.0 什么是模块化 很多关于重构及设计模式的介绍中,经常提到的几个词语是复用及解耦. 模块化之所以被提出,也更多是为了解决这几个问题. 复用可以减少重复造轮子的情况,很容易理解的是,我们经常使用的g ...

  9. travis ci_如何使用Travis CI和GitHub进行Web开发工作流程

    travis ci by Vijayabharathi Balasubramanian 通过Vijayabharathi Balasubramanian 如何使用Travis CI和GitHub进行W ...

最新文章

  1. 某程序员以阿里为原型写小说!阿里员工:每件事都是真的!网友:建议拍成电视剧!...
  2. 数据中心网络架构 — CLOS 网络架构的起源于发展
  3. Nginx 多进程连接请求/事件分发流程分析
  4. HDOJ 5071 Chat 模拟
  5. android中实现“再按一次退出”功能
  6. 从文件夹里面多个文件里面查找指定内容
  7. Linq:使用Take和Skip实现分页
  8. 云知声(Unisound)蜂鸟系列AI离线语音识别芯片方案介绍
  9. 【LeetCode】马三来刷题之Valid Anagram
  10. 汽车颗粒物排放对环境和健康的影响及政府监管策略
  11. windows server 2012 NIC组合---概念
  12. java中的匿名内部类总结
  13. C语言程序设计教程(第三版)课后习题6.7
  14. Android 即时音效SoundPool
  15. 谷歌真被ChatGPT搞慌了!两位创始人紧急回归制定战术,搜索广告根基不容有失...
  16. datatables 常用的操作、复杂表头
  17. 草图大师怎么取消组件关联_草图大师隐藏其他组件快捷键是什么?
  18. windows装linux无u盘安装,u盘无人值守安装linux操作系统
  19. 个人总结了下自己在XP系统下键盘组合代码,顺便分享下,其实很实用,可是你用到了麽?
  20. xp sp2 升级到sp3

热门文章

  1. FPS武器设计:丹威森500型左轮手枪的制作流程
  2. 次世代3D游戏角色是如何打造出来的?
  3. 《魂斗罗:归来》手游子弹中没中,没你想得那么简单!
  4. WAMP中的MySQL设置密码(默认密码为空)
  5. 零基础学Python-爬虫-4、下载网络图片
  6. ASP.Net Core WebApi几种版本控制对比
  7. 杂项-QRCode:ZXing
  8. ARM中 __IO的作用解析
  9. 一道PHP题引出的“短路求值”
  10. [bzoj2456]mode