Curriculum>Courses>Software Engineering

Home

Curriculum

Research

Resources

Societies

Faculty

Links

Alumni

Site Map

Contact Us

 

MD_Bar.gif (953 bytes)

 

 

CMSC 435: SOFTWARE ENGINEERING

Catalog Description

A study of processes and design methods behind the engineering of software applications. Laboratory experience in applying the techniques covered. Product assurance, specification and design techniques, iterative enhancement, design and code inspection techniques, correctness, development tools. The development of a large software project.

Topics

  1. Motivation --- Why SE instead of ad hoc techniques?

  2. Terminology; Introduction to process models and configuration management

  3. Basic principles of quality assurance and risk reduction

  4. Requirements capture and analysis

  5. Specification and design techniques

  6. Implementation issues

  7. Unit test techniques

  8. System integration and testing techniques

  9. Correctness; Verification

  10. Support tools and automated systems; CASE tools

  11. Measurement and costing issues; Planning and scheduling

  12. Standards

  13. Human factors

  14. Maintenance

Course Text

  • Carlo Ghezzi, Mehdi Jazayeri and Dino Mandrioli, Fundamentals of Software Engineering, Prentice Hall, 1991.

  • Bryan and Siegel, Software Product Assurance: Techniques for Reducing Software Risk, Elsevier, 1988.

  • Barnes, Programming in Ada, Addison Wesley, Third Edition, 1989.

Typical Grading and Workload

The class will be divided into teams of three and four students each. On the first day of class, all students will be given an initial set of `customer generated' requirements for a desired system. The system has several major phases that must be completed, and there is a deliverable associated with the end of each phase. (These phases are requirements analysis, initial design and specification, implementation and unit testing, and system integration.) However, whereas each team will undertake all phases, each phase will be performed on a different component from the overall application, e.g., each team will write a requirements document for the first component, do initial design and specification for the second component, and subsequently implement the third component. Finally, each team is responsible for providing support during system integration. In this way, team members gain experience in having to manipulate software items that they did not themselves create. To accomplish this, the `deliverables' from each phase will be redistributed among teams following each phase. Changes in the materials given out after each phase can only be approved by a class-run configuration review board, which will only consider requests made in writing and is likely to make judgments on a weekly basis.




  MD_Bar.gif (953 bytes)

Last Updated Wednesday, September 19, 2001
©2001 University of Maryland (UMD). All rights reserved
Best viewed by IE 5,5 and 800*600 resolution.

 

Curriculum>Courses>Software Engineering