SOFTWARE ENGINEERING
CSE G230 Fall 2008
Course Information
Instructor: Prof. Mieczyslaw
Kokar
Email address: mkokar@ece.neu.edu
Contents:
-
For Course Schedule click on Schedule
Goals and Objectives
- The main objective of this course it to introduce the student to the discipline
of Software Engineering. In particular:
- Identify the problems that one should expect when developing large software
systems.
- The methods that the software developer can use to deal with each of the
problems.
- The tools that the software developer can use.
- The procedures that can be followed in developing software.
Policies and Procedures
Procedure and Grade
- The grade for this course will be based on Project Deliverables and Homeworks.
- There will not be any exams for this class.
- The project description can be found by clicking the Syllabus tab in Blackboard.
- All students will be working on the same project.
- There will be a number of deliverables - from Software Requirements through Design, Coding and Testing. See Schedule and follow links to descriptions of deliverables.
- Homeworks will consist of two parts:
- Comments on a deliverable of another student (anonymously).
- A problem to be solved that is not directly related to the project.
- The Homeworks and Project Delieverables will need to be submitted through Assignments.
- Both the Project Deliverables and the Homeworks will be evaluated on the the scale of 0 to 100.
- The Project Deliverables will constitute 60% of the grade and the Homeworks will constitute 40% of the grade.
- The schedule for the Project Deliverables and the Homeworks is shown in Schedule.
Evaluation Guidelines
The general guidelines for grading the project are as follows:
- Clarity and completeness of documentation
- Consistency of specification
- Quality of design
- Whether your design implements your specification
- Whether your code implements your design
- Whether your program meets your specification
- Quality of your code
- Completeness of testing
- Whether your program is shrink-wrap quality
Since the homeworks involve collaboration, it is extremely important that all
homeworks (both deliverables and evaluations) are delivered on the due date.
Late deliveries will be penalized 10 points per day.
Required Texts
1. Software Engineering: A Practitioner's Approach. Sixth Edition, by Roger
S. Pressman. McGraw-Hill, Inc., 2004.
Other suggested readings (not required):
2. Some Java Literature. E.g., Java: How to Program. Deitel & Deitel. Prentice
Hall, 1999.
3. Some UML literature, e.g.,
(a) Visual Modeling with Rational Rose and UML, by Terry Quatrani. Addison
Wesley, 2000.
(b) The Unified Modelling Language: User Guide, by Grady Booch, James Rumbaugh,
Ivar Jacobson. Addison-Wesley, 1998.
Course Content Description
A study of the software life cycle (requirements analysis and specification,
software design, coding, testing, maintenance). Verification, validation and
documentation at various stages of the life cycle. Coverage of structured analysis
and object-oriented development methodologies. Overview of user interface design,
prototyping, CASE tools, software metrics, and software development environments.
Course requirements include a small software development project. Prep. higher
level language (required), data structures (desirable), and operating systems
(desirable).
Project Description
For the description of this year's project click on Assignments.
Project Issues
- The objective to be accomplished through this project is to learn methods
of software engineering. Therefore, coding will be only one (not the largest)
component of the project.
- In the project documentation students should prove that in the project they
were using software engineering methods and techniques.
- The documentation for the deliverables should be precise and concise. Remember
that you are not graded ``by-the-page''.
- Some information on the deliverables posted on my web page (see the links
in the Schedule section or just follow the link next to the specific assignment
in Assignments). All deliverables are also described in Pressman's book.
- The specification and design of your software should be developed using
the object-oriented approach. The specification language is UML (Unified Modeling
Language) - a standard for object-oriented representation. Elements of UML
will be discussed in class. There are a number of books on the market about
UML. The source information on UML can be found on the IBM web page: http://www-306.ibm.com/software/rational/advantage/?SMSESSION=NO
- The primary choice for this project's language is Java. Students could choose
a different programming language, like C++ (the language should be object-oriented),
but only as an exception. Java Runtime Environment and some documentation
can be downloaded from: http://java.sun.com/products/jdk/.
- Your software must compile and run to receive a grade in this course.
- Your software should be shrink-wrap quality. All you have to do is take
the shrink-wrap off the box, load the software and run it. It implies that
only a minimum user manual is required.
- All homework should be turned in through Assignments at Blackboard. Please
do not send copies to the TA or the instructor.
- The initial specification of what the user needs is described in this year's
Project Description section of this syllabus. The description of the problem
is (intentionally) imprecise and incomplete. Your job is to do system engineering
and analysis, define software specifications, design a software system, implement
the software system, test it and provide complete documentation.
- The specification and design documentation for this project needs to be
done using a UML tool (see External Links in Blackboard).
- My TA and I will take the role of the user. However, whenever in doubt,
we ask you to make decisions on behalf of the user. Please document such decisions
by providing both the questions that you might ask us and the answers you
gave to those questions. It is more important that your implementation matches
the specification, rather than the specification is exactly what the instructor
would like to see. Your resources - especially time - are limited. It is your
responsibility to define a system that is both feasible to develop, given
the resources, and fulfills the user's requirements. It may be acceptable,
however, that only a subset of the requirements is implemented in code.