3. Motivations
• Software is increasingly driving innovations
• Most startups are pure software plays
• Software complexity is becoming the limiting factor
• The “just do it in software! Its easy!” is no longer true
• Software releases is becoming the critical path in most technology projects
• Ripple effect of change in software is much harder to evaluate and test
• Building on-site technology competency is becoming really hard
• Most startups require expertise in multiple technology platforms
7. A
Example Requirements
• Battery Warning Screen
• The Main Window header shall contain the text
“Programmer Battery Low” [15-003]
Boot requested
29-A01
Programmer
Splash Screen
Time
Zone
Set?
No
21-A01
System Reset
Screen
Continue
Boot Up Set Time
Zone Screen
AA-A01
C-A01
Yes
• The Main Window shall contain the text “The Programmer
Save
has less than 5 minutes battery life remaining; would you like
to continue?”[15-004]
• The Separator Bar shall contain buttons with the test
“Continue” and “Cancel” [15-005]
• The button labeled “Continue” shall be the default action.
[15-006]
•
Programmer
Battery Life < 5
minutes?
Yes
21-A02
Battery
Warning
Screen
11-A02
20-A01
No
Start Menu
Continue
Cancel
16-A01
Suspend
Programmer
8. Verification
• Requirements based tests
• Verify that the specific requirement is met
under success and failure conditions
• Integration tests
• Unit test
• Intent is to verify the class implementation
prior to code check-in
• System tests
• Intent of the test is to verify how different
features work with each other
• Stress tests
• Intent of the test is to verify the behavior of
the system under worst case scenarios
• Intent of the test is to verify the system as an
entirety works within the intended
environment
• Peer review
• Effective way to verify the design and spread
the knowledge
TEST OFTEN ! Develop tests even before you develop code !
11. Metrics
• Test coverage
• Code coverage/branch
coverage
• Project management metrics
• Earned Value
• Rundown chart
12. Managing Change
• Rare to have a clean slate project
• More likely to come into a project with an existing asset base
• Ripple effects analysis
• Critical activity that is often overlooked
• A single new requirement or parameter change could have broad implications
17. Daily Scrum
• Parameters
•
•
•
•
Daily
15-minutes
Stand-up
Not for problem solving
• Three questions:
1. What did you do yesterday
2. What will you do today?
3. What obstacles are in your way?
• Everyone is invited
• Help avoid other unnecessary
meetings
• Only team/scrum master can talk
18. Sprint Review Meeting
• Team presents what it accomplished during the sprint
• Typically takes the form of a demo of new features or underlying architecture
• Informal
• 2-hour prep time rule
• Participants
• Customers
• Management
• Product Owner
• Other engineers
22. Outsourcing Your Software Development
•
•
•
•
•
Increasingly viable and cost effective solution
Technology is complex and multi-faceted. Get the best to help you!
The degree of outsourcing depends on the value that the technology brings to your business
Many startups going to India, Poland, Philippines
However
• Clear requirements is critical!
• Need to understand the technology in-house
• Process and culture that enables outsourcing
23. Outsourcing
• Own the process and architecture
• Outsource the execution of the process (development/verification) on top
of the architecture
• Gather metrics continuously and get them to document all work
• Fixed price vs. Time/materials contract
• Prototype in-house to elicit requirements then outsource the implementation of the
requirements
• Detail the architecture and the process in the contract