Foundations of Software Engineering

Kenneth M. Anderson <>

Lecture 01: Class Overview

CAETE Announcements

A bit about me…

More about me…

Office Hours

Class Participation

Teaching Philosophy

Useful URLs

About the Class Website


Please start reading the first two chapters of each text book.

Course Evaluation

Honor Code

Late Policy

Syllabus Statements

Goals of this Class

The first topic ensures that a student new to software engineering leaves the course with a grasp of the basic concepts and tenets of the field.

The second topic provides students with an explicit example of how software engineering techniques can be used to tackle complex problem domains.

The latter two topics will provide the student with insight into how the field of software engineering is changing.

Software Engineering

Issues of Scale

First ICSE Workshop on Software Technologies for Ultra-Large-Scale (ULS) Systems

Many future civic, private, and military software-intensive systems will be software-centric and ultra-large in scale (ULS). Radical scale-up will be seen in many dimensions: implementation complexity, distribution, decentralization, networking, storage, and quality-of-service requirements and mechanisms, dependability/security requirements and mechanisms, size and structure of development organizations and methods, complexity of organizations surrounding deployed systems, interaction with physical environments based on diverse sensors and actuator technologies, and in many other dimensions.

The recent report, Ultra-Large-Scale: The Software Challenge of the Future (see the workshop web site for a link), provides an initial analysis of problems and research needs and opportunities created by the advent of ULS systems. In a nutshell, radical increases in scale and complexity will demand new technologies for, and approaches to, all aspects of system conception, definition, development, deployment, use, maintenance, evolution and regulation. The software elements of ULS systems present especially daunting challenges.

Development of the required technologies and approaches in turn will require basic and applied research significantly different that that which we have pursued in the past. If the software systems that we focus on today are likened to buildings or individual infrastructure systems, then ULS systems are more akin to cities or networks of cities. Like cities, they will have complex individual nodes (akin to buildings and infrastructure systems), so we must continue to improve traditional technologies and methods; but they will also exhibit organization and require technology and approaches fundamentally different than those that are appropriate at the node level. Enabling the development of ULS systems, and their software elements, in particular, will require new ideas drawing on many disciplines, including computer science and software engineering but also including disciplines such as economics, city planning and anthropology.

First Assignment

Coming Up Next