|
Object Oriented
Design
Course Introduction
The modern world is becoming increasingly dependent on the efficient processing
of technology-based information systems, which themselves are becoming
increasingly complex. The implications of information systems failure can be
profound, with commerce and industry grinding to a halt and revenue losses
rising into millions. At the very least, information systems failure causes
inconvenience, loss of image, decline in productivity and trust.
This four day course is designed to give IT professionals an in-depth understanding of Object Oriented Design in terms of what to do, what not to do and when to do it. The course is built on general OO Concepts and makes use of UML.
Object Oriented Design can be split into three areas; Generic OO Design, Language specific Design and Environment specific Design.
Generic OO Design refers to concepts and techniques that are true irrespective of the OO language used or the environment in which the application will run. Generic design considers what is important to make applications ‘developer friendly’. Applications that are well designed from the generic design perspective are applications that are easier to build, easier to fix, easier to enhance and easier to extend. This means faster initially deployment, quicker bug repair turn around, less (human) resources required and more stable applications.
Language and environment specific design look at issues that are important to consider from the perspective of the language that the application is built in and the environment (operating system, hardware, etc) that the application will run on.
The most important of these three aspects of OO Design is, for the vast majority of commercial and in-house applications, the Generic aspect. Language and environment design issues needs to be considered but only become crucial in very high performance and time critical applications such as telephony systems, real time aircraft control systems, etc. Generically well design applications are easier to build, easier to QA, easier to fix when bugs are found in production, easier to enhance and easier to extend.
For the large majority of commercial applications the bulk of the work invested in them comes in the form of enhancements, bug fixing and extensions once the application is live. Generically well designed applications will show significant benefits in these areas over time.
There is an emphasis in the course on providing practical guidelines and techniques that the attendees can use in their work environment to assist them in delivering applications that are more stable, easier to maintain and easier to enhance and extend.
There is a strong focus on ensuring that the delegates develop an in-depth understanding of what constitutes good OO Design. This is achieved via the strength of the material used, the structure of the course and the regular use of exercises and group work to re-enforce the learning experience.
The course is a synthesis of best practices as describe by leaders in the OO industry such as the ‘Gang of Four’ and their Design Patterns, Craig Larman, Arthur J Reil, Scott Ambler, David Brown, Meilir Page-Jones, Rebecca Wirfs-Brock, Allen Holub, James Coplien, Coad, Mayfield and Kern and many others. The course is also built on practical experience gained in a number of large development teams.
The course starts off by reviewing the key OO concepts such as class relationships, Inheritance, Encapsulation, Polymorphism and Visibility. It then looks at the UML notation focusing on the 20% of the UML that is used 95% of the time by teams building in-house applications. Thereafter it looks at the deliverables from the Analysis phase and how they are used in the Design process. It also looks at what UML Diagrams are used in the Design process and why they are used.
The various approaches to Object Orientation tend to use different terms to define similar concepts and similar terms to define different concepts. This course uses the UML terminology through out.
The balance of the course makes use of the OO concepts and UML notation covered above.
The course then looks at a number of OO concepts such as Encapsulation, Abstraction, Coupling, Cohesion, Inheritance, Interfaces, Delegation, Aggregation and Composition to understand what these terms mean for design, why they are important, how to use them effectively, how they contribute to good OO Design and things to avoid.
Next the course covers a wide range of OO design guidelines that all contribute towards effective design. The topics covered include how to use Controller Classes, effective mapping of operations to classes, when to use inheritance, alternatives to inheritance, how to use Aggregation, Delegation guidelines and more.
The course also looks at 5 design principles, 5 rules or laws concerning OO design. They are the Dependency Inversion Principle, the Open Closed Principle, the Liskov Substitution Principle, the Law of Demeter and the Interface Segregation Principle. All of these principles contribute towards effective design.
In the OO design process there are times when specific guidelines should not be applied or when two or more guidelines conflict. These issues will be discussed and explored and recommendations given on what to do in such cases.
The final component of this course looks at Design Patterns. The focus is on a selection of the GoF (Gang of Four) design patterns as described in the book “Design Patterns: Elements of Reusable Object-Oriented Software” published by Addison-Wesley. Other design patterns and anti-patterns are also explored.
Duration
The course is run over four consecutive full-day sessions.
Target Audience
The course will be of direct benefit to any person who involved in the Design of an Object Oriented application.
The level of the course would be inappropriate for delegates who just want an overview, since the course material and practical sessions comprise in-depth concepts.
Typical delegates include designers, developers, systems analysts, architects, analyst programmers, DBAs and IT professionals making a switch from traditional software design techniques.
Course Objectives By the end of this course, delegates will have achieved the following:
Understand the key drivers of successful OO Design
Understand the link between Analysis and OO Design
Understand OO concepts and how they impact on good design
Understand the OO Guidelines and how they are used to support effective implementation of OO applications
Understand Design Principles and why they should be used
Be able to recognise and address conflicts between OO Guidelines
Understand the benefits of Design Patterns
Understand how to use Design Patterns
Be able to decide what Design Patterns to use in a specific scenario
Be able to notate OO Designs using UML.
Course Prerequisites
Successful past candidates have been drawn from a wide variety of backgrounds and experiences. We do not exclude any delegate who is strongly motivated to do the course, so there are no strict pre-requisites.
However, we normally recommend that prospective delegates should not consider doing the course until they are, or will be, working in the application design space. Ideally candidates should have a development background preferably using an OO language such as Java, C++, C#, Smalltalk or something similar.
To get the most value out of the course, it should be done at the right time in a person’s career. Delegates and their companies will derive maximum benefit from the learning experience if they are able to apply the skills learnt during the course on their return to the workplace.
Course Workload
The course workload is covered entirely during the full day sessions. There is no homework and minimal reading required, with additional readings being voluntary.
Course Assessment There are no formal assessments (exams, tests, presentations etc.) for this
course. However, to earn a certificate of attendance, delegates will be required
to:
-
attend all four course days,
-
actively participate in exercises and discussion workshops.
Costs and Terms
The cost of this course is available on request. Discounts apply for large numbers or in-house courses. Course fees cover tuition, materials, notes and catering. All fees are payable in advance and interest is levied on overdue accounts. Please refer to the standard terms and conditions on the course confirmation form.
Course Venue
Public training is conducted at FTI’s premises in Cape Town and Johannesburg. In addition, we rent temporary external venues in other areas as we need them. Most in-house courses are held on company premises and we will provide assistance regarding venue requirements to ensure the quality of our course is not compromised.
Course Accreditation
Faculty Training Institute was an Approved Education & Training Provider with
the ISETT SETA, having received this approval in January 2003. FTI is currently
in the process of applying for full accreditation, which depends on the future
structure of SAQA and the National Qualifications Framework (NQF). FTI is also
actively engaged with various Standards Generating Bodies (SGBs) in ISETT to
develop standards and qualifications in selected areas.
This course falls into a category loosely defined by SAQA as ‘vocational short
courses’ because it requires less than a year’s full-time study and is not
intended to lead to a national qualification in terms of the NQF. Like many
similar courses, it has therefore not been registered as a formal qualification
in SAQA.
Academically and intellectually, the course is done at senior undergraduate
level, which would equate to level 5-6 on the NQF.
Course Content
|
Day 1: General OO Concepts & Key OO Design Concepts
OO Concepts Review
UML Review
OO Analysis and Design Review
Why is Encapsulation important
Abstraction and Abstract Layers
Coupling and Cohesion
Day 2: OO Design Guidelines
Inheritance
Interfaces
Delegation and Aggregation
OO Design Guidelines
Day 3: OO Design Principles & OO Design Patterns
OO Designs Principles
Design Patterns
Day 4: More OO Design Patterns & Exercises
Design Patterns – continued
Review exercises.
|
|