Upload
barry-norman
View
218
Download
0
Embed Size (px)
Citation preview
Expectations for the Week & the Software Development Lifecycle
JAMS WorkshopMakerere University
September 2010
Agenda
• Intro & Workshop Schedule• Who We Are• Software Development Lifecycle– Team Roles– Overall Lifecycle– Tools & Processes
Schedule v1Monday Tuesday Wednesday Thursday Friday
9:00 Expectations for the Week, Software Lifecycle
Project Management
AppLab & Community Knowledge Worker
Group Work Session Holiday
9:3010:00 Writing Functional
SpecificationsGroup Work Session Group Work Session
10:3011:00 Test-Driven
Development11:3012:00 Object-Oriented
Design12:301:00 Lunch Break1:30 Facilitator Office
HoursFacilitator Office Hours
Facilitator Office Hours2:00 Introduction to the
group activity2:303:00 Initial group work
session: setup, assign roles, start working
3:304:004:305:00 Team Presentations
(15 x 8 min each)Awards
5:306:006:307:008:00
Schedule v2Monday Tuesday Wednesday Thursday Friday
9:00 Expectations for the Week, Software Lifecycle
Project Management
AppLab & Community Knowledge Worker
Holiday / Facilitator Office Hours
Team Presentations (15 x 8 min each)
Awards9:30
10:00 Writing Functional Specifications
Group Work Session Group Work Session
10:30
11:00 Test-Driven Development
11:30
12:00 Object-Oriented Design
12:30
1:00 Lunch Break
1:30 Facilitator Office Hours
Facilitator Office Hours
2:00 Introduction to the group activity
2:30
3:00 Initial group work session: setup, assign roles, start working
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 AreKenny 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 RolesDeveloper• Responsible for designing and
implementing features• Implements basic test coverage
Program Manager• Writes functional specifications to bridge
between business and technical teams• Keeps the engineers unblocked
Test Engineer• Writes test plans and test cases• Implements test cases• Advocates for the customer
Operations Manager• Responsible for deploying and
monitoring product code
Business Stakeholder• Provides business requirements
Release Manager• Drives the project schedule
Software Architect• Proposes (and sometimes
implements) big architectural changes• Reviews and advises on design
Customer• The consumer of the software• The most important person
Software Development Lifecycle
Gather Requirements
Design the System
Implement the System
Quality Assurance & Documentation
Operate & Maintain
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
• Certain tools and techniques can help– Source control– Bug database– Scheduling tool– Document repository– Project management
Source Control
• 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
Source Control System
Submit CalculateScore() Submit CalculateScore()
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.
"Sync" (i.e. get updates)
Merge CalculateScore()
Bug Database
Bug Database
Document Repository
Coming Attractions
Gather Requirements
Design the System
Implement the System
Quality Assurance & Documentation
Operate & Maintain
Session 2: Writing a Functional Spec
Session 4: Coding Guidelines & Object-Oriented Design
Session 3: Software Testing & Test-Driven Development
Session 6: Project Management