1 of 18

Mosty, katastrofy a bytecode

Dospělost softwarového inženýrství

Fratnišek Řezáč

2 of 18

...

3 of 18

4 of 18

Robert C. Martin

Můžete vyrazit na jeden z tamtěch mostů, začít odmontovávat šrouby a pravděpodobně nespadnou. … Mosty jsou odolné - přestojí ztrátu součástek. Ale software není vůbec odolný: změna jediného bitu a - BUM! - spadne.

https://blog.zvestov.cz/software%20development/2014/10/20/tdd-jako-podvojne-ucetnictvi

http://blog.unhandled-exceptions.com/index.php/2009/02/15/uncle-bob-tdd-as-double-entry-bookkeeping/

5 of 18

HTML

6 of 18

VerifaLabs

7 of 18

lib1.jar

@Autowire�Greeter g;

�void foo() {String world = "world";// invokevirtual�g.sayHello(world)}

lib2.jar

public class Greeter {��//(Ljava/lang/String)Vpublic void sayHello(String to) {...}

8 of 18

Diamond problem

9 of 18

Diamond problem

10 of 18

Tipovačka

  • Scope 400 MD
  • war ~ 70MB
  • Liferay, Spring, Jpa, Vaadin
  • Počet nekonzistencí v bytecode?

11 of 18

> 100 000

12 of 18

Proč?

public void sayHello(String to, OutputStream where) {

g.sayHello("world", System.out);

if (xy) {� g.sayHello("world" );}

13 of 18

Code path v modulárním software

14 of 18

15 of 18

Wheel path

16 of 18

Wheel path

17 of 18

Co chci říct

  • Inspirace z jiných oborů je OK
  • Používání příměrů je zrádné
  • Hlavní mezník dospělosti je schopnost přesné sebereflexe

18 of 18

Kam dál?

  • Real Software Engineering: https://www.infoq.com/presentations/Software-Engineering
  • VerifaLabs: http://www.verifalabs.com/
  • Modularita: https://calavera.info/v3/blog/2017/02/26/modularita-1.html
  • Fault tolerant systems are faulty: https://www.johndcook.com/blog/2012/07/13/fault-tolerant-systems-are-faulty/
  • How complex systems fail: http://web.archive.org/web/20141009231131/http:/www.ctlab.org/documents/How%20Complex%20Systems%20Fail.pdf
  • Modern software authors have the professional discipline of a cute puppy: https://twitter.com/www_ora_tion_ca/status/1027539289750429696