`

应用程序架构指南 第一部分 第一章 应用程序架构基础

阅读更多



 软件架构基本概念
 

软件架构通常被描述为组织或系统的结构,而系统是一个完成特定功能或功能集合的组件集合。换句话说,架构的重点是组织组件以支持特定功能。这种功能的组织被称为将组件分组以纳入到关注领域。 

为什么我们需要架构? 

像任何其他复杂的结构一样,软件必须建立在坚实的基础。没有考虑关键情景,没有为共同的问题做设计,或没有充分意识到关键决定带来的长期后果,都可以使你的应用程序处于危险之中。现代的工具和平台有助于简化应用程序的构建任务,但它们并没有取代根据您的具体情况设计应用程序的需求。拙劣的架构暴露的风险包括软件是不稳定的,不能支持业务需求,或者部署到生产环境时,应用程序甚至可能无法工作。 

构思软件架构时,考虑下面的高层次的关注:

>应用程序会怎样部署到生产环境?

>用户将如何使用该应用程序?

>质量属性要求是什么,例如安全性,性能,并发性,国际化和配置?

>架构的趋势是什么,是现在还是部署后,可能影响应用程序?

架构的目标

应用程序架构寻求在业务需求和技术需求之间构建一个梁,通过理解用例,然后想方设法在软件中实现这些用例。架构的目标是确定影响应用程序结构的需求。良好的架构通过构建一个技术解决方案降低业务风险。优秀的设计具有足够的灵活性,以便能够处理,随着时间的流逝,将发生在硬件和软件技术,以及用户场景和需求上的自然的变化。架构师必须考虑设计决策,质量属性之间的内在权衡(如性能和安全性),以及需要讨论用户,系统和业务需求的权衡的全部影响。

记住,架构应该:

>暴露系统的结构,但隐藏实现的细节。

>实现所有的用例场景。

>尝试解决各种各样的利益相关者的关注问题。

>既处理功能需求,也处理质量需求。

架构方法

有任何架构必须解决的关键决策,不管架构方法。至少,你必须确定您正在构建的应用程序类型,将要使用的架构风格,以及你将如何处理横切关注点(cross-cutting concerns)。本指南中,我们为框架使用了架构基准,通过必须在架构中处理的不同领域。架构基准显示在下面的图表。 



 

除了架构基准之外,可以使用下面的方法来帮助确定您的体系结构。第一步是确定你计划构建的应用程序类型。接下来,您必须了解应用程序将被怎样部署。一旦你知道您正在构建的应用程序是什么类型,和如何部署,你可以开始往下考虑架构,以便确定您将使用的风格和技术。最后,你必须考虑如何将质量属性和横切关注点(cross-cutting concerns)纳入您的系统设计。 

 

横切关注点表示设计中的关键领域,它不关联于应用程序中某一个具体的层。例如,您可能希望在表示层,业务层和数据访问层缓存数据。关键的横切关注点: 认证,授权,缓存,通信,异常管理,检测和日志。 

设计架构

创建一个灵活的架构设计,考虑以下问题:

>什么是架构的基础部分,如果它们出错了,就代表着最大的风险?

>架构的哪部分,最有可能发生变化,或哪部分的设计,可以推迟到后来有很小的影响再处理?

>什么是您的主要假设,以及你将如何测试它们?

>哪些条件可能需要你重构设计?

关键架构原则 

设计架构时,考虑以下主要原则:

>持续改变。只要有可能,设计应用程序使它可以随时间发生改变以处理新的需求和挑战。

>分析模型并减少风险。使用威胁模型来理解风险和脆弱点。在适当情况下,使用设计工具和建模系统,如统一建模语言(UML)。

>模型和视图是沟通和协作工具。设计原则和设计变更的有效的沟通对好架构是至关重要的。使用模型和其他可视化的工具有效的沟通设计,使设计变更快速沟通。

>确定关键工程决策.使用本指南中的架构框架,理解关键工程决策和最常出现错误的领域。在第一时间获得这些关键决策,使该设计更为灵活,并不太可能被变化破坏。

  • 大小: 31.5 KB
分享到:
评论

相关推荐

    Windows2000 服务器端应用程序开发设计指南

    JAWS:高性能Web服务器构架 08-06-13 ACE应用-第3章 应用模式语言开发可扩展ORB中间件 08-05-06 编程精粹 - 多年前的笔记 08-05-06 Windows2000 服务器端应用程序开发设计指南-目录 08-05-06 Win2000服务器端应用...

    autocad完全应用指南.autolisp+dcl+visuallisp程序设计篇(2011年4月第一版).part4.rar

    第一章autolisp主角潇洒登场 第二章autolisp的关键、基本结构与语法 第三章快速分类浏览autolisp功能函数 第四章新手上路(一)——万丈高楼平地起 第五章新手上路(二)——参数设计关键技巧 第六章对象属性的取得与活...

    AutoCAD完全应用指南—AutoLISP DCL Visual LISP程序设计篇(随书光盘)

    第1篇(第1~10章)为autollsp程序设计基础篇,主要介绍了autollsp的基本结构、语法、功能函数、对象属性、循环、判断式、子程序、选择集、符号表、读文件以及写文件等autolisp程序设计的相关知识与技巧。第2篇(第11章...

    autocad完全应用指南.autolisp+dcl+visuallisp程序设计篇(2011年4月第一版).part1.rar

    第一章autolisp主角潇洒登场 第二章autolisp的关键、基本结构与语法 第三章快速分类浏览autolisp功能函数 第四章新手上路(一)——万丈高楼平地起 第五章新手上路(二)——参数设计关键技巧 第六章对象属性的取得与活...

    《高质量程序设计指南》林锐.rar

    第一章 高质量软件开发之道 第二章 做好程序员 第三章 编程语言发展简史 第四章 C++面向对象程序设计方法概述 第二部分 C++/C编程规范 第五章 文件结构 第六章 程序的版式 第七章 命名规则 第八章 表达式与基本语句 ...

    LINUX应用程序开发指南:使用GTK+ GNOME库

    第一部分介绍Linux GUI编程架构以及编程基础知识,第二部分介绍Linux 编程常用C语言函数库glibc、构件库Gtk+、Gnome,第三部分介绍Linux下的GUI生成器Glade,第四部分介绍Linux编程调试工具gdb及xxgdb。第五部分包括...

    autocad完全应用指南.autolisp+dcl+visuallisp程序设计篇(2011年4月第一版).part3.rar

    第一章autolisp主角潇洒登场 第二章autolisp的关键、基本结构与语法 第三章快速分类浏览autolisp功能函数 第四章新手上路(一)——万丈高楼平地起 第五章新手上路(二)——参数设计关键技巧 第六章对象属性的取得与活...

    autocad完全应用指南.autolisp+dcl+visuallisp程序设计篇(2011年4月第一版).part2.rar

    第一章autolisp主角潇洒登场 第二章autolisp的关键、基本结构与语法 第三章快速分类浏览autolisp功能函数 第四章新手上路(一)——万丈高楼平地起 第五章新手上路(二)——参数设计关键技巧 第六章对象属性的取得与活...

    Linux应用程序开发指南

    第一部分介绍Linux GUI编程架构以及编程基础知识,第二部分介绍Linux 编程常用C语言函数库glibc、构件库Gtk+、Gnome,第三部分介绍Linux下的GUI生成器Glade,第四部分介绍Linux编程调试工具gdb及xxgdb。第五部分包括...

    linux应用程序开发指南 使用gtk+ gnome库

    第一部分介绍Linux GUI编程架构以及编程基础知识,第二部分介绍Linux 编程常用C语言函数库glibc、构件库Gtk+、Gnome,第三部分介绍Linux下的GUI生成器Glade,第四部分介绍Linux编程调试工具gdb及xxgdb。第五部分包括...

    win2000驱动程序设计指南

    图形驱动程序 第2部分 显示器及视频微端口驱动程序 第3部分 打印机驱动程序及假脱机打印部件 <br>第五卷 网络驱动程序设计指南 1 第一部分 网络驱动程序 2 第一章 网络驱动程序设计指南的向导 3 ...

    LINUX应用程序开发指南:使用GTK+ GNOME库pdf.zip

    第一部分介绍Linux GUI编程架构以及编程基础知识,第二部分介绍Linux 编程常用C语言函数库glibc、构件库Gtk+、Gnome,第三部分介绍Linux下的GUI生成器Glade,第四部分介绍Linux编程调试工具gdb及xxgdb。第五部分包括...

    构建安全的 ASP.NET 应用程序(中文译作+英文原作)

    应用程序架构设计师一定要阅读第 3 章,这一章提供了一些有关跨 Web 应用程序的不同层设计身份验证和授权策略的重要知识。第 I 部分提供了一些基本资料,这些资料可帮助您充分理解并应用本指南其他章节中的知识。 本...

    Android程序设计基础

     第一部分中将首先介绍Android,内容涉及如何安装Android模拟器,如何使用IDE(Intergrated Development Environment,集成开发环境)编写第一个程序。然后,我们将介绍一些基本的概念,比如Android中的生命周期。...

    Android移动应用开发(第3版)卷Ⅰ基础篇 (Shane Conder, Lauren Darcey) PDF扫描版

    第3章 编写第一个Android应用程序  第4章 掌握Android开发工具  第二部分 Android应用程序设计基础 第5章 剖析Android应用程序  第6章 使用Android Manifest文件定义应用程序  第7章 管理应用程序资源  ...

    LINUX应用程序开发指南:使用GTK+ GNOME库(一)

    第一部分介绍Linux GUI编程架构以及编程基础知识,第二部分介绍Linux 编程常用C语言函数库glibc、构件库Gtk+、Gnome,第三部分介绍Linux下的GUI生成器Glade,第四部分介绍Linux编程调试工具gdb及xxgdb。第五部分包括...

    一线架构师实践指南

    第4章 需求结构化与分析约束影响 第5章 确定关键质量与关键功能 第Ⅱ部分 Conceptual Architecture阶段 第6章 概念架构的故事 第7章 Conceptual Architecture总论 第8章 初步设计 第9章 高层分割 第10章 考虑...

    网络驱动程序设计指南

    第一章 网络驱动程序设计指南的向导 3 第二章 内核模式驱动程序的网络结构 6 2.1 Windows 2000 网络结构和OSI模型 6 2.2 NDIS驱动程序 7 2.2.1 NDIS微端口驱动程序 7 2.2.2 NDIS中间层驱动程序 8 2.2.3 NDIS协议驱动...

    Linux程序设计参考书-六部

    ioctl第6章Linux进程间通信第7章声音编程第8章字符单元图形第9章I/O端口编程第10章把应用程序移植到Linux上附录以字母顺序排列的系统调用第四部Linux内核概念系统结构第1章系统结构第2章子系统的系统结构第3章结论...

Global site tag (gtag.js) - Google Analytics