Analysis, Design and Software Architecture
AbstractThe Analysis, Design, and Software Architecture course (BDSA) is part of the Bachelor in Software Development (BSWU). In this course, students will discover software engineering from a theoretical and practical perspective. Students will learn about the history of software engineering, software processes, and will be exposed to concepts, principles, techniques, tools, and technologies related to object-oriented analysis, design, and programming. The course comprises of two lecture blocks and three exercise blocks. Weekly exercises will be given to students to gain hands on practice of the concepts taught in class.
The Analysis, Design, and Software Architecture course (BDSA) is a course in the Bachelors program in Software Development (BSWU). In this course, students will discover and experience software engineering from a practical and theoretical perspective. Students will learn and experience how modern applications can be designed in an object-oriented programming language like C#.
Students will be trained to design, create, and reflect on properties of quality software via practices like agile iterative development with short development cycles and quick feedback loops that are triggered by continuous build, test, deployment of software, etc.
Additionally, students will learn and experience related tools and techniques, e.g., continuous integration, delivery, and deployment chains, deployment of software as applications in the "cloud", distributed version control systems, etc.
The course comprises of lectures, exercise sessions, and a project that runs over the entire term. Student's capabilities are assessed at the end of the course via an exam that incorporates the results of project work that are reported in a brief report and via a written exam.
This is a 15ECTS course corresponding to a workload of on average 23.6 hours per week (see https://itustudent.itu.dk/Your-Programme/BSc-Programmes/BSc-in-Software-Development/Courses-Projects-and-Electives).
The student must have the following skills to register for this course:
- Familiarity with at least one object-oriented programming language, such as, Java, C++, C#, Objective-C.
- Be able to design, implement, and test medium-sized object-oriented programs that includes the use of concepts, such as, classes, encapsulation, inheritance and polymorphism, interfaces, packages, data structures (arrays, collections, lists, etc.), threading, IO operations (files, streams, and serialization), and basic GUI programming.
These background skills are achieved by following the basic programming courses in the first and second semester at the IT University’s bachelor degree programs in Software Development.
Intended learning outcomes
After the course, the student should be able to:
- Describe and apply methods for agile, iterative, and continuous analysis, design, implementation, testing, build, and deployment of object-oriented software.
- Explain principles of software architecture, including the variety of common architecture and design patterns and their use.
- Explain and reflect on software development process, practices, and techniques that are covered in the course.
- Explain and be able to execute software engineering activities including agile, iterative, and continuous analysis, design, implementation, testing, build, and deployment.
- Document the analysis, design, and software architecture of systems through the use of common standards for documentation including natural language descriptions, visual languages like UML, or C#'s documentation tools.
- Design and implement software using the C# programming language, including the use of data structures, generics, LINQ, data access, asynchrounous processing, distributed programming, tests, user interface programming, API programming, and web programming.
- Apply changes (re-factor) to a software system through adjustments in its architecture or refinements in its configuration and reflect on their implications.
- Construct useful, coherent, large-scale systems of up to approx. 10 KLOC in size in the C# programming language, including the ability to perform system and domain analysis for a given problem, propose an appropriate software architecture, write aspects of system specification and its implementation, and validate the implementation against its specification.
- Effectively test large-scale systems. This includes both the understanding of the design implications as well as the ability to write effective tests using test-driven (or test- first) techniques.
The course comprises of weekly sessions organized as follows:
- Two weekly interactive lectures that are run in a consecutive four hour block
- Followed by one of the two two-hour exercise sessions
- Another two-hour exercise session
Lectures and exercises will be complemented by two to three guest lectures from relevant industrial software engineers.
Fundamental to the course is a group project which runs over the entirety of the course period, i.e., from week one to its final presentation in week 15. In the project, groups of five students each implement an application in an agile and iterative manner. The application is implemented in C# with supporting components in other relevant languages (YAML, JSON, Bicep, Bash, PowerShell, etc.). All software engineering topics of the course, such as, version control, collaboration, various forms of testing, continuous builds and deployments to Platform-as-a-service (PaaS), design, architecture, respective patterns, etc. will be covered in project work and are important for the project work.
The project expects that students transfer the information from the lectures and related literature into concrete software and a relating process for it’s creation.
Three-times during the course, after four week iterations, student groups will participate in project reviews. Material that is generated for these reviews and which can be improved subsequently incorporating gathered feedback can form the base for the final submission. The final submission is a brief report, which covers important aspects of the project work.
To be eligible to the exam, students will have to complete mandatory activities
- Participate in three project reviews
- Participate in project presentation
Note: mandatory activities might be subject to minor modifications prior to the course start.
The student will receive the grade NA (not approved) at the ordinary exam, if the mandatory activities are not approved and the student will use an exam attempt.
Details regarding the course literature will be communicated timely prior to course start. Most likely, it will include a book. Additional research literature will be used and communicated throughout the course.
Student Activity BudgetEstimated distribution of learning activities for the typical student
- Preparation for lectures and exercises: 10%
- Lectures: 17%
- Exercises: 17%
- Project work, supervision included: 50%
- Other: 6%
Ordinary examExam type:
X: Experimental form, External (7-point scale)
X: Experimental form
The exam consists of two parts. The two parts are:
a) the project, which is covered via the final submission (report) and which covers important aspects of the project work.
b) a written exam (two hours), which covers generic course contents.
Each part is graded separately, i.e., students receive a grade for the project and another grade for the written exam.
Final grades are computed based on the two grades from the two parts. The precise weight of each part's grade will be communicated to all students in class at the start of the course. To pass the exam, both parts need to receive a passing grade. That is, the project has to be passed and the written exam needs to be passed.
B: Oral exam, External (7-point scale)
B22: Oral exam with no time for preparation.
Time and dateOrdinary Exam - submission Thu, 21 Dec 2023, 08:00 - 14:00
Ordinary Exam - on premises Wed, 3 Jan 2024, 09:00 - 11:00