Object-oriented software design
A magyar kurzus információi a tárgy magyar weboldalán találhatók.
Lecturer: Dr. Simon Balázs
Subject info: BMEVIIIAC00
Location and time:
- Tuesdays: 14:15-16:00 IL.408.
- Even Wednesdays: 14:15-16:00 IL.408.
|Number||Exam||Review of the exam|
|1||December 19, 2018, 10:00-12:00, IB.028.||January 2, 2019, 16:00, IB.139.|
|2||January 9, 2019, 10:00-12:00, IB.028.||January 14, 2019, 12:00, IB.139.|
|3||January 16, 2019, 10:00-12:00|
On the Friday of the week of the exam marks will be uploaded to the Neptun system, and the points will be uploaded to the jporta system. You have to present a valid ID card with photo at the review of the exam.
A sample exam can be downloaded here: sample exam
Thesis exam questions
- OO design principles. For each principle: what problems does it solve, how does it solve the problems, what happens if we violate it, when can we violate it?
- OO design heuristics. For each heuristic: what problems does it solve, how does it solve the problems, what happens if we violate it, when can we violate it? How do these heuristics connect to refactoring patterns and code-smells?
- What is refactoring? Rules, steps, advantages and problems of refactoring. Refactoring patterns and code-smells. How do they connect to the OO design heuristics?
- Clean-code principles. For each principle: what problems does it solve, how does it solve the problems, what happens if we violate it, when can we violate it?
- API design principles. For each principle: what problems does it solve, how does it solve the problems, what happens if we violate it, when can we violate it?
- Distributed OO. What kind of problems can arise? What are the possible solutions to these problems?
- Concurrent and distributed patterns. For each pattern: what problems does it solve, how does it solve the problems, how does it connect to other patterns?
- Immutable OO. What are the disadvantages of mutability? What are the advantages and disadvantages of immutability? How can an immutable class be implemented?
- Package management and build tools (Ant+Ivy, Maven, Gradle, Bazel, Buck). What do they do? How they work? What are their advantages and disadvantages?
- Git version control system. Git concepts. How does Git work? What are the Git commands? What do these commands do?
Materials can be downloaded from here: materials
There will be 5 small tests during the semester. In order to get a signature from the subject, the best three of the small tests must be successfully passed, i.e. they should achieve at least 2.0 points. The small tests cannot be repeated.
The small tests are required only for the signature, the final mark is independent of them.
The small tests are written at the beginning of practices. They take about 10 minutes.
The results of the small tests can be seen in the JPorta system.
|1||September 26||OO design principles and heuristics|
|2||October 10||OO design heuristics, Refactoring|
|3||November 7||OO design heuristics, Refactoring, Package management and build tools|
|4||November 21||Clean-code, API design principles|
|5||December 5||Distributed OO, Concurrent and Distributed Patterns, Git|
Slides can only be downloaded after login.
|Week 1||September 4||Lecture||OO design principles||Intro
|Week 2||September 11||Lecture||OO design heuristics (classes, responsibilities)||Slides||Cheat sheet|
|September 12||Practice||OO design principles||Slides|
|Week 3||September 18||Lecture||OO design heuristics (associations, inheritance)||Slides||Cheat sheet|
|Week 4||September 25||Lecture||OO design heuristics (inheritance, sequence diagrams)||Slides||Cheat sheet|
|September 26||Practice||OO design principles, heuristics||Slides|
|Week 5||October 2||Lecture||Refactoring||Slides||Cheat sheet|
|Week 6||October 9||Lecture||Clean-code||Slides|
|October 10||Practice||Package management and build tools (ANT, Maven, Gradle, ...)||Slides|
|Week 7||October 16||Lecture||Clean-code||Slides|
|Week 8||October 23||Holiday|
|Week 9||October 30||Skipped|
|Week 10||November 6||Lecture||API design principles||Slides||Cheat sheet|
|November 7||Practice||Analysis task: API Flaws||Slides|
|Week 11||November 13||Lecture||Distributed OO, SOAP, REST||Slides|
|Week 12||November 20||Lecture||Concurrent and Distributed Patterns||Slides|
|Week 13||November 29||Lecture||Concurrent and Distributed Patterns||Slides|
|Week 14||December 4||Lecture||Immutable objects||Slides|
|December 5||Practice||Analysis task: Common concurrency issues||Slides|
- Robert C. Martin: Principles of Object-Oriented Design, http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod
- Arthur J. Riel: Object-Oriented Design Heuristics, Addison Wesley, 1996, ISBN-10: 0321774965, ISBN-13: 978-0321774965
- Robert C. Martin: Clean Code, A Handbook of Agile Software Craftsmanship, Prentice Hall, 2008, ISBN-10: 0132350882, ISBN-13: 978-0132350884
- Jasmin Blanchette: The Little Manual of API Design, Trolltech, a Nokia company, 2008
- Matt Gemmell: API Design, http://mattgemmell.com/api-design/
- Martin Fowler: Refactoring: Improving the Design of Existing Code, 1999, Addison Wesley, ISBN-10: 0201485672, ISBN-13: 978-0201485677
- Douglas Schmidt: Pattern-Oriented Software Architecture, Patterns for Concurrent and Networked Objects, 2000, Wiley, ISBN: 0-471-60695-2