C C T B H P N

Note #0b - What is a Program?

What is a Program?

What an odd question to ask in a Computer Engineering Graduate class! Here are some reasonably sensible answers:
Each of these emphasizes some different aspect of what a program is; and we shall be concerned with several of them in this course. We will also be discussing the interactions of programs in different processes and different machines.

Program Structure:

One aspect of program structure is the mechanisms it uses to communicate with its environment. That may be to: A program also has both physical and source package structure. It may: Each program has a source code package structure defined by: We will discuss most of these program structures in Software Modeling and Analysis, in Object Oriented Design, and Distributed Objects. But this isn't the end of the Program Structure story.

Software Systems

A software system is a collection of cooperating programs that jointly provide some service or environment that supports inquiry, collaboration, and control. While in industry I worked on a Radar product whose digital makeup consisted of about a dozen processors that jointly provided beam-forming, detection, data management, operator control, and communication with theater management systems. Each processor communicated with others in the system through enqueued messages and was responsible for a major part of the radar functionality. These systems also have structure, which may take the form of: Your final project in this course will focus on one of these kinds of system structures. For example, in Fall 2012 we investigated the construction of a Virtual Display System designed to be a wall display interface into a sophisticated software development environment called VRTS - Virtual Repository Testbed System which is a federation of development servers.

Modeling

A software system may become far too large for any one person to understand in detail all of its source code1. The modeling part of SMA focuses on a set of modeling abstractions that help us understand an entire large system by focusing on its design features and behavior rather than its detailed implementation. To do that we introduce a superset of the Universal Modeling Language (UML) diagrams. Specifically:

Summary:


  1. The last few versions of the Windows operating systems have more than 50 million lines of source code. Even the "small" Linux operating system has, according to Dr. Google, more than 15 million lines of code.