Date post: | 22-Feb-2017 |
Category: |
Technology |
Upload: | pawel-klimczyk |
View: | 154 times |
Download: | 5 times |
Software Quality for Programmers
version 1.0
Paweł KlimczykGemotial 2016
About me
• Software engineer• Running Gemotial Software Studio • Co-organizer of WrocNET• Blog: http://blog.klimczyk.pl• Contact:• Twitter @pwlklm• Mail: [email protected]
@pwlklm blog.klimczyk.pl
Software quality definition
"capability of a software product to conform to requirements." (ISO/IEC
9001)
Deming:” The problem inherent in attempts to define the quality of a product, almost any product……….”Feigenbaum:”Quality is a customer determination, not an engineer's determination, not a marketing determination, nor a general management determination”Juran:” Two of these meanings dominate the use of the word: 1. Quality consists of those product features which meet the need of customers and thereby provide product satisfaction. 2. Quality consists of freedom from deficiencies. ”
Wikipedia
@pwlklm blog.klimczyk.pl
Quality in construction
http://www.leica-geosystems.es/images/new/product_solution/app_eng_siterunner.jpghttps://s-media-cache-ak0.pinimg.com/originals/97/ea/
a4/97eaa4fb3555decb132dc12064072e8c.jpg
@pwlklm blog.klimczyk.pl
„Quality” in code
@pwlklm blog.klimczyk.pl
Quality check
http://www.e-architect.co.uk/images/jpgs/singapore/uob_plaza_one_two_tr010709_1.jpg
https://i.kinja-img.com/gawker-media/image/upload/18mllspae8l8tjpg.jpg
@pwlklm blog.klimczyk.pl
„Great refactor”
https://assets.bwbx.io/images/users/iqjWHBFdfxIU/i0dwq8cFhDmE/v1/-1x-1.jpg
@pwlklm blog.klimczyk.pl
How do it in IT ?
How check quality in software ?
@pwlklm blog.klimczyk.pl
Measurement - WTF per minute measurement
aka Code Review
@pwlklm blog.klimczyk.pl
Measurement – Code Review
https://www.jetbrains.com/upsource/features/screenshots/Features-team-collaboration.png
@pwlklm blog.klimczyk.pl
Measurement - It’s not a bug, it’s a feature
@pwlklm blog.klimczyk.pl
Measurement - ROI
@pwlklm blog.klimczyk.pl
Quality and Quantity- what do you choose?
@pwlklm blog.klimczyk.pl
Technical debt and maintenace
Producing more code
leads to technical debt
@pwlklm blog.klimczyk.pl
Effective Quality Triangle
@pwlklm blog.klimczyk.pl
Bad Quality Examples
https://pl.wikipedia.org/wiki/ExoMars
@pwlklm blog.klimczyk.pl
Code Quality Core
Correctness
Readability
Performance
@pwlklm blog.klimczyk.pl
Formal Software Quality Measurement Models
Dromey (1992)McCall (1977)
Ghezzi (1991)
FURPS+ (1992)IEEE 1061 (1993)
ISO/IEC 9126-1 (1991)
Boehm (1978)
ISO/IEC 25010:2011 (2011)
ISO/IEC 9126:2001 (2001)
SATC (1995)
Kazman (2003) CMM (1991)
@pwlklm blog.klimczyk.pl
Formal Software Quality Measurement Metrics
Integrity Usability
Reliability
Correctness
Efficiency
Testability
Maintanability
Flexibility
Portability
Reusability
Interoperability
Performance
SupportabilityCompability
Configurability
Security
Operability
Stability
SafetyAnalizability
Changeability
Maturity
Accuracy
@pwlklm blog.klimczyk.pl
Formal Code Quality Measurement Methods
Cyclomatic Complexity
Lines of code
Cohesion
Code Coupling Circular Dependency
Temporal Coupling
@pwlklm blog.klimczyk.pl
SOLID, Design Patterns, TDD, XP.
SOLID
Design Patterns
Extreme programming
Test driver development
Domain driven development
Best practicesContinuous Integration
Continuous deployment
@pwlklm blog.klimczyk.pl
Tooling
Jira
TeamCity
JenkinsSonarQube
UpSource
NDepend/JDepend
JUnit/NUnit
FindBugs
JarAnalyzer
UCDetector
Cobertura
Checkstyle
FxCop
StyleCop Bamboo
@pwlklm blog.klimczyk.pl
Developer skills
http://manifesto.softwarecraftsmanship.org/
Not only working software,but also well-crafted softwareNot only responding to change,but also steadily adding valueNot only individuals and interactions,but also a community of professionalsNot only customer collaboration,but also productive partnerships
@pwlklm blog.klimczyk.pl
The Software Craftsman
Sandro Mancuso
@pwlklm blog.klimczyk.pl
Specifications
@pwlklm blog.klimczyk.pl
Organization quality triangle
@pwlklm blog.klimczyk.pl
Conclusions (I)
Whole organization contributes in delivering
quality
What quality do we deliver?
@pwlklm blog.klimczyk.pl
Conclusions (II)
What developers can do to improve quality?•Craftmanship
•SOLID + Design Patterns + tooling•XP, TDD, BDD, DDD•Change organization or change organization
@pwlklm blog.klimczyk.pl
Conclusions (III)
Maintenance costs is ~75% of total costs in application
life-cycle