[{TableOfContents title='Page contents' numbered='true'}]

!!! About this Course

__''Object Oriented Software Analysis and Design''__ is a 4-day, instructor-led practical course in __Object-Oriented software analysis, design and architecture__. The course teaches fundamental OO analysis, design and architecture skills to software developers who have some experience programming in an Object Oriented programming language, and who wish to gain a deeper experience of the software ''design'' process. The course makes extensive use of practical examples and hand-on exercises to maximise participants' absorption of the subject matter.

This course builds a foundation for participants to further develop their skills in OO analysis and design. Significant effort is made to provide practical, immediately useful guidelines and heuristics for developing high-quality design, with the goal of developing higher-quality, more robust and more flexible and maintainable software. Beyond the applicability of this course, we ''strongly'' advise that course participants be teamed with experienced OO designers who can mentor them in further developing the skills acquired through __''Object Oriented Software Analysis and Design''__.

The course does not provide an introduction to basic OO concepts and is unsuitable for software designers who have had no exposure to OO basics. Our starter-course, __''[ElementsOfObjectOrientedProgramming]''__ is a 3-day course designed to provide just such an introduction to OO basics.

__''Object Oriented Software Analysis and Design''__ introduces some software architecture concepts and process, but is not intended to give in-depth coverage of architectural concerns.

The course material makes use of the [Unified Modelling Language|http://www.uml.org/] (UML) as the common "design language", but does ''not'' assume that participants have any prior knowledge of UML.

No particular development or design methodology is promoted or imposed. Rather, the course aims to teach the fundamental analysis and design skills common to all approaches to software design. The course is technology neutral and does not require nor use any specific OO programming language, and is thus useful in any OO technology platform environment.

!!! Course Goals

__''Object Oriented Software Analysis and Design''__ is designed to teach participants:
* purpose of analysis and design in the broader context of the software lifecycle
* specific processes for developing analysis, design and architecture models
* guidelines for measuring and evaluating the quality of OO systems designs
* heuristics for designing more robust, maintainable systems
* strategies for ensuring that designs adequately address all systems requirements

!!! Who will Benefit from this Course?

Software developers and designers who are familiar with object-oriented software development, and who wish to develop their skills in system analysis, design and architecture are the primary audience for the course.

__''Object Oriented Software Analysis and Design''__ is also useful to software designers and architects who are not expecting to ''program'' in an object-oriented environment, but who need to develop skills in language-neutral OO design concepts, products and work-products.

!!! Course Outline

__''Object Oriented Software Analysis and Design''__ is an instructor-led course of 4 days duration. The course is concept-based and does not target any particular programming language or platform. Participation is limited to 12 people to ensure adequate time for one-to-one interaction with the instructor during practical work-sessions.

!! What is Covered by the Course?

* Software Development Lifecycle: The Bigger Picture
* Analysis-phase activities and work products
* OO Design Process and outputs
* Heuristics for good design
* Applying Design Patterns during design
* Evaluating OO designs
* Architecture issues and concerns
* Architectural design
* Pulling it all together: The Design Model
* Testing the Design Model

!! Topics NOT Covered
* In-depth Design Patterns
* Advanced use of OO
* OO in Distributed Systems Design
* ~JavaEE/EJB
* Web services design
* Service Oriented Architecture concepts and design.

!! Related Courses
;[ElementsOfObjectOrientedProgramming | Elements of Object Oriented Programming]: An introduction to Object-Oriented programming and design concepts. The course is aimed at teaching basic OO concepts to experienced software developers who have little or no prior exposure to programming in an Object Oriented programming language.
;[PatternsOfOODesign | Patterns of OO Design]: Introduces experienced object-technology programmers, designers and architects to Patterns of Programming and Design ("Design Patterns".)
;[AdvancedArchitectsWorkshop]: A workshop for experienced OO designers and architects providing a structured discussion of common architectural themes, problems and solutions where participants learn from the shared experiences of an expert peer-group.

!!! Contact Us

We are always happy to discuss customising this and our other courses to meet clients' specific requirements.

Please [contact us|ContactDetails] if you don't see a suitable date for this course in our [schedule|CourseSchedule].
----
[CoursewareCategory]