软件架构(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)。软件用户要面临同业竞争,软件提供商也要面临同业竞争。以最快的速度争夺市场先机非常重要。
-----------根据百度百科词条稍微修改
分享到:
相关推荐
数据库管理系统是一种用于创建、管理、查询和控制数据库的软件系统。DBMS允许用户和应用程序通过标准接口来存储、检索和更新数据。常见的DBMS类型包括层次型数据库(HDB)、关系型数据库(RDB)、对象导向数据库...
### 架构师系列书籍——Redis实战:知识点详解 #### 一、Key-Value存储系统简介 ##### 1.1.1 Voldemort - **简介**:Voldemort是一款分布式Key-Value存储系统,由LinkedIn开发并开源。 - **特点**: - 支持分区和...
xmg-Java从零到架构师教程完整无密版(85.98G) 〖课程介绍〗: xmg-Java从零到架构师教程完整无密版(85.98G) 〖课程目录〗: ├── Java架构师/ │ ├── 视频/ │ │ ├── 01阶段(未加密)/ │ │ │ ├─...
互联网架构师5.0(106.98G) 〖课程目录〗: 八、Jquery ---1.jQuery基础.mp4 ---2.jQuery基本操作.mp4 ---3.jQuery事件与特效.mp4 ---4.使用jQuery处理Ajax.mp4 ---5.定制化jQuery.mp4 二十、使用IEDA进行项目开发...
**Java架构师之路** 成为一名合格的Java架构师,需要对软件设计和整体架构有深刻理解: - **《Expert One-on-One J2EE Design and Development》**:Rod Johnson的经典之作,孕育了Spring框架,对于理解企业级Java...
领域模型的建立有助于架构师深入理解业务需求,并将其转化为技术方案。架构规划是未来实施的蓝图,需要考虑未来的业务发展趋势和技术演进。架构实施是将架构规划付诸行动的过程,需要充分考虑技术的可行性、资源的...
2021.5.29 KubeSphere 社区主办的云原生 Meetup——KubeSphere and Friends 2021 杭州站 ,KubeSphere 架构师、KubeEdge 社区 Maintainer、Nebula Graph 图数据库工程师、资深 MySQL 内核研发SementFault(思否)CTO...
- **2.4 谁能成为测试架构师**:探讨了成为一名成功的测试架构师所需具备的技能和素质。 #### 第3章 如何让缺陷无处藏身 这一章重点关注如何提高软件产品的可测试性,从而更有效地发现和修复缺陷。 - **3.1 什么...
大数据架构师课程导读 1. bigdata_hadoop 2. bigdata_hive 3. bigdata_hbase 4. bigdata_hadoop_project 5. bigdata_redis 6. bigdata_zookeeper 7. bigdata_spark 课程大纲目录,持续更新中。。。 hadoop阶段: 1. ...
### 性能测试初识详解 #### 一、性能测试概览 性能测试是一种通过自动化工具模拟各种工作负载条件下的测试活动,旨在评估系统在正常、高峰和异常情况下的表现。这种测试的主要目的是识别并消除可能存在的性能瓶颈...
大数据分析架构师顶级培训课程\-大数据仓库Hive-大数据开发核心技术 - 大数据仓库Hive精讲 第1课 初识入门 第2课 深入使用 第3课 高级进阶————————————————课程大纲1、Hive体系结构2、Hive环境搭建3...
- **理解**:具备高级架构师的能力,能够设计复杂系统的架构。 - **知识点**: - 微服务架构:将大型应用程序分解为小型、独立的服务。 - 容器化技术:使用Docker等工具实现应用程序的轻量级虚拟化。 综上所述...
### 循序渐进Linux:运维架构师之旅 #### 第一章:服务器硬件的那些事儿 ##### 计算机的组成及分类 - **组成部分**:计算机由CPU、内存、硬盘、主板、网卡和输入输出设备等核心部件组成。 - **决定因素**:计算机...
- **计算机软件**:涵盖了操作系统、数据库管理系统等软件系统的原理与应用。 - **新技术**:关注云计算、大数据处理、物联网等前沿技术的应用和发展趋势。 **3. 网络计算专题** - **IP地址计算**:包括子网划分、...
这本书提供了软件架构师和工程师们深入了解C++模板特性的机会,并教会他们如何有效地利用这些特性来构建更干净、更快以及更智能的软件。 #### 目录概述 本书分为三个部分: 1. **基础部分**(Part I: The Basics...
适用人群:适合对Redis感兴趣的开发人员、系统架构师、数据库工程师以及希望深入学习Redis应用和优化的技术人员。 使用场景及目标:通过《Redis 6 开发与实战》配套PPT,读者可以系统学习Redis的各个方面知识,包括...
- **简介**:随着经验的积累和技术水平的提高,程序员开始向系统架构师的角色转变,负责整体系统的规划和设计。 - **特点**: - 理解业务需求,并能据此设计出合理的系统架构。 - 关注系统的性能、可扩展性和安全...
- **服务器技术变化**:可扩展架构,易于定制第三方服务器模型。 - **操作系统变更**:支持 Windows 和 Macintosh 系统。 3. **适应不同经验水平的设计者**: - 新手友好界面,快速上手设计简单网页。 - 经验...
大数据分析架构师顶级培训课程\-大数据仓库Hive-大数据开发核心技术 - 大数据仓库Hive精讲第1课 初识入门第2课 深入使用第3课 高级进阶