CS 160: Software Engineering

GREEN SHEET

 

Sections 1 and 2

Spring Semester 2008

Department of Computer Science
San Jose State University
Instructor: Prof. Ron Mak

 

Section 1: Tuesdays and Thursdays, 7:00 – 8:15 pm, MacQuarrie Hall, room 225

Section 2: Tuesdays and Thursdays, 8:30 – 9:45 pm, MacQuarrie Hall, room 225

 

Office hours: Tuesdays and Thursdays, 5:30 – 6:45 pm

Office location: Duncan Hall, room 282

E-mail: mak@cs.sjsu.edu (e-mail preferred over phone)

Phone: (408) 533-2726 (cell)

Course catalog description

“Software engineering principles, requirements elicitation and analysis, design, configuration management, quality control, project planning, social and ethical issues. Required team-based software development, including written requirements specification and design documentation, oral presentation, and tool use.” 3 units

Goal

To educate students on the general concepts of software engineering and all the relevant subjects in the software development process through a hands-on team term project.

Basic objectives

  • Software process: Reason about and apply the entire process of software engineering. Be able to come up with a software project schedule and use software tools like Microsoft Project or similar for project scheduling purposes. Be able to use version control tools like CVS.
  • Requirements engineering: Be able to solicit, elaborate, and validate specifications for given software projects.
  • Software design: Understand what software design architectures are suitable for various software projects. Apply appropriate software design to a group project. Be able to use appropriate software design tools.
  • Validation: Understand the software validation process and be able to use issue tracking tools.

Additional objective

  • Experience the commercial software product development process hands-on, to the extent possible within a single semester.

Student learning outcomes

  • Demonstrate an understanding of the challenges of software engineering and the roles of process and methodologies
  • Reason about people and team management issues
  • Write functional specifications and use cases at a level of detail that is sufficient for carrying out software design
  • Reason about architectural and design choices
  • Develop and document a software design at a level of detail that is sufficient for implementation
  • Produce and comprehend UML package, class, sequence diagrams
  • Formulate and execute a test plan for a software project
  • Carry out code reviews in a team setting
  • Produce a schedule for a software project
  • Track issues and measure progress on a weekly basis
  • Automate the build process for a software project
  • Use revision control software

Prerequisites

CS 146

Data structures and algorithms

grade C- or better

CS 151

Object-oriented design

grade C- or better

CS 100W

Technical writing

grade C or better or instructor consent

Required textbook

Bernd Bruegge and Allen H. Dutoit, Object-Oriented Software Engineering Using UML, Patterns, and Java, 2nd edition, Prentice Hall, 2004. ISBN 0-13-047110-0.

 

There will be additional reading assignments from the Internet. URLs will be provided.

Useful references

Alternate software engineering textbooks:

  • Roger S. Pressman, Software Engineering: A Practitioner’s Approach, 6th edition, McGraw Hill, 2004. ISBN 978-0071238403.
  • Ian Sommerville, Software Engineering, 8th edition, Addison-Wesley, 2006. ISBN 978-0321313799.

Software engineering tools and methods:

  • Daniel Berlin and Garrett Rooney, Practical Subversion, 2nd edition, Apress, 2006. ISBN 978-1590597538.
  • Steven Holzner, Ant: The Definitive Guide, 2nd edition, O’Reilly, 2005. ISBN 978-0596006099.
  • Cay Horstmann, Object-Oriented Design & Patterns, 2nd edition, Wiley, 2006. ISBN 978-0471744870.
  • Dean Leffingwell and Don Widrig, Managing Software Requirements: A Use Case Approach, 2nd edition, Addison-Wesley, 2003. ISBN 978-0321122476.
  • Ronald Mak, The Martian Principles for Successful Enterprise Systems: 20 Lessons Learned from NASA’s Mars Exploration Rover Mission, Wiley, 2006. ISBN 978-0471789659.
  • Steve McConnell, Software Estimation: Demystifying the Black Art, Microsoft Press, 2006. ISBN 978-0735605350.
  • Dan Pilone, UML 2.0 in a Nutshell, O’Reilly, 2005. ISBN 978-0596007959.
  • Geri Schneider and Jason P. Winters, Applying Use Cases: A Practical Guide, 2nd edition, Addison-Wesley, 2001. ISBN 978-0201708530.
  • Karl E. Wiegers, More About Software Requirements: Thorny Issues and Practical Advice, Microsoft Press, 2006. ISBN 978-0735622678.

Software engineering methodologies:

  • Kent Beck, Extreme Programming Explained: Embrace Change, 2nd edition, Addison-Wesley, 2004. ISBN 978-0321278654.
  • Per Kroll and Phillippe Kruchten, The Rational Unified Process Made Easy: A Practitioner’s Guide to the RUP, Addison-Wesley, 2003. ISBN 978-0321166098.
  • Stephen J. Mellor, et al., MDA Distilled: Principles of Model-Driven Architecture, Addison-Wesley, 2004. ISBN 9780201-788914.

Procedure

During the semester, we will simulate the commercial software product development process by breaking up the class into project teams and having each team participate in all the development phases. The instructor will play the role of the project manager. Besides generating project documentation and product code, each team will give several presentations to the class. During a presentation, the members of the rest of the class will play the roles of customers and advisors for the presenting team’s product.

 

A team is not expected to develop a finished product during the semester. A key skill to learn is how to make a complete project schedule with milestones. Each team should achieve its early project milestones by the end of the semester. The goal of this course is not to produce a winning product (although that could be a very lucrative bonus for the team members!) but to learn team-based software engineering processes, methodologies, and tools.

Schedule (subject to change)

Week

Dates

Topics and activities (activities in italics)

Chapters

1

Jan 24

What is software engineering?

Processes and methodologies

Software project organization

The class projects

1

2

Jan 29, 31

Development activities

Requirements elicitation

Use cases and functional specifications

Conceptual designs

Agile programming

Rapid prototyping

Rapid Application Development (RAD)

The Unified Modeling Language (UML)

Form project teams

2, 3, 4

3

Feb 5, 7

Preliminary design review preparation

Software build tool: Ant

Project management tools, including:

  - Subversion (source control)

  - Trac (project tracking)

  - Bugzilla (bug tracking)

Managing expectations

Risk reduction

Software estimation

Managing dependencies

Project scheduling

 

4

Feb 12, 14

Project team conceptual design reviews and prototype demos*

 

5

Feb 19, 21

Software design and architecture:

  - Requirements analysis

  - Mapping use cases to objects

5, 6


6

Feb 26, 28

Software design and architecture:

  - System and enterprise architecture

  - Techniques for robust and reliable software

  - Design documentation

7

7

Mar 4, 6

Software design and architecture:

  - Design patterns

  - Reusable components

  - Specifying interfaces

8, 9

8

Mar 11, 13

Software design and architecture:

  - Logical and physical data models

  - Coding and refactoring

  - Legacy and commercial off-the-shelf (COTS) software

10

9

Mar 18, 20

Midterm exam (Mar 18)

Review midterm

Final design review preparation

 

10

Mar 24-28

Spring recess

 

11

Apr 1, 3

Project team final design reviews*

 

12

Apr 8, 10

Code review preparation

Software quality assurance (SQA)

Verification and validation

Test plans

Unit, system, and stress testing

Regression testing

Failure analysis

11

13

Apr 15, 17

Project team code reviews*

 

14

Apr 22, 24

Project management

Project plans

Configuration management

Measuring progress

Software metrics

12, 13, 14

15

Apr 29,

May 1

Social, ethical, and legal issues

The Capability Maturity Model (CMM)

Model-Driven Architecture (MDA)

The Rational Unified Process (RUP)

Extreme Programming (XP)

Project post mortem assessments

Demo preparation

15, 16

16

May 6, 8

Project team demos*

 

17

May 13

Class review

 

18

May 15, 20

Final exam:

  • Section 1: Thursday, May 15, 7:45-10:00 pm
  • Section 2: Tuesday, May 20, 7:45-10:00 pm

Both finals will be held in MacQuarrie Hall, room 225

 

 

* Each project team gives a presentation to the rest of the class. Brevity is crucial! Members of the rest of the class play the role of customer or advisor to the team making the presentation.

Homework assignments

Besides the ongoing class projects, there will be homework assignments, at most one per week, for each student to complete individually. Each assignment will due after one week (two class meetings later). Each assignment is worth a maximum of 100 points. Late assignments lose 25 points for each class meeting after the due date.

Class projects

A major portion of the coursework will be the class projects. The projects provide an opportunity to apply immediately the material taught in the classes and from the textbook.

 

Students can form their own project teams of 4-6 members each. Each team can choose its own software product to develop. This product must satisfy certain minimum criteria, described in a separate project document. The product should be sufficiently substantial so that it would take an entire team working fulltime between a semester and a year to completely develop it. (But remember that each team is only expected to achieve its early milestones by the end of the semester.) A team can also choose to develop the default product, also described in the project document.

 

A student who is not initially part of a team must advertise his or her skills and interests in order to get “hired” by an existing team. A team that needs additional members must “recruit” students who are not already part of a team.

 

Once teams are formed, students may not move from one team to another without the instructor’s permission.

 

During the semester, each team will experience the various phases of software product development. Each team is expected to produce the appropriate artifacts from the phases, such as use cases, functional specifications, project schedules, design documents, etc. Some phases include giving oral presentations, such as design reviews and product demos. During the presentations, the members of rest of the class will play the roles of advisors or customers for the team’s product. Each team must use the project management tools and track its own progress.

 

This can be a great opportunity for a team to start development on an actual hot product idea!

Project grade

Each student’s project grade will be determined by the quality of the team’s artifacts and presentations and by his or her participation in producing the work. (Who worked on what can be tracked by the project management tools.)

 

Participation also includes playing the role of advisor or customer to the teams giving presentations. Therefore, class attendance is especially important during presentation days.

 

At the end of the semester, each student will individually write a post mortem assessment (3-4 pp. single-spaced) of his or her project, which will include:

 

·         a description of what he or she learned from being on the team

·         a self evaluation of his or her own work on the team

·         an evaluation of the other team members

 

Therefore, each student’s project grade will be weighted as follows:

 

40%

quality of the team’s artifacts and presentations

30%

individual student’s participation

30%

individual student’s written post mortem assessment

Exams

The midterm and final examinations will be open book and notes. Laptops may be used, but instant messaging, e-mails, or similar communications to other students during the exams will be strictly forbidden.

Overall class grade

50%

Project grade

20%

Final

15%

Midterm

15%

Homework

A-

90-92

A

93-100

 

 

B-

80-82

B

83-86

B+

87-89

C-

70-72

C

73-76

C+

77-79

D-

60-62

D

63-66

D+

67-69

 

 

F

< 60

 

 

Adding and dropping

Students are responsible for understanding the policies and procedures about add/drops, academic renewal, etc. found at http://sa.sjsu.edu/student_conduct. Be aware of the new deadlines and penalties for adding and dropping classes.

Classroom protocol

As mentioned above, it is very important for each student to participate, both on behalf his or her own project team and on behalf of other teams that are making presentations.

 

Cell phones in silent mode, please.

Academic integrity

Students are expected to be familiar with the University’s Academic Integrity Policy. Please review this at http://sa.sjsu.edu/student_conduct. “Your own commitment to learning, as evidenced by your enrollment at San Jose State University and the University’s integrity policy, require you to be honest in all your academic course work. Faculty members are required to report all infractions to the office of Student Conduct and Ethical development.”

 

“Instances of academic dishonesty will not be tolerated. Cheating on exams or plagiarism (presenting the work of another as your own, or the use of another person’s ideas without giving proper credit) will result in a failing grade and sanctions by the University. For this class, all assignments are to be completed by the individual student unless otherwise specified. “If you would like to include in your assignment any material you have submitted, or plan to submit for another class, please note that SJSU’s Academic Policy F06-1 requires approval of instructors.”

Campus Policy in Compliance with the American Disabilities Act

“If you need course adaptations or accommodations because of a disability, or if you need to make special arrangements in case the building must be evacuated, please make an appointment with me as soon as possible, or see me during office hours. Presidential Directive 97-03 requires that students with disabilities requesting accommodations must register with the DRC (Disability Resource Center) to establish a record of their disability.”

 

Special accommodations for exams require ample notice to the testing office and must be submitted to the instructor well in advance of the exam date.