SOEN 6461 Software Design Methodologies

Fall 2018 Semester: September 10 to December 4, 2018

Lectures: Mondays 17:45 to 20:15 in MB 1.210

Section SS


Instructor: Dr Greg Butler, gregb@encs.concordia.ca
Teaching Assistant (Programmer on Duty): Ellis Eghan and Sonia Agarwal

Office Hours - Dr Butler: Mondays 16:00-17:00 in EV.003.219

Programmer-On-Duty Hours: H-835
Ellis Eghan, Thursdays: 1300-1600
Sonia Agarwal, Tuesday, Wednesday and Thursday: 1800-2100

Official Course Outline


Announcements

2018-12-28: Total Marks

2018-12-27: Final Exam Marks
Design Assignment 3 Marks
Design Assignment 3 Comments for Markers

2018-12-04: Final Exam
Wednesday 5th December 2018 from 1300 to 1600 in FG-B050 and FG-B030.
Note the unusual start time.
The Faubourg basement is not easy to find, so check out the exam location ahead of time.

2018-12-04: More study questions

2018-12-02: Quiz Marks

2018-11-29: Assignment 3
Material about heursitics can be found on wikipedia and more specifically for the problem of how to search a solution about heursitics can be found on wikipedia

2018-11-17: Design Assignment 2 Comments for Markers

2018-11-12: Some study questions

Some sample questions for Quiz 2

2018-11-12: Design Assignment 3
Assume that a student is already in the program, has already done some courses, and is planning a schedule for the new semester.
The student may already have selected some classes for this semester. Or the student may be starting with an empty schedule.
Your task is to help the student complete their schedule by offering advice on which classes to take.
You want to build a schedule that is consistent. So try to avoid suggesting classes that make the schedule inconsistent.
Scope your design to provide a range of heuristics, and make it easy to add new heuristics.
Do not worry about a UI. This course is not about UI design.

2018-11-04: Quiz Marks

2018-11-01: There have been questions about the scope of the project, in terms of what to check for as part of consistency checking for the schedule.
You should check at least pre-requisites, co-requisites, and time conflicts between classes (but not campuses).
Beyond that, the choice of scope is up to you. Just make clear that it is stated in the Problem section, and mentioned in the Design Desciption section.

2018-10-29: Design Assignment 1 Marks

2018-10-20: Design Assignment 1 Comments for Markers
This is guidance for what you should have concentrated on in Assignment 1.
Note that Designn Assignment 2 is a different problem to assignment 1.

2018-10-12: Some study questions

Some sample questions for Quiz 1

2018-09-24: Assignment 1 is a design, so your schedule must allow for design cycle.

You should have done a domain model by 2018-09-17 so you know the real-world entities and their associations.

You should have a draft design by now; so you can review it for its qualities: correctness, memory usage, effciency of basic operations.

You should have a final design by 2018-10-01; and have begun documentation by then.

You should have completed the document by 2018-10-07 so that you have time to review the document, for accuracy, clarity of statements, and clarity of reasoning. Check that all digrams are readable, do not waste whitespace, have a number, title and caption, and are accompanied by explanatory text in the document. You should have a draft design by now; so you can review it for its qualities: correctness, memory usage, effciency of basic operations.

You should have a final design by 2018-10-01; and have begun documentation by then.

You should have completed the document by 2018-10-07 so that you have time to review the document, for accuracy, clarity of statements, and clarity of reasoning. Check that all digrams are readable, do not waste whitespace, have a number, title and caption, and are accompanied by explanatory text in the document.

Check your document for length.

Include an Expectation of Originality form.

Submit your document as a pdf file by the deadline.

You are describing one class, so you need:

  1. a name
  2. a purpose/responsibility
  3. a description of its services

Each service has a signature

  1. a name
  2. a list of parameters and the parameter type, and whether they are passed by value or reference
  3. a return type for any result
and a contract
  1. a pre-condition
  2. a post-condition
  3. and perhaps an invariant

You should also list the exceptions that may be thrown.

You should also indicate the private data members of the class, with the choice of their data structures.

Are there any important choices for algorithms that you need to make?

2018-09-07: POD Sessions are in H-835
Ellis Eghan, Thursdays: 1.00pm to 4.00pm.
Sonia Agarwal, Tuesday, Wednesday and Thursday:6pm - 9pm

2018-09-04: Lecture room is changed to MB 1.210

2018-09-04: First class for the course is Monday 10 September 2018.
First POD session to be determined.

Getting Started
Read the Official Course Outline
Note that assignments are to be done individually.
Note that the final exam will require you to create and document a design.

Getting Started - Background
Make sure that you know the prerequisite knowledge on object-oriented programming; software development environments; software process; and UML.
Know the meaning of each term used in the section below on prerequisite knowledge.

Getting Started - Assignments
Fall 2018 Design Assignments

Getting Started
Start reading recommended books.
For week 2 class you should develop a domain model for the assignments, even though the design document does not include this domain model.
Read Larman's material on domain modeling.
I suggest that you learn Latex and use it to write your documents for the assignments.


Course Description

SOEN 6461 Software Design Methodologies (4 credits)
Introduction to software design processes and their models. Representations of design/architecture. Software architectures and design plans. Design methods, object-oriented application frameworks, design patterns, design quality and assurance, coupling and cohesion measurements, design verification and documentation. A design project.
Note: Students who have received credit for COMP 6471 before September 2011 may not take this course for credit.


Prerequisite Knowledge

Object-oriented programming in either Java or C++; Knowledge of object-oriented concepts such as class, object, inheritance, polymorphism, identity, state, behaviour, delegation, abstract class, generic class; Be able to develop, test, and debug to construct a working object-oriented program of approximately 1000 lines of code; Be able to use an IDE such as Eclipse to develop programs; Be able to perform unit testing using a framework such as JUnit.

Be able to use standard object-oriented libraries for data structures and user interfaces.

Introductory knowledge of the software process (feasibility, requirements, design, implementation, test, deployment, maintenance, and evolution) and related documents; Working knowledge of UML notation and tools; Knowledge of UML concepts such as element, class, object, attribute, operation, association, generalization, aggregation, composition, dependency, message, state, compound state, concurrent regions, transition, event, action, activity, swimlane, package.


Recommended Books

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

We rely heavily on this book, so get a copy and read it thoroughly.

These are valuable references for any practicing software developer, so it is worthwhile to buy them.

Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1994.

Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal, Pattern-Oriented Software Architecture, A System of Patterns, Wiley, 1996.


Evaluation

Students are required to complete three design assignments (30%) two quizzes (20%), and a final exam (50%).

The design assignments are to be done individually.

Each quiz will be a closed book examination of at least one hour in duration. Each quiz will require you to answer questions about the designs in the design assignments that have already been completed.

The final examination will be a closed book examination of three hours in duration. The final examination will require you to create a small design as part of the examination, and to answer questions about the designs in the three dessign assignments.

You must pass the final examination in order to pass the course as a whole. You must pass the assignments in order to pass the course as a whole.

Your grade will depend on your performance in the assignments, quizzes and the final examination A poor performance in any single component may bring down your grade. There is no simple direct correlation between your total mark and the grade.


Design Assignments

The design assignments require you to create, analyse, and communicate a design, but not to write a program.

This term the design problems concern solving a puzzle realted to cryptography. Details to be announced.

Assignment 1: Due 23:59 Wednesday 10 October 2018

Assignment 2: Due 23:59 Sunday 4 November 2018

Assignment 3: Due 23:59 Sunday 2 December 2018

Deliverables

The deliverable is a design document of about five (5) pages as a pdf file. Your design document should have sections on


Include the signed Expectations of Originality form from here as the first page of your pdf file.

Submit the pdf file to "assignment-1", "assignment-2", and "assignment-3" of SOEN 6461 to the electronic submission system.

Write your design document for a reader audience at the level of a CS or SOEN graduate like yourself.

Communicating your design clearly is a very important skill that you must learn. Use UML diagrams where and when they are appropriate for communicating information about the design, but do not use them if they are not needed.

Marking Scheme

For each design document, the marking scheme will assign a mark out of 2 for each of the sections listed above, for a total mark out of 10:

Length Penalty: There is a penalty of 10% of the assignment mark for each page that your assignment is over 7 pages.

Late Penalty: There is a penalty of 10% of the assignment mark for each day that your assignment is late.


Lecture Schedule

Tentative - subject to change.

Week 1 - 10 September 2018: Course Outline; Life-long Learning for Software Development; Major Issues in Software Engineering; Intro to Design;
Background Reading: Larman, Ch 1-7;
Week 2 - 17 September 2018: Intro to Design; Detailed Design: Collections, Maps, Algorithms, and Libraries; Domain Modeling;
Background Reading: Domain Modeling Larman Ch 8-12.
Week 3 - 24 September 2018: Evaluating Designs;
Reading: Design Evaluation and Analysis Larmen, Ch 33.
Background Slides: Course Outline slides; Learning; Issues; Domain Models,
Slides: Object-Oriented Design; Design Introduction; Detailed Design, Scenario-Driven Review of Design,
Read Software Design 101

Week 4 - 1 October 2018: Responsibility-Driven Design (responsibilities, GRASP, use case realization, visibility)
Cancelled - due to Quebec elections
RDD, responsibilities, representation gap, use case realization.
Reading: Larman Ch 12, 14, 17, 18, 19.
Week - 8 October 2018: Thanksgiving holiday - No lecture.
Week 5 - 15 October 2018: Functional Design; Modularity, Interfaces, Encapsulaltion.
Functional design for business data processing, modules and interfaces, cohesion and coupling, encapsulation. GRASP for closing representation gap, Information Expert, Creator, Control, High Cohesion, Low Coupling.
Reading: Larman Ch 12, 14, 17.
Slides: RDD; function-oriented design;

Week 6 - 22 October 2018: Quiz 1