CSCI 4050/6050  Software Engineering Fall 2003

Professor: Krys J. Kochut
Texts: • Object-Oriented Software Engineering. Conquering Complex and Changing Systems, by Bernd Bruegge and Allen H. Dutoit, Prentice Hall, 2000.
UML and the Unified Process: Practical Object-Oriented Analysis and Design, by Jim Arlow, Ila Neustadt, Addison Wesley, 2002.
Grading:
Midterm 100
Final 130
Project 120
Grading Scale:
90% - 100% A
80% - 89% B
70% - 79% C
60% - 69% D
below 60% F
Remarks: In this course we will study the principles of Software Engineering. We will begin with introductory discussion of the software development process and what constitutes well-engineered software. Then we will move on to software specification and requirements definition.

The next significant part of the course will be devoted to software design. Although we will discuss several of the major design techniques, we will specifically concentrate on Object-Oriented Design (OOD). We will also discuss the principles of user interface design, concentrating on Graphical User Interfaces (GUIs).

A large portion of the course will be devoted to programming techniques, geared for reliable software development and software reuse. We will conclude the course with the discussions of software verification and validation techniques. The programming projects will be done in either C++ or Java. We will include a quick overview of a popular and useful C++ library, as well as Web form design and CGI programming. The projects will be assigned and discussed at a later date.

Each student is expected to do his/her own work, but programming projects most likely will include teamwork. All suspected cases of academic dishonesty will be handled in strict accordance with department and university policy. The grade of I (incomplete) is reserved for special cases only, such as a serious illness, and will be decided on individual basis.
Project:

Term Project for Fall 2003

Recently, a representative of the registrar's office of a local college asked if my software company could develop an on-line student registration system for the college. The college has approximately 1,700 students, 150 faculty, 40 support staff personnel, and 20 departments. The campus includes 8 buildings, housing offices for the faculty and staff and approximately 40 classrooms. In a typical semester, the college offers about 220 courses (some courses are large and subdivided into sections). After many years of increasing enrollments, the registrar's office staff noticed a serious need for a good, on-line student registration system.

Of course, my company with its talented staff of analysts, designers, and programmers is capable of developing such a system. As the development of the product must be rushed, I have setup the following deadlines, listed in the Table 1 below.

Task

POINTS

Deadline

Requirements document

15

Sep 15, 2003

Analysis document

20

Oct 6, 2003

System Design document

15

Oct 20, 2003

Object Design document

30

Nov 11, 2003

Implementation and Testing followed by Demos

40

Dec 10, 2003

Table 1: Project Deadlines

After a few informal meetings with the customer, I have concluded that additional functions might be added to the enrollment system later. Thus, the initial assessment of the requirements is as follows:

Initial requirements outlining the concept of the system:

The system must allow the college administrators to define and enter into the system a variety of data, including information on:

    • faculty
    • students (including transcripts of their past courses and results)
    • departments
    • courses (with prerequisites)
    • sections offered in a given semester (including enrollment caps)
    • roll lists (for each course section in a given semester)
    • buildings and classrooms
    • access authorization.
  1. An administrator-user should be able to add, modify, delete, and search/list entries in each of the above categories. For example, it should be possible to add/delete courses/sections, list all of the students currently enrolled in all of the sections, etc.
  2. A student-user must be allowed to list (but not modify or delete) available courses and sections, as well add his/her name to a roll list in a selected course section. The student should be able to delete his/her record by a specified cut-off date, but not later.
  3. A faculty-user should be able to view enrollment in sections that the faculty is teaching.
  4. The system should check the required prerequisites and flag students enrolled without the required credit for a selected course.
  5. The system should allow multi-user access, protecting against an incorrect concurrent access. The system should maintain suitable authorization data and enforce access validation.
  6. The system must have an easy to use graphical user interface (GUI) with several screens suitable for each type of the system's functionality. The system should be Web-enabled, i.e. accessible from a common Web browser, such as the Netscape Communicator and Microsoft Explorer.
  7. The system should use a permanent data store (most likely a relational database) to keep all of the data.
  8. The college administrators insist that the system must work on Sun Solaris 2.8 and be coded in either C++ or Java. Also, if a database system is to be used, it must be MySQL.

 

Class Schedule:
Week Content
1 Intro to Software Engineering
Quality Software, Software process and software life-cycle
System development
2 Requirements elicitation: overview of activities
Use case modeling
Term project and team formation
3 Building use case diagrams in Rational Rose - class demo
Use case descriptions
Requirements document
4 Static modeling: Basic elements in UML class diagrams
Static modeling: Aggregation and generalization in UML class diagrams
Static modeling: UML class diagram examples
5 Building class diagrams in Rational Rose - class demo
Analysis: overview of activities
Use case realization
6 Dynamic modeling: UML sequence diagrams
Dynamic modeling: UML collaboration diagrams
Building interaction diagrams in Rational Rose - class demo
7 System design: overview of activities
Architecture design; common architectural frameworks
Implementation of control
8 Roadmap of construction
9 Object design: overview of activities
Data store
10 Graphical User Interfaces
Web Interfaces
11 Implementation: overview of activities
12 Organizing the project
13 Class libraries in C++ and Java
14 Validation and Testing
Quality control techniques
Tesing activities
15 Deployment and management
Exam dates:
Midterm October 7, 2003 regular class time
Final  December 11, 2003 3:30 - 6:30 pm