software product development process

23
Software Development Sri Kanajan

Upload: sri-kanajan

Post on 22-Nov-2014

248 views

Category:

Technology


5 download

DESCRIPTION

Talk to Software Entrepreneurs Meetup on Nov 7th on Software Development practices and outsourcing

TRANSCRIPT

Page 1: Software product development process

Software Development

Sri Kanajan

Page 2: Software product development process

Outline

• Software development methodology

• Agile development process

• Development tools

• Outsourcing

Page 3: Software product development process

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

Page 4: Software product development process

Requirements

• Requirements drive everything!• Project management

• Testing

• Design

• Development

• Usability

• Outsourcing

Page 5: Software product development process

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

Page 6: Software product development process
Page 7: Software product development process

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

Page 8: Software product development process

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 !

Page 9: Software product development process

Requirements Based

Tests

Page 10: Software product development process

Unit Test Example

Page 11: Software product development process

Metrics

• Test coverage• Code coverage/branch

coverage

• Project management metrics

• Earned Value

• Rundown chart

Page 12: Software product development process

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

Page 13: Software product development process

Outline

• Software development methodology

• Agile Development Process

• Development tools

• Outsourcing

Page 14: Software product development process

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

Page 15: Software product development process

Agile Development Process

Sprint Planning Meeting

Sprint Review Meeting

Page 16: Software product development process

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

Page 17: Software product development process

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

Page 18: Software product development process

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

Page 19: Software product development process

Outline

• Software development methodology

• Agile development process

• Development tools

• Outsourcing

Page 20: Software product development process

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

Page 21: Software product development process

Outline

• Software development methodology

• Agile development process

• Development tools

• Outsourcing

Page 22: Software product development process

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

Page 23: Software product development process

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