CSE 584: Software Engineering, Winter 1997
In your reading packet for the course are the following papers,
organized by topic and by lecture. I have marked with a (*) the
papers that everyone should read. The other papers are optional; read
or skim them if you like, keep them for the future when you might have
more interest (and time), and think of them if they are in your
selected topic for the group report.
Readings
- 1. 4/1/97, Introduction
- (*) Brooks, Mythical Man Month.
This is a classic that
everyone should read; the Anniversary Edition includes some more
recent material, including the broadly discussed article, "No Silver
Bullet." (This is the only reading not included in the packet; it's
available at the UW Bookstore.)
- (*, skim) Boehm, B.W., Software engineering. IEEE Transactions
on Computers, C-25, 12, pp. 1226-1241 (December 1976).
This is
a classic article laying out conventional military-industrial complex
software engineering. If nothing else, it's interesting to contrast
the material to the way current shrinkwrap software is
engineered.
- Wayt, G.W., Software's chronic crisis. Scientific American (International
Edition), 271,3, pp. 72-81 (September 1994).
There is virtually
nothing in this article that I agree with, but it lays out some issues that
arise repeatedly when discussing software engineering.
- 2. 4/8/97, Design Fundamentals
- Parnas, D.L., On the criteria to be used in decomposing systems
into modules. Communications of the ACM, 15, 12, pp. 1053-1058
(December 1972).
A classic and seminal paper laying the foundation
for information hiding and data abstraction.
- Parnas, D.L., Designing software for extension and contraction.
IEEE Transactions on Software Engineering, SE-5, 2, pp. 128-138 (March
1979).
Another Parnas classic, focusing on the use of layering
and on the uses-relation.
- (*) Bergland, G.D., A guided tour of program design
methodologies. IEEE Computer 14, 10, pp. 13-37 (October
1981).
A broad paper putting some classic design issues
(coupling, cohesion, etc.) and classic design techniques (functional
decomposition, Jackson System Design, etc.) into some context.
- 3. 4/15/97, Modern Issues in Design and Architecture
(*) You can select any one of the following three topics to read.
- Either of the following two on-line reports:
Both lay out some basics flaws with the conventional notion
of black box information hiding. The first has more detail, but the
second lays out the basic ideas.
- Gamma, E., Helm, R., Johnson, R., and Vlissides, J. Design
patterns: abstraction and reuse of object-oriented design. ECOOP '93
-- Object-Oriented Programming, pp. 406-31 (July 1993).
The
original paper in design patterns, one of the most influential ideas
in design in the last 10 years. I think of patterns as
micro-architecture (compared to the next paper).
- Garlan, D. and Shaw, M., An introduction to software
architecture. Advances in software engineering and knowledge
engineering, pp. 1-39. World Scientific (1993).
The
foundational paper in the growing discipline of software architecture.
It draws some distinctions to design and lays out some benefits and
challenges in the area.
- 4. 4/22/97, Software evolution, reverse and re-engineering
- (*) Parnas, D.L. Software aging. 16th International Conference
on Software Engineering, pp. 279-87 (May 1994).
Puts much of
the seminal ideas of Belady and Lehman into an understandable,
well-written, and well-edited paper.
- Chikofsky, E. and Cross, J.H. Reverse engineering and design
recovery: a taxonomy. IEEE Software, pp. 13-17 (January
1990).
Not much technical here, but it lays out some
terminology and is pretty brief.
- Mueller, H.A., Orgun, M.A., Tilley, S.R., and Uhl, J.S. A
reverse engineering approach to subsystem structure identification.
Journal of Software Maintenance 5,4, pp. 181-204 (December
1993).
A basic overview of Rigi, a graphical approach to
supporting reverse engineering.
- Murphy, G.C., Notkin, D. and Sullivan, K. Software reflexion
models: bridging the gap between source and high-level models. Third
ACM SIGSOFT Symposium on Foundations of Software Engineering,
pp. 18-28 (October 1995).
A way to exploit high-level, largely
informal descriptions of systems without compromising a connection to
the source.
- 5. 4/29/97, Software evolution, reverse and re-engineering
- Griswold, W.G. and Atkinson, D.C. Managing design tradeoffs for a
program understanding and transformation tool. Journal of Systems and
Software, Elsevier, vol. 30, no. 1-2, pp. 99-116 (July-August 1995).
Captures tradeoffs between rich semantic approaches and simpler,
less precise, approaches, both for the user and the tool builder.
- O'Callahan, R. and Jackson, D. Lackwit: A program understanding
tool based on type inference. To appear, International Conference on
Software Engineering 1997.
Exploits type inferencing to aid in
program understanding and to identify likely mistakes in programs.
- (*) Evans, D., Guttag, J., Horning, J. and Tan, Y.M. LCLint: A
tool for using specifications to check code. Second ACM SIGSOFT
Symposium on Foundations of Software Engineering, pp. 87-96 (December
1994).
Incremental approach to identifying discrepancies
between a software specification and its implementation.
- 6. 5/6/97, Requirements specification I
- (*) Wing, J.M. A specifier's introduction to formal methods. IEEE
Computer (September 1990).
Lays out the basic reasons why someone
might be interested in formal specification; also includes some basic
information on some comment notations and approaches.
- (*) Spivey, M. Introductory material on Z.
A simple example
of the Z specification method.
- Clarke, E.M and Wing, J.M. Formal methods: State of the Art and
Future Directions. ACM Computing Surveys (December 1996).
A nice
and quite extensive survey of the state of the art, for them's that are
interested.
- 7. 5/13/97, Requirements specification II
- 8. 5/27/97, Quality assurance and testing I
- (*) Beizer, B. Cleanroom Process Model: A Critical Examination.
IEEE Software (March/April 1997).
A powerful and critical, but
brief, examination of Cleanroom's claims.
- Adrion, W.R., Branstad, M.A., Cherniavsky, J.C. Validation,
Verification, and Testing of Computer Software. ACM Computing Surveys
(June 1982).
An old (and dated) survey, but still has some
useful information for people without much background in testing..
- Ferguson, P., Humphrey, W.S., Khajenoori, S., Macke, S., Matvya,
A. Results of Applying the Personal Software Process. IEEE Computer
(May 1997).
A classic example of an article arguing for a
particular style of process.
- Rahardjc, C.P.
A Comparative Evaluation of the Capability Maturity Model and ISO 9000
A reasonably nice and brief article on these models.
- 9. 6/3/97,