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. Author’s words echoed back to me with little effort to

461LSyllabusFall2012

Embed Size (px)

DESCRIPTION

Software Engineering & Design Lab

Citation preview

  • me Research Publications Teaching Students CV Software Funding Activities

    EE 461L Software Engineering and Design LaboratoryInstructor: 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 307Office Hours: TTH 2:00 PM-3:00 PM in ACES 5.118Teaching Assistant: Ray Qiu

    Course DescriptionThis course focuses on providing hands-on experience in designing and developing large-scale software systems with emphasis on the use of automated analysis toolsand 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-orienteddesign 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 ComputerScience 357. (Students may take 360C concurrently with 461L)

    Course ObjectivesThe goal of this course is to teach practical software development methods and tools in the context of developing a software system with other students incollaboration. 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 patternsRefactoringUnit testing and regression testing, test coverage and test generationHoare 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

    Grading75% 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 assignments15% quizzes5% reading assignment

    20% Exam5% 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 ownwords, 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 scheme3 pt (excellent design and implementation, selection of a task that is highly intellectually challenging, creative, concise yet comprehensive writing, nearlyperfect 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, wellwritten, 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 verbalcommunication, 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% ofthe 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. Theinstructor reserves a right to modify the grading scheme.

    Course OrganizationAs 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 andtools 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 inlectures.

    Lectures (T/TH) Laboratory Tool Tutorials Assignments, Quizzes, and Projects

    Week 1(8/30) Lecture 1. Overview

    Week 2(9/4,9/6)

    Lecture 2. Collaborative Software DevelopmentVersion Control System) Version Merging and Conflict ResolutionProblem Report Database

    Tutorial 1a: Subversion VersionControl SystemTutorial 1b: Project - Saros(Distributed Pair Programming)

    Week 3(9/11,9/13)

    Lecture 3. Requirements Analysis using UML Use Casesand StatechartsLecture 4. Object-Oriented Design and Analysis usingUML Class Diagram and Message Sequence Charts

    Tutorial 2: UML

    Week 4 (9/18,9/20)

    Lecture 5. UnixCommands Part 1Lecture 6. Unix Commands and Shell Scripting Part 2

    Tutorial 3: Unix Environmentand Command-line Utilities andShell Scripting

    Quiz 1. Subversion and Version Merging, Unix Commands and UML (Thursday)

    Week 5(9/25,9/27)

    Class Presentations.

    Project Part A. New Feature Proposal. Maximum 5 Slides in PPT/PDF. Maximum 5 pages report in Word/PDF (Due: Tuesday, 12:29PM)

    Motivation and User Benefits, Feature Description and Requirements, Identificationof Relevant Classes, Mock-Up Screenshots.Use Case Diagram in UMLPreliminary 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)

    Lecture 7. Information Hiding Principle Lecture 8. Design Patterns Part 1Abstract Factory, Factory Method, Singleton, Adapter, Flyweight, Bridge, Observer, Mediator, Strategy, Visitor

    Tutorial /Exercise 4: UML Reading Assignment 1. Paper Review Report(Max 500 words due in class Tuesday 12:29PM) On the criteria to be used in decomposing systemsinto modules, DL Parnas

    Week 7(10/9, 10/11)

    Lecture 10. Design Patterns Part 2Lecture 11. Design Patterns Part 3

    Tutorial 5: Improving DesignDesign Pattern and Refactoring Quiz 2. UML and Design Patterns (Thursday)

    Week 8 (10/16,10/18)

    Lecture 12. Design Patterns Part 4 Lecture 12. Refactoring

    Questions about the design patternassignment will be answered duringthe lab hours.

    Assignment I. Investigation and Analysis ofDesign Patterns (Maximum 5 pages report due inclass Thursday 12:29PM)

    Week 9(10/23,10/25)

    Lecture 13. Testing, Statement, Branch, and PathCoverage, JUNITLecture 14. Continuation on Test Coverage, TestGeneration, and Regression Test Selection

    Tutorial 6:jUnit Testing

    Week 10(10/30,11/1)

    Continuation on Test Coverage, Test Generation, andRegression Test Selection TA office hours Quiz 3. Test Coverage/ Generation (Thursday)

    Week 11(11/6,11/8)

    Lecture 15. Build Management and Documentation,ANT, JAVADOCLecture 16. Debugging and Eclipse Debugger, GDB,DDD, Delta Debugging

    Tutorial 8: Eclipse DebuggerTutorial 9: Bug Finding & FindBug

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

  • Lecture 17. Software Inspection, Hoare Logic Why?

    Week 12(11/13,11/15)

    Class Presentations and Demo

    Project Part B. New Feature Implementation Progress. Maximum 5 Slides inPPT/PDF. Maximum 5 pages report in Word/PDF (Due: Tuesday, 12:29PM)

    User Interfaces: Current SnapshotsDescription 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 toBlackboard.

    Week 13(11/20,11/22)

    Lecture 18. Hoare Logic, Loop Invariant, Lecture 19. Data Flow Analysis, Program Slicing

    Tutorial 10: ProgramUnderstanding

    Week 14(11/27,11/29)

    Lecture 19. Dynamic Program Analysis, Profiler, andRuntime VerificationLecture 20. Software Visualization

    Questions about the testingassignment will be answered duringthe lab hours.

    Assignment II. Test Generation, Assertions basedon Weakest Preconditions and Loop Invariant(Both program and hard copy report due in classThursday 12:29PM)

    Week 15(12/4,12/6)

    Class Presentations and Demo

    Project Part C. New Feature Implementation Final Demonstration. Maximum 5Slides in PPT/PDF. Maximum 5 pages report in Word/PDF (Due: Tuesday, 12:29PM)

    Motivation and User Benefits, Feature Description and RequirementsUser Manual, User Interfaces, Screen SnapshotsDesign in UML and Description of Important APIsTest Scenarios and Test cases in JUnit

    Submit a hard copy report in class. Please also submit an electronic copy and workingcode to Blackboard.

    Laboratory Assignments and QuizzesThe 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 theconcepts, techniques, and tools covered in both class and labs. All assignments are done individually. Collaboration is not permitted under any circumstance.

    Laboratory ProjectsThe 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 extensionthrough reverse engineering and extend its current design, implement and test the changes, and demo their working implementation in class. The project assignmentsare 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 iseach 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 PolicyClass 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 sentat 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 takequizzes. 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 assignmentswill 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 isthe 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 EnvironmentStudents 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 arestrongly encouraged to install all necessary software systems and environments in the beginning of the class to ensure timely progress of weekly labs, assignments, andprojects. 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 theteaching 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-Indevelopment; 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 advancesin 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 QuestionsQ: 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 includeinstruction 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 arestrengths 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 introducesoftware developments tools systematically in the context of collaborative software development. In fact, the introduction of this advanced software engineeringlaboratory will better prepare our students for serious software engineering 464 projects.