| Contents
|
GENERAL
COURSE INFORMATION
-
Instructor: Professor Alex
Borgida (borgida at cs rutgers
edu) [Please put 431 in the e-mail Subject line.]
Office hours: Wednesday, 3:00pm-5:00pm, or by e-mail appointment,
almost any time.
Office: Core 315. Phone 732 445 4744
-
Teaching Assistant:
Mohammad Tanvir Alam (moalam at
paul)
-
Time and place:
| Lecture / recitation |
Tuesday 6:40pm - 8:00 pm |
Hill 120 (used to be ARC 206) |
| Lecture |
Thursday 6:40pm - 9:20 pm |
Hill 254 |
(Lectures will normally be held on Thursdays, in a double
period; in order to fit in a lot of material that you needed to get started
with the project, I will often also lecture on Tuesdays in the first half
of the course. In compensation, some classes will be cancelled at the end
of the term.)
-
Textbook
-
There is no official textbook required for the course because I
do not think the cost-benefit ratio is good enough for any book I have
seen. The following book is recommended since I will present some
lectures from it; there will be a copy of it on reserve in the SERC library.
-
Ian Sommerville, Software Engineering, Addison Wesley
There are many editions of this book, and I am not wedded to any one
of them. If you can find a used copy at a good price, go for it.
This books has
an associated web-site , which not only has slides for all the
chapters, but a rather nice "Further Readings" page, with pointers to
all sorts of other neat stuff.
The following are other general books that are widely used
-
Roger Pressman, Software Engineering: A practicioner's Approach,
McGraw Hill
-
Hans van Vliet, Software Engineering: Principles and Practice, Wiley
-
Bernd Bruegge and Allen Dutoit, Object Oriented Software Engineering,
Prentice Hall
- Sari Pfleeger Software Engineering: theory and practice,
Prentice Hall.
- Barbara Liskov and John Guttag, Program Development in
Java, Addison Wesley. (An earlier, IMHO better, version was called
Abstraction and specification in Program Development [1986]
-- ON RESERVE)
- Craig Larman Applying UML and Patterns: An intro to
object-oriented analysis and design, Prentice Hall
-- ON RESERVE
-
I will be drawing on material from a variety of books, articles, and web
resources, which will be referenced with the appropriate lecture notes.
They will be on reserve in the SERC Reading Room under my name.
LECTURE
NOTES [Readings]
(Most lectures will not be available as full sets of slides. I will
however occasionally have slides of graphs, programs, etc. which will appear
here.)
- FORTHCOMING LECTURES
- Goal-based requirements specification
- more on writing efficient programs
- software economics (cost estimation, effort modeling)
Apr.6
- Mar. 30.
- Maurro Pezze and Michal Young have gracioulsy made available on the web the existing chapters of their forthcoming book on testing; chapters 13 and 14 are more than enough for clear and black box testing.
- The relevant chapters in Sommerville are 22 and 23.
- Chapter 9 on testing and debugging in Liskov and Guttag is
again, very enlightening. It talks about testing ADTs, and provides
nice suggestions about how to debug software.
- Mar. 23. Testing
- Principles of testing
- White and Black Box testing. Examples:
-
Mar. 3
Documenting ADT implementations using abstraction function and
invariants; contracts; using Java assert ; developing
binary search using assertions
(Jon Bentley's article)
(based on Liskov and Guttag Ch.3 and 4, on reserve).
-
Feb. 21, 23
- Feb 16
Object-oriented Design.
- Ch. 18 from [Larman] above
- Ch. 6 from [Bruegge and Dutoit] above
- Feb 14
Software Architecture
- Feb.9 Modularization by information hiding and finding helpers: line
formatter example from [Liskov and Guttag, 1986], Chapter
13. (The problem spec. is here)
-
Feb 7 Modularization.
Example 1: Based on information hiding:
Parnas'
KWIC-index program
- Jan 31, Feb.2 Modeling in greater detail
- Jan. 26
-
More on UI design and Use Cases/Scenarios (extended lecture notes
), together with a
critique of the REMIND program UI
-
Software requirements specification, with
introduction to UML (The UML material is amplified in the later
lectures.)
- Jan. 24 Recitation: Introduction to Java Swing, and
event-oriented programming.
- Check out www.freeprogrammingresources.com/swing.html
- Jan. 19
- User Interface Design Principles
- [Liskov and Guttag, 1986], Section 12.3 -- ON RESERVE
- B. Gaines, "The technology of interaction: dialogue
programming rules'', Int. Journal of Man-Machine Studies, vol 14,
1981, pp.133-150. -- POSTED ON SAKAI
-
User Interface Hall of Shame ;-)
- UI Prototyping
- Jan 17
Intro to SE.
- Please read NOW (i) this web page, (ii)
the project page (see link up on top, left),
- For the project: the project
handout given out in class, and the description of the project
(see upper left corner)
- Of general interest: F.Brooks,
"No Silver Bullet"
Copyright policy concerning material on
this web site: Please remember that it takes effort for people to
produce
this "intellectual capital". I can do no better than quote my esteemed
colleague, Professor Vasek Chvátal: "Whoever links to these
notes
will show exquisite taste. Whoever copies these notes (without
permission)
will be prosecuted to the hilt." Of course, I gratefully acknowledge
those
on whose work this course is built, usually with their permission:
Their
(growing) list includes
Prem Devanbu, Steve Easterbrook, John Dalbey, John Guttag.
OVERVIEW
AND SYLLABUS
-
Course principles
Software engineering is distinguished by several major problems not
encoutered in usual CS courses: (i) requirements acquisition (figuring
out what the customer wants); (ii) building large products, which require
team-work; (iii) the need to maintain/evolve the software product even
after it has been deliverd. (iv) the need to use computer tools and
re-use previously written code, in order to achieve better quality products.
To learn this material, you will be following the general topics outlined
in the syllabus below, while working on a major software project, in groups
of 5. The class lectures will present material which should help
you do the course project; the issues arising out of running a project
are described in a separate document. Because the schedule is very tight,
a good number of recitations at the beginning of the course will be taken
over for lectures. The remainder of the recitations will usually focus
on technical details needed for doing the project, e.g., using the Eclipse
programming environment.
Since the material covered in lectures is by and large not available
in textbooks (and comments I will be making about the project are especially
"transient"), attendance at lectures will be taken. If you miss a lectures
or recitation, it is your responsibility to make up the work and keep informed
as to any announcements. Deadlines in this course are firm; there
is too much work in this course to allow slippage in the due dates.
-
Prerequisites
198:314 Principles of Programming Languages (and its prerequisites)
198:344 Design and Analysis of Algorithms
-
Expected work and grading:
Your grade will be based on roughly three equal components (with slightly
more weight on the third one): (i) Performance of the entire group on the
project. (ii) Individual effort and achievement in the parts of the project
(including editing documents, and contributing to them). (iii) Individual
class work, including homeworks, and a take home or in-class exam which
measures what you learned from the lectures. Note that because of this
break-down of grades, no one can expect to "coast" on the coat-tail of
the work of others in the team, and at the end of the course I might ask
team members to rate each other on their effort and effectiveness.
Furthermore, any group which does not produce a working program for
the demonstration at the end will get no credit for the project. (Welcome
to the real world!)
Policy on Academic Integrity: please read
the DCS policy
statement on academic integrity to which this course will
adhere.This is particularly important in this course, where you are
encouraged to reuse software or design ideas BUT ONLY IF YOU
ACKNOWLEDGE IT PROMINENTLY IN YOUR DOCUMENTATION Please
don't jeopardize your academic career by copying, and collaborating beyond
permissible limits, (this applies to teams copying from other teams too).
-
Topics
The following is a tentative list of topics to be covered:
-
Problems of SE. The
software lifecycle and our project.
[F.Brooks, ``No silver Bullet'', IEEE Computer Journal, April 1987,
pp.10-18.]
-
User Interface Design: A checklist of principles
to be observed in designing interactive systems. Critique of some existing
UIs. Example of engineering the UI of a simple KWIC index program.
[B.Gaines, ``The technology of interaction --- dialogue programming
rules'', Int. Journal of Man-Machine Studies, vol 14, 1981,
pp.133-150.]
-
Requirements Engineering. Domain Analysis.
Use cases, functional requirements and traceability. Non-functional requirements.
UML notation for domain modeling. ?The SADT technique.?
-
Architectural Design
-
Traditional approach, based on functional analysis
-
Modules for information/decision hiding - the KWIC index example.
[Parnas, "On the criteria to be used in decomposing systems into modules",1971]
-
Modularization by "helper" finding: procedures, data abstractions, iterators
-
Architectural patterns and frameworks
-
Object-Oriented Design: patterns, contracts
-
Implementation
-
Specification and implementation of data abstractions (invariants, representations)
-
New features of Java 1.5: generics, iterators, etc.
-
Code reuse, libraries
-
Good programming style in new and old languages
-
Testing and Debugging. Principles. Non-computer
testing.
-
Test-case design for module testing: blackbox and whitebox techniques.
-
Integration testing: various approaches (topdown, bottom-up, etc) and their
relative merits.
-
Asserts and debugging.
-
Computer Aids for Software Engineering: Eclipse
(you learn about this in recitation), UNIX tools.
-
Efficiency and implementation: when and how?
[J.Bentley]
-
Software Project Planning and Management
-
State-of-the-art
-
Formal Specification of Software [Z/VDM]
-
Early Requirements Analysis (agents, goals, "soft-goals") [i* model of
Yu/Mylopoulos]
|