Course Introduction
Diomidis Spinellis
Department of Management Science and Technology
Athens University of Economics and Business
Athens, Greece
dds@aueb.gr
Welcome
Advanced Topics in Software Engineering
Course Goals
- Comprehend and use basic implementation elements
- Code
- System structures
- Architecture
- Non-functional properties
- Documentation
- Learn and use important software engineering processes
- Revision and configuration management
- Building automation
- Issue tracking
- Tooling
- Appreciate and understand maintenance activities
- Be able to change existing systems
- Make intelligent decisions regarding maintenance processes
Teaching
- Participation
- Questions
- Try to do at least one assignment / week
- Use the lab
- Home study
- Course project
Course Notes
- Equivalent to the presentation "slides"
- Accessible over the web
http://www.spinellis.gr
- Continously updated
- Links for printable version at the end of the table of contents
Course Grade
- Project-based
- Contribute to an open-source project
- Grading criteria (total 120!):
- Understanding and documentation of legacy system (10%)
- Breadth of changes (20%)
- Design quality (10%)
- Implementation quality (10%)
- Integration (10%)
- Testing (10%)
- Coordination with the development team (10%)
- Presentation (10%)
- Documentation and quality of the deliverables (10%)
- Blog (10%)
- Class participation (10%)
Schedule of Assignments
- Week 2 (March 3rd): Form teams (1-2 persons)
- Week 3 (March 16th): Select project
- Week 4 (March 20th): Existing project presentation (4-8 mins)
- Week 6 (April 3rd): Design presentation (4-8 mins)
- Week 13 (June 5th): Implementation presentation (5-10 mins)
Participation
Recommended Reading
- Diomidis Spinellis.
Code Reading: The Open
Source Perspective.
Addison-Wesley, Boston, MA, 2003. (In English or Greek.)
- Diomidis Spinellis.
Code Quality: The Open
Source Perspective.
Addison-Wesley, Boston, MA, 2006. (In English or Greek.)
- Stephanos
Androutsellis-Theotokis, Diomidis Spinellis,
Maria Kechagia, and Georgios Gousios.
Open
source software: A survey from 10,000 feet.
Foundations and Trends in Technology, Information and Operations
Management, 4(3–4):187–347, 2010.
(doi:10.1561/0200000026 (http://dx.doi.org/10.1561/0200000026))
- Manolis Diakoimakis and Nikos Diamantidis. Software Engineering. Stamoulis 2009. (In Greek).
- Martin Fowler.
Refactoring: Improving the Design of Existing Code.
Addison-Wesley, Boston, MA, 2000.
With contributions by Kent Beck, John Brant, William Opdyke, and Don Roberts.
Course Overview
- Code as Part of the Software Development Process
- The Open Source Landscape
- Tackling Large Projects
- Version Control
- General Purpose Tools
- Build Management
- Collaboration
- Performance Measurement and Management
- Code-Reading Tools
- Inspection and Testing
- Coding Standards and Conventions
- Maintainability
- Documentation and Visualization
Further Reading
- Stephanos Androutsellis-Theotokis, Diomidis Spinellis,
Maria Kechagia, and Georgios Gousios.
Open
source software: A survey from 10,000 feet.
Foundations and Trends in Technology, Information and Operations
Management, 4(3–4):187–347, 2010.
(doi:10.1561/0200000026 (http://dx.doi.org/10.1561/0200000026))
- Tavish Armstrong.
The Performance of Open
Source Applications.
2013.
- Amy Brown and Greg
Wilson.
The Architecture of Open
Source Applications.
2012.
- Brian D. Eubanks.
Wicked Cool
Java: Code Bits, Open-Source Libraries, and Project Ideas.
No Starch Press, San Francisco, 2006.
- Michael Feathers.
Working
Effectively with Legacy Code.
Prentice Hall, Englewood Cliffs, NJ, 2005.
- Martin Fowler.
Refactoring:
Improving the Design of Existing Code.
Addison-Wesley, Boston, MA, 2000.
With contributions by Kent Beck, John Brant, William Opdyke, and Don Roberts.
- Pete Goodlife.
Code Craft: The
Practice of Writing Excellent Code.
No Starch Press, San Francisco, 2007.
- Andrew Hunt and David
Thomas.
The Pragmatic
Programmer: From Journeyman to Master.
Addison-Wesley, Boston, MA, 2000.
- Andy Hunt and Dave
Thomas.
Software archeology.
IEEE Software, 19(2):20–22, March/April 2002.
- Brian W. Kernighan
and Rob Pike.
The UNIX
Programming Environment.
Prentice-Hall, Englewood Cliffs, NJ, 1984.
- Brian W. Kernighan
and Rob Pike.
The Practice of
Programming.
Addison-Wesley, Reading, MA, 1999.
- John Lions.
Lions'
Commentary on Unix 6th Edition with Source Code.
Annabooks, Poway, CA, 1996.
- Steve C McConnell.
Code Complete:
A Practical Handbook of Software Construction.
Microsoft Press, Redmond, WA, second edition, 2004.
- Andy Oram and Greg
Wilson.
Beautiful Code:
Leading Programmers Explain How They Think.
O'Reilly and Associates, Sebastopol, CA, 2007.
- Charles Petzold.
Code: The
Hidden Language of Computer Hardware and Software.
Microsoft Press, Redmond, WA, 1999.
- Eric S. Raymond.
The Cathedral
and the Bazaar: Musings on Linux and Open Source by an Accidental
Revolutionary.
O' Reilly and Associates, Sebastopol, CA, 2001.
- Eric S. Raymond.
The Art Of Unix
Programming.
Addison-Wesley, 2003.
- Sulayman K. Sowe,
Ioannis G. Stamelos, and Ioannis Samoladas, editors.
Emerging Free and Open
Source Software Practices.
IGI Publishing, Hershey, PA, 2007.
- Diomidis Spinellis
and Georgios Gousios, editors.
Beautiful Architecture:
Leading Software Engineers Explain How They Think.
O'Reilly, Sebastopol, CA, 2009.
- Diomidis
Spinellis and Clements Szyperski.
How
is open source affecting software development?.
IEEE Software, 21(1):28–33, January/February 2004.
- Diomidis Spinellis.
Code Reading: The Open
Source Perspective.
Addison-Wesley, Boston, MA, 2003.
- Diomidis Spinellis.
Code Quality: The Open
Source Perspective.
Addison-Wesley, Boston, MA, 2006.
Exercises and Discussion Topics
- Establish a plan for reading some of the recommended books.
Lend the first one from the library.