Instructor: Dr Greg Butler, gregb AT cs DOT concordia DOT ca
Tutor: Christine Kehyayan, c_kehyay AT encs DOT concordia DOT ca
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.
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.
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
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.
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design patterns : elements of reusable object-oriented software, Addison-Wesley, c1995.
The course will consist of
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.
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.
Focus on Model-View-Control client-server architectures for web applications. Address issues of concurrency using EAA patterns. More on patterns, pattern languages.
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.
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.
There are four programs required for the project:
There will be three assignments (that is, documents) required as well:
Programs and documents will be individual work.
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.
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 Game1Note the "name" of the game on line 1 with the correspond end "name" on the last line.
targetNumber operator sizeOfCage listOfCageCellswhere 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