Software Development Techniques
Professor: Pedro Alexandre S. C. R. Pereira
Year:
2
Semester:
3
ECTS: 6
Goals
Students who successfully complete this course unit should be able to:
- Demonstrate know-how on software development principles;
- Identify software properties and demonstrate know how on the techniques used to influence them;
- Analyze and justify the application of design patterns in selected contexts;
- Design, implement and test medium sized interactive applications;
- Write technical documentation justifying decisions made in the context of software development.
Syllabus
- Basic principles of type driven development: encapsulation and contract specification and its invariants
- Basic principles of test-driven development: explicit specification of dependencies and their resolution through dependency injection.
- Function composition: high order functions: currying and partial application.
- Type composition: aggregation, inheritance and polymorphism.
- General principles of software development: DRY, Law of Demeter and SOLID.
- Selection of design patterns of general usage.
- Selection of design patterns used in the context of interactive applications.
Outcomes
This curricular unit introduces the fundamental concepts and the vocabulary of the paradigms and principles used in software development.
Goals 1, 2 and 3 are achieved through items I to VII of the syllabus. The development of programs during practical sessions makes it possible to achieve goals 4 and 5 of learning outcomes.
Bibliography
“Hands-on Design Patterns with Kotlin” by A. Soshin. Released in 2018. Publisher(s): Packt publishing. ISBN-13: 978-1788998017; ISBN-10: 1788998014.
“Effective Kotlin: Best practices” by Marcin Moskala. Released in november 2019. Publisher(s): Marcin Moskała. ISBN-13: 978-8395452833; ISBN-10: 8395452837.