COSC 4351 Software Engineering - Spring 2004
Dr. Albert M. K. Cheng
Spring Office hours: MW 3:00-4:00pm and by appointment
Fundamentals of Software Engineering, 2ed, Carlo Ghezzi et al; and
Real-Time Systems: Scheduling, Analysis, and Verification,
1ed, Albert Cheng.
Software Engineering, 6ed, Ian Sommerville.
TA: Goel Lakshmi, 536-PGH, Office hours: T Th 2:00-3:00pm
Software Engineering (SE) is the application of a systematic,
disciplined, quantifiable (engineering)
approach to the development,
operation, and maintenance of software [IEEE Std 610.12-1990].
SE often involves many programmers in the construction of
complex, multiversion software.
Almost any realistic, commercial software requires
good software engineering techniques to develop and
Computers and their software are increasingly
used to monitor and control physical processes.
These real-time embedded systems must satisfy stringent timing and
reliability constraints in addition to functional correctness requirements.
Examples of these embedded systems include the new generation of airplane
avionics, the Space Station control software, high-performance
network and telephone switching systems, medical monitoring instruments,
Multimedia tools, virtual reality systems, robotic controllers,
and wireless phones.
Building embedded software requires more specialized skills.
This course introduces the fundamentals of
software engineering for both conventional and
foundations are followed by hands-on practice in employing these advanced
techniques to build, verify, and maintain
these software systems
in multi-person team projects.
Specification and verification tools such as Statechart, Modechart,
and model checkers
will be described.
It is very important that the fundamental principles
must be studied before any project work starts,
because once you start on the project, your attention
and time will usually be devoted to the project details,
preventing you from absorbing the general and
basic principles being taught.
Introduction to SE
Software design issues
SE of embedded software
Management of SE
Maintenance of software and tools
Course requirements and grading:
team programming project with several modules (50%) and three
(end of February, beginning of April, and last day of class)
no final exam (50%).