Aim of the course
The course aims to present the principles, techniques and tools, for object- and component-oriented approach to software development, both in terms of systems analysis and design, as well as their implementation.
Introduction to software engineering. Object-oriented paradigm in modeling. Requirements modeling. The units of abstraction (object, class) and their properties. Organization of model (packages). Linking, aggregation and composition. Generalization and inheritance. Reuse: inheritance of implementation and role delegation. Design patterns. Unit testing and integration, dummy (mock objects). The objectives and practice of the component-oriented technologies. Functional, market-oriented, and formal definitions of the component. Components and objects. Problems with inheritance. Contract specification policy. The issue of security in independently implemented components. Construction and characteristics of popular component platforms. 'Light' and 'heavy' components. Other techniques of code reuse: aspect programming.
Overview of the course elements
Laboratory classes allow to practice skills in the object-oriented design techniques and use of the component-oriented techniques using several simple and one complex design tasks.
1. Brett D. McLaughlin, Gary Pollice, David West: Head First Object-Oriented Analysis and Design
2. Martin Fowler: UML Distilled (UML w kropelce)
3. Szyperski C. Oprogramowanie komponentowe
4. Crnkovic I. Larsson M Building Reliable Component-Based Software Systems
5. Wang A., Qian K. Component-oriented Programming