Literatuur

Volgende boeken zijn aangeraden als algemene achtergrondinformatie bij de cursus. Ze zijn allen beschikbaar in de bibliotheek van de UA.

[Ghez02a]
Fundamentals of Software Engineering, C. Ghezzi, M. Jazayeri, D. Mandroli, 2nd edition, Prentice Hall, 2002.
Timeless because of its emphasis on principles, but a bit difficult.
[ online resources for the 2nd edition of the book: http://www.prenhall.com/ghezzi ]
[Pres01a]
Software Engineering - A Practitioner's Approach, R. Pressman, Mc-Graw Hill, Fifth Edn., 2001.
Very practical and quite deep, but contains a lot of material and is therefore quite thick and a bit expensive.
[online resources for the 5th edition of the book: http://www.mhhe.com/engcs/compsci/pressman/ ]
[online resources from the author of the book: http://www.rspa.com/spi/index.html ]
[Somm04a]
Software Engineering, I. Sommerville, Addison-Wesley, Seventh Edn., 1996
Very popular and broad plus reads quite easily, but often lacks profoundness.
[ online resources for the 9th edition of the book: http://www.SoftwareEngineering-9.com/ ]

Introductie (UML)

Project Management 

  • The Mythical Man-Month, F. Brooks, Addison-Wesley, 1975.
    • The classic "adding people to a late project makes it later" but also lots of other timeless wisdom.
  • Peopleware - Productive Projects and Teams (2nd ed.), Tom DeMarco and Timothy Lister, Dorset House Publishing Company, 1998
    • Lots of advice on how the sociology in teams affect productivity.
  • Software Project Management, B. Hughes and M. Cotterell, McGraw Hill, 1999.
    • Good practical examples on PERT, Gantt, Time-sheets, ...
  • Modern Production / Operations Management - Eighth Edition, Elwood S. Buffa and Rakesh K. Sarin, Wiley 1987.
    • Another book with good practical examples on PERT and Gantt
  • Succeeding with Objects: Decision Frameworks for Project Management, A. Goldberg and K. Rubin, Addison-Wesley, 1995
    • Explains how to define your own project management strategy. Especially usefull if you ever have to start an object-oriented, incremental and iterative project and you need lots of good arguments to help convince your colleagues.
  • De vloek op het informaticaproject, William Visterin. Financieel Economische Tijd van 14/06/2002
  • Using Belbin's leadership role to improve team effectiveness: An empirical investigation. Sallie M. Henry, K. Todd Stevens,Journal of Systems and Software, Volume 44, Issue 3, January 1999, Pages 241-250, ISSN 0164-1212.
  • Several on-line tests exists to determine your preferred role in a team
  • Various papers on diverse aspects of project scheduling (incl. earned value analysis)
  • ProjeX, an Excel add-in for creating Gantt charts

Use Cases 

  • Applying Use Cases - a Practical Guide, Geri Schneider, Jason, P. Winters, Addison-Wesley, 1998.
    • An easy to read an practical guide on how to iteratively develop a set of use cases and how to exploit it for project planning.
  • Object-Oriented Software Engineering: A Use-Case Driven Approach, I. Jacobson et. al., Addison-Wesley, 1992.
    • The book introducing use cases. Also tells how to use them during a complete software project.
  • The software specification cartoon
  • A dilbert cartoon about requirements and negotiating with customers
  • "Structuring Use Cases with Goals", Alister Cockburn, Journal of Object-Oriented Programing Sept-Oct & Nov-Dec 1997.
  • Some practical guidelines concerning use-cases.
  • "Are Your Requirements Complete?", Donald G. Firesmith, Journal of Object Technology, vol. 4, no. 1, January-February 2005, pp. 27-43.
  • "Managing Use Cases During Goal-Driven Requirements Engineering: Challenges Encountered and Lessons Learned", Annie I. Antón, John H. Dempster, Devon F. Siege. In ICSE2000 Proceedings, IEEE, 2000.

Domain Models (Requirements Engineering)

  • The CRC Card Book, David Bellin and Susan Suchman Simone, Addison-Wesley, 1997.
    • An easy to read and practical guide on how apply CRC cards in brainstorm sessions with end users.
  • Designing Object-Oriented Software, R. Wirfs-Brock, B. Wilkerson, L. Wiener, Prentice Hall, 1990.
    • The book introducing responsibility-driven design, i.e. explaining through some good examples how to identify the objects in a requirements specification.
  • "Requirements Engineering: A Roadmap", B. Nuseibeh and S. Easterbrook, Proceedings of International Conference on Software Engineering (ICSE-2000), 4-11 June 2000, Limerick, Ireland, ACM Press.
  • "Introduction to CRC Cards", David M. Rubin, White Paper by Softstar Research.
  • "A Laboratory For Teaching Object-Oriented Thinking", Kent Beck, Ward Cunningham, OOPSLA'89 Conference Proceedings.
  • "Overview of Generative Software Development" by K. Czarnecki. In J.-P. Banatre et al. (Eds.): Unconventional Programming Paradigms (UPP) 2004, Mont Saint-Michel, France, LNCS 3566, pp. 313-328, 2005 

Testing

  • Testing Object-Oriented Systems (Models, Patterns, and Tools), Robert V. Binder, Addison-Wesley, 2000.
    • A very practical (and thick !) overview of what you need to do when testing large OO systems.
  • Unit Testing Framework
  • "Simple Smalltalk Testing: With Patterns", Kent Beck
    • [ http://www.XProgramming.com/testfram.htm
    • Explains how to set up a unit testing harness for regression testing.It's explained in Smalltalk, but the framework has been ported to other languages as well. 
  • "Test Infected: Programmers Love Writing Tests", Kent Beck, Erich Gamma
  • "A Survey of Unit Testing Practices", Per Runeson

Design by Contract 

  • Object-Oriented Software Construction, B. Meyer, Prentice Hall, Second Edn., 1997.
    • The book introducing Design by Contract. Also an excellent treatment on the doís and doníts of object-oriented development.
  • "Put it in the contract: The lessons of Ariane", Jean-Marc Jézéquel and Bertrand Meyer, IEEE Computer, January 1997, Vol30, no. 2, pages 129-130.
  • "Critique of 'Put it in the contract: The lessons of Ariane'", Ken Garlington. Technical paper.
  • "Programming with Assertions", SUN
  • "iContract: Design by Contract in Java", Oliver Enseling

Formal Specifications

  • Jan Tretmans, Klaas Wijbrans and Michel Chaudron "Software Engineering with Formal Methods: the Development of a Storm Surge Barrier Control System", Formal Methods in System Design, 19:195-215, 2001.
  • The Use of Industrial-Strength Formal Methods, Jonathan P. Bowen and Michael G. Hinchey, COMPSAC'97 Conference.
  • Perdita Stevens and Rob Pooley, Using UML - Software Engineering with Objects and Components, Addison-Wesley 2000.
    • Chapters 11 & 12 provides a good introduction to UML-State Diagrams
  • A HTML page with errors 

Architecture

  • Pattern-Oriented Software Architecture: A System of Patterns, Frank Buschman, Regine Meunier, Hans Rohnert, Peter Somerlad, Michael Stal, Wiley and Sons, 1996.
    • Introduces architectural styles in pattern form. Also covers some design patterns and idioms.
  • Design Patterns: Elements of Reusable Object-Oriented Software, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Addison-Wesley, 1995.
    • The classic. At design level but also viewed as ìmicro-architecture.
  • Software architecture: perspectives on an emerging discipline, Mary Shaw, David Garlan, Prentice-Hall, 1996.
    • The book introducing software architecture.
  • Software architecture in practice, Len Bass, Paul Clements, Rick Kazman, Addison-Wesley, 1998.
    • A very deep and practical treatment of software architecture.
  • Design and use of software architectures: adopting and evolving a product-line approach, Jan Bosch, Addison-Wesley, 2000.
    • How to build product-line architectures, inluding a number of cases.
  • Philippe Kruchten "The 4+1 View Model of Architecture ", IEEE Software, November 1995 (Vol. 12, No. 6) pp. 42-50.

Software Quality

Metrics

Refactoring

  •  Refactoring, Improving the Design of Existing Code by Martin Fowler, Addison-Wesley, 1999.
    • A practical book explaining when and how to use refactorings to cure some typical code-smells.
  • Object-Oriented Reengineering Patterns by Serge Demeyer, Stéphane Ducasse and Oscar Nierstrasz, Morgan Kaufmann, 2002.
    • A book describing how one can reengineer object-oriented legacy systems.
  • Code smells
  • Refactoring
  • "Big Ball of Mud", Brian Foote and Joseph Yoder; Fourth Conference on Patterns Languages of Programs (PLoP '97/EuroPLoP '97)

Conclusion (Ethics and Professional Practice)