博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
软件架构设计
阅读量:4041 次
发布时间:2019-05-24

本文共 4133 字,大约阅读时间需要 13 分钟。

总述:软件架构设计以系统整体为基本点,然后考虑系统的需求,最后根据系统的特点进行系统技术选型和确定基本系统的基本结构。软件架构设计的立足点是从软件整体为基准,所以必须跳出模块、子系统等视角,这也决定了必须有系统整体性的观点才能降低这部分的认知难度,否则跟天书一样,觉得跟系统设计没什么区别,好像还重复了。

 

1.构件和软件复用

答:软件架构是解决系统结构和需求向实现平坦过度的问题而提出的概念。构件也称为组件,是一个功能相对独立的具有可复用价值的软件单元。软件复用的形式分为垂直式复用和水平式复用。水平式复用是复用不同应用领域中的软件元素,如数据结构、排序算法等。垂直式复用是在一类具有较多公共性的应用领域之间复用软件构件,其主要关键点在于领域分析,即根据应用领域的特征和相似性预测构件的可复用性。

主流构件标准有CORBA、COM、DCOM(分布式构件对象模型)、EJB。CORBA的对象管理机构中,ORM是一个关键的通信机制,它以实现互操作性为主要目标,处理对象之间的消息分布。DCOM是对COM的无缝扩展。

存在大量可复用的构件是使用复用技术的前提,对构件的管理是成功复用构件的必要保证。构件可以通过现有构件、遗留工程、市场购买、开发等途径获取。目前已有的构件分类方法大致分为三类:关键字分类法、刻面分类法、超文本组织方法。关键字分类法将应用领域的概念按照从抽象到具体的顺序逐次分解为树形或有向无回路图结构,每个概念用一个描述性关键字表示。刻面分类法定义若干用于刻画构件特征的刻面,每个面包含若干概念,这些概念描述构件在刻画上的特征。超文本方法是将构件配以详细的功能或行为文档,文档以其中重要的概念或构件进行网状链接方式连接,检索者在阅读文档的过程中可以按人类联想思维方式进行跳转到包含相关概念或勾践剑的文档,全文检索系统将用户给出的关键字和说明文档中文字匹配,实现构件的浏览式检索。构件库系统是一个开放的公共构件共享的资源库,因其功能需要对访问者做出限制以保证数据安全。一般来说,公共构件库系统包含五类用户,分别是注册用户、公共用户、构件提交者、普通管理员、超级管理员。

构件在复用时,先检索和提取构件,然后理解与评价构件,如果有必要则修改构件,最后将构件组装到新的系统中。构件的组装技术大致分为三类:基于功能的组装技术、基于数据的组装技术、面向对象的组装技术。基于功能的组装技术采用子程序调用和参数传递的方式;基于数据的组装先根据当前软件问题的核心数据结构设计一个框架,然后根据框架中各节点的需求提取构件并进行适应性修改,再将构件逐个分配至框架适当位置;面向对象组装技术根据封装和继承的特征进行组装。

 

2.软件架构概述

答:软件架构为软件系统提供一个结构、行为、属性的高级抽象,由构件的描述、构件的相互作用、指导构件集成的模式以及这些模式的约束组成。软件架构研究主要内容包括软件架构描述、软件架构风格、软件架构评估、软件架构形式化方法等。解决软件的复用、质量、维护问题是研究软件架构的根本目的。

 

3.软件架构建模

答:软件架构建模是用来描述软件架构设计的,用结构模型、框架模型、动态模型、过程模型、功能模型这五种模型从不同侧重上进行描述。这些模型中最常用的是结构模型和动态模型。“4+1”视图模型是基于前面5种模型结合产生的,主要包括逻辑视图、开发视图、进程视图、物理视图、场景。

 

4.软件架构风格

答:软件架构风格是描述某一个特定应用领域中系统组织方式的惯用模式。常见的软件架构风格分为数据流风格、调用/返回风格、独立构件风格、虚拟机风格、仓库风格。数据流风格包括批处理序列、管道/过滤器两种风格;调用/返回风格包括主程序/子程序、数据抽象和面向对象、层次结构;独立构件风格包括进程通信、事件驱动;虚拟机风格包括解释器、基于规则的系统;仓库风格包括数据库系统、黑板系统、超文本系统。

RIA(富客户端)是改善B/S架构的一种演变,常见的富客户端的客户端实现技术有Flex、Bindows、Java、Laszlo、XUL、Avalon。

 

5.面向服务的架构

答:面向服务架构(SOA)还没有统一的定义,比较典型的有三种定义:第一种是W3C的定义,SOA是一种应用程序架构,在架构中所有功能都定义为独立服务,这些服务带有定义明确的可调用接口,能够以定义好的顺序调用这些服务形成业务流程;第二种是Service-architecture.com的定义,服务是精确定义、封装完善、独立于其他服务所处环境和状态的函数;第三种是Garther的定义,SOA是一种C/S架构的软件设计方法,应用由服务和服务使用者组成,着重强调构件的松耦合,并使用独立的标准接口。SOA是一种在计算环境中设计、开发、部署、管理离散逻辑单元(服务)模型的方法。

SOA的一般设计原则有:明确定义的接口、自包含和模块化、粗粒度、松耦合、互操作性。SOA的关键技术有UDDI、WSDL、SOAP、REST,这些技术都是基于XML发展起来的。实现SOA的主流方式有Web Service、企业服务总线、服务注册表。Web Service的解决方案中,除了必需的服务提供者和服务请求者外,还有一个可选的服务注册中心。在采用Web Service作为SAO的实现技术时,应用系统大致分为底层传输层、服务通信协议层、服务描述层、服务层、业务流程层、服务注册层这6个层次。服务注册表可以提供服务注册、服务位置、服务绑定等支持。企业服务总线是SOA为了客户大规模服务请求者和服务提供者端到端交互的解决方案,ESB作为中间件技术是实现和支持SOA的一组基础架构,是企业服务总线的一种方案。

 

6.软件架构评估

答:敏感点是一个或多个构件的特性。权衡点是影响多个质量属性的特征,是多个质量属性的敏感点。目前已有的软件架构评估技术主要分为三类,分别是基于问卷(或检查边)调查、基于场景方式、基于度量方式。基于调查问卷评估是评估人员根据自己对架构的主管推断填写问卷,形成调查结果,重点在于评估人员的水平。基于场景的评估方式主要应用在架构权衡分析法(ATAM)、软件架构分析法(SAAM)、成本效益分析法(CBAM)中,评估过程中一般采用刺激、环境、响应三方面对场景进行描述。基于度量的评估方式是对架构的某些属性做一些数值指标,通过数值指标测量得出的结果进行评估。

ATAM评估方法中主要的评估者是评估小组、项目决策者、项目干系人。ATAM评估过程分为九个步骤:描述ATAM方法;描述业务动机;描述架构;确定架构方法;生成质量属性效用树;分析架构方法;讨论场景和对场景分级;分析架构方法或者测试;描述评估结果。

CBAM方法的基本思想是架构策略和系统的质量属性相互影响,其主要评估步骤如下:整理场景、对场景进行细化、确定场景的优先级、分配效用、确定期望的质量属性响应级别的效用、计算各架构策略的总收益、根据受成本限制影响的投资收益率选择架构策略。

SAAM方法是验证基本的架构假设和原则,评估架构的固有风险。SAAM方法不仅可以评估架构对特定系统需求的使用能力,也可以比较不同的架构。SAAM方法的评估步骤有:形成场景、描述架构、对场景的分类和确定优先级、对场景进行单个评估、评估场景的相互作用、形成总体评估。SAAM方法评估结果的主要有形输出包括两个方面的内容:1、未来可更改场景与架构对应,描述架构变动的工作量;2、理解系统功能,对多个架构支持的功能和数量进行比较。

 

7、软件产品线

答:软件产品线是一个产品集合,其中的产品共享一个公共的、可管理的特征集。软件产品线主要有核心资源和产品集合组成。核心资源是领域工程所有结果的集合,是产品线中产品构造的基础。软件产品的过程模型主要有双生命周期模型、SEI模型、三生命周期模型。

双生命周期模型分为两个重叠的生命周期,分别是领域工程和应用工程。领域阶段的主要任务有:领域分析、领域设计、领域实现。应用工程在领域工程结果的基础上构造新产品,应用工程的阶段有:需求分析、系统设计、系统实现。应用工程将产品线资源不满足的需求返回给领域工程,以检验是否将之并入产品线需求中。领域工程从应用工程中获得反馈或结合新产品的需求,进入又一次周期性发展,称此为产品线演化。

SEI将产品线的基本活动分为核心资源开发(领域工程)、产品开发(应用工程)、管理三个部分。产品线开发包括核心资源库开发和使用核心资源库开发产品,这两者都需要技术和组织管理。SEI模型的主要特点有:循环重复是产品线开发过程的特征,也是核心资源开发、产品开发、核心资源和产品之间协作的特征;核心资源开发和产品开发没有先后之分;管理活动协调整个产品线开发过程的各个活动,对产品线成败负责;核心资源开发和产品开发是两个互动的过程,三个活动和整个产品线开发也是双向互动的。

三生命周期模型是对双生命周期模型的一种改进,主要针对大型软件企业的软件产品线开发。主要改进体现在:增加了企业工程流程,包含了运作计划、市场计划、企业架构计划;领域工程阶段增加了产品线确定作为起始阶段,在领域分析阶段增加了市场分析的任务内容,和领域分析、架构开发、基础设施开发阶段组成整个领域工程;应用工程增加了业务/市场分析与规划;在领域工程和应用工程质检的双向交互中添加了核心资源管理作为桥梁;核心资源管理和领域工程、应用工程质检的支持和交互是双向的。

采用产品线方式开发软件时,开发人员可以划分为两组,分别是负责核心资源、产品。软件产品线的建立通常有四种方式,按引入产品线开发过程分为演化方式和革命方式,按企业开发产品线的基础是现有产品还是全新的产品线,组合分为四种。产品线发展过程有三个阶段,分别是开发阶段、配置分发阶段、演化阶段。引起产品线架构演化的原因有:产品线与技术变化的协调、现有问题的改正、新功能的增加、对现有功能的充足以允许更多的变化等。产品线演化的包括核心资源的演化、产品的演化、产品的版本升级。企业成功实施产品线主要取决于:对实施产品线领域具有长期和深厚的经验;一个用户构件产品的优良核心资源库;好的产品线架构;好的管理支持。

转载地址:http://lqpdi.baihongyu.com/

你可能感兴趣的文章
linux内核学习(7)脱胎换骨解压缩的内核
查看>>
以太网基础知识
查看>>
慢慢欣赏linux 内核模块引用
查看>>
kprobe学习
查看>>
慢慢欣赏linux phy驱动初始化2
查看>>
慢慢欣赏linux CPU占用率学习
查看>>
2020年终总结
查看>>
linux内核学习(4)建立正式内核的页式内存映射, 以x86 32位模式为例
查看>>
Homebrew指令集
查看>>
React Native(一):搭建开发环境、出Hello World
查看>>
React Native(二):属性、状态
查看>>
JSX使用总结
查看>>
React Native(四):布局(使用Flexbox)
查看>>
React Native(七):Android双击Back键退出应用
查看>>
Android自定义apk名称、版本号自增
查看>>
adb command not found
查看>>
Xcode 启动页面禁用和显示
查看>>
【剑指offer】q50:树中结点的最近祖先
查看>>
二叉树的非递归遍历
查看>>
【leetcode】Reorder List (python)
查看>>