Header image  

Computer Science and Systems Analysis

 
  Home ::   Teaching ::   Research  ::   Publications  ::   SEURAT  ::  
   
 
CSA 348 - Applied Software Engineering
 

Instructor: Janet E. Burge, 230H Kreger Hall, 9-9760, burgeje-at-muohio.edu
Office Hours: M: 11am, W: 10am, 1:15-2:15, F: 9 am

Prerequisite: CSA 274 (Data Abstraction and Data Structures)
Required Text: Bruegge & Dutoit, Object-Oriented Software Engineering Using UML, Patterns, and Java, 2nd Edition
Additional References: See Course Documents on myMiami

Catalog Description: Study of all phases of the systems development life cycle: project identification and justification, requirements analysis, data modeling, process modeling, design and specification techniques, prototyping, systems architectures, software design and construction, and object oriented analysis and design.

Course Learning Objectives:

Objective 1: To provide students with a foundation for organizational management and communication.

  1. The student can identify and describe the different stages of a development lifecycle
  2. The student can identify and describe different software lifecycle models
  3. The student can interpret a project plan
  4. The student can create a project plan using task durations, dependencies, and milestones

Objective 2: To provide students with experience in the technical aspects of software engineering

  1. The student can create a requirements specification document using scenarios, use cases, and use case diagrams from a set of customer defined requirements
  2. The student can create a UML class diagram that represents a problem domain from a requirements specification
  3. The student can document a software architecture using UML diagrams
  4. The student can create a UML sequence diagram representing class-level behavior
  5. The student can implement a system based on the information contained in design level diagrams
  6. The student can use configuration management to control different versions of a system
  7. The student can effectively test a software system using black box testing
  8. The student can effectively test a software system using white box testing

Objective 3: To provide students with an understanding of the importance of a broad range of software engineering related topics

  1. The student can explain the purpose of design in the creation of software systems
  2. The student can describe the importance of formal methods of analysis and design
  3. The student can describe the importance of recording analysis and design decisions
  4. The student can describe methods of quality assurance in analysis, design, and implementation

Syllabus: Note: topics, dates, and assignments are subject to change at instructors discretion. The TBD elements in the syllabus will be filled in after the start of the semester. Assignments are due at the start of class (except for critiques, which are due at the end in class) in hard copy format as well as placed in the turnin folder for the assignment. Late assignments will be penalized 10% the first 24 hrs, 25% the next (reductions will be taken at the time of computing the final grades for the course). Assignments more than 48 hours late will not be graded. Laboratory exercises must be completed during the scheduled lab period and turned in at the end of that time. Labs can only be made up in the case of documented illnesses or other excused absences with prior instructor permission.

CSA 348 Syllabus
Week
Date Topics Readings Assignments Due
1
8/20 Introduction to Software Engineering Ch. 1
See exercises 1.1 – 1.8, 1.10
Student Survey
8/22 Unified Modeling Language (UML) Ch. 2
See exercises 2.1-2.11, 2.13-2.14
 
8/24 Lab 1: UML and UML Tools Lab Preparation: Chapter 2
2
8/27 Project Organization

Ch. 3
See exercises 3.1-3.5, 3.9, 3.11-3.12

Homework 1: Critique of "A View of 20th and 21st Century Software Engineering"
8/29 Software Requirements Ch. 4
See exercises 4.2-4.10, 4.12-4.14

8/31 Lab 2: User Interface Development Review

Lab Preparation: Using Eclipse
Group: Status Report

3
9/3 Labor Day - NO CLASS  
9/5 Software Requirements II  
9/7 Lab 3: Configuration Management and Version Control Ch. 13
See exercises 13.1-13.2, 13.4

Homework 2: UI Development Review
Group: Status Report
Lab Preparation: Read Chapter 13; Review CM Slides (posted in myMiami)

4
9/10 Analysis Ch. 5
See exercises 5.1-5.10
 
9/12 User Interface Design  

Group: Requirements Specification
Project Description

9/14 Lab 4:Analysis (Guest Instructor) Ch. 5; Lecture notes Lab Preparation: Anslysis Lecture; Chapter 5
Group: Status Report
5
9/17 System Design: Decomposing the System Ch. 6
See exercises 6.1-6.7
9/19 System Design: Architectural Styles Ch. 6 Homework 3: Analysis
9/21 Lab 5: Prototype Demonstrations  

Group:: User Interface Prototypes
Group: Status Report

6
9/24 Midterm #1
9/26 System Design: Addressing Design Goals Ch. 7
Exercises 7.1-7.2, 7.4-7.5
9/28 Lab 6: User Interface Evaluation Group: Status Report
Lab Preparation: Review UI Design Lecture
7
10/1 System Design: Reusing Pattern Solutions Ch. 8
See exercises 8.1-8.8 (all…)
10/3 Object Design: Specifying Interfaces; Mapping Models to Code Ch. 9,10
From Ch. 10: all
Group: Analysis Specification
10/5 Lab 7: Design to Code Group: Status Report
8
10/8 Design: What Makes Good Design? Class Notes
10/10 Project Management Homework 4: Design to Code
10/12 Lab 8: Project Management Using MS Project Group: Status Report
9
10/15 Testing I and SGID Ch. 11
See exercises 11.1-11.6
10/17 Testing II  

Group: Design Specification

10/19 Lab 9: A Day off, with FREE LAB POINTS NOTHING! It's a DAY OFF
10
10/22 Testing III
10/24 Testing IV  
10/26 Lab 10: Unit Testing Group: Status Report
11
10/29 Rationale Management
Ch. 15
See exercises 15.1-15.2, 15-4-15.7
 
10/30 Software Life Cycle Ch. 12
See exercises 12.1, 12.3

Group: Test Plan

11/2 Lab 11: Rationale

Lab Preparation: Java Collections (data structures) and the Argument Ontology (available in Course Documents on myMiami)
Collections Guide
Java Glossary
Turorial

Group: Status Report

12
11/5 Midterm Exam #2    
11/7 Software Maintenance  

Group: Software Inspection Inputs

11/9 Lab 12: Software Inspection Group: Status Report
13
11/12 Component Based Software Development
11/14 Introduction to Web Services
  Group: Software Inspection Results
11/16 Lab 13: Web Servicest Group: Status Report
14
11/19 Open Source Software Development Homework 5: Critique - Cathedral and the Bazaar
11/21 Thanksgiving Holiday - NO CLASS  
  11/23 Thanksgiving Holiday - NO CLASS    
15
11/26 Methodologies; Agile Methods (I) Ch. 16
Look at ALL exercises for this chapter
 
11/28 Agile Methods (cont.)

Homework 6: Critique of Mythical Man Month

  11/30 Lab 14: Pair Programming Group: Status Report
Lab Prep: Slides on Agile Methods; Review Unit Testing
16
12/3 System Demonstrations (I) Group: Final Project
12/5 System Demonstrations (II)  

Group: Test Procedure; Users Manual; Installation Guide

12/7 Lab 15: System Testing of Final Release
12/12 Final Exam - Wednesday at 12:30

Grading: The final grade for CSA348 is based on the following:

Assignment Percentage

Homework and Lab Exercises (Individual Assignments):

  • Homework 1: 20th and 21st Century Software Engineering Critique (7)
  • Lab1: UML Tools (4)
  • Lab 2/Homework 2: User Interface Review (4/6)
  • Lab 3: Configuration Management and Version Control (4)
  • Lab 4/Homework 3: Analysis (4/6)
  • Lab 5: Prototype Demonstrations (4)
  • Lab 6: User Interface Evaluations (4)
  • Lab 7/Homework 4: Design to Code (4/6)
  • Lab 8: Project Management (4)
  • Lab 9: Rationale Management(4)
  • Lab 10: Unit Testing (4)
  • Lab 11: Component Based Software Development (4)
  • Lab 12: Software Inspections(4)
  • Lab 13: Web Services(4)
  • Lab 14: Pair Programming (4)
  • Lab 15: System Testing of Final Release (5)
  • Homework 5: Critique of the Cathedral and the Bazaar (7)
  • Homework 6: Critique of the Mythical Man Month (7)

Note: The critique grade includes the discussion of the critiqued paper held during class.

20%
In-Class Exercises and Attendance 5%

Development Project

  • Group Status Reports (5)
  • Requirements Specification (14)
  • User Interface Prototypes (10)
  • Analysis Specification (14)
  • Design Specification (14)
  • Code Inspection (code description, write-up of results) (3)
  • Test Plan (3)
  • Test Procedure (5)
  • Software Demonstration (in class) (5)
  • Software Final Version (22) - includes documentation (Javadoc) and unit testing (of selected functions - your choice)
  • User's Manual and readme.txt installation guide (5)


30%
Midterm 1 10%
Midterm 2 15%
Final Exam 20%

Grading Policy: Numeric grades will be given for all assignments. Final grades to the class will be A, B, C, D, or F as appropriate with A range being 90-100, B range 80-89, C range 70-79, D range 60-69, anything less than 60 an F. Plus/minus grades will be reserved for borderline cases only. 

Group Projects: In your future careers as software professionals, you will need to be able to work with others. This means an often difficult balancing of personalities, abilities, schedules, and motivation levels. You are unlikely to have the ability to fire a co-worker (although you may want to) and are even less likely to get your supervisor's permission to break from the group to do your own, parallel, version of the project. That won't happen here either. It is important to know that group members will be assessing each other and that not all members of the group will necessarily receive the same grade for the project.

Groups:

Gamma -- Burtrum, MIller, Vingris

SuperSoft Corporation -- Marmor, Ringenbach, Weneck

BETS Engineers -- Brookbank, Edester, Truitt

Flyweights -- Hanna, Laryukhin, Wiley

j-j/k -- Ludwig, Nelson, Vaughan, Witt

Academic Honesty: All work assigned as individual work must be done as individual work. Violations will be handled in accordance with the Miami University Academic Honesty Policy.