Upload
trivadis
View
55
Download
2
Embed Size (px)
Citation preview
BASEL BERN BRUGG DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. GENF HAMBURG KOPENHAGEN LAUSANNE MÜNCHEN STUTTGART WIEN ZÜRICH
Secrets of creation of Secrets of creation of reliable + maintainable (= cost effective) reliable + maintainable (= cost effective) softwaresoftware
Jonatan KazmierczakJonatan Kazmierczak
Cost effective software – Jonatan Kazmierczak – TechEvent 2017
Why is it important?
we and our customers want to be cost effective
we want to create reliable and maintainable software we want to help our customers to do the same
We want to avoid expensive failuresWe want to avoid expensive failures
Cost effective software – Jonatan Kazmierczak – TechEvent 2017
About author
senior consultant at Trivadis creator of Class Visualizer creates software for 28 years top rated participant in contests
in programming and data science:HackerRank, TopCoder, Code Jam
conference speaker fan of Atari XL/XE demos
Cost effective software – Jonatan Kazmierczak – TechEvent 2017
About author – cont.www.hackerrank.com/jonatan_k
1st rank in Java 1st rank in JavaScript Top 1% in functional programming in Scala Top 1% in SQL Medalist in algorithmic contests
Cost effective software – Jonatan Kazmierczak – TechEvent 2017
Agenda
Stable ground Clear boundaries Solid foundation Proper construction Quality assurance Summary Questions / Comments
Cost effective software – Jonatan Kazmierczak – TechEvent 2017
Mottos
"80% of the lifetime cost of a piece of software goes to maintenance" – Java Code Conventions (12.09.1997, Sun Microsystems)
“Everything should be made as simple as possible”– Albert Einstein (probably)
Stable groundStable ground
Cost effective software – Jonatan Kazmierczak – TechEvent 2017
Stable ground
Clear purpose of the software
Cost effective software – Jonatan Kazmierczak – TechEvent 2017
Stable ground
Clear requirements classified as
mandatory (must have) desired (should have) optional (nice to have)
Cost effective software – Jonatan Kazmierczak – TechEvent 2017
Stable ground
Requirements – challenges usually incomplete and not clear enough at the beginning will be extended afterwards some may be changed or removed
Cost effective software – Jonatan Kazmierczak – TechEvent 2017
Stable ground – checkpoint
Is there an existing product fulfilling the purpose and most of requirements ?
Usually it is cheaper and safer to buy it →than to create the own one
Clear boundariesClear boundaries
Cost effective software – Jonatan Kazmierczak – TechEvent 2017
Clear boundaries
Clear constraints
cannot change dramatically afterwards→
Cost effective software – Jonatan Kazmierczak – TechEvent 2017
Clear boundaries
Defined input and output – how to interact with the software
will be extended and maybe changed in the future→
Cost effective software – Jonatan Kazmierczak – TechEvent 2017
Clear boundaries – checkpoint
Do we have a clear picture of input, output and constrainsof the new software?
Solid foundationSolid foundation
Cost effective software – Jonatan Kazmierczak – TechEvent 2017
Architecture
allowing to fulfill requirements in the simplest way allowing the software to be:
easily extended possible to change
with limited dependencies on external libraries and tools each dependency can become a project killer→
Cost effective software – Jonatan Kazmierczak – TechEvent 2017
Design
easy to maintain and to extend clear picture of flows (what, not necessarily how) interfaces (UI, REST, API)
UI mockups highly recommended →
Proper constructionProper construction
Cost effective software – Jonatan Kazmierczak – TechEvent 2017
Implementation
starting with mockups of exposed interfaces– for easy integration and verification
Cost effective software – Jonatan Kazmierczak – TechEvent 2017
Implementation
correct syntactically, logically, functionally easy to maintain and to extend
Cost effective software – Jonatan Kazmierczak – TechEvent 2017
Implementationeasy to maintain and to extend
as simple as possible + clean = easy to understand– with meaningful, descriptive names
with logging tested (discussed later) boilerplate code should be generated
– regeneration should be possible with constants and enums representing:
magic numbers, strings, sets of allowed values
Cost effective software – Jonatan Kazmierczak – TechEvent 2017
Implementationeasy to maintain and to extend
best choice of used classes/interfaces first - language API next - existing external libraries last - eventual new libraries
stateless and immutable whenever possible minimal needed visibility/scope no useless/unused code and comments
Cost effective software – Jonatan Kazmierczak – TechEvent 2017
Implementationeasy to maintain and to extend
no redundancy/duplications proper exception handling/throwing formatted properly to ensure maximal readability following (language-specific) coding rules and conventions
Cost effective software – Jonatan Kazmierczak – TechEvent 2017
Implementation– easy to (re)build
built by execution of one simple command (not only from IDE) fast build for developers long-running build for automated verification outcome: distributable package
Cost effective software – Jonatan Kazmierczak – TechEvent 2017
Implementation
documented
– especially public APIs / interfaces
Quality assuranceQuality assurance
Cost effective software – Jonatan Kazmierczak – TechEvent 2017
Quality assurance– involving people
working in pairs review of everything:
requirements, architecture, design, implementation
Cost effective software – Jonatan Kazmierczak – TechEvent 2017
Quality assurance– automated
sending notifications in case of new problem(s) build unit tests
at least partially written not by author of tested code→
verification of coding rules and conventions
Cost effective software – Jonatan Kazmierczak – TechEvent 2017
Quality assurance– automated
smoke test integration tests static code analysis system / end-to-end tests
SummarySummary
Cost effective software – Jonatan Kazmierczak – TechEvent 2017
What do you need to be successful
Stable ground Clear boundaries Solid foundation Proper construction Quality assurance
Questions / CommentsQuestions / Comments
Cost effective software – Jonatan Kazmierczak – TechEvent 2017
Session Feedback – now
Please use the Trivadis Events mobile app to give feedback on each session
Use "My schedule" if you have registered for a session;
Otherwise use "Agenda" and the search function
If the mobile app does not work, use the web browser URL: http://trivadis.quickmobileplatform.eu/ User name: <your_loginname> (such as "svv") Password: sent by e-mail...
Thank you!Thank you!Jonatan KazmierczakJonatan Kazmierczak