analysera struktur och organisation i ett större program
kritiskt utvärdera designprinciper och -mönster i relation till önskvärda egenskaper hos program och gränssnitt
konstruera program som hanterar internationalisering och lokalisering
använda verktyg som hjälper användaren omstrukturera eller generera källkod
tillämpa olika former av metaprogrammering
tillämpa metoder och verktyg som hittar olika sorters problem i källkod både före och under körning av program, med till exempel parallel exekvering eller minnesläckor
Kursinnehåll
Designmönsters historia. Designmönster. Refactoring. Utvecklingsmiljöer. Generering av kod. Testbarhet. Domänspecifika språk. Metaprogrammering. Dependency injection. Ramverk och programmeringsgränssnitt. Felsöknings av minnesallokering och parallella program. Profilering.
Förutsättningar
Programutvecklingsmetodik (inkl. UML) Kunskaper i programmering i flera språk (inkl. objektorienterad programmering och hantering av pekare) Datastrukturer Kunna läsa forskningsartiklar inom programvarukonstruktion (software engineering) och söka information i nya ämnesområden självständigt och kritiskt
Litteratur
Head First Design Patterns - Freeman & Freeman
Design Patterns: Elements of Object-Oriented Software - Gamma, Helm, et.al.
Utvalda artiklar om programvarudesign och designmönster. - Utvalda artiklar om programvarudesign och designmönster.