ICS440 Software Engineering

Welcome to Software Engineering

Instructor: Dr. Ken Cosh

Schedule: M/W 10:00-11:30

Course Description:

This course examins the role of software engineering in developing quality software. Topics include the software life cycle, software project management, analysis of requirements, software design, implementation, software testing, software maintenance, configuration management and software reuse. A case study in a business environment will be examined.

Course Objectives:

Even simple software systems often have a high level of complexity.  Software engineering is therefore a discipline in which rigorous and systematic methods are applied cost-effectively to the development of such systems with the aim of reducing problems posed by complexity.

On completion of this course, students should be familiar with a general range of topics relevant to Software Engineering, including issues concerning requirements and design, verification and validation and software evolution, as well as more specialised subject matter such as critical systems engineering and formal methods.

Syllabus

Course Materials

Essay Titles

References:

1) Software Engineering, 8th Edition, Sommerville, 2007.

Course Contents:

Week Content Hours 

(Lect/Lab)

1 Introduction  

  • Why Software Engineering?
  • Introduction to Software Engineering
  • Software Processes
  • Software Engineering Project Management
3 (3-0)
2 Engineering Software Requirements 

  • Functional and Non-functional Requirements
  • User Requirements
  • System Requirements
  • The Software Requirements Document
  • Requirements Engineering Processes
3 (3-0)
3 System Models 

  • Context Models
  • Behavioural Models
  • Data Models
  • Object Models
  • Prototyping
3 (3-0)
4 Formal Specification 

  • Formal Specification in the Software Process
  • Interface Specification
  • Behavioural Specification
3 (3-0)
5 Design Principles I 

  • Architectural Design
  • Distributed Systems Architecture
3 (3-0)
6 Design Principles II 

  • Object-Oriented Design
  • Real-time Software Design
3 (3-0)
7 Design Principles III 

  • Design with Reuse
  • User Interface Design
3 (3-0)
8 Critical Systems Engineering 

  • Dependability
  • Critical Systems Specifications
  • Critical Systems Development
3 (3-0)
9 Verification and Validation 

  • Verification and Validation Planning
  • Software Inspections
  • Automated static Analysis
  • Cleanroom Software Development
  • Critical Systems Validation
3 (3-0)
10 Software Testing 

  • Defect Testing
  • Integration Testing
  • Object-Oriented Testing
  • Testing Workbenches
3 (3-0)
11 Software Cost Estimation and Quality Management 

  • Estimation Techniques
  • Algorithmic Cost Modeling
  • Quality Assurance and Standards
  1. Quality Planning and Control
  2. Process Improvement
3 (3-0)
12 Legacy Systems and Software Change 

  • Legacy System Structures
  • Legacy System Assessment
  • Software Maintenance
  • Architectural Evolution
3 (3-0)
13 Software Re-engineering and Configuration Management 

  • Source code Translation
  • Reverse Engineering
  • Change Management
  • Revisions and Variants
3 (3-0)
14 Current Issues and Future Directions in Software Engineering 

  • Software Engineering: The Way Forward
3 (3-0)
15 Review 3 (3-0)