You are on page 1of 15

Expectations for the Week & the Software Development Lifecycle

JAMS Workshop Makerere University September 2010

Agenda
Intro & Workshop Schedule Who We Are Software Development Lifecycle
Team Roles Overall Lifecycle Tools & Processes

Schedule v1
Monday
9:00

Tuesday
Project Management Group Work Session

Wednesday
AppLab & Community Knowledge Worker Group Work Session

Thursday
Group Work Session

Friday
Holiday

9:30 10:00 10:30 11:00 11:30 12:00 12:30 1:00 1:30 2:00 2:30 3:00 3:30 4:00 4:30 5:00 5:30 6:00 6:30 7:00 8:00

Expectations for the Week, Software Lifecycle Writing Functional Specifications Test-Driven Development Object-Oriented Design Lunch Break Introduction to the group activity Initial group work session: setup, assign roles, start working

Facilitator Office Hours

Facilitator Office Hours

Facilitator Office Hours

Team Presentations (15 x 8 min each) Awards

Schedule v2
Monday
9:00

Tuesday
Project Management Group Work Session

Wednesday
AppLab & Community Knowledge Worker Group Work Session

Thursday
Holiday / Facilitator Office Hours

Friday
Team Presentations (15 x 8 min each) Awards

9:30 10:00

Expectations for the Week, Software Lifecycle Writing Functional Specifications Test-Driven Development Object-Oriented Design Lunch Break Introduction to the group activity Initial group work session: setup, assign roles, start working

10:30 11:00 11:30 12:00 12:30 1:00 1:30 2:00

Facilitator Office Hours

Facilitator Office Hours

2:30 3:00 3:30 4:00 4:30 5:00 5:30

Workshop Materials
All materials we use for the workshop are available at http://lawolf.net/jams
PowerPoint slides Templates (test plan, functional spec, team presentation) Attendee packet (schedule, project description & evaluation criteria, sample functional spec, sample test plan)

All assignments may be submitted via

Who We Are
Kenny Wolf
Software Architect @ Microsoft 8 years on .NET Framework 5 years on Mac Office Plays drums & juggles

Lauren Lavoie
Program Manager @ Microsoft 4 years on Exchange 3 years on Windows Presentation Foundation Likes yoga & photography

Finishing a year-long sabbatical volunteering on tech projects in Asia and Africa Spent the summer volunteering for Grameen Foundation in Kampala, on the Community Knowledge Worker project

Goals for the Week


Provide insight into how software engineering works in industry Hands-on experience with practical elements of software engineering
Functional specifications Software testing Coding as a team

Have fun

Software Development Roles


Developer
Responsible for designing and implementing features Implements basic test coverage

Business Stakeholder
Provides business requirements

Program Manager
Writes functional specifications to bridge between business and technical teams Keeps the engineers unblocked

Release Manager
Drives the project schedule

Test Engineer
Writes test plans and test cases Implements test cases Advocates for the customer

Software Architect
Proposes (and sometimes implements) big architectural changes Reviews and advises on design

Operations Manager
Responsible for deploying and monitoring product code

Customer
The consumer of the software The most important person

Software Development Lifecycle


Gather Requirements

Operate & Maintain

Design the System

Quality Assurance & Documentation

Implement the System

Software as a Team
More people can get more done but

Can introduce extra dependencies Require more communication overhead Can duplicate each other s work Can build incompatible pieces Source control Bug database Scheduling tool Document repository Project management

Certain tools and techniques can help

Source Control
A source control system manages changes to text and binary files. Changes are identified by a "revision number , and associated with a timestamp and the person making the change. Revisions can be compared, restored, and with some types of files, merged.

Critical for code stability and maintenance Allows developers to collaborate If necessary, allows the system to rollback to an earlier date Verbs: Edit, Sync, Submit
Submit CalculateScore()

Source Control System

Submit CalculateScore() Merge CalculateScore() "Sync" (i.e. get updates)

Bug Database

Bug Database

Document Repository

Coming Attractions
Session 6: Project Management

Gather Requirements

Session 2: Writing a Functional Spec

Operate & Maintain


Session 4: Coding Guidelines & ObjectOriented Design

Design the System

Session 3: Software Testing & Test-Driven Development

Quality Assurance & Documentation

Implement the System

You might also like