[Purpose]
Students learn practical skills about software design and software quality improvement.
[Overview]
Students learn through practical training techniques and practical skills about software design, software construction and refinement by using object-oriented design, design patterns, etc. Make experiences in the usefulness of these techniques.
By taking this course, students learn skills to analyze development targets from multiple perspectives, design and share the conceptual model of the target software as a hierarchical module structure, and explain and improve quality.
Acquire skills to perform a series of software development such as design, implementation, and testing.
Functional independence ,Object oriented design, UML, Design pattern, Software testing, Quality, Software configuration management , Metrics, Refactoring, Java
Specialist skills | Intercultural skills | Communication skills | ✔ Critical thinking skills | ✔ Practical and/or problem-solving skills |
This class consists of lectures explaining the concepts and techniques and exercises to train to apply techniques to simple examples.
Course schedule | Required learning | |
---|---|---|
Class 1 | Introduction to Software Development Processes and fundamental of software design | Simulate large-scale software development |
Class 2 | Modularization, functional independence | Understanding software module |
Class 3 | Modeling of static structure and dynamic behavior, fundamental of the Unified Modeling Language UML | Writing UML class diagrams and UML sequence diagrams |
Class 4 | Exercise of software modeling using UML | Writing models using UML |
Class 5 | Design principles of object-oriented software | Understand how to apply design principles |
Class 6 | Design patterns | Understanding basic ideas of design patterns |
Class 7 | Exercise of using design patterns | Understanding how to apply design patterns in a software design model |
Class 8 | Fundamental of software evolution | Understanding basic concepts of software evolution |
Class 9 | Software configuration management | Understanding software configuration management |
Class 10 | Software testing | Understanding software testing |
Class 11 | Exercise of software testing | Using software testing techniques |
Class 12 | Refactoring | Understanding refactoring techniques |
Class 13 | Software quality | Understanding software quality attributes |
Class 14 | Exercise of refactoring | Using refactoring techniques |
To enhance effective learning, students are encouraged to spend approximately 100 minutes preparing for class and another 100 minutes reviewing class content afterwards (including assignments) for each class.
They should do so by referring to textbooks and other course material.
None. Slides of lectures are available via T2SCHOLA.
Robert C. Martin, Agile Software Development, Principles, Patterns, and Practices, Pearson Higher Education, (2013)
Martin Fowler, Refactoring: Improving the Design of Existing Code (1st Ed.), Addison-Wesley (1999)
Small assignments (45%) and midterm and final assignments (55%).
Basic knowledge of object-oriented programming languages. Programming experience in Java language. All examples in the lecture will be provided in Java.