Thoughts on Software Quality Is it just a cultural thing? Are we - - PowerPoint PPT Presentation

thoughts on software quality
SMART_READER_LITE
LIVE PREVIEW

Thoughts on Software Quality Is it just a cultural thing? Are we - - PowerPoint PPT Presentation

Thoughts on Software Quality Is it just a cultural thing? Are we doomed? Bertrand Delacrtaz @bdelacretaz, grep.codeconsult.ch Principal Scientist, CQ/AEM R&D group, Adobe Basel Apache Software Foundation Member and Director


slide-1
SLIDE 1

Thoughts on Software Quality

Is it just a cultural thing? Are we doomed?

Bertrand Delacrétaz
 @bdelacretaz, grep.codeconsult.ch Principal Scientist, CQ/AEM R&D group, Adobe Basel
 Apache Software Foundation Member and Director ApacheCon:Core Europe, October 2015
 slides revision 2015-09-29

slide-2
SLIDE 2

created in 2007 powers “a few” major websites still going strong something must be right

slide-3
SLIDE 3

how can we create a

culture of quality

in our teams?

slide-4
SLIDE 4

Quality is usually visible from far away

Engineering culture?

slide-5
SLIDE 5

Good tools for good craftsmen

slide-6
SLIDE 6

Defensive & Conservative

slide-7
SLIDE 7

Avoid broken windows

slide-8
SLIDE 8

Do one thing and one thing well

slide-9
SLIDE 9

Cultural traits? you can’t measure those…

automate! defensive conservative no broken windows do one thing and

  • ne thing well
  • bvious quality,

measurable where possible

slide-10
SLIDE 10

so, quality is a

cultural

thing?

slide-11
SLIDE 11

maybe a few

axes

will help us measure

slide-12
SLIDE 12

Code coverage? Not a silver bullet. Code coverage: 100% Semantic coverage: zero!

A generator with return 42; would pass. Not useless…but just one tool among others.

slide-13
SLIDE 13

quality is

much wider

than that

slide-14
SLIDE 14

Happy users! ?

slide-15
SLIDE 15

Happy Developers!

slide-16
SLIDE 16

Simplicity & adequation

“Conceived to help motorize the large number of
 farmers still using horses and carts in 1930s France” 
 (Wikipedia: Citroën 2CV)

slide-17
SLIDE 17 OSGi framework (Apache Felix) WebD Felix OSGi
 JCR
 content
 repository JSP Ruby Velocity JSR resourc servlet/ standard custom Sling Core

Simplicity & adequation

slide-18
SLIDE 18

Robustness

slide-19
SLIDE 19

Robustness

[INFO] ------------------------------------------------------------------------ [INFO] Building Apache Sling Launchpad Testing 7-SNAPSHOT [INFO] ------------------------------------------------------------------------ ... Tests run: 529, Failures: 0, Errors: 0, Skipped: 1 ... [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 02:08 min [INFO] ------------------------------------------------------------------------
slide-20
SLIDE 20

Security

the best way to avoid risk is to do nothing,

  • f course. Nobody will

steal this picture, but it’s quite a boring slide.

slide-21
SLIDE 21

Apache culture!

Security

slide-22
SLIDE 22

Focus

slide-23
SLIDE 23

Focus

OSGi framework (Apache Felix) WebDAV server Felix OSGi
 console browser fjlesystem JCR
 content
 repository JCR API debugger ECMAscript JSP Ruby Velocity etc.. JSR 223 scripting HTTP resource resolution servlet/script resolution standard servlets custom servlets
 and components Sling Core

scarce resources help to focus!

slide-24
SLIDE 24

Backwards compatibility

Apache culture!

slide-25
SLIDE 25

Transparency

REST culture!

slide-26
SLIDE 26

Transparency

REST -> naturally transparent Good names Helpful messages Introspection tools

slide-27
SLIDE 27 AbstractResource AbstractResourceVisitor AccessSecurityException Adaptable AdapterFactory AdapterManager AttributableResourceProvider Authenticator CompositeValueMap DeepReadValueMapDecorator DynamicResourceProvider ExternalResourceListener HtmlResponse SlingAllMethodsServlet SlingBindings SlingConstants SlingException SlingHttpServletRequest SlingHttpServletRequestWrapper SlingHttpServletResponse SlingHttpServletResponseWrapper SlingIOException LoginException ModifiableValueMap ModifiableValueMapDecorator ModifyingResourceProvider NoAuthenticationHandlerException NonExistingResource ObservationReporter ObserverConfiguration OptingServlet ParametrizableResourceProvider PersistableValueMap PersistenceException PropertyBuilder ProviderContext RefreshableResourceProvider RequestDispatcherOptions RequestParameter RequestParameterMap RequestPathInfo RequestProgressTracker RequestUtil ResolveContext Resource ResourceAccessSecurity ResourceChange

Good names?

slide-28
SLIDE 28

Low coupling

slide-29
SLIDE 29

Low coupling

OSGi framework (Apache Felix) WebDAV server Felix OSGi
 console browser fjlesystem JCR
 content
 repository JCR API debugger ECMAscript JSP Ruby Velocity etc.. JSR 223 scripting HTTP resource resolution servlet/script resolution standard servlets custom servlets
 and components Sling Core sailboats are very cool but we shouldn’t take their high coupling as an example…
slide-30
SLIDE 30

quality has

many dimensions

  • ften hard to measure
slide-31
SLIDE 31

doing? so, how is

slide-32
SLIDE 32

I’d say

not bad

thanks to a strong community with a culture of quality in design, implementation
 and testing.

“many eyeballs”

slide-33
SLIDE 33

Coda

Y

  • u can’t measure it all: quality is multi-dimensional

and needs to be part of your team’s culture. And in the end the only thing that really matters is happy users…

“Thoughts on Software Quality” - Bertrand Delacretaz, Principal Scientist, Adobe (C) Adobe 2015 - these slides are licensed under a Creative Commons Attribution 4.0 International License - images and illustrations are (C) fotolia.com, used with permission, cannot be reproduced separately.

Thinking and reviewing along those axes can help build such a culture.