Syllabus --- Software Engineering
- Text: "Software Engineering,"
6th Edition
-
Author:Ian Sommerville
- Publisher:Addison-Wesley
- ISBN:0 201 39815 X
- (Recommended)
- "UML in a Nutshell: A Desktop Quick Reference"
- Author: Sinan Si Alhir
- Publisher: O'Reilley
- ISBN 1565924487
-
Web page to order this
- (Recommended)
- "UML Distilled"
- Authors: Martin Fowler and Kendall Scott
- Publisher:Addison-Wesley
- ISBN 020165783X
-
Web page to order this
Goals of this course
This course involves the general principles of Software
Engineering. The student will learn some of the issues involved
in developing a large (i.e., bigger than what one person can do)
system. This is a capstone course for the department and is meant
to pull together material learned in other courses. The student is
assumed to have an extensive background in Object Oriented
Programming, data structures and related topics.
In particular, the course involves:
- clarifying the requirements of a large system
- initial design
- developing rigorous specifications for the new system.
Formal descriptions, including Z.
- Object-oriented design using UML (with CASE tools),
data-flow diagrams.
- Modularization of the system.
- System-integration
A familiarity with object-oriented programming is assumed.
Grading policy
There will be at least 3 exams, all given as fill-out forms on web
pages accessible from this page and a term project. When the exams
are graded, grades will be emailed to students (along with the
correct answers to questions). Final grades will depend on
written assignments, and exams. The lowest exam grade will be
dropped. Written assignments count as 1/10 of an exam.
At any time, students may find out their current grades by
consulting
this web page using the password given in emails with exam
grades.
The term project will be team-oriented. Students must sign up
for a programming team and hold regular team-meetings. Each team
decide on which of the two listed projects to do.
Discussion group for this class
Team Signup Sheet
Topics
- Introduction to Software Engineering
Scope (Chapter 1)
- Historical software projects: OS development (IBM).
- The Macintosh GUI
- Computer-based system engineering (Chapter 2)
Use of CASE tools.
- Software processes (Chapter 3)
- Project Management (Chapter 4)
- Scheduling techniques: Critical path
analyis and PERT diagrams.
- Requirements.
- The difference between requirements and specifications.
- the need to clarify vague requirements.
- Requirements engineering processes (Chapter 9)
- System models
- Object-oriented modeling: UML.
- Using models to develop specifications. The Z specification
language.
- Software prototyping
- Prototyping verses the Waterfall Model of software development.
- The Spiral model of software development.
- Prototyping programming languages: Perl and Python.
There will be a review of the Perl language for
object-oriented programming.
- Formal specifications
- The Z specification language. A review of the
basic features of the language.
- Using Z compilers for consistency analysis of
specifications.
- Advantages and disadvantages of using Z.
- System design. Detailed design documents.
- Considerations for coding modules.
- Programming languages
- NS Diagrams of modules: structures flow charts.
- Software complexity metrics: lines of codes, etc.
- Software Testing Strategies (Chapter 16 and 17)
- Object-Oriented Analysis (Chapter 20)
If there is any time left, we will explore the Demeter System
for Adaptive Software Development.
Links
Justin R. Smith
Last modified: Mon Dec 17 12:13:45 EST 2001