`

架构师之路:初识软件架构

阅读更多
软件架构(software architecture):
1.是一个系统的草图,是构建计算机软件实践的基础。
2.是用于指导大型软件系统各个方面的设计的一系列相关的抽象模式。
3.描述直接构成系统的抽象组件以及组件之间的通讯。
4.在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组件之间的连接通常用接口来实现。

软件架构是指在一定的设计原则基础上,从不同角度对组成系统的各部分进行搭配和安排,形成系统的多个结构而组成架构,它包括该系统的各个组件,组件的外部可见属性及组件之间的相互关系。组件的外部可见属性是指其他组件对该组件所做的假设。

在“软件构架简介”中,David GArlan 和 Mary Shaw 认为软件构架是有关如下问题的设计层次:“在计算的算法和数据结构之外,设计并确定系统整体结构成为了新的问题。结构问题包括总体组织结构和全局控制结构;通信、同步和数据访问的协议;设计元素的功能分配;物理分布;设计元素的组成;定标与性能;备选设计的选择。”

但构架不仅是结构。IEEE Working Group on Architecture 把其定义为“系统在其环境中的最高层概念”。构架还包括“符合”系统完整性、经济约束条件、审美需求和样式。它并不仅注重对内部的考虑,而且还在系统的用户环境和开发环境中对系统进行整体考虑,即同时注重对外部的考虑。

一个软件架构师需要有广泛的软件理论知识和相应的经验来实施和管理软件产品的高级设计。软件架构师定义和设计软件的模块化,模块之间的交互,用户界面风格,对外接口方法,创新的设计特性,以及高层事物的对象操作、逻辑和流程。

根据我们关注的角度不同,可以将架构分成三种:
·逻辑架构。软件系统中元件之间的关系,比如用户界面,数据库,外部系统接口,商业逻辑元件,等等。
·物理架构。软件元件是怎样放到硬件上的。
·系统架构。系统的非功能性特征,如可扩展性、可靠性、强壮性、灵活性、性能等。系统架构的设计要求架构师具备软件和硬件的功能和性能的过硬知识,这一工作无疑是架构设计工作中最为困难的工作。
此外,从每一个角度上看,都可以看到架构的两要素:元件划分和设计决定。

正如同软件本身有其要达到的目标一样,架构设计要达到的目标是什么呢?一般而言,软件架构设计要达到如下的目标:   
·可靠性(Reliable)。软件系统对于用户的商业经营和管理来说极为重要,因此软件系统必须非常可靠。   
·安全行(Secure)。软件系统所承担的交易的商业价值极高,系统的安全性非常重要。  
·可扩展性(SCAlable)。软件必须能够在用户的使用率、用户的数目增加很快的情况下,保持合理的性能。只有这样,才能适应用户的市场扩展得可能性。   
·可定制化(CuSTomizable)。同样的一套软件,可以根据客户群的不同和市场需求的变化进行调整。   
·可扩展性(Extensible)。在新技术出现的时候,一个软件系统应当允许导入新技术,从而对现有系统进行功能和性能的扩展   
·可维护性(MAIntainable)。软件系统的维护包括两方面,一是排除现有的错误,二是将新的软件需求反映到现有系统中去。一个易于维护的系统可以有效地降低技术支持的花费  ·客户体验(Customer Experience)。软件系统必须易于使用。   
·市场时机(Time to Market)。软件用户要面临同业竞争,软件提供商也要面临同业竞争。以最快的速度争夺市场先机非常重要。

-----------根据百度百科词条稍微修改
分享到:
评论

相关推荐

    xmg-Java从零到架构师教程完整无密版(85.98G)

    xmg-Java从零到架构师教程完整无密版(85.98G) 〖课程介绍〗: xmg-Java从零到架构师教程完整无密版(85.98G) 〖课程目录〗: ├── Java架构师/ │ ├── 视频/ │ │ ├── 01阶段(未加密)/ │ │ │ ├─...

    互联网架构师 5.0 (106.98G)

    互联网架构师5.0(106.98G) 〖课程目录〗: 八、Jquery ---1.jQuery基础.mp4 ---2.jQuery基本操作.mp4 ---3.jQuery事件与特效.mp4 ---4.使用jQuery处理Ajax.mp4 ---5.定制化jQuery.mp4 二十、使用IEDA进行项目开发...

    KubeSphere and Friends 2021 Meetup 杭州站PPT汇总.zip

    2021.5.29 KubeSphere 社区主办的云原生 Meetup——KubeSphere and Friends 2021 杭州站 ,KubeSphere 架构师、KubeEdge 社区 Maintainer、Nebula Graph 图数据库工程师、资深 MySQL 内核研发SementFault(思否)CTO...

    java查看函数源码-BigDataArchitect:大数据架构师

    大数据架构师课程导读 1. bigdata_hadoop 2. bigdata_hive 3. bigdata_hbase 4. bigdata_hadoop_project 5. bigdata_redis 6. bigdata_zookeeper 7. bigdata_spark 课程大纲目录,持续更新中。。。 hadoop阶段: 1. ...

    软件测试系列最佳实践

    2.4 谁能成为测试架构师34 第3章 如何让缺陷无处藏身38 3.1 什么是软件可测试性39 3.2 SOCK模型和James Bach的观点41 3.3 TDD和代码的可测试性43 3.4 设计的可测试性48 3.5 需求的可测试性51 第4章 ...

    Axure-RP培训教程.pptx

    Axure RP Pro 是美国Axure Software Solution公司的旗舰产品,是一款快速原型设计工具,主要针对负责 定义需求、定义规格、设计功能、设计界面的专家,包括用户体验设计师、交互设计师、信息架构师、 业务分析师、...

    《Redis 6 开发与实战》教学配套PPT.rar

    适用人群:适合对Redis感兴趣的开发人员、系统架构师、数据库工程师以及希望深入学习Redis应用和优化的技术人员。 使用场景及目标:通过《Redis 6 开发与实战》配套PPT,读者可以系统学习Redis的各个方面知识,包括...

    初识Linux内核,进程通信能这么玩 (1).mp4

    内容包括:C/C++,Linux,Nginx,golang,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,ffmpeg,流媒体, 音视频,CDN,P2P,K8S,Docker,Golang,TCP/IP,协程,嵌入式,ARM,DPDK等等。。。

    asp.net知识库

    Asp.net 利用OleDb的GetOLEDBSchemaTable方法得到数据库架构信息 用于 Visual Studio .Net 的 IBM DB2 开发外接程序 第2章 并发操作的一致性问题 (2) Using sqlite with .NET Visual Studio 2005 中的新 DataSet ...

    决战JAVA大后端-解决JavaWeb后端疑难杂症 JAVA后端高级开发技术专题课程 大牛亲授

    JAVA高级架构师亲授的JAVAWeb后端实战课程,一线大厂高手亲自带课,讲解企业级后端开发中的高级技术。决战JAVA大后端的课程中,很多内容都可以成为润滑油式的技术,非常能够帮助同学们解决实际工作中的问题,同时在...

    【2018最新最详细】并发多线程教程

    8.初识Lock与AbstractQueuedSynchronizer(AQS) 9.深入理解AbstractQueuedSynchronizer(AQS) 10.彻底理解ReentrantLock 11.深入理解读写锁ReentrantReadWriteLock 12.详解Condition的await和signal等待通知机制 13....

    Hadoop实战中文版

    《Hadoop实战》适合需要处理大量离线数据的云计算程序员、架构师和项目经理阅读参考。书籍目录: 第一部分 Hadoop——一种分布式编程框架 第1章 Hadoop简介 1.1 为什么写《Hadoop 实战》 1.2 什么是Hadoop 1.3 ...

    Hadoop实战中文版.PDF

    《Hadoop实战》适合需要处理大量离线数据的云计算程序员、架构师和项目经理阅读参考。目录编辑第一部分 Hadoop——一种分布式编程框架第1章 Hadoop简介 21.1 为什么写《Hadoop 实战》 31.2 什么是Hadoop ...

    10分钟了解大数据学习的方向和路径,助你快速入行

    当然如果你想要做一个数据分析师或者数据挖掘师,那么,你首先要做的不是马上去买很多的相关书籍,也不是马上去报一个数据分析师培训课程,我觉得你最先应该做的是弄明白大数据是什么意思。了解了大数据的含义之后,...

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    Budi Kurniawan,世界知名的Java专家和资深JavaEE高级架构师,自己创建了软件咨询和技术出版公司Brainy Software。他还撰写了深入揭示Tomcat工作机理和设计理念的名著How Tomcat Works,并在多种权威出版物上发表过...

Global site tag (gtag.js) - Google Analytics