Training Course - Real Life Enterprise System Design
I am offering a training course on real life enterprise system design from this month.
This course discusses fundamentals of software design principles and patterns, and the focus will be the practical aspects of design patterns. We are going to review UML from a practical point of view, and will examine some of the widely applicable object oriented design guidelines and principles. The main body of this course will explore the most popular GoF design patterns and J2EE patterns, and examine how they are used in popular Java based software, and investigate how they should be used to address Java based enterprise systems design and architecture challenges. We are going to examine the implementations of several successful open source constructions: Jakarta Commons Chain and Pool, OpenSymphony xWork and SiteMesh etc.. We will also cite intensively examples from JDK and J2EE implementations and specifications for the same purpose. For the benefit of students’ career development, we are also going to discuss how design fits into the various processes in software engineering, and the current trends in software industry as far as patterns, design and architecture are concerned.
This is NOT the usual course about design pattern concepts. While it certainly helps to prepare for the Sun Enterprise Architect for Java Platform certification, we intend for it to be really helpful to the real life and daily practices of developers, designer and architects.
The ultimate goal is to help software engineers to design and develop better software. After the course, it is expected that participants will be able to
(1) To fully master the classical design principles and patterns
(2) To thoroughly understand couple of popular and powerful software constructions
(3) To be able to use those design principles and patterns in real life scenarios
(4) To understand the context in which design and architecture happens
I hope this course will play a role in upgrading technical professionals from coder to developer, for developer to designer, from designer to architect, and play a role in starting and establishing a great career in software industry. I intend for this course to be helpful to developers, designers and architects at all levels, from beginner to senior!
The following is an outline of topics I am going to discuss:
1. UML Primer
2. Design Goals and Guidelines
3. Design Principles
4. Best Practices and Packaging
5. Design Patterns Overview
6. Factory Method,Abstract Factory, Singleton and Monostate, Service Locator, Object Pool and Jakarta Commons Pool
7. Composite, Decorator and Open Symphony SiteMesh
8. Static and Dynamic Proxy, Memoization, Virtual Proxy and Lazy Load
9. Façade and Session Facade
10. Iterator and Value List Handler
11. Command, Chain of Responsibility, its implementation in Commons Chain
12. Mediator, Observer and Service Activator
13. State and Strategy
14. Template Method, Visitor and MVC
15. Patterns, Farmeworks and Real Life Enterprise System Design
16. Appendix I: Data Access Object
17. Appendix II: ThreadLocal, Context Object and OGNL
18. Appendix III: Open Symphony xWork
19. Appendix IV: Other GoF Patterns
This course will be the base for a further, more advanced course on enterprise system design and architecture: Architectural Concerns in Enterprise Systems. In this second course, I will discuss several constructions and techniques widely used in enterprise system such as Configuration, Manageability, Callback, Cache, Clustering, Lazy Load, Bulk Data Access, Pool, IoC, AOP and Byte Code Engineering etc.. We will again use open source software as examples to explore the rationales, implementations and usages of those constructions and techniques. This second course will open shortly and people interested in it are encouraged to take this real-life enterprise system design course first.
