Development of a complete software system based on available reference architec- tures; best practices in development; contemporary development environments and tools; architectural styles; concurrency; design patterns; libraries and frameworks; development of interface mechanisms including services and APIs; GUI design and implementation; design for reusability; component imple- mentation; unit, component and system testing