How to create a good object oriented design for a software system? Is it possible to follow a systematic approach where requirements are translated though analysis to a good design? What are the best practices that can be applied in doing so? This training program teaches you how to write use case as a means to capture requirements, object oriented analysis and applying fundamental patterns to create good object oriented designs. Content of the training primarily revolves around Generalized Responsibility Assignment Software Patterns (GRASP Patterns) that are primitive, but powerful concepts that can be applied in creating good object oriented designs.
At the end of the training, participants will be able to
- Capture functional requirements of a system using use cases.
- Write effective use cases so that they can easily be used during analysis and designing of object oriented systems.
- Define the meanings and purposes of Object Oriented Programming (OOP) fundamentals with sound clarity and apply them correctly
- Use UML use case diagrams, class diagrams and sequence diagrams to visually document use case model, domain model and design of the system.
- Analyze and design object oriented systems in a methodological manner backed by fundamental patterns and sound principles.
- Apply GRASP patterns in designing object oriented systems
- Software Developers (Mostly for juniors, but seniors may also find this training program useful)
- Ability to program in an object oriented programming language is necessarily required.
English (With Sinhala explanations if requested)
2 full days (~16 Hours)
Kamal Wickramanayake (Profile)
Introduction To Software Development Process
- What is a software development process?
- Overview of popular software development processes
- Requirements capturing with use cases
- Use case model
- Writing use cases
- Good use case writing styles to improving effectiveness of use cases
OOP Fundamentals (Pragmatic Nature And Clearing Confusions)
- Use case diagrams
- Class diagrams
- Sequence diagrams
- Representing classes, objects, interfaces
- Representing generalization, interface implementation, relationships, dependencies
Object Oriented Analysis
- Purpose of analysis
- Inputs and outputs
- Creating a domain model
High Level System Decomposition
- Separation of concerns
- Modular systems
- Layers pattern
- Multi-tier systems
Object Oriented Design
- Purpose of design
- Inputs and outputs
- Creating class diagrams, sequence diagrams
General Responsibility Assignment Software (GRASP) Patterns
- What are patterns?
- What is responsibility assignment?
- Information Expert pattern
- Creator pattern
- Controller pattern
- Low Coupling pattern
- High Cohesion pattern
- Polymorphism pattern
- Pure Fabrication pattern
- Indirection pattern