crafting quality software

47
Crafting Quality Software Best Good Practices

Upload: dius

Post on 16-Jan-2017

624 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Crafting Quality Software

Crafting Quality Software

Best Good Practices

Page 2: Crafting Quality Software

Intro - Tarcio

Page 3: Crafting Quality Software

Intro - Adam

Page 4: Crafting Quality Software

What is Quality?

Page 5: Crafting Quality Software

What is Quality?

Meets customer needs

and provides satisfaction

“Fitness for use”(Juran)

“Conformance to requirements”

(Crosby)

“Quality is pride of workmanship”

(Deming)

Freedom fromdefects of

deficiencies

Value of worthiness

Definition of quality

Page 6: Crafting Quality Software

How good or bad something is?

What is Quality?

Page 7: Crafting Quality Software

What is Quality?

Page 8: Crafting Quality Software

What is Quality?

Page 9: Crafting Quality Software

What is Quality?

Page 10: Crafting Quality Software

● Perceptions● Preconditioned● Experiences● Education● Culture● Opinions

Individual Traits

Page 11: Crafting Quality Software

A Historical Perspective of Quality

Page 12: Crafting Quality Software

A Historical Perspective of Quality

Page 13: Crafting Quality Software

A Historical Perspective of Quality

Page 14: Crafting Quality Software

A Historical Perspective of Quality

Page 15: Crafting Quality Software

A Historical Perspective of Quality

Integrate learningsRenew theoriesAdjust methodsDo we need to learn more?

Act

Study(Check)

Do

Plan

Monitor outcomes, test validityof theory. Test the plan. Examine success or unexpected outcomes. Look for new lessons or problems to solve.

Execute the plan, carry out the

activities, apply our best knowledge,

pursue the desired purpose and goals.

Identify purpose and goals. Formulate

theories and proposals. Define

measures of success (and how to measure them). Plan activities.

Page 16: Crafting Quality Software

A Historical Perspective of Quality

Page 17: Crafting Quality Software

● Team motivation.

● Increased customer satisfaction.

● Return on investment.

What are the Benefits of Quality?

Page 18: Crafting Quality Software
Page 19: Crafting Quality Software

● Individual and collective responsibility.

● Individuals can contribute in different ways.

● Starts when an idea is conceived and continues throughout a product’s lifecycle.

Who is Responsible?

Page 20: Crafting Quality Software

Applying Quality

Page 21: Crafting Quality Software

3 Aspects of Software Quality

Process

Structural Functional

What can we do to ensure quality?

Does the software do whatis supposed to do?

Is the software easy to modify and enhance?

Page 22: Crafting Quality Software

Functional and Structural Traits

Correctness

Usability

Efficiency

Reliability

Integrity

Adaptability

Accuracy

Robustness

Maintainability

Flexibility

Portability

Reusability

Readability

Testability

Understandability

Security

FunctionalStructural

Page 23: Crafting Quality Software

Process’ activities

Inception Iteration Zero

Iteration Kick Off

StoryKick Off

Story Walkthrough Release

Development Retrospective

Page 24: Crafting Quality Software

Functional + Structural Quality

UnderstandabilityKnowledge share

PairingBetter

written software

Team Collaboration

Page 25: Crafting Quality Software

Pair Programming

Nope, not like this

Page 26: Crafting Quality Software

Pair Programming

Yeah, more like this

Page 27: Crafting Quality Software

Pair Programming Traits

● Emotionally demanding● Constant learning● Conversational● Collaborative● High quality output● Costly (2 heads per problem)

TIME

Prod

uctiv

ity

Quality

Cost

Page 28: Crafting Quality Software

Testing

Functional + Structural Quality

TestabilityValidates requirements

Confidence

Robustness

Page 29: Crafting Quality Software

● Costs more● No real focus● Slow to run● Longer to write● Too Integrated

Testing Sad Reality

Page 30: Crafting Quality Software

Testing IdealExploratory

Testing

Page 31: Crafting Quality Software

Test Driven Development

Page 32: Crafting Quality Software

Test Driven Development

● Not a silver bullet● Know when to use it● Understand first, TDD later

Page 33: Crafting Quality Software

Unit Testing

Small

Fast

Isolated

Cost effective

Focused

Page 34: Crafting Quality Software

Unit Testing

Helps design

Find issues early

Facilitate change

Facilitate integration

Page 35: Crafting Quality Software

Integration Testing

Two unit tests, no integration test.

Page 36: Crafting Quality Software

Acceptance Testing

Page 37: Crafting Quality Software

Exploratory Testing

Test Design

Test Execution

Analysis

Learn

Page 38: Crafting Quality Software

Other Types of Testing

“You never know what a customer will doto your product until they do it”

- Adam Crough

● Smoke testing.

● Penetration testing.

● Performance testing.

● User testing.

● Accessibility testing.

● Regression testing.

● A/B testing.

● Functional testing.

● Acceptance testing.

● Security testing.

Page 39: Crafting Quality Software

Continuous Integration

● Automate code checks

● Exercise regression testing

● Improves team confidence

Page 40: Crafting Quality Software

Visibility

Page 41: Crafting Quality Software

Continuous Delivery

Plan Build

Release Test

Page 42: Crafting Quality Software

One more thing

Page 43: Crafting Quality Software

User Validation

Page 44: Crafting Quality Software

User Validation - Types

Q & A Observation Prototyping Release early

Page 45: Crafting Quality Software

User Validation - Benefits (Case Study)

18 Month Project

3 months 6 months 9 months

Page 46: Crafting Quality Software

Final thoughts

Collaborate oftenTest, test, test

Automate checksVisualize results

Involve users early

Everyone is responsible for quality

Page 47: Crafting Quality Software

Thank you!

@tarciosaraiva

http://bit.ly/acrough