Software Architecture
XXX
<p>The <i>« I402A Architecture logicielle »</i> activity, taught to first
year master students in computer science industrial engineer at the
<a href="https://www.vinci.be/fr-be/ecam">ECAM Brussels Engineering
School</a> (ECAM), is about <b>architecture of software systems</b>. The
course begins with the code architecture with design patterns, bad smells
and metrics to assess the code quality, then continues with architecture
styles, to finish with the concepts of software quality, on a more global
level.</p>
<p>I started to give this course in 2014 and I am currently giving it for
the sixth time. The course is taught in English, but all the material is
available in English and <a href="/fr/teaching/ecam/softarch/">in
French</a>.</p>
<h2>Documents</h2>
<ul>
<li>General information about the course</li>
<li>
<a href="/files/ecam/general/ECAM-Competency-Based-Assessment-Slides.pdf">
Competency Based Assessment <img src="/images/pdf.png" width="16"
height="16" alt="PDF"></a></li>
<li>
<a href="/files/ecam/softarch/ECAM-SoftArch4MIN-Competencies-List.pdf">
Grid of skills to acquire <img src="/images/pdf.png" width="16"
height="16" alt="PDF"></a></li>
</ul>
<h2>Theory</h2>
<ul>
<li><a href="/files/ecam/softarch/ECAM-SoftArch4MIN-Session1-Slides.pdf">
Session 1: Architecture Models of Software Systems
<img src="/images/slides.png" width="16" height="16"
alt="Slides"></a></li>
<li><a href="/files/ecam/softarch/ECAM-SoftArch4MIN-Session2-Slides.pdf">
Session 2: Object-Oriented Design Patterns Application
<img src="/images/slides.png" width="16" height="16"
alt="Slides"></a></li>
<li><a href="/files/ecam/softarch/ECAM-SoftArch4MIN-Session3-Slides.pdf">
Session 3: Bad Smells Elimination <img src="/images/slides.png"
width="16" height="16" alt="Slides"></a></li>
<li><a href="/files/ecam/softarch/ECAM-SoftArch4MIN-Session4-Slides.pdf">
Session 4: Metric and Code Evaluation <img src="/images/slides.png"
width="16" height="16" alt="Slides"></a></li>
<li><a href="/files/ecam/softarch/ECAM-SoftArch4MIN-Session5-Slides.pdf">
Session 5: Programming Paradigms <img src="/images/slides.png" width="16"
height="16" alt="Slides"></a></li>
<li><a href="/files/ecam/softarch/ECAM-SoftArch4MIN-Session6-Slides.pdf">
Session 6: Software Design Patterns <img src="/images/slides.png"
width="16" height="16" alt="Slides"></a></li>
<li><a href="/files/ecam/softarch/ECAM-SoftArch4MIN-Session7-Slides.pdf">
Session 7: Interaction-Oriented Architecture <img src="/images/slides.png"
width="16" height="16" alt="Slides"></a></li>
<li><a href="/files/ecam/softarch/ECAM-SoftArch4MIN-Session8-Slides.pdf">
Session 8: Distributed Architecture <img src="/images/slides.png"
width="16" height="16" alt="Slides"></a></li>
<li>Session 9: Service-Oriented Architecture</li>
<li>Session 10: Data-Oriented Architecture</li>
<li>Session 11: Cloud computing and *aaS</li>
<li>Session 12: Micro-Kernel Architecture</li>
<li>Session 13: Micro-services and Serverless Architecture</li>
<li>Session 14: The Pragmatic Programmer</li>
<li>Session 15: Software Quality Evaluation</li>
</ul>
<h2>Practice</h2>
<ul>
<li><a href="/files/ecam/softarch/ECAM-SoftArch4MIN-Quizz1.pdf">Quizz 1:
Software architecture and quality <img src="/images/pdf.png" width="16"
height="16" alt="PDF"></a></li>
<li><a href="/files/ecam/softarch/ECAM-SoftArch4MIN-Quizz2.pdf">Quizz 2:
Software metric <img src="/images/pdf.png" width="16" height="16"
alt="PDF"></a></li>
<li><a href="/files/ecam/softarch/ECAM-SoftArch4MIN-Quizz3.pdf">Quizz 3:
Metric and refactoring <img src="/images/pdf.png" width="16" height="16"
alt="PDF"></a></li>
<li>Work: Discovering and analysing a design pattern</li>
<li>Work: Discovering and analysing the architecture of an open source
project</li>
</ul>
<h2>Resources</h2>
<h3>Reference books</h3>
<ul>
<li>Nick Rozanski and Eóin Woods. (2011). Software Systems Architecture:
Working With Stakeholders Using Viewpoints and Perspectives (2nd
edition). <small>(ISBN : 978-0-321-71833-4)</small></li>
<li>Len Bass, Paul Clements and Rick Kazman. (2012). Software Architecture
in Practice (3rd edition). Addison-Wesley.
<small>(ISBN : 978-0-321-81573-6)</small></li>
<li>Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides. (1994).
Design Patterns: Elements of Reusable Object-Oriented Software.
Addison-Wesley. <small>(ISBN : 978-0-201-63361-0)</small></li>
<li>Martin Fowler, Kent Beck, John Brant, William Opdyke and Don Roberts.
(2002). Refactoring: Improving the Design of Existing Code.
Addison-Wesley. <small>(ISBN : 978-0-201-48567-7)</small></li>
<li>Andrew Hunt and David Thomas. (1999). The Pragmatic Programmer: From
Journeyman to Master. Addison-Wesley.
<small>(ISBN : 978-0-201-61622-4)</small></li>
</ul>
<h3>Other books</h3>
<ul>
<li>Ian Gorton. (2014). Essential Software Architecture (2nd edition).
Springer. <small>(ISBN : 978-3-642-43531-7)</small></li>
<li>Mark Richards. (2015). Software Architecture Patterns: Understanding
Common Architecture Patterns and When to Use Them. O'Reilly.
<small>(ISBN : 978-1-491-92424-2)</small></li>
<li>Richard Monson-Haefel. (2009). 97 Things Every Software Architect
Should Know. O'Reilly. <small>(ISBN : 978-0-596-52269-8)</small></li>
<li>Amy Brown and Greg Wilson. (2012). The Architecture Of Open Source
Applications: Elegance, Evolution, and a Few Fearless Hacks. Lulu.com.
<small>(ISBN : 978-1-257-63801-7)</small></li>
<li>Amy Brown and Greg Wilson. (2008). The Architecture Of Open Source
Applications: Volume II: Structure, Scale, and a Few More Fearless Hacks.
Lulu.com. <small>(ISBN : 978-1-105-57181-7)</small></li>
</ul>
<h3>Scientific references</h3>
<ul>
<li>Anubha Sharma, Manoj Kumar and Sonali Agarwal. A Complete Survey on
Software Architectural Styles and Patterns. In <i>Procedia Computer
Science</i>, 70, 16-28, 2015.</li>
<li>Rikard Land. A Brief Survey of Software Architecture. Internal
report. Mälardalen Real-Time Research Center (MRTC), February 2002.</li>
</ul>