CS 7140 Advanced Software Engineering

CS 7140 Adv Software Engineering Reading List Etc

Table of Contents

1 Reading List

The reading list for this course is a transitive closure starting from the ones linked on the course home page, plus the ones shown below. Items marked as Require Reading are sources for exam questions. Other items do enhance your understanding, but, if you are not aiming for an A, you may skip.

Finish reading these Real Soon. They are in rough chronological order by week.

  1. Sorting {bubble sort, quicksort, merge sort}, searching {linear search, binary search}. Your choice of a text book. Required Reading.
  2. Prabhaker Mateti, Notes on Assertions-in-the-Small, 2013. Required Reading.
  3. Oracle.com, Programming With Assertions, http://docs.oracle.com/javase/1.4.2/docs/guide/lang/assert.html Required Reading.
  4. "Holzmann's Ten Rules": Gerard J. Holzmann, The Power of Ten – Rules for Developing Safety Critical Code,'' IEEE Computer, June 2006, pp. 93-95. <a href="http://spinroot.com/gerard/pdf/P10.pdf"> http:// spinroot.com/ gerard/ pdf/ P10.pdf</a>. Suggested Reading.
  5. Mantyla, M. V. and Lassenius, C. "Subjective Evaluation of Software Evolvability Using Code Smells: An Empirical Study". <i>Journal of Empirical Software Engineering</i>, vol. 11, no. 3, 2006, pp. 395-431. <a href="http://www.soberit.hut.fi/~mmantyla/ESE_2006.pdf"> http://www.soberit.hut.fi/ ~mmantyla/ ESE2006.pdf</a> Suggested Reading.
  6. Meyer, Bertrand, "On Formalism In Specifications", <i>IEEE Software</i>, 1985, vol. 2, no. 1. pp. 6-26. http://se.ethz.ch/~meyer/publications/ieee/formalism.pdf Required Reading.
  7. Mateti, Prabhaker, "A Specification Schema for Indenting Programs," <i>Software - Practice and Experience,</i> Vol.13, 163-179, 1983. (Reprinted in <i>Software Specification Techniques</i>, McGettrick and Gehani (Eds.), Addison-Wesley 1986, 269-288, ISBN: 0-201-14230-9.) http://onlinelibrary.wiley.com/doi/10.1002/spe.4380130206/pdf Required Reading.
  8. Patrice Chalin, Joseph R. Kiniry, Gary T. Leavens, and Erik Poll, "Beyond Assertions: Advanced Specification and Verification with JML and ESC/Java2", http://www.eecs.ucf.edu/~leavens/JML/fmco.pdf, 2004. Required Reading.
  9. Bertrand Meyer. <a href="http://se.ethz.ch/~meyer/publications/computer/contract.pdf"> "Design By Contract"</a>. <i>IEEE Computer</i>, Vol 25, No. 10, pp 40 -51, October 1992. Also in his book "Object-Oriented Software Construction", 2e. <strike>Recommended</strike> Required Reading.
  10. Robert Bruce Findler, Mario Latendresse, and Matthias Felleisen. <a href="http://www.ccs.neu.edu/scheme/pubs/fse01-flf.pdf"> Behavioral Contracts and Behavioral Subtyping</a>. In Proceedings of ESEC/FSE-9, 229-236. 2001 Recommended Reading.
  11. http://www.literateprogramming.com/</a> "Design Documentation" Recommended Reading
  12. Donald E. Knuth, http://www.literateprogramming.com/knuthweb.pdf "Literate Programming"</a>, The Computer Journal, 1984, 27(2): 97-111. Knuth is 1974 Turning Award Winner. Required Reading
  13. Mateti, Prabhaker, "Specification of the Tabulated Equations Problem," ../Lectures/TabulateEqns/tabulate-eqns.html Unpublished. 2013. Required Reading.
  14. Hoare, C. A. R., Jayadev Misra, Gary T. Leavens, and Natarajan Shankar, <a href="http://www.cs.utoronto.ca/~hehner/csc465/VSI-manifesto.pdf"> "The verified software initiative: A manifesto."</a> ACM Computing Surveys 41, no. 4 (2009): 1-8. Hoare is 1980 Turing Award Winner. Required Reading.
  15. Donald E. Knuth and M. D. McIlroy, "Programming Pearls: The Common Words Problem and its Solutions," Communications of the ACM, Vol. 29, No. 6, 471-483. 1986. <a href="../Notes/CWP/cwp-knuth-cacm-1986.pdf"> cwp-knuth-cacm-1986.pdf</a>, Required Reading.
  16. <a href="http://en.wikipedia.org/wiki/Software_design_pattern"> http://en.wikipedia.org/wiki/Software_design_pattern</a> Visit the links to the individual patterns also. 2013. Required Reading.

  17. Miryung Kim, Thomas Zimmermann, Nachiappan Nagappan, A Field Study of Refactoring Challenges and Benefits, FSE '12: ACM SIGSOFT the 20th International Symposium on the Foundations of Software Engineering, 11 pages. 2012. http://users.ece.utexas.edu/~miryung/Publications/fse2012-fieldrefactoring.pdf
  18. Java Reflection http://docs.oracle.com/javase/tutorial/reflect/index.html Recommended Reading.
  19. http://www.cse.lehigh.edu/~glennb/oose/ppt/Junit.ppt JUnit slides</a> Required Reading.
  20. http://java.ociweb.com/javasig/knowledgebase/2008-12/TestNG.ppt TestNG slides</a> Required Reading.
  21. http://beust.com/t/testng-gtac.ppt Beyond JUnit: TestNG the next gen. Required Reading.
  22. McGraw, Gary, and Ming Chow. "Guest Editors' Introduction: Safeguarding the Future of Software Security." IEEE Security & Privacy, vol 7, no. 3 (2009): 11-12. PDF accessible via WSU Library proxy. Required Reading.
  23. David Hovemeyer and William Pugh, "Finding Bugs is Easy", ACM SIGPLAN Notices, Volume 39 Issue 12, December 2004, pp 92 - 106, search for its PDF, <a href="http://findbugs.sourceforge.net/"> http://findbugs.sourceforge.net/</a> Eclipse and IDEA Plugins. <a href="../Lectures/2013-03-26/findbugs-etc.pptx"> ../Lectures/2013-03-26/findbugs-etc.pptx</a> slides. Both paper and slides: Required Reading
  24. Diomidis Spinellis, Georgios Gousios, "Beautiful Architecture", O'Reilly Media, Inc., 432 pp, 2009. Highly readable. Find it on WSU Library Safari. The whole book is a Reference.
    1. Chapter 11 by Blandy on "GNU Emacs Architecture" is Required Reading.
    2. Chapter 13 by Bertrand Meyer on "Software Architecture: Object-Oriented Versus Functional" is Required Reading.
  25. Prabhaker Mateti, "Condense the List of Numbers", <a href="../Notes/condenseNumRanges-2013.pdf"> A good example of what pseudo code ought to be. Unpublished. 2013. Required Reading.
  26. Prabhaker Mateti, "Rigorous Re-Design of Knuth's Solution to the Common Words Problem", href="../Lectures/CWP/cwp-pm-selected-pages.pdf"> These are selected pages from a paper that is a work in progress. Unpublished. 2013. Required Reading.


"There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult." – Sir Charles Antony Richard Hoare, 1980 Turning Award Winner

"Program testing can be used to show the presence of bugs, but never to show their absence!" – Edsger W. Dijkstra, 1972 Turning Award Winner

3 Tools

We will use many of the following tools. Almost all of these are included as open-source packages ready to install on Ubuntu Linux distro; I do not know about RedHat. Almost all of them also have versions available for Windows.

  1. http://git-scm.com/</a> Git is a free and open source distributed version control system designed to handle everything from small (in KB) to very large projects (in TB) by individuals or teams. (The URL is to a site that hosts a free book.) Debian Linux: apt-get install git-gui
  2. http://www.eclipse.org/</a> Eclipse is an IDE for programming in Java, C++, and other languages. Has many plugins. Debian Linux: apt-get install eclipse
  3. http://www.jetbrains.com/idea/</a> Idea is an IDE for programming in Java, C++, and other languages. Has many plugins. Not in Debian. Community edition is free; Ultimate is not.
  4. http://www.cs.tufts.edu/~nr/noweb/</a> Literate Programming tool. You prepare a literate programming file and then run it through this tool to produce a nicely typeset pdf, and also ready-to-compile source code files. Debian Linux: apt-get install noweb
  5. http://www.doxygen.org Doxygen is the de facto standard tool for generating documentation from annotated C++, Java, … sources.
  6. http://splint.org/</a> Splint can analyze C source code for security vulnerabilities and coding mistakes. It is for the C language only, not C++ or other languages.
  7. http://frama-c.com/</a> Frama-C is a free and open source tool for the analysis of source code. Given a program and its assertions, it can mathematically verify if the program is correct. It is for the C language only, not C++ or other languages.
  8. Miscellaneous programs:
    1. indent, cccc, sloccount, pmccabe,
    2. bogosec, check, Electric Fence, valgrind, alleyoop, Valkyrie,
    3. KCachegrind, Massif Visualizer
    4. cobertura: java tool that calculates the percentage of code accessed by tests,
    5. cbmc: bounded model checker for C and C++ programs,
    6. Umbrello, dia2code, AutoDia
    7. xxgdb, kdbg, gdb server, ddd
    8. ant, maven

4 Books

There is no prescribed text book for CS7140. Books are grouped by topic.

  1. Ivan Marsic, Software Engineering, Sep 2012, 600+ pp. This is a free PDF to download: http://www.ece.rutgers.edu/~marsic/books/SE/ Recommended reading, in general.
  2. Ian Sommerville, Software Engineering (9th Edition), Addison-Wesley; 2010, 792 pages, ISBN-10: 0137035152. Freely downloadable slides on all chapters. Reference.
  3. Pierre Bourque, Robert Dupuis, Alain Abran and James Moore (Editors), &quot;Guide to the Software Engineering Body of Knowledge&quot;, 2004. This is free to read in HTML format only: <a href="http://www.computer.org/portal/web/swebok/about"> http://www.computer.org/portal/web/swebok/about</a>. Reference.
  4. Alan J Perlis (Editor), Frederick Sayward (Editor), Mary Shaw (Editor), Software Metrics. ISBN-13: 978-0262512817, 420 pages, The MIT Press (November 1, 2008). Reference.
  5. Paul C. Jorgensen, Software Testing: A Craftsman's Approach, (Third or Fourth Edition). ISBN-10: 0849374758. Reference.
  6. Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts, Refactoring: Improving the Design of Existing Code Addison-Wesley, ISBN-13: 978-0201485677, 464 pages, 1999. Reference.
  7. David Parnas, Collected Papers, [search the web]. Reference.
  8. Bertrand Meyer, Object-Oriented Software Construction (OOSC) 2e. Has an excellent chapter on Undo/Redo. 1997 [search the web] Highly recommended reading, in general.
  9. Bertrand Meyer, Touch of Class, a fresh way of teaching programming. 2013. [search the web]

Copyright © 2013 pmateti@wright.eduwww.wright.edu/~pmateti