2022 Software Design and Quality

Font size  SML

Register update notification mail Add to favorite lecture list
Academic unit or major
Undergraduate major in Computer Science
Kobayashi Takashi  Hayashi Shinpei 
Class Format
Lecture    (Face-to-face)
Media-enhanced courses
Day/Period(Room No.)
Mon7-8(W611,情報工学系計算機室)  Thr7-8(W611,情報工学系計算機室)  
Course number
Academic year
Offered quarter
Syllabus updated
Lecture notes updated
Language used
Access Index

Course description and aims

Students learn practical skills about software design and software quality improvement.

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 usefulness of these techniques.

Student learning outcomes

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

Competencies that will be developed

Specialist skills Intercultural skills Communication skills Critical thinking skills Practical and/or problem-solving skills

Class flow

This class consists of lectures explaining the concepts and techniques and exercises to train to apply techniques to simple examples.

Course schedule/Required learning

  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

Out-of-Class Study Time (Preparation and Review)

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.

Reference books, course materials, etc.

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)

Assessment criteria and methods

Small assignments (40%) and a midterm and final assignments (60%).

Related courses

  • CSC.T273 : Object-Oriented Programming
  • CSC.T364 : Workshop on System Design
  • CSC.T375 : Workshop on System Implementation

Prerequisites (i.e., required knowledge, skills, courses, etc.)

Basic knowledge of Object-oriented programming languages. Programming experience in Java language. All examples in the lecture will be provided in Java.

Page Top