关注点分离、EssUP、SOA和项目管理

 

关注点分离(Separation of concerns,SOC

关注点是指对软件工程有意义的、小的、可管理的、可描述的软件组成部分,一个关注点通常只同一个特定概念或目标相关联。关注点分离(Separation of concerns,SOC)是指标识、封装和操纵关注点的能力,是处理复杂性的一个原则。由于关注点混杂在一起会导致复杂性大大增加,所以能够把不同的关注点分离开来,分别处理就成为了处理复杂性的一个原则、一种方法。关注点分离是面向方面编程(AOP)和面向方面软件开发(AOSD)的核心概念。分离关注点使得解决特定领域问题的代码从业务逻辑中独立出来,业务逻辑的代码中不再含有针对特定领域问题代码的调用,业务逻辑同特定领域问题的关系通过方面来封装和维护,这样原本分散在在整个应用程序中的变动就可以很好的管理起来。
 

关注点分离、EssUPSOA

关注点分离是SOA的核心原则,这意味着EssUP和SOA在理论基础方面具有相同的方法论。当我们考察SOA时,就可以发现SOA的许多原则可以应用到EssUP中,简单归纳如下:
SOA 的一般原则
EssUP 中的应用
服务是可复用的
重用最佳实践
服务是松散耦合的
实践相互独立
服务抽象底层逻辑
实践具有相同的简化的高层视图,每个实践都是从目的、制件、关键能力和工作任务出发的
服务是可组合的
实践可以相互组合
服务是自治的
每个实践可以单独使用,不依赖于其他实践
服务是可发现的
智能代理技术
服务的兼容性是基于策略的
实践的替换基于过程对实践的应用策略
面向文档
Card和Card Board
服务共享一个正式的契约
?
 
SOA 已经成了构建企业 IT 基础设施的一种架构思想,其根本目的是为了实现企业应用的灵活性。软件开发是人类智力高度密集的行业,开发过程管理始终是难度最高的管理实践之一,笨重繁琐的过程已经证明是行不通的,而敏捷方法又过于依赖专家级技术人员。 EssUP 为我们提供了一个解决问题的新视角,那就是在软件开发过程管理领域引入 SOA 的观念。我们可以使用 SOA 领域日渐成熟的原则、方法、实践甚至是工具来不断完善我们的 EssUP 工具箱,从而达到我们梦寐以求的灵活性,同时又不会失去过程的可控性。
 

关注点分离、EssUPAOP

EssUP是关注点分离思想进入软件开发过程领域的一种实践,在面向方面编程(AOP)中关注点分离则是其核心概念,这使两者具有了一定的可比性。
 
下表是 EssUP 和AOP 中相关概念的对照。
EssUP 中的实践(Practice
AOP 中的方面(Aspect
分离各种实践是为了更好的组织这些实践
分离Aspect为了更好的组织这些Aspect
实践独立于另一个实践
Aspect独立于另一个Aspect
实践可以相互组合
Aspect可以相互组合
各种不同的实践可以看作不同的方面,大多彼此独立,比如TDD、结对编程、重构、软件构架、团队建设和迭代等等,实践跨越(横切)开发过程的整个生命周期。这就是说开发过程的每个阶段都有可能会涉及到相同的实践。
Aspect横切业务过程
实践需要进行分离
Aspect需要进行识别
并不需要所有的实践
Aspect不是必须的
其它实践来扩展核心实践
可以通过一个Aspect来扩展另外一个Aspect
相同作用的实践也可以替换,比如:Use Case和User Story。
相同作用的Aspect可以相互替换
可以开发新的实践,来扩展开发过程或者扩展某个实践
可以写新的Aspect
过程中使用实践,可以看作是很多实践的叠加效果
程序中使用Aspect,可以看作是很多切片不断叠加的效果
 
在ESSUP里有两个方向的分离,一个是Card Board这个方向的,从过程的结构方面入手进行方面的分离,每个Card Board可以看做是一个方面,需要使用相应的Cards去填充。另一个是Card这个方向的,从过程中的具体步骤入手进行方面的分离,每个Card也可以看作是能够相互独立的一个方面,这些方面成了过程的基础组成单元。
 

关注点分离和项目管理

分离关注点有助于项目管理中的分工,提高工作效率。“各司其职,分工合作”才是项目管理中最更要的理念。在软件工程中将一个大的系统分离成小的模块,不断地完善其功能,最后慢慢再整合成一个系统,如此才能完成客户的要求。一个Process是一个工作的模型,定义了“什么人在什么时间做什么事情”,这正是分解一个项目的关键。
 

从项目管理看SOA

SOA所处理的技术都没有新的知识。从技术方面来看,SOA并没有引入新的技术理念;软件工程角度来看,SOA是一个软件应用的过程;从管理的角度来看,SOA只是用另外一种方式来诠释企业应用。企业使用SOA的目的大多一样(比如降低成本,加速服务开发等),但是应对的环境却千变万化。
“质量不是 100% !”,软件做到 60% 的程度即可,再做多就是了增加了开发成本。只有控制好开发成本与周期,才能做出一个好的软件产品。 SOA 的作用就是让我们实现成品优,品质好,成本低的开发;在开发的过程中,要记得把必要的东西优先完成。 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值