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: 2016. szeptember 30.

    Budapest University of Technology and Economics
    Faculty of Electrical Engineering and Informatics
    Course ID Semester Assessment Credit Tantárgyfélév
    VIIIAC00 5 2/1/0/v 4  
    3. Course coordinator and department Dr. Simon Balázs,
    Web page of the course https://www.iit.bme.hu/~ooterv/en/
    4. Instructors

    Dr. Balázs Simon, senior lecturer, Department of Control Engineering and Information Technology

    5. Required knowledge

    ·        Software technology

    ·        Software techniques

    ·        C++, Java and C# programming

    ·        Design patterns

    6. Pre-requisites
    Kötelező:
    ((Szakirany("AMINszoftfejlAUT", _) VAGY
    Szakirany("AMINszoftfejlIIT", _) VAGY
    Szakirany("AMINszoftfejlMIT", _) VAGY
    Szakirany("AMIrendszfejl", _) VAGY
    Szakirany("AMIrendszterv", _) VAGY
    Szakirany("AMIszoft", _) VAGY
    Szakirany("VIABI-SOFTWE", _) )




    VAGY EgyenCsoportTagja("Szoftverfejlesztés MIT") )

    ÉS NEM ( TárgyEredmény( "BMEVIIIA371" , "jegy" , _ ) >= 2
    VAGY
    TárgyEredmény("BMEVIIIA371", "FELVETEL", AktualisFelev()) > 0)

    A fenti forma a Neptun sajátja, ezen technikai okokból nem változtattunk.

    A kötelező előtanulmányi rendek grafikus formában itt láthatók.

    Ajánlott:
    Software engineering (VIIIAB01), Basics of programming 3 (VIIIAB00)
    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. The subject builds primarily on the Java language, but examples may come from other object-oriented languages (C++, C#, python).

    8. Synopsis
    1. Overview of object-oriented design principles: encapsulation, polymorphism, inheritance, association, dependency, aggregation.
    2. Important principles: Liskov principle, dependency inversion, design by contract, Demeter principle, etc. Role of these principles in OO design.
    3. Requirement analysis: use-cases and distributing responsibilities. Applying OO design principles on practical problems.
    4. Recap of the most important design patterns through the Java SE API (decorator, factory, singleton, flyweight, etc.). Examples include: collections, graphics, bosing, etc. API design principles (characteristics of a good API, design process, best practices)
    5. Typical design problems, recognizing and correcting these problems ("code smells" within a class, between classes).
    6. Object-oriented metrics, cohesion and coupling, metrics for these (e.g. LOCM, etc.).
    7. Principles of refactoring, necessity of refactoring, problems of refactoring, connection with design and efficiency. Typical refactoring patterns (methods, local and temporary variables, dependencies between methods and classes, inner classes)
    8. Further refactoring patterns (data management, data hiding, avoiding type codes, conditional expressions, simplifying method calls, generalization issues).
    9. Persisting objects, Object-Relational Mapping, inheritance in ORM (table per class hierarchy, table per concrete class, table per subclass), hibernate and JPA.
    10. Distributed applications using socket and RMI. Problems of distributed object-orientation, RMI for distributed object-orientation, typical distributed design patterns (callback, factory, agent).
    11. Distributed and parallel design patterns, locking, event handling, interface design, remote updates, acknowledgements.
    12. Handling transient cases. Initialization of single-threaded and multi-threaded applications, at the level of objects and at the level of the whole application. Shutting down a multi-threaded object-oriented application.
    13. Logging (log4j), configuration management. Exception handling, designing exceptions, throwing exceptions, processing exceptions, re-throwing exceptions. Patterns for exception handling.
    9. Method of instruction

    Lecture and practice.

    10. Assessment

    a. In lecture term:

    During practices there are at least 5 in-class tests written. The condition for acquiring a signature is to pass at least 3 of these tests. The tests cannot be recapped, since only the 3/5 of the tests must be passed.

    b. In exam term:

    Written exam for those who acquired a signature.

    11. Recaps -
    12. Consultations

    Based on the 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
    • Matt Gemmell: API Design, http://mattgemmell.com/api-design/
    14. Required learning hours and assignment
    Kontakt óra54
    Félévközi készülés órákra21
    Felkészülés zárthelyire10
    Házi feladat elkészítése35
    Kijelölt írásos tananyag elsajátítása 
    Vizsgafelkészülés120
    Összesen 
    15. Syllabus prepared by

    Dr. Balázs Simon, senior lecturer, Department of Control Engineering and Information Technology

    Dr. Balázs Goldschmidt, associate professor, Department of Control Engineering and Information Technology

    Dr. Zoltán László, senior lecturer, Department of Control Engineering and Information