You are on page 1of 16

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 & Techniques

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)

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 Code Reviews 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
A bug database tracks outstanding known work remaining in a project. This includes new features, code defects, documentation, and test cases. Database front-end implements a workflow around creating, assigning, and resolving issues.
(Re)Open Work Open Work Item Item assign to to & & assign developer No Yes
Matches spec?

Design & Implement Work Item

Get peer codereview

Address Feedback

Signoff?

No Yes

Close Work Item

Verify change

Resolve and assign to tester

Submit to Source Control

Bug Database
A bug database tracks outstanding known work remaining in a project. This includes new features, code defects, documentation, and test cases. Database front-end implements a workflow around creating, assigning, and resolving issues.
(Re)Open bug & Open bug & assign to developer No Yes
Fixed?

Investigate bug

Fix bug

Get peer codereview

Address Feedback

Can repro?

Yes Signoff? No Yes

No

Close Bug

Verify resolution

Resolve and assign to tester

Submit to Source Control

Other Tools and Techniques


Document Repository
Multi-user tools like SharePoint and wikis help teams share and collaborate on specifications and other documents

Code Review
A process by which code is reviewed for correctness before being committed to source control Goal is to save time by catching defects before they affect others and while the details are fresh in the developer s mind

Project Management
Overarching set of techniques that we will discuss in detail tomorrow morning Tools like Microsoft Project and Excel can help

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