Overview:
Architectures for Software systems is a Carnegie Mellon course part of NBU Master’s program. The original course and most of the content have been prepared by David Garlan and Tony Lattanze. In NBU the course is presented by me – Nikolay Milovanov. The course has been brought to NBU thanks to George Sharkov from ESI center and Foundation America for Bulgaria.
Courses Objectives:
Architectures for Software Systems aims to teach you how to design, understand, and evaluate systems at an architectural level of abstraction. The course is developed by Carnegie Mellon University, Institute for Software Research and is delivered under the supervision of European Software Institute (ESI).
By the end of the course you will be able to:
• Understand the influence of architectural drivers on software structures.
• Understand the technical, organizational, and business role of software architecture.
• Identify key architectural structures (styles, patterns, tactics, etc.).
• Understand the principles of good architectural documentation and presentation.
• Understand the impact that COTS has on architectural designs.
• Generate architectural alternatives in a given context and choose among them.
• Understand how formal notations can be used to specify architectures.
• Evaluate the fitness of an architectural design in meeting a set of system requirements and balancing quality tradeoffs.
• Be aware of the future trends in software architecture.
Course Organization:
Lectures: The original CMU course has been split to Architecture for Software Systems 1 – ESMM290 (fall) and Architecture for Software Systems 2 ESMM390 (spring) courses.
Each course has 15 lectures and takes 30 astronomic hours. There will be one lecture weekly. Note that you have to subscribe to both courses and both recitations. You can drop after the first semester but you are not allowed to subscribe just to the second course. Attendance is mandatory.
Recitations: To help you master key techniques and tools, provide guidance for assignments, and review the results of assignments, there will be one recitation weekly. During the fall you have to attend to ESMM292 and during the spring to ESMM392. For some recitations, the class will be divided into smaller groups. Attendance is mandatory.
Guest Lectures:
On each of the courses during the recitations there will be 2 guest lectures from Leading Bulgarian Companies that will present to you the role of the Architecture in their organizations and products.
Bootcamp: During the second semester there will be a bootcamp event that will give you a job market orientation and will train you how to sell yourself better on the Bulgarian job market.
Computing: A personal computer or laptop is required for both courses and recitations. For the course assignments we will be using the Java programming language. You will need to download and install the Java Software Development Kit (the latest version of J2SE). You may use any editor or programming environment that you like.
Communication: Course materials are available through NBU Moodle System: http://www.e-edu.nbu.bg
Textbooks:
o Software Architecture: Perspectives on an Emerging Discipline, by Mary Shaw and David Garlan, Prentice Hall 1996 [SG96]
o Software Architecture in Practice, Second Edition, by Len Bass, Paul Clements, and Rick Kazman, Addison-Wesley 2003 [BCK03].
o Documenting Software Architectures: Views and Beyond, Second Edition,by Clements, et al. Addison-Wesley 2011 [C+11].
o Architecting Software Intensive Systems: A Practitioner’s Guide,by Anthony J. Lattanze, Taylor and Francis/Auerbach 2008 [ASIS08].
We will also use a collection of supplementary readings, which will be available through the course on the e-edu.nbu.bg web site.
Grading:
Your SA1 and SA2 course grades will be determined as a combination of four factors:
• Questions on Readings: (30%) Each week’s lectures will be accompanied by one or more readings, which we expect you to read before you come to the first class of the week. To help you focus your thoughts on the main points of the readings, we will assign one to five questions (based on the readings) to be answered each week. Each question should be addressed in less than a page (often a single paragraph will do), and is due at the first lecture in the week for which it is assigned. All solutions must be submitted through e-edu.nbu.bg. Late submissions will not be accepted unless you make prior arrangements with the instructor – each request will be handled on a case-by-case basis.
• Assignments: (40%) There will be six assignments (3 in Recitations 1 and 3 in Recitations 2). Some of the recitations will be a small system architecting exercises some will be recovering and analysis of an existing system or standard. Each assignment will have a group and an individual section. The purpose of these assignments is to give you some experience analyzing architectures and the systemic properties they possess. To help clarify your designs we will hold a brief, ungraded design review for most assignments during class a week before it is due. Groups will take turns presenting their preliminary designs and getting feedback from the class and instructor. Late assignments may be accepted, but will be steeply penalized.
• Final Project: (30%) The course project is designed to give you experience with the architecture of a larger software system. You will design and analyze the architecture of a system, document your work, and present the results to the rest of the class. You will be evaluated on both the quality of your design, analysis and documentation, as well as on your final presentation. Note that final project presentations will take place during the first week of exams at the normal recitations lecture time. Students are required to be present for ALL presentations.
• Instructors’ judgment: The instructor reserve the right to raise or lower your quantitatively-determined grade based on their judgment of your mastery of course material; this judgment will be based in part on your ability to participate constructively in class discussions. Participation in labs and recitations may also be taken into consideration.
Late Assignment Policy: In general, late answers to the weekly reading questions will not be accepted without prior approval. Late team-based assignments will be penalized. If a personal emergency should arise that affects your ability to turn in an assignment in a timely fashion, you must contact the course instructor as soon as possible.
Cooperation Policy and Quotations: We encourage vigorous discussion and cooperation in this class. You should feel free to discuss any aspects of the class with any classmates. However, we insist that any written material that is not specifically designated as a Team Deliverable be done be you alone. This includes answers to reading questions, individual reports associated with assignments, and labs. We also insist that if you include verbatim text from any source, you clearly indicate it using standard conventions of quotation or indentation and a note to indicate the source.