《高级软件架构师讲义》学习笔记1
最近从CSDN的下载频道上DOWN下了一份高级软件架构师讲义,将阅读时做的笔记发上来。有兴趣的朋友可以去CSDN的下载频道搜搜“高级软件架构师”应该就可以看见。
第一章架构师与设计师
面向对象应用建模(Application Modeling)的实践过程有3个阶段:
1. 有步骤、分层次地演进系统构架
2. 将软件需求逐渐转变为软件的设计方案
3. 保障软件的设计方案能够适应实施环境
应用建模实践过程由五项“任务”组成:
1. 全局分析
2. 局部分析
3. 全局设计
4. 局部设计
5. 细节设计
这其中,前两项任务以分析为核心;后三项任务以设计为核心。
参与应用建模的人员主要分成两类角色:系统构架师和设计师。
系统架构师职责:
1. 系统构架师负责领导和协调整个项目中的技术活动。
2. 在个人综合素养方面,系统构架师应该具有领导才能,能够在压力下作出关键性的决策并善始善终;
3. 能够赢得项目经理、客户、用户群体以及管理团队的认同和尊敬,尤其要善于和项目经理紧密协作;
4. 在各个方面都能展现出面向目标的实干作风。在专业技能方面,与其他角色相比,系统构架师通常具有全方位的技能,其见解重在广度,而不是深度。
5. 系统构架师不仅需要具备设计师的各项技能,而且应该具有问题领域和软件工程领域的实践经验,从而有能力在无法获得完整信息的情况下迅速领会问题并根据经验作出审慎的判断。
6. 如果项目较大,系统构架师将是一个团队,上述的关键素质要求可由团队成员来分担,但其中要有一名系统构架师具有足够的权威。(这一点和曾经在《人月神话》中看到的观点一致:应该组建一只像外科手术队伍一样组织的团队,主刀医生拥有一定“贵族“的特权来总领工作)
设计师职责:设计师的工作对象通常是系统的局部或者细节。设计师应该掌握的技能包括
1. 理解以Use Case建模技术捕获和描述的软件需求;
2. 在系统构架师的统一协调下,应用UML进行局部的面向对象分析和设计;
3. 了解主流的实施技术(程序设计语言和开发环境)。
区别这两者的职责:
系统构架师负责全局性的分析和设计问题,设计师负责局部性的分析和设计问题以及细节性的设计问题。
实践过程中并没有采用单一、的自项向下的策略(从全局到局部),而是在一个迭代中完成两次全局和局部的.过渡,每一次过渡都为系统构架师和设计师之间提供了沟通的机会,在本质上,为提升设计的质量和完整性创造了有利的客观条件。
系统架构师主要负责全局分析,全局分析包括:
1. 选用构架模式
2. 识别关键抽象
3. 标识分析机制
4. 选定分析局部
5. 确定核心元素
6. 引入外围元素
7. 优化组织结构
系统设计师主要负责局部分析,局部分析包括:
1. 提取分析类
2. 转述需求场景
3. 整理分析类
4. 实现需求场景
5. 实现子系统接口
6. 明确类之间关系
7. 精细属性与操作