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 Rational Rose and RequisitePro (IBM Rational Suite Enterprise software product), architectural design, distributed systems architecture, multi-tier web-based architectures, web-based application servers, Windows Server 2003 and Microsoft .NET Framework, CORBA distributed architecture, service-oriented architectures, object-oriented design, Rational Unified Process, 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, the student 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 Rational software tools: RequisitePro, Rose, and SoDA;
  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 Rational software tools: Rose and SoDA;
  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:

 

CS2604 Data Structures and File Processing

Materials:

 

Required Textbook:

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

Textbook Author's Web Site:

Virginia Tech CS Online SE Module:

IBM Rational Suite Enterprise:

Other Resources

Tentative Chronological Outline:
  Week 1:  
    Aug. 21 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. 23 Chapter 2: 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 3: Critical Systems.
  Week 2:  
    Aug. 28 Chapter 4: Software Processes: The Waterfall Model; The Prototyping Model; The Exploratory Development Model
    Aug. 30 The Incremental Development Model; The Spiral Model; The Reuse-Based Development Model; The Automation-Based Development Model. Rational Unified Process.
  Week 3:  
    Sept. 4 Chapter 6: Software Requirements: Requirements Engineering; Functional and Non-functional Requirements; Requirements Imprecision; Software Requirements Credibility Assessment
    Sept. 6

Quiz 1 (covers Chapters 1, 2, 3 and 4). Chapter 7: Requirements Engineering Processes: The Requirements Engineering Process; The System Feasibility Study Sub-Process. Requirements Elicitation and Analysis; Viewpoint-Oriented Requirements Elicitation and Definition; Requirements Validation Techniques.

  Week 4:  
    Sept. 11

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, A Template for Use Case Documentation, Example documentations of use cases: Place Order and Login.

    Sept. 13
  1. Assignment 1 given
  2. “A Tutorial on Use Case-based Requirements Engineering Using Rational Rose, RequisitePro, and SoDA”
  3. Assignment 1 Common Mistakes
  4. Assignment 1 SoDA Template and Help
  • Introduction to IBM Rational Suite Enterprise software product
  Week 5:  
    Sept. 18 Chapter 8: System Models: What is a System Model? System Modeling; External Perspective: Context Models; Different System Models (Representations) in UML
    Sept. 20 Chapter 11: Architectural Design: System / Software Design; Decomposition / Modularization; Modularity; System Quality Characteristics; Repository Model; Client-Server Model; Layered Model; Object-Oriented Paradigm; Function-Oriented Pipelining; Centralized Control; Call-Return Model: The Procedural Paradigm; Manager Model; Event-Driven Systems; Domain-Specific Architectures; Generic Models; Reference Architectures
  Week 6:  
    Sept. 25 Quiz 2 (covers Chapters 6, 7 and 8). Chapter 12: Distributed Systems Architectures: Software paradigm shift; Distributed Systems; Distributed System Characteristics; Critical Design Issues for Distributed Systems.
    Sept. 27 (Assignment 1 due) (Group Project 1 given) Distributed Systems Architectures—Multi-Tier Architectures (Client/Server architectures) and Distributed Object Architectures; A Client Server (Two-Tier) Architecture.
  Week 7:  
    Oct. 2 Example IBM Development and Deployment Environment; Thin and Fat Clients; Three- and Four-Tier Architecture; Application Servers; Distributed Object Architectures.
    Oct. 4 CORBA and DCOM; CORBA Application Structure; CORBA Standards and Objects; Object Request Broker (ORB); Inter-ORB Communications; CORBA Services; Peer-to-Peer Architectures; Service-Oriented Architectures; Web Services.
  Week 8:
    Oct. 9 Chapter 14: Object-Oriented Design: Object-Oriented Development; The Object-Oriented Paradigm; Objects; Classes; Instantiation; Variables (Attributes); Methods (Services); Inheritance; Message Passing; Encapsulation; Polymorphism; Dynamic Binding; Association
    Oct. 11

Chapter 15: Real-Time Software Design: Soft and Hard Real-Time Systems; Stimulus / Response Systems; Architectural Considerations; A Real-Time System Model; Real-Time Systems Design Process; Real-Time Programming; Real-Time Executive Components

  Week 9:  
    Oct. 16

MIDTERM EXAMINATION (Covers Chapters 1, 2, 3, 4, 6, 7, 8, 11, 12 and Slides 1-11)

    Oct. 18

(Group Project 1 due) (Assignment 2 is given with a tutorial document on how to create UML diagrams) Chapter 16: User Interface Design: User interface design principles; User interaction; Information presentation; User support; Interface evaluation

  Week 10:  
    Oct. 23 Chapter 18: Software Reuse: Reuse-based SE; Benefits of Reuse; Design Patterns; Generator-based Reuse; Application Frameworks; COTS Product Reuse; Software Product Lines.
    Oct. 25 Chapter 19: 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:  
    Oct. 30 Quiz 3 (covers Chapters 14, 15, 16, 18 and 19). Java platform, Enterprise Edition 5 (Java EE 5) Architecture
    Nov. 1 Java EE 5 Architecture; Microsoft .NET Framework with Windows Server 2003
  Week 12:  
    Nov. 6 (Assignment 2 due) (Group Project 2 given) Microsoft .NET Framework with Windows Server 2003. Service-Oriented Architecture (SOA)'s Killer App Unveiled; SOA Information Technology (IT) Strategy Guide
    Nov. 8 Chapter 5: 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.
  Week 13:  
    Nov. 13 Chapter 28: Process Improvement: Capability Maturity Model Integration (CMMI) for Systems Engineering / Software Engineering (CMMI-SE/SW)
    Nov. 15
  • Chapter 22: Verification and Validation
  • Definitions of terms; Levels of testing; Principles of testing; A taxonomy of testing techniques: informal, static, dynamic, and formal.
  Week 14:  
    Thanksgiving Break
  Week 15:  
    Nov. 27

Quiz 4 (covers Java EE 5, .NET, and Chapters 5 and 28)

  • Chapter 23: Software Testing
  • V&V techniques: Inspections, Reviews, Walkthroughs, Cause-Effect Graphing, Calling Structure Analysis, Control Flow Analysis, State Transition Analysis, Data Dependency Analysis, Data Flow Analysis, Fault/Failure Analysis, Semantic Analysis, Symbolic Evaluation, Traceability Assessment, Acceptance Testing & Alpha Testing, Assertion Checking, Beta Testing, Bottom-up Testing, Comparison Testing, Authorization Testing, Performance Testing.
    Nov. 29
  • Chapter 24: Critical Systems Validation
  • V&V techniques: Security Testing, Standards Testing, Debugging, Execution Monitoring, Execution Profiling, Execution Tracing, Fault/Failure Insertion Testing, Functional (Black-Box) Testing, Data Interface Testing, Software Interface Testing, User Interface Testing, Object-Flow Testing, Partition Testing, Product Testing, Boundary Value Testing.
 

Week 16:

 
    Dec. 4

(Group Project 2 due)

  • V&V techniques: Regression Testing, Equivalence Partitioning Testing, Stress Testing, Branch Testing, Condition Testing, Data Flow Testing, Loop Testing, Path Testing, Statement Testing, Symbolic Debugging, Top-Down Testing, Inductive Assertions, Predicate Calculus, Proof of Correctness.
    Dec. 6 Reading Day
    Dec. 12 FINAL EXAMINATION: Wednesday, Dec. 12 at 2:05 – 4:05 p.m. in Torgersen 1040.