Aim of the course
The aims of the course it to present rules, techniques and good practices of software engineering of distributed systems. To learn the basics of project and project team establishment, conform with agile methodologies; to give a practical knowledge of tools supporting process of software creation, versioning, testing, releasing and a teamwork.
Project players, stakeholders, roles, establishment of project team; project structure, version management (code, artifacts, dependent libraries – maven2). Multilayer application model, design patterns for distributed systems. Project management supporting tools: bug tracking, task management, project knowledge sharing. Software testing, code testing technologies, load testing. Project state measuring and reporting, continuous integration systems, code verification automation (conformance to standards, potential bugs detection, copy-paste detection, code coverage). Data persistence layer technologies for distributed systems (ORM). Agile software project management technologies.
Overview of the course elements
During laboratories, students teams are creating, in selected technology (usually web and JAVA based), a complete IT system (performing design, implementation and tests) basing on predefined set of functionality. Weekly meetings verify work progress and help in correct usage of tools and techniques supporting project team work (version control, artifact and task management, project build and testing automation systems). Laboratories give an opportunity to establish, widen and practically verify the information presented in lectures.
1. Jim Highsmith: APM Agile Project Management. Jak tworzyć innowacyjne produkty. Mikom, 2005
2. Bas De Baar: Surprise! Now You’re a Software Project Manager, Multi-Media Publications Inc, 2006
3. Christian Bauer, Gavin King: Hibernate In Action, Manning 2007
4. John Casey, Vincent Massol, i inni: Better Builds with Maven, Mergere, 2006