Software Analysis and Design COMP6311
Course overview
Course description
This course addresses the requirements, architecture and design phases of the software development life-cycle. It has a primary focus on modeling and its central role in eliciting, understanding, analysing and communicating software requirements, architecture and design. Students will learn to use several different modeling approaches to describe complex subject matters typically involved in developing, analysing and specifying requirements, architecture and design. While most of the approaches will seem straight forward and even conceptually simple, students will discover that a good deal of effort and diligence is required to produce useful, accurate, meaningful, understandable and easily maintainable models. Through a series of practical workshops, students will develop an appreciation for the characteristics and capabilities of each approach, and will learn to make decisions as to the best approach to use for a given purpose. Students will then learn how to integrate several modeling approaches to form software requirements, architecture and design specifications that are unambiguous, consistent and understandable. At the end of the course, students will be introduced to various approaches for automating the translation of specifications (models) into operational software systems. This will include topics such as model translation, code generation and an overview of active research in the area of model-driven engineering.
Rationale
Software development project failure can often be traced to an inadequate understanding of the systems to be built and how they will benefit the environment in which they are developed and used. This, in turn, can be traced to the ineffective use of modeling throughout the software development life cycle.
This course exists to equip students with knowledge and skills which can be used to employ modeling to better understand, communicate and specify complex subject matters including user requirements, software requirements, architecture and design. Because these subject matters are diverse in nature, students will be exposed to a wide range of languages and techniques for modeling data, process and state. They will also learn about emerging techniques such as model-driven engineering and domain specific modeling.
By the end of this course, students will be able to make and implement decisions regarding the best modeling languages and techniques to use in any given situation.
Ideas
Topics
The following topics will be covered:
- Entity and Data Modeling
- Process Modeling
- State Modeling
- Formal Modeling
- Executable Specifications
- Separating concerns
- Model Translation and Code Generation
- Model-Driven Architecture
- Domain Specific Modeling
- Current research in Model-Driven Engineering
Technical skills
At the end of this course students will be able to read, modify and create models using the following modeling languages and techniques:
- Entity Relationship Diagrams
- Data Flow Diagrams
- UML Class Models
- UML State Models
- xtUML executable models including collaboration and sequence diagrams
- Z and/or Petri Nets
In addition, students will be able to develop and execute test cases for executable models. They will be able to translate such models, in accordance with a specified architecture, to form source code.
Textbooks
There are no prescribed textbooks for this course, but the following book covers many of the concepts addressed in the course.
Mellor, Stephen J. & Balcer, Marc J. Executable UML - A foundation for Model-Driven Architecture, (2002).
Additional references will posted as appropriate on the course web page.
Workload
Thirteen two-hour lectures and seven two-hour workshop sessions.


