EE 461L Software Engineering and Design Laboratory: Miryung Kim

Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

me

Research Publications Teaching Students CV Software Funding

Activities

EE 461L Software Engineering and Design Laboratory


Instructor: Professor Miryung Kim

Lecture (#17050). TTH 12:30PM to 2PM in ENS 116.


Labs: Tue 6:30-9:30 PM in ENS 307 or Wed 6:30-9:30PM in ENS 307
Office Hours: TTH 2:00 PM-3:00 PM in ACES 5.118
Teaching Assistant: Ray Qiu

Course Description
This course focuses on providing hands-on experience in designing and developing large-scale software systems with emphasis on the use of automated analysis tools
and techniques that enable large-scale software development. Students will generate concrete software engineering artifacts at all stages of the software life-cycle.
Design principles and methods for large-scale software system development; design and modeling tools; collaborative development environment; object-oriented
design and analysis; design patterns and refactoring; integration and testing tools; debugger and bug-finder; program comprehension; unit testing & regression testing;
program verification; static and dynamic program analysis.
Three lecture hours and three laboratory hours a week for one semester.
Pre-requisite: EE422C (or EE322C) or Computer Science 336 with a grade of at least C-; credit with a grade of at least C- or registration for EE 360C or Computer
Science 357. (Students may take 360C concurrently with 461L)

Course Objectives
The goal of this course is to teach practical software development methods and tools in the context of developing a software system with other students in
collaboration. Practical development tools include
Analysis tools (e.g., debuggers, profilers, automated bug-finders, style-checkers, program differencing tools, program investigation tools)
Construction tools (e.g., compilation managers and build scripts)
Tool support for collaboration (e.g., version control systems and problem report databases)
Design tools (e.g. UML-based modeling tool)
GNU/Linux operating system environment, command-line utilities, bash shell scripting
Practical software design, construction, and evolution methods include
Object-oriented design techniques such as design patterns
Refactoring
Unit testing and regression testing, test coverage and test generation
Hoare logic, preconditions, post-conditions, and loop invariants
Basic static and dynamic program analysis: data flow analysis, program slicing, delta debugging, change impact analysis, regression test selection etc

Grading
75% Laboratory
25% projects
a new feature proposal and presentation 7%
a midpoint implementation and testing progress report and presentation 8%
a final demonstration and presentation 10%
15% tool tutorials
15% programming/report assignments
15% quizzes
5% reading assignment
20% Exam
5% Attendance (taken at random 5 days)

Grading Scheme
Reading assignment grading scheme
3 pt (excellent writing, clear and concise, demonstrating understanding of the key concepts of the paper, within a word limit, ideas presented in your own
words, and some evidence that the paper has been considered in the context of larger issues and themes of the course.)
2 pt (demonstrating understanding of the key concepts of the paper, and ideas presented in your own words.)
1 pt (shallow, minimally-sufficient, or needlessly wordy. Key concepts misunderstood or missing. Authors words echoed back to me with little effort to

reinterpret or paraphrase.)
0 pt (late, incomplete, or never submitted at all.)
Here is a guideline on how to read research papers and write paper reviews by Bill Griswold.
programming assignment, project report and presentation grading scheme
3 pt (excellent design and implementation, selection of a task that is highly intellectually challenging, creative, concise yet comprehensive writing, nearly
perfect answers, beautifully written and verbally communicated, eloquent presentation within a time limit)
2 pt (demonstrating understanding of the key concepts, mostly correct answers, i.e., >70%, selection of a intellectually challenging project topic, well
written, good verbal presentation, well practiced presentation within a time limit)
1 pt (shallow, minimally sufficient, or needlessly wordy, key concepts misunderstood or missing, selection of easy project tasks, poor written and verbal
communication, presentation over time, not following specified formats)
0 pt (late, incomplete, or never submitted at all.)
Your letter grade assignment is not based on an absolute score. It is based on the performance of an individual in relation to the entire class. For example,
getting a total score of 80 does not guarantee B in this class and getting a total score of 70 could still provide B in this class. Generally speaking, the top 30% of
the class may receive A or A-, the next 40% of the class may receive B+, B0, or B-, and the bottom 30% of the class may receive C+, C0, C-, D or F. The
instructor reserves a right to modify the grading scheme.

Course Organization
As a four credit laboratory course, the class time will be organized around three hours of lecture per week, used to introduce the software engineering techniques and
tools central to the course. An additional three hours of laboratory time per week will be used for tool tutorials, assignments, and projects. Quizzes will be done in
lectures.
Lectures (T/TH)
Laboratory
Tool Tutorials
Week 1
(8/30)
Week 2
(9/4,
9/6)

Assignments, Quizzes, and Projects

Lecture 1. Overview
Lecture 2. Collaborative Software Development
Version Control System)
Version Merging and Conflict Resolution
Problem Report Database

Tutorial 1a: Subversion Version


Control System
Tutorial 1b: Project - Saros
(Distributed Pair Programming)

Week 3
(9/11,
9/13)

Lecture 3. Requirements Analysis using UML Use Cases


and Statecharts
Tutorial 2: UML
Lecture 4. Object-Oriented Design and Analysis using
UML Class Diagram and Message Sequence Charts

Week 4
(9/18,
9/20)

Lecture 5. UnixCommands Part 1


Lecture 6. Unix Commands and Shell Scripting Part 2

Tutorial 3: Unix Environment


and Command-line Utilities and
Shell Scripting

Quiz 1. Subversion and Version Merging,


Unix Commands and UML (Thursday)

Project Part A. New Feature Proposal. Maximum 5 Slides in PPT/PDF.


Maximum 5 pages report in Word/PDF (Due: Tuesday, 12:29PM)
Week 5
(9/25,
9/27)

Class Presentations.

Motivation and User Benefits, Feature Description and Requirements, Identification


of Relevant Classes, Mock-Up Screenshots.
Use Case Diagram in UML
Preliminary Class Diagram in UML
Submit a hard copy report in class. Please also submit an electronic copy to Blackboard.

Week 6
(10/2,
10/4)
Week 7
(10/9,
10/11)
Week 8
(10/16,
10/18)
Week 9
(10/23,
10/25)

Lecture 7. Information Hiding Principle


Lecture 8. Design Patterns Part 1
Tutorial /Exercise 4: UML
Abstract Factory, Factory Method, Singleton, Adapter,
Flyweight, Bridge, Observer, Mediator, Strategy, Visitor
Lecture 10. Design Patterns Part 2
Lecture 11. Design Patterns Part 3
Lecture 12. Design Patterns Part 4
Lecture 12. Refactoring
Lecture 13. Testing, Statement, Branch, and Path
Coverage, JUNIT
Lecture 14. Continuation on Test Coverage, Test
Generation, and Regression Test Selection

Week 10
Continuation on Test Coverage, Test Generation, and
(10/30,
Regression Test Selection
11/1)
Lecture 15. Build Management and Documentation,
Week 11 ANT, JAVADOC
(11/6,
Lecture 16. Debugging and Eclipse Debugger, GDB,
11/8)
DDD, Delta Debugging

Tutorial 5: Improving Design


Design Pattern and Refactoring

Reading Assignment 1. Paper Review Report


(Max 500 words due in class Tuesday 12:29PM)
On the criteria to be used in decomposing systems
into modules, DL Parnas
Quiz 2. UML and Design Patterns (Thursday)

Questions about the design pattern Assignment I. Investigation and Analysis of


assignment will be answered during Design Patterns (Maximum 5 pages report due in
the lab hours.
class Thursday 12:29PM)
Tutorial 6:jUnit Testing

TA office hours

Quiz 3. Test Coverage/ Generation (Thursday)

Tutorial 8: Eclipse Debugger


Reading Assignment 2. Paper Review Report
Tutorial 9: Bug Finding & FindBug (Max 500 words due in class Thursday 12:29 PM)
Yesterday, my program worked. Today, it does not.

Lecture 17. Software Inspection, Hoare Logic

Week 12
(11/13,
Class Presentations and Demo
11/15)

Why?
Project Part B. New Feature Implementation Progress. Maximum 5 Slides in
PPT/PDF.
Maximum 5 pages report in Word/PDF (Due: Tuesday, 12:29PM)
User Interfaces: Current Snapshots
Description of Important APIs
Test Scenarios and Test cases in JUnit
Submit a hard copy report in class. Please also submit an electronic copy and code to
Blackboard.

Week 13
Lecture 18. Hoare Logic, Loop Invariant,
(11/20,
Lecture 19. Data Flow Analysis, Program Slicing
11/22)

Tutorial 10: Program


Understanding

Week 14 Lecture 19. Dynamic Program Analysis, Profiler, and


(11/27,
Runtime Verification
11/29)
Lecture 20. Software Visualization

Assignment II. Test Generation, Assertions based


Questions about the testing
on Weakest Preconditions and Loop Invariant
assignment will be answered during
(Both program and hard copy report due in class
the lab hours.
Thursday 12:29PM)
Project Part C. New Feature Implementation Final Demonstration. Maximum 5
Slides in PPT/PDF. Maximum 5 pages report in Word/PDF (Due: Tuesday, 12:29PM)

Week 15
(12/4,
Class Presentations and Demo
12/6)

Motivation and User Benefits, Feature Description and Requirements


User Manual, User Interfaces, Screen Snapshots
Design in UML and Description of Important APIs
Test Scenarios and Test cases in JUnit
Submit a hard copy report in class. Please also submit an electronic copy and working
code to Blackboard.

Laboratory Assignments and Quizzes


The main focus of the laboratory assignments and projects will be exercising the concepts, techniques, and tools covered in class and labs. Quizzes are to test the
concepts, techniques, and tools covered in both class and labs. All assignments are done individually. Collaboration is not permitted under any circumstance.

Laboratory Projects
The main focus of the project is to learn how to extend a large scale system. Students will propose a new feature, identify relevant parts of the system for extension
through reverse engineering and extend its current design, implement and test the changes, and demo their working implementation in class. The project assignments
are done in teams of four students. If a team implements a feature that already exists or is very similar to an existing feature, it will be considered as plagiarism. It is
each team's responsibility to demonstrate that the proposed feature is new, does not exist in any version of the project base, and a unique creation of the team.

Class Policy
Class starts 12:30 pm sharp. If a student is more than 5 minutes late (12:35pm), the student will NOT be allowed to enter the class room. Students who have sent
at least 24 hours of advance notice to an instructor via email and have received an explicit approval may be exempt from this rule.
Quizzes start in the beginning of the class. If the student is not present in the class room at 12:29PM, the student will NOT be given an opportunity to take
quizzes.
Assignments will be due in the beginning of the class. If the student does not hand in his or her assignment to a TA or an instructor by 12:29PM, the assignments
will NOT be accepted.
There is no late policy for assignments, projects, quizzes, and exams. There's one immunity for missing weekly labs.
Class announcements will be made through Piazza. Not every class announcement will be made available via electronic means. If a student misses a class, it is
the student's responsibility to catch up with announcements and materials covered in the class.
Students may use Assembla for version control and project management. Students must provide a read permission to their Assembla project websites.

Software Environment
Students are encouraged to use their personal laptops. It is a student's responsibility to install required software and ensure that it is working correctly. Students are
strongly encouraged to install all necessary software systems and environments in the beginning of the class to ensure timely progress of weekly labs, assignments, and
projects. If a student chooses to use software systems that are not endorsed by the teaching team and, and as a result, if this makes it inconvenient or unable for the
teaching team to grade his or her assignments, the student may not receive any score for the assignments.
Unix or Linux installation for BASH shell scripting and running Unix commands, or MacOS with X11 or Terminal, or Cygwin installation for Windows OS;
Subversion Client installation or Subclipse Eclipse plug-in; Account creation in Assembla and Piazza; Eclipse Classic 3.7.1 or later versions of Eclipse for Plug-In
development; ArgoUML or other UML diagram software systems; JUnit; Ant; Eclipse debugger; gdb; FindBug and Java 6 or later versions.

Intended Benefits for Students


(1) Students will gain knowledge in objective-oriented design, analysis, and testing techniques.
(2) Students will gain hands-on learning experience in collaborative software design and development and also become familiar with practical tools that enable them to

construct and evolve a large-scale software system; this course will make our undergraduate students attractive to software engineering industry.
(3) Students will learn about and gain experience in generating software engineering artifacts that can clearly and concisely communicate design intent and realization.
(4) Students will be naturally introduced to software engineering research, in particular automated analyses and development tools. This class will also discuss advances
in development tools and analyses from a software engineering researcher's perspective.

Textbooks

(Required) Essential Open Source Toolset (ISBN-10: 0470844450, ISBN-13: 978-0470844458)


(Required) Design Patterns: Elements of Reusable Object-Oriented Software
Useful References:
Code Complete: A Practical Handbook of Software Construction (ISBN-10: 0735619670, ISBN-13: 978-0735619678)
Linux Pocket Guide (ISBN-10: 0596006284, ISBN-13: 978-0596006280)
UML 2.0 Pocket Reference (ISBN-10: 0596102089, ISBN-13: 978-0596102081)

Frequently Asked Questions


Q: How is this different from EE 360F (Introduction to Software Engineering)?
EE360F is an introduction to software engineering with focus on software engineering life cycle and process. This lab-based course extends these concepts to include
instruction in practical design techniques and artifacts and hands-on experience in applying the tools and techniques discussed in other courses.
Q: Why do we need to teach development tools in universities? Don't students already learn these methods and tools through an internship?
Students may encounter software development tools through an internship; however, when they do not understand how these tools work internally and what are
strengths and limitations of these tools, they cannot use these tools effectively.
Q: Don't we already have a senior capstone course? Why can't students take EE 464 instead?
EE464 is a capstone course designed for all students in electrical engineering and computer engineering. Thus, EE464 does not provide an opportunity to introduce
software developments tools systematically in the context of collaborative software development. In fact, the introduction of this advanced software engineering
laboratory will better prepare our students for serious software engineering 464 projects.

You might also like