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
created in 2007 powers “a few” major websites still going strong something must be right
how can we create a culture of quality in our teams?
Quality is usually visible from far away Engineering culture?
Good tools for good craftsmen
Defensive & Conservative
Avoid broken windows
Do one thing and one thing well
Cultural traits? you can’t measure those… no broken automate! windows do one thing and defensive one thing well obvious quality, conservative measurable where possible
so, quality is a cultural thing?
maybe a few axes will help us measure
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.
quality is much wider than that
Happy users! ?
Happy Developers!
Simplicity & adequation “Conceived to help motorize the large number of farmers still using horses and carts in 1930s France” (Wikipedia: Citroën 2CV)
Simplicity & adequation Sling Core Felix JCR custom WebD standard OSGi content JSP repository Ruby JSR servlet/ resourc Velocity OSGi framework (Apache Felix)
Robustness
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] ------------------------------------------------------------------------
Security the best way to avoid risk is to do nothing, of course. Nobody will steal this picture, but it’s quite a boring slide.
Apache culture! Security
Focus
Focus HTTP debugger fj lesystem browser Sling Core JCR API Felix OSGi ECMAscript WebDAV standard custom servlets JCR console server servlets and components content JSP repository Ruby resource servlet/script JSR 223 scripting resolution resolution Velocity etc .. OSGi framework (Apache Felix) scarce resources help to focus!
Apache culture! Backwards compatibility
REST culture! Transparency
Transparency REST -> naturally transparent Good names Helpful messages Introspection tools
Good names? LoginException AbstractResource ModifiableValueMap AbstractResourceVisitor ModifiableValueMapDecorator AccessSecurityException ModifyingResourceProvider Adaptable NoAuthenticationHandlerException AdapterFactory NonExistingResource AdapterManager ObservationReporter AttributableResourceProvider ObserverConfiguration Authenticator OptingServlet CompositeValueMap ParametrizableResourceProvider DeepReadValueMapDecorator PersistableValueMap DynamicResourceProvider PersistenceException ExternalResourceListener PropertyBuilder HtmlResponse ProviderContext SlingAllMethodsServlet RefreshableResourceProvider SlingBindings RequestDispatcherOptions SlingConstants RequestParameter SlingException RequestParameterMap SlingHttpServletRequest RequestPathInfo SlingHttpServletRequestWrapper RequestProgressTracker SlingHttpServletResponse RequestUtil SlingHttpServletResponseWrapper ResolveContext SlingIOException Resource ResourceAccessSecurity ResourceChange
Low coupling
Low coupling HTTP debugger fj lesystem browser Sling Core JCR API ECMAscript WebDAV Felix OSGi standard custom servlets JCR server console servlets and components content JSP repository Ruby resource servlet/script JSR 223 scripting resolution resolution Velocity etc .. OSGi framework (Apache Felix) sailboats are very cool but we shouldn’t take their high coupling as an example…
quality has many dimensions often hard to measure
so, how is doing?
“many eyeballs” I’d say not bad thanks to a strong community with a culture of quality in design, implementation and testing.
Coda Y ou can’t measure it all: quality is multi-dimensional and needs to be part of your team’s culture. Thinking and reviewing along those axes can help build such a 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.
Recommend
More recommend