Software Development
Sri Kanajan
Outline
• Software development methodology
• Agile development process
• Development tools
• Outsourcing
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
Requirements
• Requirements drive everything!• Project management
• Testing
• Design
• Development
• Usability
• Outsourcing
Requirements ElicitationUI Prototyp
ing
Usability
Analysis
Surveys
Architecture Design Requirements Based Verification Test Cases
Automated Testing or Manual Testing
Development
Integration and System Testing
Agile Development Process with Ripple Effects Analysis
Technology Platform
Evaluations
Code Reviews
Unit Testing
Test Framew
ork
Test Managem
ent Database
Industry Standar
ds
Example Requirements
• Battery Warning Screen• The Main Window header shall contain the text
“Programmer Battery Low” [15-003]
• The Main Window shall contain the text “The Programmer 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]
•
Start Menu
Boot requested
Programmer Splash Screen
A
11-A02
Continue
29-A01
CancelSuspend
Programmer
Programmer Battery Life < 5
minutes?Yes
Battery Warning Screen
No
20-A01
TimeZoneSet?
Yes
No
Save
Boot Up Set Time Zone Screen
System Reset Screen
Continue
AA-A01
Verification
• Requirements based tests• Verify that the specific requirement is
met under success and failure conditions
• Integration 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
• Unit test• Intent is to verify the class
implementation prior to code check-in
• System tests• 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 knowledgeTEST OFTEN ! Develop tests even before you develop code !
Requirements Based
Tests
Unit Test Example
Metrics
• Test coverage• Code coverage/branch
coverage
• Project management metrics
• Earned Value
• Rundown chart
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
Outline
• Software development methodology
• Agile Development Process
• Development tools
• Outsourcing
Requirements ElicitationUI Prototyp
ing
Usability
Analysis
Surveys
Architecture Design Requirements Based Verification Test Cases
Automated Testing or Manual Testing
Development
Integration and System Testing
Agile Development Process with Ripple Effects Analysis
Technology Platform
Evaluations
Code Reviews
Unit Testing
Test Framew
ork
Test Managem
ent Database
Industry Standar
ds
Agile Development Process
Sprint Planning Meeting
Sprint Review Meeting
Sprint Planning Meeting
Sprint Planning
Meeting
Product Backlog
Team Capabilities
Business Conditions
Technology
Current Product
Sprint Backlog
Produ
ct O
wner
Scrum
Tea
m
Man
agem
ent
Custo
mer
s
Sprint Goal
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
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
Outline
• Software development methodology
• Agile development process
• Development tools
• Outsourcing
Development Tools
• Requirements and test cases
• Database solutions, e.g. DOORS
• Code change management• Git, Github
• Static analysis and unit testing
• Code Analytics
• Lint
• JUnit
• Automated testing• Robotium
• Monkey Runner
Outline
• Software development methodology
• Agile development process
• Development tools
• Outsourcing
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
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