Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt ...

36
Software Quality in PHP? PHP.RUHR Tobias Schlitt <[email protected]> 2014-10-02

Transcript of Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt ...

Page 1: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Software Quality in PHP?PHP.RUHR

Tobias Schlitt <[email protected]>2014-10-02

Page 2: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

About me

I Tobias Schlitt <[email protected]>I Degree in computer sienceI Proessional PHP since 2000I Consultant / Trainer at Qafoo

http://qafoo.com

Page 3: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Known as PHP

Page 4: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Known as PHP

Page 5: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Known as PHP

Page 6: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Quality Breakdown

Project Lifetime

Time toBugfix /Feature

BusinessValue

Page 7: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Table of Contents

PHP Architecture

Clean PHP Code

Testing

Operations

Conclusion

Page 8: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Outline

PHP Architecture

Clean PHP Code

Testing

Operations

Conclusion

Page 9: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

HTTP by Design

Client

Application

Storage

HTTP

HTTP

LoadBalancer

Cache

HTTP

LoadBalancer

Cache

HTTP

HTTP

HTTP

Page 10: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

HTTP by Design

Embraces SOA Architecture

I REpresentational State Transfer (REST)I Micro Service Architectures

Page 11: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Micro Service Architectures

Authentication Product Catalog

Shop Frontend

Product UpdaterExternal Shop

Queue

HTTP HTTP

HTTPHTTP

Page 12: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Useful Links

I http://qafoo.com/resources/presentations/international_php_conference_se_2013/pragmatic_

rest.html

I https://www.ics.uci.edu/˜fielding/pubs/dissertation/top.htm

I https://www.ietf.org/rfc/rfc2616.txt

Page 13: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Web-scale Architecture

I MySQL bound to PHPs DNAI Support by Oracle for enterprise customers

I CouchDBI RedisI RabbitMQI BeanstalkI elasticsearchI . . .

Page 14: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Useful Links

I https://couchdb.apache.org/

I http://redis.io/

I http://www.rabbitmq.com/

I https://kr.github.io/beanstalkd/

I http://www.elasticsearch.org/

Page 15: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Standard Components / Frameworks

2

Page 16: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Useful Links

I http://symfony.com/

I http://framework.zend.com/

I https://getcomposer.org

Page 17: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Outline

PHP Architecture

Clean PHP Code

Testing

Operations

Conclusion

Page 18: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Clean PHP Code

I PSR-x standardizationI Clean CodeI SOLIDI RefactoringI Domain Driven DesignI Agility

Page 19: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Useful Links

I http://qafoo.com/resources/presentations/phpbenelux_2014/refactoring_with_patterns.html

I http://qafoo.com/resources/presentations/symfonycon_warsaw_2013/decoupling_with_domain_

events.html

I http://qafoo.com/resources/presentations/phpbenelux_2013/make_your_project_solid!.html

I http://qafoo.com/resources/presentations/confoo_ca_2013/designing_beautiful_apis.html

I http://manifesto.softwarecraftsmanship.org/

Page 20: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Software Metrics

I MeasurableI ObjectiveI ReproducableI Automated

ANDC

AHH

NOPNOC

NOMLOC

CYCLO

NOMCALLS

FANOUT319

652

686

4384410

30127

0.439

0.397

4.2333.228

10.6930.156 0.489

1.59

Generated by PDependLow Average High

0.1 0.2 0.60.50.40.3 0.80.7 1.00.90.0

0.1

0.2

0.6

0.5

0.4

0.3

0.8

0.7

1.0

0.9

0.0

Abstraction

Instability

Generated by PDepend

Page 21: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Useful Links

I http://qafoo.com/resources/presentations/confoo_ca_2013/understand_and_use_software_

metrics.html

I http://qafoo.com/blog/027_code_review_tool.html

I http://pdepend.org/

I http://phpmd.org/

Page 22: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Outline

PHP Architecture

Clean PHP Code

Testing

Operations

Conclusion

Page 23: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Double Feedback Test Cycle

Project Owner

FailingAcceptance

Test

DeveloperFailing

Unit-Test

Make TestPass

Refactor

Make TestPass

Page 24: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Useful Links

I http://qafoo.com/blog/055_finding_the_right_test_mix.html

I http://qafoo.com/blog/051_testing_sweet_spot.html

I http://qafoo.com/resources/presentations/dutch_php_conference_2014/behave_behavior_driven_

development.html

I http:

//qafoo.com/resources/presentations/confoo_ca_2013/building_testable_php_applications.html

I https://phpunit.de/

I http://docs.behat.org/en/latest/

Page 25: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Performance / Monitoring

Page 26: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Useful Links

I http://qa.fo/profiler

I http://qafoo.com/blog/071_testing_micro_services.html

I http://qafoo.com/resources/presentations/researchgate_developer_day_2013/continuous_

performance_testing.html

I https://metrics.librato.com/

Page 27: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Outline

PHP Architecture

Clean PHP Code

Testing

Operations

Conclusion

Page 28: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02
Page 29: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Operations

Production Staging Development

Page 30: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Operations

Production Staging Development

Automation

Virtual Machine

Page 31: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Automation

I System SetupI OrchestrationI ConfigurationI DeploymentI Setup

Page 32: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Useful Links

I http://qafoo.com/blog/065_infrastructure_automation.html

I http://abc.tools.qafoo.com/

I http://qafoo.com/resources/presentations/international_php_conference_2011/vom_lokalen_

build_zum_deployment.html

I http://www.vagrantup.com/

I http://ansible.com/

Page 33: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Outline

PHP Architecture

Clean PHP Code

Testing

Operations

Conclusion

Page 34: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Dev-Ops!

Development Quality

Assurance

Operations

DevOps

Page 35: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Why should I care

I ScalabilityI ExtensibilityI MaintainabilityI ReliabilityI Rapidity

Page 36: Software Quality in PHP? - PHP · 2018-10-31 · Software Quality in PHP? PHP.RUHR Tobias Schlitt  2014-10-02

Q/A

Questions?

I Tobias SchlittI <[email protected]>I http://qafoo.com

I Slides already onlineI http://qa.fo/phpruhr14

I Usefull links included