SE-2030
Software Engineering Tools and Practices
Dr. Mark L. Hornick


Description     Syllabus     Policies     Quizzes     Lab info     Coding Standard     Grading


Revision History

This is where you check for news and information regarding recent additions (assignments, announcements, etc) to this site. The latest revision will be put at the bottom of the list.

10/1: Updated due date for WordCounter v1

9/24: Updated instructions for Lab 3

 9/9/2019: preliminary syllabus for fall 2019

Class Schedule

Note: Although lectures and labs are indicated on different days, we will invariably mix lecture and lab together across both days.

Lectures:
    Section 021: Tuesday - 10:00am to 11:50am in DH445
    Section 041: Tuesday - 1:00pm to 2:50pm in DH445

Labs:
    Section 021: Thursday - 10:00am to 11:50am in DH445
    Section 041: Thursday - 1:00pm to 2:50pm in DH323/DH445

 

As stated in my general course policies, attendance is mandatory for all lectures and labs. Email me when you foresee yourself to be absent. If you miss a lab, you will receive a 0 grade for that assignment. Be sure to read the entire document for all relevant policies that apply to this course.

Course Description

As a CE, CS, or 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

We have provided urls to various sources of information - both 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.

Software Tools

As implied by the course title, you will be introduced to and use several new software tools for design, implementation, building, testing, and version control. All of these application tools are free for education use. You can find links to the various applications' download sites throughout the syllabus below.

Enterprise Architect

You should already have a copy of Enterprise Architect (EA) on your laptop. The latest version on the Software Center is version 13, so you should upgrade to that version if you don't already have it. You need a software license key to run it, which you can also find under the "additonal information" link. Don't install more recent version of EA (that you might find on the web) since we don't have licenses for those.

Syllabus

Week Day Topic Reading/Homework Lab
1 L1 Introduction to the course

UML Review
Class Relationship notation

Install/Upgrade Enterprise Architect 13 (see note above)
(via Software Center, from MSOE network)
The license key is indicated under "Additional Information"

Homework: Using EA to create class diagrams
Complete by next week's lab - hands-on quiz using EA next Thursday.

Tutorial: Creating class diagrams using Enterprise Architect

Read - Class relationships in UML Class Diagrams

Lab 1: Application Design

Due via Blackboard by end of Thursday lab.

L2

UML Review, continued

 
2 L1 UML Sequence Diagrams

Sample code: SampleApp.pdf

Class diagram:
SampleAppClasses.pdf

Sequence diagrams:
SampleAppSequences.pdf

Read: Sequence Diagrams

Video: Sequence Diagrams with EA

 

Configure EA for Code Engineering
Follow the steps in this article so that you can correctly demonstrate code generation via a quiz.

Lab 2:  Program design using UML

Read these submission notes

 

Quiz 1 - UML Class diagrams and relationships with EA 13

 

L2 Code Engineering with Enterprise Architect: Generating Java code from UML models and generating UML models from Java code

Round-trip synchronization of UML models from Java source

 

You must have a JDK installed on your laptop, if not
Install Java SE Development Kit 10

Install Eclipse IDE for Java Developers
Select latest 64-bit version for Windows.
3 L1

Introduction to Version Control

Download: Git cheat-sheet

https://www.codecademy.com/en/courses/learn-the-command-line

Install/Configure Git
Follow the steps in this article

Read: Pro Git: 1.1-1.3

Practice: Worksheet 2
(will be used in an upcoming quiz)

Lab 3: Using Git/Bitbucket

Due via BItbucket as described in lab instructions

 

Quiz 2 - Generating Java code with EA 13

L2 Version Control configuration and use: Git/Bitbucket

Cloning an existing repository (git clone)
Tracking, Staging, Committing using git add git commit, and git push

Managing merge conflicts (git push, git pull, git difftool)
Read: Pro Git: 2.1, 2.2, 2.4 (skim 2.3)
4 L1

Reverting using git reset, git checkout
Deleting using git rm

Design reviews

Project work - 1st integration

Read: Pro Git: 2.5 (Working with remotes)

Lab 4: Team development using Git

Due in dev branch of BItbucket by 8:00am Tuesday 10/8/2019

Tagging using git tag
Read: Pro Git 2.6 (tagging)
and Use Repo Tags

L2 Project work - 2nd integration  
5 L1 Introduction to Unit Testing using JUnit

Sample code:
JUnitDemo.zip

Reference: JUnit Assert class API

WordCounter demos during lab

Lab 5: Testing with JUnit

Due in lab5_junit branch of BItbucket by 8:00am Tuesday 10/15/2019

L2 Quiz 3 - Command Line and Git basics (use of Git Cheat-sheet permitted)

Building JAR files

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

Read: Building JAR files - Sun tutorial  

6 L1 Automated build tools: ANT

Using ANT to build a JAR file inside Eclipse

Sample ANT scripts:
demo.xml
demo2.xml


Using ANT to build JAR files and run automated JUnit tests


Read: Running JUnit with ANT

Read: Creating ANT Scripts

Ref: ANT Task Overview

Lab 6: Application Revision, JUnit testing, and Deploying applications as JAR files


Due in dev branch of BItbucket by 8:00am Tuesday 10/22/2019

 

L2 Quiz 4 - JUnit concepts
Read: Intro to Use Cases
Read: Use Cases, ten years later

 

7

 

L1
Requirements coverage via Use Cases 

Use Case Template
for in-class exercise


Read:  Driving Design with Use Cases

Sample: ATM Use Case -original
Sample: ATM Use Case -analyzed
Sample: ATM Use Case High-level Sequence diagram

Lab 7: Use cases and high-level design

Use Case Template
for Lab 7

Due via BItbucket by 8:00am Tuesday 10/29/2019



L2 High-level design: Use Case Textual Analysis



Read: Driving Design: The Problem Domain
Read: Driving Design: Top 10 Use Case Mistakes
8 L1
Low-level design: Domain Modeling

Quiz 5: Requirements Analysis
Read: Successful Robustness Analysis

 

Lab 8: High-level design/Detail design
See lab assignment for due dates

 

L2 Data representation with XML
XML parsing

Sample Code: Parser.zip

Parser Class Diagram
9 L1 State Machines
GPS Parser State Diagram

Homework/Sample Code: Lamp.zip

Read:  EA State Diagram tutorial

Lab 9: Implementation, continued
See lab assignment for due dates

Final GPS app due in dev branch of BItbucket by 8:00am Tuesday 11/12/2019

Test files:

InvalidGPX.txt

gpstest-missing elevation.txt
gpstest-missing latitude.txt
gpstest-missing longitude.txt
gpstest-missing time.txt

gps-bad times.txt
gps-bad longitudes.txt
gps-bad latitudes.txt

GPSTest1.gpx
GPSTest2.gpx
GPSTest5Center.txt
GPSTest10.gpx

LoganPass.txt
Vermont.gpx
KancamagusPass.gpx

 

L2
project work

Quiz 6: XML data representation
 
10 L1
GPSApp Demonstrations

Course/Instructor Evaluation

  GPS app due in dev branch of BItbucket by 8:00am Tuesday 11/12/2019
L2 Quiz 7: State Machine exercise

State Diagram: Stoplight.pdf
Code: Stoplight041.zip

SOLUTION: Stoplight_solution.pdf

Course outcomes / Review

Course/Instructor Evaluation (alternate)
 

 

 

11 Final Exam
Monday Nov 18, 2019
11:00am - 1:00pm
Room L311 (section 021)
Room L310 (section 041) 

Computer Required

Course policies

My general course policies apply to this course.

Quizzes

A quiz will be given approximately once per week as posted above. 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%

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 public class method should contain the following documentation:

Private class methods do not have to be documented nearly as thoroughly (since the methods are only used within the class), although good practice would be to minimally comment any non-obvious code - for future maintenance by you or others.

About Labs

Note that the labs constitute a significant part of your overall grade - a reflection of their importance in this course. 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, say, SE1021. They are not particularly challenging from an algorithmic standpoint; rather, they permit you to focus on their primary objective; that is: to help you develop a familiarity with practices and tools used by 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 11/14/2019.