|
Day 1
|
|
内容
|
|
|
主题一:架构设计遇到那些挑战?
1)如何应对系统内部紧耦合、高内聚?
2)如何应对系统架构试图不清晰?
|
分析当今软件架构设计中经常遇到的问题和挑战。对于系统内部紧耦合、高内聚造成的系统可维护性差、牵一发而动全身,系统的可扩展性差,对市场z的响应速度慢。 架构视图不清晰,缺乏对关键设计决策的记录。对于系统的架构设计蓝图只有少数几个人了解,系统不可学习、不可拆解。对于类似问题如何解决,讲师从以往的咨询项目中寻找一些启示。 |
主题二:如何分析软件系统的架构需求?
1)系统的架构需求从哪里来?
2)如何捕捉系统的架构需求?
3)如何应用系统的架构需求?
|
架构需求是系统需求的一个重要组成部分,但是在以往的开发或外包项目中由于缺乏经验或者缺乏专门的人负责,往往遭到忽视。导致之后无法进行系统、合理的架构设计阶段,系统做到哪里算哪里,缺乏架构设计的总结和推广,更谈不上架构评估。做出来的系统如铁板一块,难于做新一轮的改进和增量开发。 对于种种问题进行分析、小结,对症下药,讲解如何进行系统化地架构需求分析和记录的方法。
|
| |
|
下午
|
主题三:如何从用例分析中获得设计灵感?
1)为什么做系统用例?
2)系统用例分析对系统设计有何帮助?
3)如何做面向对象的分析、设计?
|
在开始架构设计时,很多团队会抱怨系统需求没有做好,缺乏开始架构设计的关键信息。可真实的情况确实如此吗?有什么好的方法可以将系统需求按照设计人员可以理解的方式描述出来?有面向对象的需求描述和分析方法吗?这种方法如何使用?设计人员确实能从中获取架构设计的灵感吗?这部分我们将以一个真实的案例向您娓娓道来。 |
主题四:为什么要引入纯应用
1)引入纯应用设计!
2)如何开展高效的纯应用设计?
3)纯应用设计对系统总体设计有何好处?
|
什么是纯应用设计?它与系统分析有什么关系?与总体设计又有什么关系?纯应用设计可以在开发人员的个人工作站上运行吗?如何进行纯应用设计?这些问题我们将一一向您讲解清楚,最后交给您的是一种简单实用的方法,帮您的团队做好从分析到设计的跨越这一步,为整个OOAD的顺利开展扫清障碍。 |
主题五:纯应用设计为架构和项目管理带来什么?
1)项目管理如何与系统设计结合?
2)项目任务如何有效地拆分、分配?
3)项目任务如何收回?
|
把纯应用设计和架构设计、项目管理结合起来,讲解纯应用设计如何在架构设计中带来高度的可扩展性,支持从单元测试到系统测试的迭代化展开。讲解纯应用设计如何使得项目可以进行合理的拆分,化解为一些可以独立的进行自我管理的时间盒,使得之前巨复杂的迭代式项目管理可以花落寻常百姓家。 |
| |
|
Day 2
|
|
内容
|
|
上午
|
主题六:如何开始扩展设计?
1)引入扩展设计?
2)有哪些具体的方法做扩展设计?
3)扩展设计应该做到什么样的程度?
|
扩展性做为优秀架构必然考虑的立足点,意义不仅在于使得系统具有可扩展性,更关键的是分离关注点,使得架构中的每一种质量要求,都可以独立的进行设计和在整体环境中得到综合考虑和权衡。因此如何开始扩展设计就成为我们在纯应用设计之后首先需要学习的要领。 |
主题七:如何处理应用扩展?
1)为什么要做应用扩展?
2)不做应用扩展会有什么影响?
3)具体有什么方法做应用扩展?
|
系统的扩展来自多个方面,做为用户首先要求的就是功能上的扩展,也就是我们所说的应用用例的扩展,这里的关键是区分做为独立的新增用例,还是做为扩展用例。他们由于与现有用例的关系不一样,设计思路和处理方法,甚至在项目管理中的迭代化分上都会产生不一样,因此应该作为重点进行学习。
|
|
主题八:如何处理基础设施扩展?
1)导入基础设施扩展?
2)为什么做基础设施扩展?
3)具体有什么方法做基础设施扩展?
4)做基础设施扩展对系统整体有何好处?
|
另外,还有系统非功能性方面的诸多考虑,比如:日志、安全性、处理表现、处理数据持久化等,每一个方面在我们的方法中被做为一个基础设施层的用例来考虑和分析。因此,掌握如何分离这些基础设施用例,由如何把这些基础设施用例叠加到每一个应用用例上成为这部分课程的关键。 |
主题九:如何处理平台扩展?
1)导入平台扩展?
2)为什么做平台扩展?
3)具体有什么方法做平台扩展? |
在一些大型项目中,软件平台、甚至中间件都是项目前期定好的,我们如何适应这些已经选好的平台技术,让他们的变化尽量小的影响整体架构,我们选择用架构设计模式来使得平台反向依赖于应用。因此,如何选择适合的设计模式?如何实现依赖倒置成为这部分的重点。 |
| |
|
下午
|
主题十:如何分离逻辑层与物理层?
1)重新定义系统逻辑层?
2)重新定义系统物理层?
3)高效分离逻辑层?
4)高效分离物理层?
|
在现有的大部分软件开发中,是只有物理层的划分,没有逻辑层的划分,或者说逻辑层的划分往往较弱。但实践中,我们越来越意识到逻辑层的重要性,它不仅使得逻辑结构在整个系统实现中保持稳定,加强了配置管理,同时也使得系统的物理节点可拆分能力增强,集群的设计能力增强。因此如何高效分离逻辑层与物理层也成为了架构课程中重要的一章。 |
主题十一:如何从设计之初考虑测试?
1)为什么在设计之初考虑测试?
2)如何在设计之初设计测试?
|
测试人员、甚至项目管理人员经常抱怨系统预留的测试时间不足,系统无法进行充分的测试就上线了。但实际情况并不是总体时间不够,而是没有安排好,或者说人们的测试优先的意识不够。没有完成测试设计的程序就没有完成设计这一点需要深入人心,特别是架构师需要深刻的理解这一点,组织好测试的设计。 |
主题十二:如何描述架构蓝图?
1)巅峰之作-架构蓝图?
2)如何描述架构设计蓝图?
|
架构蓝图是用来做什么的?它应该记录什么?很多团队在这一点上不能达成共识,甚至缺乏最基本的常识。这一讲,我们将带领学员参与到架构蓝图的绘制中,看一看标准的架构蓝图应该如何绘制。 |
主题十三:如何迭代化地评估架构设计?
1)架构设计的评估标准从何而来?
2)如何组织架构设计的评估?
|
架构设计的评估标准从何而来?如何组织架构设计的评估?这常常是困扰无数组织,在项目的技术评审中花费资源最多而效果最差的评估。关键的一点就是缺乏一套系统化的评估机制,缺乏对评估内容的事前了解和关注。评估流于形式或过于肤浅。这一章,我们将带给学员系统、高效的评估方法和架构评估流程。
|