MET CS 673: Software Engineering Home Page

Last updated: October 28, 2005.  The most recent updates are usually in red type

Description: Techniques for the construction of reliable, efficient and cost-effective software.  Requirements analysis, software design, programming methodologies, testing procedures, software development tools and management issues.  Students design and implement a system in a group project.  Laboratory course.

Background of the Instructor red if changed

Midterm Description red if changed

Evaluation of Students red if changed

Plagiarism red if changed

Forums -- past and present red if changed

Policies in Eric Braude’s classes  red if changed

Home page for Eric Braude

Project and Presentation red if changed

Homework and due dates red if changed             

Tools red if changed

How to Contact Eric Braude red if changed

Textbooks and Materials red if changed

Learning Objectives red if changed

Topics and Class Dates red if changed


Learning Objectives

Students will be able to plan software application projects, gather requirements, create an architecture, create a design, implement the code and test the product.


Textbook and Materials

Required

·        Optional: Software Engineering: an Object-Oriented Perspective  by E. Braude (Wiley 2001)

·        Updated notes 

·        The site for the above book contains a soft version of the case study that you may use for templates, as well as the full case study source code, and the slides for all classes.  The latter correspond to the figures in the book.

A good references (not required):

Software Engineering: A Practitioner's Approach by R. Pressman (McGraw Hill)

Additional References:

The Mythical Man-Month 20th anniversary edition by F. Brooks et al

A Discipline for Software Engineering by W. Humphries ("the PSP book")

Introduction to the Team Software Process by W. Humphries ("the TSP book") 


Project Structure

To reinforce a central concept in software engineering, students will work in teams on most project parts.  Team leadership will change once during the semester.  Specialization within groups may be permitted, but all members must know all parts.  Teams will give presentations on the last day of class, and may be called upon to give in-progress reviews.

Presentation format for last class

The format of the presentation should be as follows.

3 minutes approximately: Introduce members and describe what the application is supposed to do

3 minutes approx: Show your design

4 minutes approx: Give a demonstration if possible

5 minutes: What did **not** work in the process

5 minutes: What **worked well** in the process

 

Use different people or pairs to present different parts.  Have all set up in advance so that there is no waiting between presenters.

 


Midterm

The midterm will probably be in the following form.

1.   Describe a realistic process for developing a software application given the following circumstances …...  Explain your choice and show a rough schedule.

 

Criteria:             a. Adequacy and appropriateness of the process             

(A = entirely appropriate number and type of phases)

b. Clarity of description                (A = all expressed very clearly, with specifics)

 

 

2.       Within the constraints mentioned in question 1, give parts of requirements documentation for the following application.  Provide the most important headings for your documentation, as well as illustrative examples of content only.  Omit "documents referenced", interface specifications of all kinds, design constraints and "scope".

 

Your customer is …….

 

Criteria:             a. Clarity of requirements description (A = very clearly expressed examples) 

b. Completeness within the (sub) headings you have chosen (A = complete within the subheading; no redundancy) 

 

 

3.   Give an overall architecture of the software application described in question 2.  Preferably, use two to four annotated diagrams.  Accommodate expansion of the requirements; explain.

 

Criteria:             a. Clarity of design                    

(A = very modular and very clear design; low coupling; high cohesion) 

b.  Growth potential of the design i.e. attention paid to reasonable future growth      (A = all key areas and reasonable growth addressed).       

 


Evaluation of Students

There will be a midterm, together with assignments, given on most weeks for the first two thirds of the semester. The assignments will consist of group work on the term project. 

 

weight

Midterm 

35%

Project

65%

Parts of assignments are evaluated equally unless otherwise stated.

All members of the group will receive the same grade for each joint submission, factored by peer evaluations within the group.  To fulfill your peer evaluation option, you must individually send me an e-mail, after the group's final submission is made, apportioning your evaluation of the RELATIVE CONTRIBUTION TO THE GROUP's GRADE as follows. Be fair and rational. Suppose that your group has n participants. Apportion 10(n-1) points among the team members excluding yourself. For example, members of a team consisting of A, B, C, and D, could be evaluated by member B as A=8, C=12, and D=10. The extent of this factoring will be decided by the instructor near the end of the course. Groups have the option to decline peer evaluations, in which case all participants will receive the same grade for each joint submission. 

Within each project, grades will be apportioned as follows.

Final submission

30%

Influenced by peer evaluations, if any

Remainder

70%

Late homework is not accepted unless there is a reason why it was impossible to perform the work. In that case, the written reason should be attached to the homework, which will be graded on a pass/fail basis.

Please also read detailed information about grade averaging method.


Plagiarism

 

Please cite all references and uses of the work of other.  All instances of plagiarism must be reported to the College for action.  See plagiarism policy and reference.

 


Syllabus

Dt.

Cls

Topic

Approximate project schedule

Official assignments and due dates are at homework page and due dates

9/8

1

Review course contents

Overview of software engineering

Tentatively form teams and projects. Identify communication mechanisms.

9/15

2

Process of Software Engineering  

Describe the problems and challenges of developing software products; Describe steps in the process for developing software products; summarize and compare various models (top-down, incremental, spiral etc.); the Capability Maturity Model

Finalize teams. 

List informal requirements of project, describe the challenges, explore feasibility; volunteer skill specialization (e.g. Java) Summarize process alternatives; apportion feasibility retirement. 

Investigate legacy system; develop program to learn tools.

Develop SCMP and prototype

9/22

3

Software Project Management

Introduce project management concepts, development metrics and risk management; the Personal Software Process. Refine informal requirements. Implement prototype parts. Scheduling, quality assurance, configuration management; inspection techniques I. 

 

Draft project management plan, metrics, describe risks with retirement Apportion detailed risk retirement tasks; draft project management plan; draft configuration management plan. Refine informal requirements. Apportion skill matrix.  

Reverse engineer legacy system.

Develop SPMP

9/29

4

Requirements Analysis I

Introduce the concept of system engineering; describe requirements analysis and C-requirements

Build prototypes and proof-of-concept experiments.

Develop SRS

 

10/6

5

Requirements Analysis II

Describe and apply D-requirements

Define requirements for project

Develop SRS

10/20

 

6

Design I: Essentials  

Design principles and concepts; Define "architecture" and review alternatives

Specify design for project modules; Decompose project into 3-7 modules for group execution. Specify interfaces.

Develop SDD

10/27

 

7

Design II: Design Techniques  

Describe alternative design methods; match with requirements 

Develop SDD

11/3

8

Implementation 

Programming standards etc.

Code inspections

 

11/10

online

9

Integration

Describe integration and unit testing

 

 

11/10

10

Testing 

Describe testing strategies and techniques; inspection techniques

Review for midterm

 

11/17

11

Midterm

 

 

12/1

12

Maintenance 

 

12/8

13

Project Presentations

Project due; Present results

12/12

 

(no class)

Individual project assessments due 


Tools

Here are some (mostly free) tools to consider

For configuration management: Freepository , SourceForge

 

Forums -- past and present

Spring 1999; Summer 1999; Fall 1999; Spring 2000; Fall 2000; Spring 2001; Spring 2002;

Fall 2002; Spring 2003; Summer 2003; Fall 2003; Spring 2004

Fall 2004: Spring 2005   

 

Fall 2005:

            Post message: 673F05@yahoogroups.com

Subscribe: 673F05-subscribe@yahoogroups.com  or go to the site at http://groups.yahoo.com/group/673F05/