SE 2030
Software Engineering Tools and Practices
Dr. Rob Hasker

 


Description     Syllabus     Policies     Quizzes     Lab info     Coding Standard     Grading     Blackboard     Sample Code


Credit: Much of this material was originally written by Dr. Mark Hornick

Course Description

As an SE major, you've previously taken CS or SE courses in computer programming and data structures. With this background, you have a basic understanding of how simple Java applications are constructed using Eclipse. But what kinds of tools are used to create "real" applications, and how do you use them together?

This course provides an introduction to the Software Engineering Tools and Practices - a look at a typical approach software engineers create applications in practice. Topics include requirements analysis, high-level design, detail-level design, UML modeling, code generation, application building, and revision management. Laboratory assignments provide an opportunity for students to develop an understanding of these tools and how how they are used in actual practice. 

Please consult the Course Catalog for detailed objectives.

Textbook

No official textbook. Instead, we have provided urls to internal and external websites. The Reading Assignments contain the links to these sites. In addition to those, an SE2030 Wiki and and Enterprise Architect Wiki have been created for this course.

Syllabus

Sequence Diagrams

Video: Sequence Diagrams with EA

Week Day Topic Reading Lab
1 T Introduction to the course

UML Review

Install Enterprise Architect 10.0 - see your instructor for the license key

Wiki - Class relationships in UML Class Diagrams

PPT: Class relationships in UML

Lab 1: Software Design with UML Class diagrams

Due via Blackboard by end of lab.
Read these submission instructions!

F Lab Review Wiki (review) - Creating class diagrams using Enterprise Architect
2 T UML model to Java Source Wiki - Code Engineering with EA Lab 2: Code Generation from EA class diagrams

EA diagram via Blackboard by end of lab. Code generation demo due by 3pm Friday.
Read these submission notes

F Quiz 1 - UML Class relationships

Synchronization of UML models from Java source

 
3 T

Introduction to Version Control
Version Control configuration and use: Subversion

Wiki - Version Control Overview

Wiki - TortoiseSVN installation instructions

Wiki - Essential TortoiseSVN - tutorial

Lab 3: Using Subversion

Due via SVN by beginning of W4 lab

F Quiz 2 UML again

Version control continued
(updating, committing, branching)
Subversion online user manual  
4 T UML Sequence Diagrams

Sample code: SampleApp.pdf

Wiki: Sequence Diagrams

Video: Sequence Diagrams with EA

Lab 4: Team development using Subversion

Due via SVN by beginning of W5 lab

F

Subclipse
Installing Subclipse

Teamwork

5 T Building JAR files

Sample code:
JARDemo.zip
UIHelper.zip
Wiki: Building and executing JAR files

Building JAR files - Sun tutorial 

Quiz 3: Subversion

Lab 5: Software Application Revision and Deploying applications as JAR files

Due via SVN by beginning of W6 lab

Test files: test1.txt, test2.txt

F Automated build tools: ANT

Using ANT to build a JAR file inside Eclipse
Using standalone ANT to build a JAR outside Eclipse

Wiki Configuring Apache ANT

Wiki: Creating ANT Scripts

Sample ANT Scripts: antscript.xml, class-file-cleanup.xml

6 T Introduction to Unit Testing using JUnit

Sample code:
JUnitDemo.zip

 

Quiz 4 - JAR files and ANT scripts

Lab 6: Testing with JUnit

Files for lab: lab6.zip

Due via SVN by beginning of W7 lab

F

Using ANT to run automated JUnit tests

Sample ANT script: sample.xml

Configuring TortoiseSVN to use ANT to automatically run JUnit tests

Wiki Running JUnit with ANT

Wiki: Automating builds with hook scripts

7

 

T

Requirements coverage via Use Cases 

Video: Sequence Diagrams with EA

Web article: Intro to Use Cases

Sample: ATM Use Case -original
Sample: ATM Use Case -analyzed
Sample: ATM Login - high level design

Lab 7: Requirements Analysis - Use Cases

Use Case Template

Due via SVN by beginning of W8 lab

F High-level design: Use Case Textual Analysis

Web article: Driving Design with Use Cases

White paper: Nonfunctional Requirements

8 T Low-level design: Domain Modeling

Model-View-Controller design pattern

Sample: ActivationDemo.zip

Lab 8: High-level design/Detail design
See lab assignment for due dates
F Quiz 5 - Requirements Analysis

UML Use Case diagrams

Low-level algorithm design: Pseudocode in EA

Video: Use Cases in EA  
9 T State Machines

State Diagrams with EA

Sample Code: Lamp.zip

Lab 9: Implementation
See lab assignment for due dates

F Quiz 6 - UML Sequence diagrams

Advanced State Charts

State Machine details

Web article: David Harel's orginal paper on State Charts
10 T Quiz 7: State Machine exercise Web article: EA State Diagram tutorial

Lab 10: Demo/Report

Due Saturday at 5 pm!  
F Final Exam prep - review

Course/Instructor Evaluation

Course outcomes / Review
11 Common Final Exam
You may bring one 8.5 by 11 sheet of notes (double-sided)
Friday, Nov 22, 2013
11:00am - 1:00pm
Location: CC 53

Course policies

Detailed policies for this course are here.

Quizzes

A quiz will be given approximately once per week at the beginning of Lab. No make-up quizzes will be given.

Grading algorithm

Note that this algorithm indicates how a grade will be determined for students who have successfully demonstrated mastery of the course objectives. An acceptable level of success in meeting all course objectives is a prerequisite for a passing grade in the course.

Criterion Weight
Quizzes 30%
Labs 45%
Final Exam* 25%

*All students must take the final exam to pass the course.

Your lab and report grades will be determined as described on the Lab Report page.

Code Commenting and Documentation Standard

All source code submitted must use JavaDoc commenting conventions and meet the minimum documentation standards below:

The beginning of each source file should contain:

Each class method should contain the following documentation:

About Labs

Note that the labs constitute a significant part of your overall grade. Plan to devote a considerable effort in order to complete these labs successfully and professionally.

The labs for SE2030 are fairly simple programming assignments such as what you have been used to in courses such as SE1021. They are not particularly challenging from an algorithmic standpoint. Rather, they permit you to focus on their primary objective: to help you develop a familiarity with practices and tools used in professional software development.

Even so, as you begin to develop an understanding of using these elements, you will still have to expend a reasonable effort as you practice using these tools. You should probably expect to spend additional time outside of class to complete the assignments for the labs.


This page was last updated on 09/09/2013.