Software remains malleable, often illogical, and incomplete forever. Sequential approaches to software development, such as the waterfall model, assumes that it is possible to take every single variable that could affect a project into account beforehand. Considerable effort is spent to identify risks, plan mitigation, and what consequences these may have. From a traditional product perspective, this can be compared to creating an assembly line to produce software.
Given the nature of software, is it really feasible to identify all variables beforehand? Iterative and incremental approaches accepts that changes are inevitable and integrates change management into the development process. Agile approaches promotes iterative and incremental development by using a very tight design-code-test cycle. If we again use a traditional product perspective, this can be compared to new product development.
In this course you will teach you how to design and develop software, and to manage projects, using these agile principles:
- The customer is a part of the development team Incremental development
- The developer should not be hindered by the process
- Embrace changes
- Continuous refactoring (restructuring) of the design
After passing the course, you will be able to lead agile projects, work without a detail schedule, use test driven development, refactor programs, be part of a programming pair, and much more.
- Morgan Ericsson (ME), ext 6075, room 423, [email protected] (lecturer)
- Thomas Luvö (TL), [email protected] (lecturer)
- Antonio Martini (AM) (supervisor)
- Anton Andersson ([email protected])
- Isabel Azcarate ([email protected])
- Pauline Daremark ([email protected])
- Anders Eriksson ([email protected])
- Micael Svensson ([email protected])
- Sommerville, I. (2010) Software Engineering (ISBN13: 9780137053469)
- Pro Git
- Writing a product vision: 1, 2.
- A successful Git branching model
- Interactive Git learning: Learn Git Branching
Below you can see the date, time, room and themes for the lectures. There is also a detailed schedule in TimeEdit.
Date & Time | Room(s) | Theme | Who | Slides |
---|---|---|---|---|
17/3 13:15-15:00 | VasaC | Introduction | ME | 1 |
21/3 13:15-15:00 | VasaC | Intro to Software Engineering | ME | 2 |
24/3 13:15-15:00 | VasaC | Software Engineering (cont'd) | ME | 3 |
26/3 13:15-15:00 | Vasa 3 | Pitch sessions (schedule below) | AM | |
28/3 13:15-15:00 | VasaC | RUP and XP | ME | 4 |
31/3 13:15-15:00 | VasaC | Version control | TL+ME | 5#1 5#2 |
4/4 13:15-15:00 | VasaC | Android | ME | 6, Video: Video |
7/4 13:15-15:00 | VasaC | Scrum | TL | 7 |
11/4 13:15-15:00 | VasaC | Testing | ME | 8, Video: 1,2 |
28/4 13:15-15:00 | VasaC | Agile and scaling Agile | TL | 9 |
5/5 13:15-15:00 | VasaC | Product owner, team and project management | TL | 10 |
9/5 13:15-15:00 | VasaC | Design and Architecture | ME | 11 |
16/5 13:15-15:00 | VasaC | Technical Assistance Session | ME | |
19/5 13:15-15:00 | VasaC | Technical Assistance Session | ME | |
23/5 13:15-15:00 | VasaC | Technical Assistance Session | ME | |
26/5 13:15-17:00 | EC | Final Presentations (Schedule) | ME+AM | |
27/5 13:15-17:00 | EC | Final Presentations (Schedule) | ME+AM |
Time | Group | Room |
---|---|---|
13:00-13:30 | 1 | Vasa 3 |
GLPP (3) | Vasa 4 | |
13:30-14:00 | 2 | Vasa 3 |
5 | Vasa 4 | |
14:00-14:30 | Dajoroli (4) | Vasa 3 |
7 | Vasa 4 | |
14:30-15:00 | 6 | Vasa 3 |
8 | Vasa 4 |
Every group should submit the following at the end of the course:
- Working Android app (APK)
- Documentation (produced during the project):
- Vision
- A few user stories
- Developer documentation (information relevant to people who work on the project) Suggestions:
- How does the build process work
- What major parts / components are there in the application
- Design decisions (such as API level, etc.)
- UML
- Flowchart
- Protocol (client/server )
- External dependencies
- Others that fit your project.
- User manual
- Post-mortem Report
Note that the amount of documentation will vary depending on project, but every group must submit some documentation. If you are unsure about what to document, consult your supervisor and check the sample project.
Each group will be given 10 + 5 mins to present their application. The presentation should introduce the app (including the major features), interesting design decisions, the process, and a brief reflection. (You going to have access to following: micro HDMI and VGA connected to projector,blackboard. I also recommend using some recording tool)
Every person should submit a brief evaluation of the group. Imagine that you have a budget of $10 per group member, not including yourself (so, $30 for a group of 4). How would you distribute this "pay" among your group members, based on their value and contribution? Note that you are not allowed to pay everyone the same amount! Email your evaluation (name and amount for each group member not including yourself) to [email protected] no later than June 5 24:00. (The evaluation will not affect the group grade, it will only be used to determine individual variation within a group. However, if you do not submit this evaluation, you will not pass the course).
You can find more information about the grading policy in the wiki.
To give you an idea of what a project might look like in the end, we've been authorized to publish this project which was made during the fall semester (2012).