Undergraduate
classes |
(
1 ) Formal Engineering Methods for Software Development |
|
Formal engineering methods
offer more practical techniques than conventional formal methods
for large-scale software development. They emphasize the integration
of mathematically-based notation and intuitive graphical notation
for constructing comprehensible specifications. After a brief
introduction to the fundamental principles of formal engineering
methods by comparing them to conventional formal methods,
this class focuses on the issue of how to write quality specifications
using SOFL (Structured Object-oriented Formal Language). In
addition to modules and condition data flow diagrams used
in specifications, various kinds of data types, such as set
types, sequence types, map types, composite types, and their
application techniques are introduced. Many small examples
are used to help students understand effective ways to write
and to organize formal specifications, and a small project
may also be used to improve students' skills and experience
of using formal engineering methods in practice. |
|
(
2 ) Software Design and Practice |
|
Software design is one of
the key activities in software development. A good design
usually leads to good structure and performance of programs.
In this course we teach various design principles, methods,
and representations. The principles include abstract and decomposition,
modularity, encapsulation, and information hiding, while the
methods include top-down methods, bottom-up methods, structured
methods, and object-oriented methods. The design representations
include Data Flow Diagrams, Data Dictionary, Structured English,
Structure Chart, Jackson Structure Chart, Flowchart, N-S Diagrams,
Production Rule Notation (PRN), Pseudecode, and UML.. Furthermore,
the techniques for transforming designs into programs are
also explained.
|
|
( 3 ) Software Development Techniques Practice (2) |
This class aims to help students learn the SOFL three-step formal specification
approach for software development and UML model-driven software development
method through various small projects. |
|
(
4 ) Projects |
We aim to teach the first,
second, and third year students through the projects how to
write programs in Java and how to test them based on formal
specifications expressed using pre and postconditions. Students
are given many small exercises to apply the specification-based
programming and testing techniques. Furthermore, applications
of the SOFL technology to the development or simulation of
dependable systems, such as Intelligent Transport Systems
(ITS) (e.g., Automatic Driving Systems for autombiles and
trains), Medicare Systems, IC Card Systems, are also important
topics of the projects. |
|
|