20181118-软件开发架构6

学习目标
  听<软件架构相关音频>软件开发架构一节 
 
  待解决问题
  构件的概念 ?
    构件是面向软件体系架构的可复用软件模块。构件(component)是可复用的软件组成成份,可被用来构造其他软件。它可以是被封装的对象类、类树、一些功能.
  如何表达一个项目的架构,用什么图表?
  架构设计作为一个系统开发的中间产品,交付的是什么内容?
  各种架构风格的适用场景?
  互联网应用  BS架构的应用  ria 富互联网是什么意思?  
 
  学习内容
特定领域软件架构
领域分析
这个阶段的主要目标是获得领域模型(Domain Model).领域模型描述领域中系统之间共同的需求.领域模型所描述的需求陈曾为领域需求
准备性活动: 
定义领域边界-->从而明确分析的对象
识别信息源    -->即领域分析和整个领域工程中信息的来源.可能的信息源包括现存系统,技术文献,问题域和系统开发的专家 用户需求和市场分析,领域演化的历史记录等.
分析领域中系统的需求,确定哪些需求是被领域中的系统广泛共享的,从而建立领域模型.
领域设计

目标:获得DSSA(特定领域软件架构)
这个阶段通过获得DSSA,也就同时形成了重用基础设施的规约.
领域实现
 
目标:依据领域模型和DSSA开发和组织可重新信息.这些可重新信息可能是从现有系统中提取出来的,也可能是需要通过新的开发得到
参与的人员:领域实现人员 领域设计人员 领域分析人员 领域专家
 
      以上的过程是一个反复的,逐渐求精的过程.
 
 
建立过程(5个阶段及其目标)
  • 定义领域范围->确定什么在感兴趣的领域中及本过程导何时结束.
  • 定义领域特定的元素->编译领域字典和领域术语的同义词词典.
  • 定义领域特定的设计和实现需求约束->描述解空间中有差别的特性.
  • 定义领域模型和架构->产生一般的架构,并说明构成他们的模块或构件的语义和语法.
  • 产生 搜集可重用的产品单元->为DSSA增加构件使得它可以被用来产生问题域中的新应用.
建立的过程是并发的,递归的和反复进行的. 
三层次系统模型
 
 
 
 
基于架构的软件开发方法(ABSD)
 
1、架构需求
技术环境,设计师的经验影响 
建立分析原型(类图 打包 构件) 标识构件
需求评审(需求库--重用的系统)??已完成这么多项目,需求库在哪里------是否可以从文档划分需求库??
2、架构设计
    提出架构模型(选择符合风格)
    影射构件 影射到架构当中 
        三层架构为例
            表示层 数据层 业务层分别于有哪些构件
     分析构件之间的相互作用;
    设计
    评审
3、架构文档化
    从使用的角度进行编写
    各个系统之间通信的文件
4、架构复审
    外部人员参加的评审-标识潜在风险
5、架构实现
    用实体显示出架构 分过程构建
    架构说明书 系统构件及实现(构件库)
6、架构演化
    使用过程中,进行软件演化(修改软件架构)
    需求变化--标记构件--创建新构件/修改构件
    
    更新构件
    更新构件的相关关系
    新的构件
迭代思想
 
基于架构的软件开发方法--比如:可视化建模方法(UML类图)
架构的选择是一个系统的保障
 
软件架构评估
对象:质量属性(27个属性)
可用性:是指系统能够正常运行的时间比例.
常见的策略:错误检测技术(命令/响应 心跳 异常) 错误恢复(表绝 冗余) 错误预防(定期充值 进程监视器)
 
可修改性:是指能够快速的以较高的性能价格比对系统进行变更的能力.
常见的策略:局部化修改(维持语义的一致性,预期期望的变更 泛化该模块)   防止连锁反映(信息隐藏 维持现有的接口 限制通信路径)
 
性能:是系统的相应能力,既要经过多长时间才能对某个时间作出响应,或者再某段时间内系统所能处理时间的个数.
常见的策略:资源需求(提高计算效率 减少计算开销 管理时间率 限制执行时间) 资源管理方面(引入并发 维持数据或计算的多个副本 增加可用资源) 资源仲裁方面(先进显出 固定优先级调度 动态优先级调度)
 
安全性:是指系统向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力.
策略:抵抗攻击(对用户进行身份验证呢个 对用户进行授权 维护数据的机密性 限制暴露的信息 限制访问)  检测攻击  从攻击中恢复
 
可测试性:是指软件发现故障并隔离,定位其故障的能力特性,以及在一定的时间和成本前提下,进行测试设计,测试执行的能力.
策略:将接口与实现分离  特化访问接口
 
易用性:是衡量用户使用一个软件产品完成制定任务的难以程度.
 
软件架构评估
    方法:
基于场景的评估方法(主要使用的方法 \)
1、分析方面[三种分析法]
ATAM(架构权衡分析法 Architecture Tradeoff Analysis Method)
1、评估参与者(3种人员)
  • 评估小组
  • 项目决策者
  • 其他项目干系人
2、评估活动(9个步骤)
 
CBAM(成本效率分析法 Cost Benefit Analysis Method)
概念:用来对架构设计决策的成本和收益进行建模,其基本思想是架构策略影响系统的质量属性,反过来这些质量属性又会为系统的项目干系人带来一些效益. CRAM协助项目干系人根据其投资收益率选择架构策略.
评估步骤:
  • 整理场景
  • 对场景进行细化
  • 确定场景的优先级
  • 分配效用
  • 确定期望的质量属性响应级别的效用
  • 计算各种架构策略的总收益
  • 根据受成本限制影响的投资收益率来选择架构策略.
 
SAAM(软件架构分析法 Software Architecture Analysis Method)
步骤:(6个步骤)
 
  
评估结果
1 把代表了未来肯呢个做的更改的场景与架构对应起来,显现出架构中未来可能表现出较高复杂性的地方,并对每个这样的更改的预期工作量作出评估.
2 理解系统的功能 对多个架构所支持的功能和数量作出评估
 
软件产品线(Software Product LIne)
 
类似于 硬件制造 汽车生产
概念:
       是一个产品集合,这些产品共享一个公共的,可管理的特征集,这个特征集能满足特定领域的特定需求.
优势
 提高软件生产率和质量
缩短开发时间
降低总开发成本
组成
核心资源
产品集合 
 
双生命周期模型
领域工程阶段
应用工程阶段
 
SEI模型
基本活动:核心资源开发(领域工程)  产品开发(应用工程)  管理
 
三生命周期模型
主要针对发行软件企业的软件产品线开发
 
产品线的建立方式(4种方式)
 
  演化方式 革命方式
基于现有产品 基于现有产品架构设计产品线的架构,经演化现有构件,开发产品线构件 核心资源的开发基于现有产品集的需求和可与测的,将来需求的超集
全新产品线 产品线核心资源岁产品新成员的需求而演化 开发满足所有预期产品线成员的需求的核心资源
     
 
发展过程有3个阶段
  • 开发阶段
  • 配置分发阶段
  • 演化阶段

成功实施产品线的因素

对要实施产品线的领域具备长期和身后的经验

一个用于构建产品的好的核心资源库

好的产品线架构

好的管理(软件资源 人员组织和过程等)支持

     
 
 
    
 
 
 
 

猜你喜欢

转载自www.cnblogs.com/lin888/p/9980326.html