3 credit/unit hours – Three hours of lecture weekly; one term

This course covers the basic principles and concepts of assured software engineering; system requirements; secure programming in the large; modeling and testing; object-oriented analysis and design using the Unified Modeling Language (UML); design patterns; frameworks and Application Programming Interfaces (APIs); client-server architecture; user interface technology; and the analysis, design and programming of extensible software systems.

Learning Objectives

Upon completion of this course the student will be able to:

  • Discuss software project management and security process models;
  • Describe the role of assured software engineering;
  • Apply analysis skills to assure functionality and quality requirements;
  • Describe software architecture, architectural patterns, and client-server computing;
  • Discuss misuse cases;
  • Describe design patterns: composite, player-role, singleton, etc.;
  • Develop and review core UML diagrams;
  • Describe domain modeling;
  • Discuss reusable technologies;
  • Assure correct software behavior under all conditions;
  • Verify and validate software including acceptance testing; and
  • Demonstrate appropriate and ethical behavior and good work habits

Main Topics

1.0 Evaluating the assurance and performance of various simple software designs
2.0 Addition of features, including assurance features, to existing systems
3.0 Testing a system to verify conformance to test cases including assurance
4.0 Building a graphical user interface (GUI) for an application
5.0 Building and reading core subset of UML
6.0 Developing and presenting a simple set of assured software requirements
7.0 Implementing and using the above using reusable technology, while understanding risks of reuse