CSC 640 - Software Engineering

Department of Mathematical Sciences, UNCG
Fall 2003
Course web page: http://www.uncg.edu/~nlgreen/csc640/fall03/index.html
Instructor: Dr. Nancy Green


Email:nlgreen@uncg.edu

Office Hours:  MW 3:30-4:30 pm and by appointment
Office: 322 Bryan
Meeting Time: Wednesdays 5:30 - 8:20 p.m.
Meeting Place: 121 Bryan
Instructions for Project
Instructions for Other Assignments
lecture slides  (textbook author's) 

Course Description

·Prerequisites: Graduate status in Computer Science and satisfaction of all provisional admission requirements for CSC130/230/330 and English literacy. (This course assumes that the student has good object-oriented programming skills in C++ and spoken/written English language proficiency. The project, other assignments, and tests will require analytical skill, communication skill, and programming skill.)
 

·Brief Description:This is a graduate-level introduction to software engineering (SWE), which is the engineering discipline concerned with finding and applying solutions to problems encountered in delivering usable, useful, high quality, large-scale, real-world software systems in a timely and cost-effective manner. The students will learn about SWE by lecture, readings, and by participating in a group software project.
 

·Course Objectives: The overall goal is for the student to learn basic principles of SWE that can be applied to his or her career as a software engineer, or that can be the foundation for futher graduate study.
 

·Topics:

  • Software Life Cycle
  • Software Process Models
  • Software Project Management
  • Requirements and Specification Methods
  • Design Methods
  • Implementation and Testing Methods
  • Maintenance and Reusability
  • Special Topics
·Outcomes: By the end of the course, the student
  • should understand some key SWE terminology, issues, and methods,
  • should have completed a group project and other assignments demonstrating the application of knowledge of the above,
  • should know how to find, evaluate, and present information on SWE.  
·Textbook: Sommerville, Ian. Software Engineering, 6th Ed. Addison-Wesley, 2001. Author's web site for book<http://www.sofware-engin.com> contains lecture slides, suggestions for additional further readings, and links to software engineering web sites.

Course Calendar

This calendar may be revised during the semester.  Announcement of changes in due dates and tests will be made with at least 2 weeks advance notice.
 
Wednesday
Lecture: Textbook Readings - Exams - Project Due Dates
Other Class Activities
8/20
Overview: ch. 1-3
Course web page, Student Info Forms, OOPL proficiency exercise
8/27 
Requirements: ch. 5, 8, and my Req.Eng. notes
Team/Client Req. Meetings (assign teams, 1st client meeting)
9/3
Requirements: ch. 6-7; 


see also: UML Guide (Borland)B&D handout p. 39-44

Team/Client Req. Meetings 



9/10
Requirements:ch. 9 


Project management: ch. 4, 22

Team/Client Req. Meetings
(Turn in list of which group member is responsible for each Requirements task unit and the prototype demo by the end of class tonight, if not sooner.)
9/17
Prototype Demo/Informal Review
 
Handout on use cases;
Go over critical review instructions
9/24
Test 1 (ch. 1-9, 22)
Team Meetings (optional, after test)
10/1
Design (Arch.): ch. 10 


Requirements Doc. due

Student reports 
10/8 (fall break is 10/11-10/14)
Design (OOD): ch. 12,
Student reports 
(Turn in list of which group member is responsible for each Design task unit and informal design review presentation by the end of class tonight, if not sooner.)
10/15
Design (Reuse): ch. 14
Design (UI): ch. 15
Student reports 


Team Design Meeting

10/22
UI Design (cont.)
Informal Design Presentation due
Design review  & Student reports
10/29
Defect Prevention: ch. 18; 
Notes on Testing with Drivers and Stubs, notes on Evaluating SWE Information


Design Doc.  due

Test case selection exercise (?) & Student reports
11/5
V&V: ch. 19 
Software Testing: ch. 20 
Student reports
(Turn in list of which group member is responsible for implementing each class and for remaining miscellaneous task units by the end of class tonight, if not sooner.)
11/12
Mgmt (Cost, Quality): ch. 23, 24; Software Change: ch.  27 


Unit-tested code due

Student reports & Code Review exercise (?)
11/19
Test 2 (ch. 10, 12, 14-15, 18-20, 23, 24, 27)
Team Meetings (optional, after test)
11/26 (No class - Thanksgiving Holiday)
(no class)
12/3 (Last class)
Final Project Demo,


Final project deliverables due 

12/10-12, 12/15-17 (Final exam period)
Make-up tests and/or revised Project Demo to show bug fixes (by appointment & with permission of instructor only) 



Assignments and Project Deliverables

·Project

·Requirements Document Instructions

·Design Document Instructions

·Implementation Instructions

Instructions for Final Implementation Deliverables (Code, Demo, Misc Tasks)

·Miscellaneous Tasks Instructions



Grading


Percentage of Grade by Category
Description
Maximum points (total 100)
Project (50%)
one task unit of Requirements Deliverables (see below)
15
one task unit of Design Deliverables (see below)
15
one task unit of Implementation Deliverables (see below)
15
one unit of Misc. Tasks (see below) 
5
demonstrated contribution to success of group project beyond above 
(extra credit - a maximum of 50 points from project will count towards course grade however) 
Exams (40%)
Test 1
20
Test 2
20
Critical Review (10%)
in-class presentation reviewing SWE article
10

Task Units for Project Deliverables

The tasks for each phase of the project will be divided into units to divide up the work fairly. As shown in the table above, each person must perform one task unit of each category. Group members are expected to contribute to each task through extensive discussion; and they are encouraged but not required to provide feedback on each others' deliverables and to cooperate on debugging and testing code. This type of group collaboration is not considered cheating!  However, to reduce problems that often arise in group assignments, only one person will get credit for each task unit. For information about the deliverables in each task unit, please see the Project Instructions web page.

Requirements Deliverables Tasks (for 6-member group) (for details about each task see Requirements Document Instructions):

·Unit 1: Preface, Introduction, Glossary, all User/Domain Requirements

·Unit 2: Parts of Requirements Doc.: System Requirements (functional & non-functional), System Evolution, Prioritized List of User and System Requirements

·Unit 3: Parts of Requirements Doc.: System Models (DFD, STD, Class Model)

·Unit 4: Parts of Requirements Doc.: Use Case Analysis (written use cases and UML use case diagram), Release Plan (list of use cases in each release following prioritization of requirements in unit 2)

·Unit 5: Prototype: implementation of prototype in C++ and creation of realistic sample files for demonstrating prototype. (Note: presenting the prototype demo is a separate task unit; see miscellaneous tasks below.)

·Unit 6: for each Use Case, 1 Primary Scenario and 3-4 secondary scenarios. 
 

Design Deliverables:  See Design Deliverables Instructions for task units.
 

Miscellaneous Tasks (for 6-member group): See Final Implementation instructions for details on 3-6:

·Unit 1: prototype demo (giving presentation, not credit for implementing the code) and writing summary of feedback from client on demo (included in Requirements Doc)

·Unit 2: informal design review presentation (making PPT slides and giving presentation)

·Unit 3: part I of final demo 

·Unit 4: part II of final demo

·Unit 5: packaging final product and running live demo

·Unit 6: User Manual 
 

Implementation Tasks:
The C++ classes to be implemented should be divided among the group members and each person's grade will be determined as a function of the timeliness, quality, amount, and difficulty of the working source code that he or she contributes to the final product. Only one person will get credit for each C++ class.  In order to determine timeliness, the unit-tested code that each person turns in (due several weeks before the final implementation is due; see the calendar for the date) will be compared to the code in the final version of the product.  Therefore, the less unit-tested code is turned in or the less it resembles the final product, the less credit will be received for the final version of that code. In order to determine quality, code readability, maintainability, and documentation (comments) will be considered. Amount of code will be determined by the amount of working code in the final implementation that was written by a person. Difficulty will be determined by the difficulty of implementing the services that the class provides; however, unnecessary complexity will reduce the code's quality rating.


Course Policies

·Attendance is required. You may be dropped from the course for missing more than two meetings.
 

·Collaboration on the group project is encouraged!. However, exams and assignments designated for individual credit are to be the work of the individual student alone. Students are expected to be familiar with and to follow the UNCG Academic Integrity Policy.
 

·Due dates:  Late work will not be accepted.  Make arrangements with the instructor to turn in work early if you will not be in class on the due date.
 

·Missed exams may be taken only if the student's absence has been excused by the instructor and if the exam is made up on the make-up exam time announced by the instructor.


Course Resources

Books On UNCG Library Reserve for CSC640:

·The Mythical Man-Month, Frederick P. Brooks, Addison-Wesley, 1995.

·A Discipline for Software Engineering,Watts S. Humphrey, Addison-Wesley, 1995.

Other Recommended Books

·Object-Oriented Software Engineering, Bruegge, Bernd and Dutoit, Allen H., Prentice-Hall, 2000.  [See p. 39-44 on use cases and scenarios]

·Introduction to the Personal Software Process, Watts S. Humphrey, Addison-Wesley, 1997.

·Introduction to the Team Software Process, Watts S. Humphrey, Addison-Wesley, 2000.

·Use Cases: Requirements in Context, D. Kulak and E. Guiney, Addison-Wesley, 2000.

·Requirements Analysis and System Design, L. A. Maciaszek, Addison-Wesley, 2001.

Journals (* if in UNCG library)

·ACM Computing Surveys (on-line)

·ACM Transactions on Software Engineering and Methodology  (on-line)

·Communications of the ACM  (on-line)

·IEEE Computer*

·IEEE Software

·IEEE Transactions on Software Engineering*

·Publications of the Software Engineering Institute (on-line)
 

The University Writing Center offers all UNCG students free, individual assistance with planning,
writing, or revising papers for any course.

On-line Reference Materials

·Guide to Grammar and Writing

·UML Quick Reference

·UML Guide (Borland)

·Yale University Web Style Guide
 

Related Conferences

·SE SW Eng Conf 2002

·CSEET2001
 

Other Related Web Sites

ACM Digital Library (ACM publications available on-line from campus)
ACM Software Engineering Code of Ethics
ACM SIGSOFT : Software Engineering Notes , RISKS
CMU Software Engineering Institute (SEI) : Personal Software Process (PSP) , Capability Maturity Models (CMM)
Dilbert
IEEE : Software , Transactions on Software Engineering
RTP Chapter of SPIN (Software Process Improvement Network)
Software Engineering Body of Knowledge


Send comments and requests about this web site to nlgreen@uncg.edu