Budapest University of Technology and Economics, Faculty of Electrical Engineering and Informatics

    Belépés
    címtáras azonosítással

    vissza a tantárgylistához   nyomtatható verzió    

    Object-Oriented Software Design

    A tantárgy neve magyarul / Name of the subject in Hungarian: Objektumorientált szoftvertervezés

    Last updated: 2024. február 27.

    Budapest University of Technology and Economics
    Faculty of Electrical Engineering and Informatics
    Course ID Semester Assessment Credit Tantárgyfélév
    VIIIAC09 5 2/2/0/v 5  
    3. Course coordinator and department Dr. Simon Balázs,
    Web page of the course Kair Moodle
    4. Instructors Dr. Balázs Simon
    5. Required knowledge UML, object-oriented design patterns, Java or C#
    6. Pre-requisites
    Ajánlott:
    -
    7. Objectives, learning outcomes and obtained knowledge The goal of this course is to summarize and practice the most widely accepted design principles of object-orientation.
    8. Synopsis The detailed topics of the lectures:
    1. Overview of object-oriented concepts. Encapsulation, polymorphism, inheritance, association, dependence, aggregation. Important object-oriented design principles: SOLID, Tell Don't Ask, Design by Contract, Law of Demeter, etc. Their role in design.
    2. Object-oriented design heuristics to minimize dependencies between classes. Heuristics for class design. The advantages and disadvantages of each heuristic.
    3. Additional object-oriented design heuristics: distribution of responsibilities, design of associations and compositions. The advantages and disadvantages of each heuristic.
    4. Additional object-oriented design heuristics: inheritance and the design of heterogeneous collections. The advantages and disadvantages of each heuristic.
    5. Refactoring: principles, necessity, problems, and relationship with design and efficiency. Typical design flaws (code smells), their recognition and correction. Typical refactoring patterns and their application. Relationship with object-oriented design principles and heuristics.
    6. Features and implications of code that is difficult to maintain. Features and advantages of clean code. Clean code principles: use of descriptive names, choice of names, size of classes and functions, order of functions within a class.
    7. Additional clean-code principles: self-documenting source code, correct and incorrect use of comments, objects and data structures, error handling and exception handling, null value use.
    8. API design principles, the process of API design. API documentation, initialization, length of parameter lists, customization, convenience functions, exceptions, testing.
    9. Problems with distributed object-orientation: memory management problems, network problems, competitor problems, latency issues.
    10. Possible ways to solve each distributed communication problem. Examples of distributed communication: SOAP, REST.
    11. Competing and parallel patterns: synchronization (critical section, double-checked locking, waiting, signaling between threads, public interface).
    12. Additional concurrent and parallel patterns: context handling patterns (global context, local context within a thread), request-response and event handling patterns (ACT, cancellation token, future/task/deferred).
    13. Additional concurrent and parallel patterns: reactor, proactor, active object, half-sync/half-async, leader-followers, scheduler.
    14. Advantages and disadvantages of immutable object-orientation. Immutable data structures. Writing immutable classes, builder pattern.

    The detailed topics of the practices:
    1. Practice with attendance. Tasks related to object-oriented design principles. Practicing learned theory (true-false, multi-choice questions). Analysis of defective object-oriented models based on learned principles.
    2. Home exercise. Design an object-oriented model based on a text description using learned principles.
    3. Practice with attendance. Tasks related to object-oriented design heuristics. Practicing learned theory (true-false, multi-choice questions). Analysis of defective object-oriented models based on learned heuristics.
    4. Home exercise. Design an object-oriented model based on a text description using learned principles and heuristics.
    5. Practice with attendance. Tasks related to object-oriented design heuristics. Practicing learned theory (true-false, multi-choice questions). Analysis of defective object-oriented models based on learned heuristics.
    6. Home exercise. Design an object-oriented model based on a text description using learned principles and heuristics.
    7. Practice with attendance. Tasks related to refactoring and code smells. Practicing learned theory (true-false, multi-choice questions). Analysis of defective program code based on learned principles.
    8. Home exercise. Design an object-oriented model based on a text description using learned principles and heuristics.
    9. Practice with attendance. Tasks related to clean code. Practicing learned theory (true-false, multi-choice questions). Analysis of defective program code based on learned principles.
    10. Home exercise. Design an object-oriented model based on a text description using learned principles and heuristics.
    11. Practice with attendance. Tasks related to concurrent and distributed patterns. Practicing learned theory (true-false, multi-choice questions). Analysis of defective program code based on learned principles.
    12. Home exercise. Design an object-oriented model based on a text description using learned principles and heuristics.
    13. Practice with attendance. Tasks related to immutable object-orientation. Practicing learned theory (true-false, multi-choice questions). Design of an immutable data structure.
    14. Home exercise. Design an object-oriented model based on a text description using learned principles and heuristics.

    9. Method of instruction Lecture every week. Practices alternating weekly: practice with attendance and design exercise at home (homework).
    10. Assessment

    In lecture term:
    5 homework assignments must be solved and submitted by the deadline during the semester. In addition, 5 Moodle quizzes serving as small tests must be completed by the deadline (can be completed at home). Condition of the signature: completion of at least three homework assignments and sufficient completion of at least three quizzes.

    In exam term:
    Written exam for those who acquired a signature.

    11. Recaps Homework and Moodle quizzes can't be replaced because only 3/5 of them need to be completed.
    12. Consultations On-demand, appointed with the lecturer.
    13. References, textbooks and resources
    • Robert C. Martin: Principles of Object-Oriented Design
    • Robert C. Martin: Clean Code, A Handbook of Agile Software Craftsmanship, Prentice Hall, 2008, ISBN-10: 0132350882, ISBN-13: 978-0132350884
    • William J. Brown, Raphael C. Malveau, Thomas J. Mowbray: AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis, Wiley, 1998, ISBN-10 0471197130
    • Martin Fowler, Kent Beck, John Brant, and William Opdyke: Refactoring: Improving the Design of Existing Code, Addison-Wesley, 1999, ISBN-10 0201485672
    • Jasmin Blanchette: The Little Manual of API Design, Trolltech, a Nokia company, 2008
    • Douglas Schmidt, Michael Stal, Hans Rohnert, Frank Buschmann: Pattern-Oriented Software Architecture Volume 2: Patterns for Concurrent and Networked Objects, Wiley, 2000, ISBN-13: 978-0471606956
    14. Required learning hours and assignment
    Kontakt óra42
    Félévközi készülés órákra10
    Felkészülés zárthelyire14
    Házi feladat elkészítése14
    Kijelölt írásos tananyag elsajátítása-
    Vizsgafelkészülés40
    Összesen120
    15. Syllabus prepared by Dr. Balázs Simon, associate professor, IIT
    IMSc program -
    IMSc score -
    -