trivadis techevent 2017 secrets of creation of reliable + maintainable (=cost effective) software by...

Post on 23-Jan-2018

55 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related