Computer Science
480/L - Spring 2010
Software System
Development
Instructor: Bob Lingard
Office: JD 4417
Office
Phone: 677-3825
Email
Address: rlingard@csun.edu
Web
URL: http://www.ecs.csun.edu/~rlingard
Office
Hours: Monday 12:00 – 1:30
PM, Wednesday 4:30 – 6:00 PM,
and by appointment
Prerequisite: Comp 380 (Introduction to
Software Engineering)
Corequisite: Comp 480L (Software System
Development Laboratory)
Text: Software Engineering: A Practitioner's Approach, 7th Edition,
by Roger Pressman
Recommended: Introduction
to the Personal Software Process, by
Ticket#
17926: Lecture meets MW 2:00 –
2:50 PM in JD 3508
Ticket#
17927: Lab meets MW 3:00 – 4:15
PM in JD 2211
Course
Description
A
project-oriented course to allow students to apply their knowledge of software
engineering to the design of a large software system.
The student (together with other team members) will identify a
suitable computer problem, examine various methods of attacking it, choose a
suitable one, and realize a solution in an appropriate computer language.
Course
Objectives
Successful
students will be able to:
1.
Understand
the concepts and principles of software project management
2.
Understand
approaches and techniques for estimating the size of software projects
3.
Understand
the techniques and approaches for developing a project schedule
4.
Understand
the principles and practices of risk analysis and risk management
5.
Distinguish
between the different types and levels of testing for non trivial software
products
6.
Understand
the concepts and principles of software configuration management
7.
Understand
the principles and activities associated with quality management for a software
project of non trivial size
8.
Understand
the importance of software metrics and their use with respect to project
management, software quality, and software process improvement
9.
As
part of a team effort, apply effective methods for the elicitation and analysis
of software requirements for a non trivial practical software system
10.
Specify,
in the form of a requirements specification document, the requirements for a
non trivial practical software system as a team activity
11.
As
part of a team activity, create and specify the software design for a non
trivial practical software system using an accepted design methodology and
appropriate design notation
12.
Demonstrate
the capability to use a range of software tools in support of the development
of a software product
13.
As
part of a team effort, create and implement a test plan for a non trivial
software development effort
14.
As
part of a team activity, prepare a project plan for a software project that
includes estimates of the size and effort, a schedule, and resource allocation
15.
Conduct,
working with a team, a risk analysis for a non trivial practical software project
16.
Conduct,
working with a team, an inspection of a code segment significant size
17.
Demonstrate
through involvement in a team project the central elements of team building and
team management
18.
Prepare
and deliver a presentation summarizing the results of a team software
development project
SPECIAL
NOTE
For
the past 10 years the CSU system has suffered chronic under-funding. This
year, because of the state economic crisis, the budget cuts ($584 million) are
the worst in decades. The CSU administration is attempting to manage
these cuts by dramatically increasing student fees and by furloughing almost
all University employees, including faculty, staff, and administrators.
A furlough means mandatory un-paid days off for employees; there
are 18 of these this year for the faculty, nine per semester. As a professor, I will give you advance
notice of the days when class will be canceled because of furloughs. My
tentative furlough dates for this semester are: Friday 1/29, Monday 2/15,
Friday 2/29, Wednesday 3/24, Monday 3/29, Thursday 4/15, Tuesday 4/20, Thursday
5/6, and Tuesday 5/11.
For
students this means that on some days the campus may be closed. The
library may have shorter hours and many campus support services are likely to
be decreased or eliminated. It will, for example, be more difficult to get
signatures to meet deadlines. Additionally, some classes you need may have been
cut from the class schedule or are full. These cuts have consequences,
especially for you.
Grading
The
same grade will be given for both the lecture and laboratory portions of the
course. An absolute grading system will
be used, where 90% is required for an A, 80% for a B, 70% for a C, 60% for a D,
and anything below 60% is failing.
Pluses and minuses will be given for grades within 3 percentage points
of the dividing marks. For example, a
final total which is 80% or more but less than 83% would correspond to a letter
grade of B-, a total of 77% or more but less than 80% would correspond to a C+,
etc. The final grade will be based on
the following:
Quizzes (12) 10%
Midterm Exam 10%
Final Exam 20%
Group Project 40%
Individual Projects/Homework 10%
Presentations 5%
Sharing 5%
Late
work will be accepted without penalty only if some compelling reason is
provided (preferably in advance) justifying the lateness. Without such a justifiable excuse, late work
will be penalized 5% for each calendar day that it is late.
Plagiarism
(intentionally or knowingly representing the words, ideas, or work of another
as one’s own) or any other form of academic dishonesty will not be
tolerated. As a minimum students who are
guilty of such dishonesty will receive no credit for the given assignment or
exam and will not be allowed the opportunity to redo the work in question. In addition, incidents of academic dishonesty
may be reported to the University and further disciplinary actions are possible
including expulsion or suspension from the University. (See Appendix E-2 of the
University Catalog.)
Quizzes will consist of several multiple choice questions on the reading material. There will be a quiz each week except for the first week, the last week and the week in which the midterm exam is given. The lowest two (2) quiz grades will be dropped. The quizzes will be given during the lab sessions. The exams may be “take home” exams or “in class” exams. They may be open book or closed book, but, in any case, they must be individual efforts. Discussing the questions on the exam with an individual, other than the instructor, is not permitted.
The students in the class will be divided into teams of four to five members each. The group projects will be done as team efforts and a single result will be turned in by the team. Members of each team will evaluate the performance of the other team members at the end of the semester. This evaluation will account for 25% of the total Group Project grade (or 8% of the total course grade).
Individual
assignments and projects will also be given.
Discussion and collaboration with other class members on individual
assignments is permitted, and even encouraged, to the extent that said collaboration
is a fair and equitable exchange of ideas.
That is, one individual should not be doing all the work and sharing it
with others. It is permissible to ask
other students for help, but it is not permissible to copy the results of
others. If several students collectively
solve a problem, each should write up the results in his or her own words.
Each group will present the results of their efforts and demonstrate their software system to the rest of the class at the end of the semester. In order to get credit each group member must deliver part of the presentation, but it must be organized as a group activity.
Sharing
A
portion of the final grade (5%) will be based on sharing. There are many ways to accumulate sharing
points. Bringing in relevant material
found in the newspaper, technical journals, or other such sources and
explaining it to the class is one way.
The material could be an article, a cartoon, a videotape, a software
engineering document or program, etc.
Another way to share is by posting information on a course online
sharing forum. Other opportunities for
sharing will be explained during the course of the semester. Each instance of sharing will be worth one to
two percent of the final grade depending on its relevance and significance up
to a total of five percent.
Tentative
Schedule by week
1
Review
of software engineering concepts
The personal software process
Personal time management and the software engineering
notebook
Introduction to project management
Readings: Chapter 24
2
Requirements
engineering review
Problem analysis
Gathering requirements
Developing use cases
Requirements modeling
Documenting software requirements (Software Requirements
Specification)
Chapter 5
3
Software
project planning
Estimating project size
The COCOMO model
Readings: Chapter 26
4
Project
scheduling and tracking techniques
Readings: Chapter 27
5
Risk
management
Risk identification
Risk mitigation
Readings: Chapter 28
6
Review
of software design
Object-oriented design
Data design
Design modeling
Readings: Chapter 8
7
Human-computer
interface design
Readings: Chapter 11
8
Midterm
exam
9
Software
metrics
Product metrics
Process metrics
Readings: Chapter 25
10
Review
of software quality assurance
Quality concepts
Software quality metrics
Statistical quality assurance
Readings: Chapters 14 & 16
11
Verification
and validation
Software reviews
Software testing strategies
Readings: Chapter 15 & 17
12
Software
configuration management
Version control
Change control
Readings: Chapter 22
13
Writing
user documentation
14
Software
maintenance
Software reengineering
15
Software
process improvement
Final Exam: Monday, May 10, 2010, 3:00 – 5:00 pm