zoukankan      html  css  js  c++  java
  • 架构的理解

            架构这个词我们在学习的过程中经常听到,架构是什么,或者给架构一个定义,本身就是一个难以回答的问题。每个从事软件行业的人对架构都有着自己的理解。要想了解什么是架构,我们首先要知道架构是怎样形成的。

            假如一个人,他的衣食住行都是靠自己解决,每个人都是独立的个体。显然是不需要与其他人合作的。然而,当出现了一个人解决不了的问题时,就需要一起解决。当人数增多、需求变大的时候,就出现了合作。由于每个人的精力是有限的,而且不同的人所擅长的事情有所不同。比如说有的人擅长种地,有的人擅长制作工具,那么就形成了群体和分工。每个人通过不同的分工和互相的联系与交易共同维护了团体的存在。而此时,一个简单的社会架构就形成了。

           由此我们可以总结出什么是架构:

    1. 根据要解决的问题,对目标系统的边界进行界定。
    2. 并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间。
    3. 并对这些切分出来的部分,设立沟通机制。
    4. 根据3,使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作

           架构更像是一个系统的草图,确定出系统的边界,将按照赵某种原则对系统进行切分,并构建切块之间的联系使他们形成一个整体。

           架构实际上解决的是人的问题。作为软件工程师或者架构师,我们大部分时间是要去解决别人的问题。对于架构师来说,发现问题永远都比解决问题来的更加重要。

     

    那么软件架构师如何工作?

    随着软件行业的快速发展,软件工程的规模越来越大,复杂程度越来越高,软件设计的核心己经超越了传统的“算法+数据结构=程序”的设计模式,取而代之的是对系统的总体结构的设计和规范。软件架构师在软件开发过程中充当着越来越重要的角色,在整个软件的生命周期中的重要性日益突出。

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

    软件架构师应能迅速抓住问题要害,并做出合理的关键决定的能力,具备战略性和前瞻性思维能力,善于把握全局,能够在更高抽象级别上进行思考,主要包括如下:

    1. 对项目开发涉及的所有问题领域都有经验,包括彻底地理解项目需求,开展分析设计之类软件工程活动等;
    2. 具备领导素质,以在各小组之间推进技术工作,并在项目压力下做出牢靠的关键决策;
    3. 拥有优秀的沟通能力,用以进行说服、鼓励和指导等活动,并赢得项目成员的信任;
    4. 以目标导向和主动的方式来不带任何感情色彩地关注项目结果,构架师应当是项目背后的技术推动力,而非构想者或梦想家(追求完美);
    5. 精通构架设计的理论、实践和工具,并掌握多种参考构架、主要的可重用构架机制和模式(例如J2EE架构等);
    6. 具备系统设计员的所有技能,但涉及面更广、抽象级别更高;活动确定用例或需求的优先级、进行构架分析、创建构架的概念验证原型、评估构架的概念验证原型的可行性、组织系统实施模型、描述系统分布结构、描述运行时刻构架、确定设计机制、确定设计元素、合并已有设计元素构架文档参考构架分析模型设计模型实施模型部署模型、构架概念验证原型、接口、事件、信号与协议等。

    基于上述定义可以说,一个软件架构师工作的好坏决定了整个软件开发项目的成败。

    作为软件架构的设计者是关系到软件成败的关键因素,缺少了软件架构师的工作,软件产品的生产率、上市时间、质量和成本等诸多方面就不能得到应有的保障。其工作内容大致如下:

    1. 软件架构创建的意义
      使用合适的软件架构可以在需求变动的情祝下迅速的进入变动之后的软件开发如果拿一栋大楼来比喻整个的软件产品那么软件架构就好比大楼的骨架没有好的软件架构,软件产品的质量可想而知软件架构是软件产品的精髓,只有在合适的产品上采用合适的软件架构才能真正的提高软件产品的质量
    2. 软件架构的创建过程
      一旦项目立项,系统分析师把项目的需求分析提交过来之后。根据该项目的整体解决方案,软件架构师就必须找到适合该软件的架构。确定了软件架构之后就可以依据它来组建项目团队,并创建一个骨架系统作为增量式开发的基础,把传统的软件开发模式和敏捷开发(Agile Development)模式结合起来。为了软件产品的升级及复用,小型的软件产品也应该设置软件架构的设置环节,大型的软件产品则必须要有软件架构的设计环节那
      么,大型软件产品的开发模式就变成了传统软件开发模式、软件架构设计和敏捷开发模式的综合小型软件产品的开发模式就变为了软件架构设计和敏捷开发模式的综合软件架构设计不论在大型软件产品还是小型软件产品的开发模式中所处的位置基本上是一样的。都是处在需求分析后进行软件架构的设计对于需求不确定或者软件架构师认为变动频繁的功能模块采用敏捷开发的模式如果需求变动,采用敏捷开发的方式修改相应的功能模块。
    3. 软件架构资源库的创建与维护
      把不同的软件架构形成一种知识,供以后的项目或其它软件架构师、系统分析师使用软件资源库中包括所包含每一种软件架构的文档说明,实例图,使用该软件架构的软件产品等,最好能创建一个辅助工具软件来维护软件架构资源库
    4. 其它作用
      随着开发进程的推进,软件架构师的职责或关注点不断地变化:
      1. 在需求阶段配合系统分析师;
      2. 需求明确后,软件架构师要进行软件架构的设计;
      3. 随后,软件架构师的关注点开始转移到组织开发团队成员和开发过程定义上;
      4. 在编码阶段,架构师则成为详细设计者和代码编写者的顾问并且经常性地要举行一些技术研讨会、技术培训班等;
      5. 随着软件开始测试、集成和交付,集成和测试支持将成为软件架构师的工作重点;
      6. 在软件维护开始时,软件架构师就要分析该软件架构在该软件产品上的实施效果,是否存在问题,为下一个软件项目的软件架构设计做准备。

    以上便是我对软件架构师主要职责,所必须要做的一些工作和应有的素质的理解。

  • 相关阅读:
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第4章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第3章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第1,2章 读书笔记(待更新)
    Tkinter的Message组件
    Git 实操/配置/实践
    mysq5.7.32-win安装步骤
    行为型模式之模板方法
    结构型模式之组合模式
    结构型模式之享元模式
    结构型模式之外观模式
  • 原文地址:https://www.cnblogs.com/ljpljm/p/14502121.html
Copyright © 2011-2022 走看看