Skip to main navigation Skip to Content

Computer Science

University of Toronto
  • U of T Portal
  • Site Map
  • Contact
  • About DCS At U of T
    • Why Study CS at U of T
    • Career Options
    • History of DCS
    • Giving to DCS
    • Information for Prospective Undergraduate Students
    • Information for Prospective Graduate Students
    • Computer Science at UofT Mississauga
    • Computer Science at UofT Scarborough
    • Contact
  • Programs & Courses
    • Prospective Undergraduate Students
    • Current Undergraduate Students
    • Prospective Graduate Students
    • Current Graduate Students
  • Research
    • Research Groups
    • Industrial Relations
    • Research In Action Showcase
    • Research Profiles
    • Research Sponsors & Partners
    • Awards and Accolades
    • UTRECS - Undergraduate Toronto Research Experience in Computer Science
  • Our People
    • Faculty
    • Staff
    • In Memoriam
    • People Profiles
    • Alumni and Friends
    • Women in Computer Science
    • Graduate Student Society
    • Undergraduate Student Union
    • Undergraduate Artificial Intelligence Group
  • News & Events
    • Current News
    • DCS Events Calendar
    • DCS in the Media
    • @dcs Newsletter
    • Undergrad News
    • Distinguished Lecture Series
    • Awards and Accolades
    • DCS Facebook Page
    • DCS Twitter Feed
    • RSS Feed - News
    • RSS Feed - Events
You are viewing: > Home > Research > Research Groups > Software Engineering
  • Applied & Discrete Mathematics
  • Artificial Intelligence
  • Computational Biology
  • Computer Graphics
  • Computer Systems & Networks
  • Database Systems
  • Human Computer Interaction
  • Numerical Analysis
  • Programming Languages & Methodologies
  • Software Engineering
  • Theory of Computation

Software Engineering

Will and Farzan Talk Software EngineeringSoftware Engineering is concerned with concepts, processes and tools that support the timely and cost effective development of quality software. Central problems in Software Engineering involve the management of large and complex software systems that are continuously being modified and enhanced to evolve in response to changes in user requirements and changes in the hardware/software environment in which they operate.

Research interests of members of the Software Engineering group at the University of Toronto lie in the following core areas:

Requirements Engineering

Requirements engineering deals with the acquisition, modelling and analysis of stakeholder needs in order to determine the functional and non-functional requirements for a software system. Our past research on this topic has focused on requirements modelling languages, as well as formal analysis techniques for requirements specifications. For more details on these studies please visit www.cs.toronto.edu/km/tropos.

Design and Architecture

Software architecture is the study of the structure and organization of software systems. Software design is the process by which a set of requirements is transformed into a collection of data structures and algorithms that implement the requirements as one or more computer programs. Software design can be viewed as navigating a design space of high dimensionality, attempting to converge on the most economical/efficient solution for a given set of requirements.

Formal Methods

Formal methods deal with the application of mathematics in designing and reasoning about software systems. They can be applied at the specification level to precisely capture the needs of users, or used later in the software design process to ensure that the software is correct with regard to its specification. Formal methods research at the University of Toronto deals primarily with automated verification (through theorem proving and model checking), formal specification languages and program refinement.

Software Performance Engineering

In Software Performance Engineering the task is to predict the performance of large software systems while they are being designed and developed. At each stage of a top-down design, we want to get an idea of how the final system will perform. Initially, the models are very rough, and only distinguish response times of seconds from response times of hours. Later on, when the system design is nearing completion, the intent is to predict response times within a factor of two.

Software Evolution

Software evolution involves developing techniques for managing the
development and evolution of a software system over its lifetime,
including the execution of version control for source code and
documentation and configuration management for the system architecture.

The Management of Software Projects and Organizations

This field investigates how to choose from diverse sets of requirements for the next iteration of a software product subject to time and resource constraints. This requires the appropriate use of metrics in software development management and an understanding of what organizational structures help or hinder software projects.

Faculty

Marsha Chechik
Steve Easterbrook
Azadeh Farzan
Eric C.R. Hehner
John Mylopoulos
Dave Wortman

Group Web Page

Software Engineering

Computer Science

All rights reserved copyright Computer Science, University of Toronto