SOEN 6011 Software Engineering Processes

Fall 2009 Semester

Monday September 14 2009 to Tuesday December 8, 2009

Section SS

Lectures: Mondays 17:45 to 20:15 in H-401

Laboratory: Mondays 16:30 to 17:30 in H-817

Office Hours: Mondays 15:00 to 17:00 in EV003.219


Instructor: Dr Greg Butler, gregb AT cs DOT concordia DOT ca
Tutor: Christine Kehyayan, c_kehyay AT encs DOT concordia DOT ca


Information

This course is intended for students in the Masters of Software Engineering programme who have not completed a Bachelor's of Software Engineering. Hence, they need to take SOEN 6011 to make up the missing material.

The course assumes that students have significant programming experience in industry.

The course will proceed at a very quick pace.

Course Description

SOEN 6011 Software Engineering Processes is a 4 credits course.
Introduction to software engineering concepts. Software process models and associated activities, including requirements analysis, specification, design, implementation, and validation. Software documentation. Inspections and reviews. Collaborative work and project management. A project.

Course Aims

The course is designed to ensure that you have similar expertise in the use of tools as students graduating from the Bachelor of Software Engineering programme. That is, Java development using the Eclipse environment, using JUnit for unit tests, and the Eclipse Web Tool Platform (WTP) to develop Java applications and Java-based web applications using Apache, Tomcat, Javascript, mySQL including issues of threads, concurrency, and data integrity. Also solid knowledge of UML.

The course is designed to ensure that you have key expertise in software process, software design, software architecture, including

Textbooks

Craig Larman. Agile and Iterative Development: A Manager's Guide. Addison-Wesley. ISBN 0- 13-111155-8, 2003.

Craig Larman, Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development, 3rd edition, Prentice-Hall, 2005.

Martin Fowler, Patterns of Enterprise Application Architecture, Addison-Wesley. 2003.

Recommended books

Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design patterns : elements of reusable object-oriented software, Addison-Wesley, c1995.


Schedule Overview

The course will consist of

  1. Weeks 1 to 4: Software processes
    using Craig Larman, Agile and Iterative Development: A Manager's Guide.

    Focus on test-driven development, agile development, RUP. Background reading on problems and issues in SE. Some material on chage management, project tracking, and CMMI.

  2. Weeks 5 to 8: Software design
    using Craig Larman, Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development.

    Focus on object-oriented design, design patterns. Focus on responsibility-driven design, GRASP principles, domain modeling. Some use of Fowler's EAA patterns for the project.

  3. Weeks 9 to 12: Software architecture for web-based applications
    using Martin Fowler, Patterns of Enterprise Application Architecture.

    Focus on Model-View-Control client-server architectures for web applications. Address issues of concurrency using EAA patterns. More on patterns, pattern languages.

  4. Week 13: Model-driven development.

    Introduction to model-driven development using WebML as an example.

Every 2 to 3 weeks there will be deadlines for the project deliverables: programs and documents (see below).

There will be a quiz every 4 weeks or so.

There will be no final examination.


Evaluation

Assignments will be worth a total of 50%. The quizzes will be worth 15%, 15%, 20% for a total of 50%. There is no final examination.

Project


The project for this semester is an interactive game for KenKen that should work for 4-by-4 games and 6-by-6 games.

There are four programs required for the project:

  1. A batch Java program that checks the validity of a game decsription in terms of syntax, and checks (using brute force search of all answers) that the game has a unique solution.
  2. A batch Java program that generates all games of a given size N, where N is 4 or 6.
  3. A stand-alone Java application for playing a game interactively.
  4. A stand-alone Java application for playing a game interactively that can offer intelligent hints to the user on how to play the game, and what is a possible next move.

There will be three assignments (that is, documents) required as well:

  1. A test report for the unit tests done in version 1 (due at the same time as Version 2)..
  2. A use case document and domain model for version 3.
  3. A design document for version 4.

Programs and documents will be individual work.


Lecture Schedule

September 07, 2009: Public holiday. No lecture, tutorial, or lab.

Week 1 September 14, 2009: Introduction; SE Principles;SE Challenges; test-driven development; the V model.

Slides:Principles; Remember role of People; and Communication!
Slides: Test driven development slides (1)
Slides: Test driven development slides (2)
Read Larman (Agile and Iterative Development): Chapters 5, 6, 11.

Also read Introduction to Software Engineering, Software Development Phases, Software process.
Also read: Testing Test-driven development, V-model
And ... Twelve Requirements Basics for Project Success

Week 2 September 21, 2009: Agile methods.

Slides: Agile development
Read Larman (Agile and Iterative Development): Chapters 2, 3, 8.

Also read: Agile software development, Extreme programming.

Week 3 September 28, 2009: Unified process.

Slides: Rational Unified Process
Read Larman (Agile and Iterative Development): Chapters 9, 11, 4.
Read Larman (Applying UML and Patterns): Chapters 2.

Also read: Unified process, Risk management

Week 4 October 05, 2009: Quiz 1; More project management;

Slides: Project Management
Read Larman (Applying UML and Patterns): Chapters 40, 21, 1, 2.

Also read: Project management, Change management, Capability maturity model.

October 12, 2009: Public holiday. No lecture, tutorial, or lab.

Week 5 October 19, 2009: Requirements in Larman's Object-Oriented Development

Slides: Larman requirements, domain model, use cases, scenarios, sys ops
Read Larman (Applying UML and Patterns): chapters 4-7; chapters 9-11.

Also read: requirements, use case approach
Also read: Inherent Risks in Object-Oriented Development,
And ... Twelve Requirements Basics for Project Success

Week 6 October 26, 2009: Responsibility-driven design.

Slides: RDD
Read Larman (Applying UML and Patterns): Chapters 17, 13, 33, 34.
Read Fowler: Chapters 1, 2, 3, 4, 9, 10, 14.

Week 7 November 02, 2009: GRASP Principles

Slides: GRASP
Read Larman (Applying UML and Patterns): Chapters 12, 14, 17, 18, 19, 25.

Also read: Principles Of Object Oriented Design

Week 8 November 09, 2009: Describing architectures: 4+1 views, Siemens approach

Slides: Describing architectures
Read Larman (Applying UML and Patterns): Chapters 33, 34, 35, 38, 39.

Also read: software architecture

Week 9 November 16, 2009: Quiz 2; Introduction to Fowler's EAA.

Slides: RDD
Read Fowler: Chapters 1, 2, 3, 4, 9, 10, 14.

Week 10 November 23, 2009: Concurrency in EAA.

Slides: EAA and Concurrency
Read Fowler: Chapters 5, 6, 11, 16, 17, 18.

Also read: Database ACID properties, Books on Pattern-Oriented Software Architecture, Patterns for Concurrent, Parallel, and Distributed Systems, Architectural Patterns for Distributed Computing.

Week 11 November 30, 2009: Quiz 3.

Week 12 December 7, 2009: Project demos in H-817.

Week 13 December 8, 2009: Project demos in H-817.


Announcements

2009-12-07: Demonstrations of your projects will take place in H-817. You have a 15-minute slot.

1630: VENKATESH	SRIVAS
1645: SU	CHING WEI
1700: SATELI	BAHAR
1715: KANTHARAJU	DEEKSHA
1730: PETROVA	DANIELA
1745: CARRE DE LA TORRE	JEAN PIERRE
1800: DIAZ	MARIANO
1815: SHAHRIAR	MD.ISTIAQUE
1830:
1845:
1900: WANG	XIAO HUI
1915: GARZON	MARY

2009-12-07: Marks for Quiz 3, etc.

2009-11-23: Quiz 3 will take place in H-401 on Monday November 30 starting at 18:00. It is a closed book exam lasting 90 minutes (not 60 minutes). It will cover all the material to date, but focus primarily on weeks 7 to 10: lectures, textbook chapters as indicated, and suggested reading.
The emphasis is on Larman's principles for RDD, design patterns, Fowler's architecture and patterns.
You should know Fowler's patterns: FrontController, TemplateView, DataGateways, Data Mapper, ActiveRecord, UnitOfWork;
Your should know design patterns: Observer, Facade, Command, Adapter.
You should know how servlets work in Java, SQL in Java, and Java threads.
You should know the similarities and differences betweem Controller in MVC, Controller principle in GRASP, and Fowler's PageController and FrontController.
You should know the issues of concurrency and how they relate to UnitOfWork and threads and database transactions.

2009-11-23: Marks for Quiz 2.

2009-11-09: Quiz 2 will take place in H-401 on Monday November 16 starting at 18:00. It is a closed book exam lasting 60 minutes. It will cover all the material to date, but focus primarily on weeks 4 to 8: lectures, textbook chapters as indicated, and suggested reading. The emphasis is on design, object-oriented design, architecture, responsibility-driven design, Larman's methodology and artifacts, Larman's principles for RDD. You should also know how Larman's methodology relates to the unified process and to agile methods. Do not forget to think about how this material relates to your assignments/project.

2009-10-26: Marks for Quiz 1.

2009-10-26: Marks for deliverable 2,3,4.

2009-10-19: Marks for deliverable 1.

2009-09-28: Quiz 1 will take place in H-401 on Monday October 5 starting at 18:00. It is a closed book exam lasting 60 minutes. It will cover all the material to date: week 1 to 3: lectures, textbook chapters as indicated, and suggested reading.
Here are some sample questions

2009-09-21: The fourth project deliverable will be due Tuesday October 13, 2009 at 11:59pm via electronic submission. Submit a .tar.gz version of your source code (including JUnit tests) for version 3 as 'program 3'.
The fifth project deliverable will be due Tuesday October 27, 2009 at 11:59pm via electronic submission. Submit a use case document as 'project 2'. The use case document (see an example) should contain a use case diagram to provide the context for the overall system, together with a description of the actors and the major use cases. Choose an appropriate level of detail for each use case. The document should also include a (problem) domain model consisting of a UML class diagram and explanatory text.
The sixth project deliverable will be due Tuesday November 10, 2009 at 11:59pm via electronic submission. Submit a design document of version 4 as 'project 3'.
The seventh project deliverable will be due Tuesday November 24, 2009 at 11:59pm via electronic submission. Submit a .tar.gz version of your source code (including JUnit tests) of version 4 as 'program 4'.

2009-09-21: For a brute force search in deliverable 1, you should not enumerate all entries 1,2,3,4 in each position (as this takes 2^32 = approx 10^9 cases) but rather enumerate the 24 permutations of 1..4 for each row (this gives 24^4 = approx 250 000 cases) for the 4-by-4 puzzle.
To generate all puzzles of size 4-by-4, work backwards from the solution. That is, enumerate all 4-by-4 latin squares (ie each number 1..4 occurs precisely once in each row and column). For a fixed solution (ie latin square) generate the possible cage sizes and layouts; then choose each appropriate arithmetic operator and calculate the target number for the cage based on its entries. The puzzle is then the cages with target numbers and operators.
Remember to check at the end whether the puzzle occurs more than once (ie has more than one solution).

2009-09-14: The second and third project deliverables will be due Tuesday September 29, 2009 at 11:59pm via electronic submission. Submit a .tar.gz version of your source code (including JUnit tests) for version 2 as 'program 2', and a document describing your test cases and test results for version 1 submitted as 'project 1'.
Each deliverable is worth 5% for a total of 10%.
This batch Java program should generate and print all games of size N when it is give an input N, either 4 or 6. Note that the operators minus (-) and divide (/) can only be used with cages of size 2 becuase they are not associative.

2009-09-14: The first project deliverable will be due Tuesday September 22, 2009 at 11:59pm via electronic submission. Submit a .tar.gz version of your source code (including JUnit tests) as 'program 1'.
This deliverable is worth 5%.
The batch Java program should read a text file describing a KenKen game, and print out either 'yes' or 'no' depending on whether the game is valid or not. If the game is valid then the program should also print the unique solution.
For example, the 4-by-4 game on site would be described as:

Game1
4
2 = 1 A1
7 + 2 A2 A3
2 - 2 A4 B4
12 * 2 B1 C1
3 + 2 B2 C2
1 = 1 B3
1 - 2 C3 D3
2 / 2 C4 D4
3 - 2 D1 D2
end Game1
Note the "name" of the game on line 1 with the correspond end "name" on the last line.
The second line has the size of the game, in this case 4-by-4.
Then come a series of lines desribing each of the so-called "cages". These lines each have the format
targetNumber operator sizeOfCage listOfCageCells
where the cells use the A,B,C,D,... for column coordinates and 1,2,3,... for row coordinates. The list of cells is separated by a space.

2009-09-14: Tutorial information can be found by following the link and looking at 'Tutorial' and 'First Aids' in the menu on the left-hand-side panel.
First Aids cover Java, JUNit, JSP/Servlets, and UML.
Tutorial 0 covers Eclipse.
Tutorial 1 covers JUnit within Eclipse.
Tutorial 2 covers refactoring and test-driven development in Eclipse.
Tutorial 3 elaborates on Tutorial 2 using JUnit and Eclipse.
Tutorial 5 covers Eclipse Web Tools Platform.
Tutorial 6 covers JSP
Tutorial 7 is a simple web application
Tutorial 8 covers mySQL set-up and Tutorial 12 look at some Data Source patterns from Fowler's EAA patterns.

SOEN 344 Tutorials cover concurrency issues, namely UnitOfWork (Tutorial 3), IdentityMap and LazyLoad (Tutorial 4).

2009-09-14: Electronic submission site

2009-09-14: Course outline


Last modified on September 14, 2009 by gregb AT cs DOT concordia DOT ca