5/00

COMPUTER SCIENCE 340

SOFTWARE ENGINEERING

I. Introduction

A. Catalog Description

Students will study the design and implementation of large software systems. Topics include design methodologies, programming team organization and management, program verification and maintenance, human engineering, and CASE tools. Prerequisites: one of CSci 281, CSci 361, or CSci 455 with a grade of C- or better. Satisfies a writing requirement in major contracts.

B. Objective

1. Students will learn about the tools necessary to develop a system from requirements to operation.

2. Students may gain experience in working with a group on a medium sized project.

C. Prerequisites

Students must have completed one of CSci 281, CSci 361, CSci 455 with a grade of C- or better. There will be exams, and there may be individual and group projects.

II. Required Topics

1. Design techniques: Top-down design, object-oriented design, design patterns, UML, information hiding, iterative enhancement, program verification.

2. Organization and Management: Milestones and estimating, chief programmer teams, program libraries, walk-throughs

3. Program testing and maintenance, planning for change.

4. Human engineering, taking into account user needs

5. Case tools.

6. Team project: (Optional) Organization, management, and development of a small group project.

III. Bibliography

Frederick Brooks,

The Mythical Man-Month

E. W. Dijkstra,

A Discipline of Programming

Dah, Dijkstra, & Hoare,

Structured Programming

Martin Fowler with Kendall Scott ,

UML Distilled: Applying the Standard Object Modeling Language

David Gries (ed),

Programming Methodology

Erich Gamma, Richard Helm

Ralph Johnson, John Vlissides,

Design Patterns: Elements of Reusable Object-oriented Software

Benjamin L. Kovitz,

Practical Software Requirements: A Manual of
Content and Style

Craig Larman,

Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design

Steve McConnell,

Code Complete

Martin L. Shooman,

Software Engineering Design, Reliability, and Management

Ian Sommerville,

Software Engineering

Susan Weinschenk, Pamela Jamar, and Sarah C. Yeo,

GUI Design Essentials