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.dmst.aueb.gr/dds 
-  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.