Virginia Tech Course Title
Course Description:
  The primary objective of the course is to teach the principles and techniques of software engineering with emphasis on requirements engineering and software design. The course heavily concentrates on the Unified Modeling Language (UML) technology and client/server web-based software engineering with the Java Platform Enterprise Edition (EE) architecture and the Microsoft .NET Framework. Topics include: computer-based system engineering, software development processes and life cycle models, software requirements engineering, system models for requirements specification, use case-based requirements engineering using IBM Rational RequisitePro software product, architecting, distributed systems architecture, multi-tier web-based architectures, web-based application servers, and Microsoft .NET Framework, CORBA distributed architecture, service-oriented architectures, object-oriented design, UML modeling with IBM Rational Rose software product, real-time software design, design with reuse, component-based software engineering, user interface design, project management, software risk management, software testing levels and principles, verification and validation techniques, managing people, People Capability Maturity Model (P-CMM), quality management, process improvement, and Capability Maturity Model Integration (CMMI).
Learning Objectives:
  Having successfully completed this course, students will be able to:
  1. engineer the requirements of a large-scale software system based on Use Cases using the UML technology and the IBM software tool Rational RequisitePro;
  2. design a large-scale web-based client/server software system (e.g., e-business, e-commerce, e-solutions) using the (a) UML technology, (b) object-oriented paradigm, (c) Java EE architecture, (d) Microsoft .NET Framework, and (e) IBM software tool Rational Rose;
  3. apply contemporary techniques throughout the development life cycle of a large-scale software system; and
  4. work on a software engineering project with the title of Software Engineer.
Prerequisite:
 

A grade of C or better is required in CS3114 Data Structures and Algorithms

(or CS2604 Data Structures and File Processing or
CS2606 Data Structures and Object Oriented Development II)

Materials:
 

Required Textbook:

Ian Sommerville, Software Engineering, 9th Edition, Addison-Wesley / Pearson Education Limited. © 2011, 792 pp (available at the Virginia Tech University Bookstore)

Textbook Author's Web Site:

IBM Rational Software:

Other Resources

Tentative Chronological Outline:
  Week 1:  
    Aug. 24 Orientation to course. Explanation of intent of course and procedures. Chapter 1: Introduction: Software Crisis; Software Production and its Difficulties (Complexity, Conformity, Changeability, Invisibility); What is Software? What is Software Engineering?
    Aug. 26 Chapter 10: Socio-technical systems: Complex Systems made of Hardware, Software, and Humanware; Systems Engineering; System and Software Engineering; System Architecture Modeling; The System Engineering Process. Chapter 11: Dependability and security.
  Week 2:  
    Aug. 31 Chapter 2: Software Processes: Dr. Balci's Software Life Cycle Model; The Prototyping Model; The Exploratory Development Model
    Sept. 2
  • The Incremental Development Model; The Spiral Model; The Component-Based / Reuse-Based Development Model; The Automation-Based Development Model.
  • Problem Formulation - the first process of the software life cycle
  Week 3:  
    Sept. 7

Chapter 4: Requirements Engineering: A life cycle for requirements engineering; Feasibility Assessment; Requirements Elicitation and Analysis; Viewpoint-Oriented Requirements Elicitation; Functional and Non-functional Requirements.

    Sept. 9 Quiz 1 (covers Chapters 1, 2, 10 and 11 and Slides 01 through 05). Chapter 4: Requirements Engineering: Requirements Identification; Requirements Specification; Requirements Management; Requirements Quality Assessment.
  Week 4:  
    Sept. 14

Chapter 5: System modeling: System modeling from external, interaction, structural, and behavioral perspectives. Context models. Class diagrams. Sequence diagrams.

Use Case Definition and Examples, Example Use Case Diagrams, Example Use Case Dependencies Diagram for Order Processing, Organizing Use Cases, Dependency Relationships Among Use Cases.

    Sept. 16
  1. Assignment 1 given
  2. “A Tutorial on Use Case-based Requirements Engineering Using Rational Rose and RequisitePro”
  3. Assignment 1 Common Mistakes
A Template for Use Case Documentation, Example documentations of use cases: Place Order and Login.
  Week 5:  
    Sept. 21
  • Introduction to Network-Centric Software Engineering
    Sept. 23
  • Virtualization – Underpinnings of the Cloud Computing
  Week 6:  
    Sept. 28
  • The Process of Architecting
    Sept. 30

Quiz 2 (covers Chapters 4 and 5 and Slides 06-09)

(Assignment 1 due) (Group Project 1 given)

  • The Process of Architecting
  Week 7:  
    Oct. 5
  • An Overview of Network-Centric Software Architectures
  • Reading Assignment: Chapter 18: Distributed software engineering
  • Reading Assignment: Chapter 19: Service-Oriented Architecture
    Oct. 7
  • An Overview of Network-Centric Software Architectures
  Week 8:
    Oct. 12
  • An Overview of the Department of Defense Architecture Framework (DoDAF)

Chapter 6: Architectural High-Level Design

    Oct. 14

Chapter 6: Architectural High-Level Design

  Week 9:  
    Oct. 19 MIDTERM EXAMINATION (Includes all of the material covered until the exam date.)
    Oct. 21

(Group Project 1 due) (Assignment 2 is given with a tutorial document on how to create UML diagrams)

Chapter 7: Design and Implementation

Object-Oriented Design (OOD): Object-Oriented Development; The Object-Oriented Paradigm; Objects; Classes; Instantiation; Variables (Attributes); Methods (Services); Inheritance; Message Passing; Encapsulation; Polymorphism; Dynamic Binding; Association

User Interface (UI) Design: User interface design principles; User interaction; Information presentation; User support; Interface evaluation

  Week 10:  
    Oct. 26 Chapter 16: Software Reuse: Reuse-based SE; Benefits of Reuse; Design Patterns; Generator-based Reuse; Application Frameworks; COTS Product Reuse; Software Product Lines.
    Oct. 28 Chapter 17: Component-Based Software Engineering (CBSE): Component-based Development; CBSE Essentials; CBSE Challenges; Component Characteristics; Component Interfaces; Component Models (EJB Model, .NET Model, CORBA Component Model), Middleware Support; The CBSE Process; Component Composition
  Week 11:  
    Nov. 2 Quiz 3 (covers Chapters 7, 16, 17; OOD, UI Design and Slides 15-18)
  • An Overview of Java Platform, Enterprise Edition (Java EE)
    Nov. 4
  • An Overview of Java Platform, Enterprise Edition (Java EE)
  • An Overview of Microsoft Platform, .NET Framework
  Week 12:  
    Nov. 9 (Assignment 2 due) (Group Project 2 given)
    Nov. 11
  • An Overview of Microsoft Platform, .NET Framework
  Week 13:  
    Nov. 16 Chapter 22: Project Management: Software Project Planning; Software Project Scheduling; Task Durations and Dependencies; Allocation of People to Tasks; A Task (Activity) Network; Task (Activity) Bar Chart; Software Risk Management; The Risk Management Process; Software Risk Identification.
    Nov. 18
  • Capability Maturity Model Integration for Development (CMMI-DEV) version 1.3
  • People Capability Maturity Model (P-CMM) version 2.0
  • Chapter 26: Process Improvement
  Week 14:  
    Thanksgiving Break
  Week 15:  
    Nov. 30 Quiz 4 (covers Java EE and .NET)
  • Principles of Verification and Validation (V&V) and Quality Assurance (QA)
  • Software Verification, Validation and Testing Techniques
    Dec. 2
  • Chapter 8: Software Testing
  • Software Verification, Validation and Testing Techniques
  Week 16:  
    Dec. 7 (Group Project 2 due)
  • Software Verification, Validation and Testing Techniques
    Dec. 9 Reading Day
    Dec. 15 FINAL EXAMINATION: Wednesday at 2:05 – 4:05 p.m. in McBryde 329.