COMP 354 Software Engineering

Winter 2012 Semester: January 6 to April 5, 2012

Lectures: Thursdays 17:45 to 20:15 in FG-B070

Section PP


Course Outline

Project Teams


Announcements

2012-04-23: Total Marks.

2012-04-20: Quiz 2 Marks.

2012-04-20: Increment 3 Marks.

2012-04-05: Increment 4: Each person must submit their individual work. Team evaluation form (as pdf) should be submitted as "Project 4" and Diary (as pdf) as "Program 4".
The team evaluation form should clearly indicate for each team member: full name, an evaluation mark in the range from 0 to 5 (with 5 being the highest), and comments.
Make sure both documents have your name and student number.

2012-04-05: Increment 2 Marks.

2012-03-17: Latex template for the test document added to project information.

2012-03-17: Quiz 2 will cover material in Pressman Chapters 8, 9, 14, 15, 17, 18 and Sections 12.1, 12.2, 12.3.
Format will include True/False questions, and short-answer questions.

2012-03-03: Quiz 1 Marks.

2012-03-01: Increment 1 Marks.

2012-02-05: Latex template for the design document added to project information.

2012-02-01: Quiz 1 will cover material in Pressman Chapters 1, 4, 5; and Sections 2-1-2.3, 6-2-6.4, 24.1-24.6, 17.1-17.4, 17.8.
Format will include True/False questions, and short-answer questions.

2012-01-19: Teams 5 and 6 have still not sent me their contact info.
Updated Project Teams and project information.
Added explicit deadlines for project (see below).

2012-01-13: I have updated the team with the information I have. Please send me updated membership lists with email contacts please. I have nothing from Teams 3, 5, 6.

2012-01-10: project information.


Instructor: Dr Greg Butler, gregb@cs.concordia.ca

Office Hours - Dr Butler: Thursdays 16:00-17:00 in EV.003.219; or by appointment.

Tutorials PA: Thursdays 20:30-21:20 H-967 Sembakkam Rajivelu, Srinivasan (s_sembak@encs.concordia.ca)
Tutorials PB: Thursdays 20:30-21:20 H-847 Al-Shatnawi, Mufleh (m_alshat@encs.concordia.ca)

Labs PI: Wednesdays 20:30 ~ 22:20 H-967 Lab Demonstrator Sembakkam Rajivelu, Srinivasan (s_sembak@encs.concordia.ca)
Labs PJ: Tuesdays 15:45-17:35 H-905 Lab Demonstrator Al-Shatnawi, Mufleh (m_alshat@encs.concordia.ca)

Note Tutorials and Labs start in Week 2.

Course Description

Software development process models (e.g. linear vs. iterative). Project management; roles, activities and deliverables for each software life cycle phase. Requirements management: analysis, elicitation, and scope. Architecture, design and the mapping of requirements to design and design to implementation. Traceability. Software quality assurance: verification, validation and the role of testing. Maintenance and evolution.

Objectives

This course is a 4-credit course with 3 contact hours (2.5 class hours) of lecture, 1 hour of tutorial and 2 hours of lab. Material is covered during lectures, tutorials and labs. Through these three types of instruction you are taught the different perspectives of Software Engineering discipline : basic principles, formalisms, tools and team work. You will be learning a disciplined process of developing software and practicing it in a small project.

You should expect to average a total of 10 to 12 hours per week on this course. For individual weeks it will be much higher depending on your role in the project and the phase of the project. So plan your time accordingly.


Textbook

Roger S Pressman, Software Engineering: A Practitioner's Approach, 7th edition, McGraw-Hill

We rely heavily on the textbook, so get a copy and read it thoroughly.

Other Resources

Introduction to Software Engineering and the rest of the SE material on Dr Joey Paquet's wiki.

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


Evaluation

Students are required to complete a project in three parts (60%), and two quizzes (30%). There is apersonal mark for the project work (10%).

The project includes documenting requirements, design, and test plan and test results, as well as coding and testing. The project is a team project. Each part of the project requires a document as a deliverable (15%) and a source code deliverable (with unit tests) (5%).

Each quiz will be a closed book examination of at least one hour in duration.

Students must pass the quizzes in order to pass the course.

Your grade will depend on both your performance in the quizzes, and your performance in the project. 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.


Project

The emphasis of the project is on experiencing a complete software lifecycle rather than producing a gee-whiz final product. We want you to see how the phases and documents of the project relate to each other, to appreciate the point of trying to get it right the first time, but also having review mechanisms in place to catch mistakes (as they are bound to happen).

The project is a task management system.

The system is built in three increments.

The project is done in a iterative fashion. Each iteration develops a working system. The first is a very basic system. The second has more features, but still basic in approach and scope. The third is close to a realistic system in scope, design, usability, and robustness.

Each increment will take three to four weeks. Each increment will have a document as a deliverable: a requiremenst document, a design document, and a test plan and report repectively for increment one, two, and three. Each increment will have source code as a deliverable including unit tests.

The final system will have a UI with four views of the task management information:

  1. a table view of the tasks, where each task has an identifier, a title, a (short) description, a duration, a deliverable, a deadline date, and a person assigned to the task.
  2. a table view of the people, where each person has a name, a total number of hours assigned to them for the tasks, and a list of tasks assigned to them.
  3. a tree view of the tasks (and subtasks) (like a standard tree view of directories and files) where one can open and close subtrees.
  4. a graph view of the tasks similar to a GANNT chart.

The details of the requirements such as input and output formats, the layout of views for the UI, and how users interact with the system is up to you.

Create a number of examples of situations where you need to manage tasks, and let the needs of those examples guide your requirements. One of those examples should be your team project for this course.

Tools

You must use the standard software development tools: Java, JUnit, Eclipse, Rational Rose (for UML), and Latex for documents.

Increment 1 Due Week 5: 23:59 Sunday 5 February 2012

The system reads in a text file describing the tasks (Table 1), and outputs a text file describing the people (Table 2).

There is no UI.

The document deliverable is a requirements document for the whole system. The source code must include unit tests that extensively test the current increment.

Increment 2 Due Week 9: 23:59 Sunday 11 March 2012

The system reads in a text file describing tasks and subtasks in a simple XML format. It has a UI showing the tasks (Table 1) and the people (Table 2). The table of tasks can be edited interactively. The user can output a textfile representation of tasks (Table 1) and/or a text file representation of people (Table 2).

There is a UI. Only the task view is editable interactively. Both views (tasks and people) should be synchronized to reflect changes as the task view is edited.

The document deliverable is a design document for the whole system. The source code must include unit tests that extensively test the current increment.

Increment 3 Due Week 13: 23:59 Sunday 8 April 2012

A complete system. The input XML defines subtask relationships and dependecy relationships (ie "before" indicates that task A must be complete before task B begins).

There is a UI with the four views. Only the task view is editable interactively to change data. The tree view can be manipulated to open and close subtrees. These changes should be automatically reflected in all views.

The document deliverable is a test plan and report document for the whole system. The source code must include unit tests that extensively test the current increment.

Personal Project Contribution Due Week 13: 23:59 Sunday 8 April 2012

Each student is to keep a diary of their activities on the project. The diary should record time and date, activity, people involved in the activity, and the duration of the activity.

Each person is to complete an evaluation form that evaluates the contribution of each other member of the team.

Marking Scheme

The document marking scheme is

This gives a mark out of 10, which is taken as a mark out of 15%.

The code and unit test marking scheme is as follows. Note that "code" includes the unit test code.

This give a mark out of 10 which is divided by 2 to give a mark out of 5%.

The personal project mark out of 10 is determined (by the professor) by reading your project diary and the evaluation of your performance by each of your team members. The average personal mark is 5/10 with a higher mark given for consistently good evaluations suported by evidence in the diary of good effort. Similarly a lower mark is given for consistently poor evaluations that are supported by lack of effort as evidenced by the diary.

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 - 5 January 2012: Course Outline; Intro to Software Engineering.
Software engineering: projects, phases, milestones, deliverables, people, tools, problems, and some solutions.
Management, planning, scope, risks.
Major problems: requirements, architecture, change, complexity.
Putting it all together: Aligning priorities on qualities, Recognizing risks early, Working system early, Testing early.

Reading: Pressman Chapters 1 Software and Software Engineering, 24 project Management Concepts.
course outline, slides

Week 2 - 12 January 2012: Requirements.
Domain Model, use cases, scenarios, system operations and contracts.
Importance of domain model for data processing applications.

Reading: Pressman Chapters 5 Understanding Requirements, 6 Requirements Modeling: Scenarios, Information, and Analysis Classes.
slides
Optional Reading: Twelve Requirements Basics for Project Success

Week 3 - 19 January 2012: Intro to Testing.
Introduction to testing: test plan, test suite, test case, test data. Test infrastructure.

Reading: Pressman Chapters 17 Software Testing Strategies, 18 Testing Conventional Applications, 19 Testing OO Applications.
slides

Week 4 - 26 January 2012: Intro to Model-View-Control Architecture.
Typical Java application (the Model-View-Control architecture).

Reading: Pressman Chapters 9 Architectural Design, MVC (page XXX).
Java SE Application Design With MVC
Wikipedia MVC, Wikipedia Swing Java UI classes
Article about Java UI classes amd MVC
slides

Week 5 - 2 February 2012: Principles of SE; Lifecycle Models.
Principles: Rigour and Formality, Separation of Concerns, Modularity, Abstraction, Anticipation of Change, Generality, Incrementality.
Waterfall model of lifecycle.
Agile, iterative development; test-driven development; the V model.
Unified Process approaches to the problems. Inception: major risks and use cases. Elaboration: complete risk analysis, most use cases, architectural baseline, development plan. Construction: incremental construction. Transition: deployment to customer.

Reading: Pressman Chapters 1 Software and Software Engineering, 2 Process Models, 3 Agile Development, 4 Principles that Guide Practice.
slides, slides

Week 6 - 9 February 2012: Quiz 1; Design

Lecture on design starting 19:15.
Reading: Pressman Chapters 8 Design Concepts, 9 Architectural Design, 10 Component Level Design.
slides

Week 7 - 16 February 2012: Design
Object-oriented development. Classes, objects, responsibilities, collaborations.
Design: responsibility-driven design; design patterns; use case realization; design rationale.

Reading: Pressman Chapters 8 Design Concepts, 9 Architectural Design, 10 Component Level Design.
slides

Week 20-24 February 2012: Mid-semester break

Week 8 - 1 March 2012: Architecture.
Components and connectors.
Layer, subsystem, module, package. Interface, protocol.
Layered architecture - layers, virtual machines.
Typical Java application (the Model-View-Control architecture).

Reading:
slides
Optional Reading: Software Architecture: An Executive Overview SEI TR-003, 1996.

Week 9 - 8 March 2012: Validation and verification; Testing.
Validation, verification.
Introduction to testing: test plan, test suite, test case, test data. Test infrastructure.
Introduction to testing: error, fault, failure; verification, validation; correctness, robustness, reliability.
Approaches to creating test suites/test cases/test data.

Reading: Pressman Chapters 17 Software Testing Strategies, 18 Testing Conventional Applications, 19 Testing OO Applications. 15 Review Techniques.
slides

Week 10 - 15 March 2012: Design Patterns.
Reading: Pressman Chapters 12 Pattern-Based Design.
slides

Week 11 - 22 March 2012: Quality, Measurement, Metrics.
Reading: Pressman Chapters 14 Quality Concepts, 15 Review Techniques, 23 Product Metrics.
slides

Week 12 - 29 March 2012: Quiz 2; Formal Methods.

Lecture on formal methods starting 19:15.
Reading: Pressman Chapters 21 Formal Modeling and Verification.
slides

Week 13 - 5 April 2012: Formal Methods.
Reading: Pressman Chapters 21 Formal Modeling and Verification.
slides

Quizzes:
Format: short answer questions; true/false questions; one-word (or one-phrase) answers.
Focus on major phases of SE: requirements, design, coding, testing, maintenance. What is the main concern for each phase? What are the major problems? How are the problems addressed?
Know the terminology and use it correctly.
Know definitions, but know what the definition means, and why the concept is important and how it is applied/used
Know the relationships/connections/dependencies between all the activities that go on in SE
Know how to track progress of a SE project.
Know how to track quality of a SE project.
Know the Model-View-Control architecture, Observer design pattern.
Think about how the lecture material relates to your project work.


Last modified on 17 March 2012 by gregb@cs.concordia.ca