トップページへ

2022 Faculty Courses School of Computing Undergraduate major in Computer Science

Software Design and Quality

Academic unit or major
Undergraduate major in Computer Science
Instructor(s)
Takashi Kobayashi / Shinpei Hayashi
Class Format
Lecture (Face-to-face)
Media-enhanced courses
-
Day of week/Period
(Classrooms)
7-8 Mon (W611,情報工学系計算機室) / 7-8 Thu (W611,情報工学系計算機室)
Class
-
Course Code
CSC.T361
Number of credits
200
Course offered
2022
Offered quarter
4Q
Syllabus updated
Jul 10, 2025
Language
Japanese

Syllabus

Course overview and goals

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

Course description and aims

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.

Keywords

Functional independence ,Object oriented design, UML, Design pattern, Software testing, Quality, Software configuration management , Metrics, Refactoring, Java

Competencies

  • 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/Objectives

Course schedule Objectives
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

Study advice (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.

Textbook(s)

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)

Evaluation methods and criteria

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

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