IT-Universitetet i København
  Tilbage Kursusoversigt
Kursusnavn (dansk):Software Architecture 
Kursusnavn (engelsk):Software Architecture 
Semester:Efterår 2016 
Udbydes under:Master i it, Software Engineering (sen) 
Omfang i ECTS:7,50 
Min. antal deltagere:
Forventet antal deltagere:25 
Maks. antal deltagere:40 
Formelle forudsætninger:To sign up for the course you should have a working knowledge of software system analysis and design using approaches like object-oriented analysis and design, and object-oriented programming. The required knowledge may have been gained through work experience as a software developer with object oriented technologies for at least 2 years or taking up courses a University on the topics relevant to Object-Orientation.

For M.Sc. students: you should have skills in software system analysis and design and object-oriented programming at least on a level comparable to the courses aimed at teaching students requirements engineering and system analysis and design, Model-Driven Development, and object oriented programming offered at the IT University. Preferably, you have experience with object oriented software development through participating in a small or medium size software engineering project. You should be familiar with the notion and usage of object oriented design patterns like 'facade', 'factory', or 'observer pattern'.

Moreover the student must always meet the admission requirements of the IT University.

Other information but not formal prerequisite:

The students are expected to know Unified Modeling Language (UML) as software architecture design will be documented using UML. Or the students are willing to learn UML for documenting software architectures with minimum support from the teaching staff. The course will also involve architectural and design patterns (Object-Oriented and Service-Oriented) and the students will be encouraged to learn a selected set of architectural patterns if they would have a good knowledge about them. 
Læringsmål:At the conclusion of the course, the students are expected to be able to:

• Argue the importance and role of software architecture in large scale software systems
• Design and motivate software architecture for large scale software systems
• Recognise major software architectural styles, design patterns, and frameworks
• Describe a software architecture using various documentation approaches and architectural description languages
• Generate architectural alternatives for a problem and select among them
• Use well-understood paradigms for designing new systems
• Identify and assess the quality attributes of a system at the architectural level
• Motivate the architectural concerns for designing and evaluating a system's architecture
• Discuss and evaluate the current trends and technologies such as model-driven and service-oriented architectures
• • Evaluate the coming attractions in software architecture research and practice 
Fagligt indhold:Please note, that changes may occur – this applies to all sections of the course description.

Software Architecture has been attracting significant attention from researchers and practitioners since the last decade of 20th century. The increasing size, complexity, and demand for quality software systems are some of the most important issues that have increased interest in this sub-discipline of software engineering. Since a good architecture is considered one of the key factors in successfully developing and evolving a system or a family of systems, an increasing number of organisations are spending a considerable amount of effort and resources on designing and evaluating architectures of their software-intensive systems. Employers are expecting software engineers to be highly skilled and competent in designing, evaluating, and managing architectures of large-scale systems. That is why an increasing number of academic institutes are responding to the increasing demand of knowledgeable and skilled software architects by offering dedicated courses on software architecture in software engineering curricula.

The objective of the course is to provide postgraduate students with a sound technical exposure to the concepts, principles, methods, and best practices in software architecture.

PLEASE NOTE: The learning activities in this course (i.e., Lectures, Exercises, and Assignments) do not usually have programming related tasks. Whilst the programming related knowledge and skills can be beneficial, this course is not suitable for those who want to do a course which has programming related tasks and learning activities.

The following are the main topics to be covered in this course:

• Introduction to the fundamentals of software architecture.
• Software architecture and quality requirements of a software system
• Fundamental principles and guidelines for software architecture design, architectural styles, patterns, and frameworks.
• Methods, techniques, and tools for describing software architecture and documenting design rationale.
• Software architecture design and evaluation processes.
• Rationale and architectural knowledge management in software architecting.
• Approaches and tools for designing and evaluating software architectures for the state-of-the-art technologies such as cloud-computing and service-orientation, and mobile computing.
• Future challenges and emerging trends in software architecture discipline. 
Læringsaktiviteter:14 ugers undervisning bestående af forelæsninger og øvelser

The course will also involve guest lectures, students presentations, and project work.

Note: The lectures will be designed along the lines of seminar style where the students are expected to take active participation. While the attendance in most of the lectures are not mandatory, it is quite difficult to perform well without attending the lectures and exercise sessions. 

Obligatoriske aktivititer:Mandatory Activities (Pre-requisite for Sitting in exam):
- 2 individual, one group project, and one group presentation
- active collaboration & contributions to course blog – at least 10 entries of 10 lines or more on the lessons and reflections. 
Eksamensform og -beskrivelse:A11: Skriftlig eksamen (stedprøve) med adgang til internet, skriftlige og trykte hjælpemidler., (7-scale, external exam)

The duration of the written examination is 4 hour(s).

The exam is an open book exam; the student is allowed to use all aids: books, notes, software, on-line resources.  

Litteratur udover forskningsartikler:The students will be expected to work with the course curriculum based on the following book:

1. Gorton, I., Essential Software Architecture, First edition (2006) or Second edition (2011), Springer.

Some material for the course will also be drawn from other complementary books such as the followings; if relevant material used from these books, you would be given photocopies of the material. You are NOT required to buy any of these books for this course:

• Bass, L., Clements, P. and Kazman, R., Software Architecture in Practice, 2003, Addison-Wesley.
• Taylor, R., Medvidovic, N., Dashofy, E., Software Architecture: Foundations, Theory, and Practice, 2010, Wiley.
• Clements, P., Bachmann, F., Bass, L., Garlan, D., Ivers, j., Little, R., Nord, R. and Stafford, J., Documenting Software Architectures: Views and Beyond, 2002, Addison-Wesley.
• Clements, P., Kazman, R. and Klein, M., Evaluating Software Architectures: Methods and Case Studies, 2002, Addison-Wesley.
• Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., Stal, M., Pattern-Oriented Software Architecture: A System of Patterns, 1996, Wiley.