67
El “cajón de sastre” del desarrollo de software Seminario

Semana Informática 2013 - Seminario Cajón de Sastre

Embed Size (px)

DESCRIPTION

Presentación del seminario "Cajón de Sastre" impartido durante la Semana Informática 2013 en Valencia.

Citation preview

Page 1: Semana Informática 2013 - Seminario Cajón de Sastre

El “cajón de sastre” del desarrollo de softwareSeminario

Page 2: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

Agenda

• Motivación

• Apertura del cajón

• Reflexión final

• Ronda de preguntas

Page 3: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

• Motivación• Apertura del cajón

• Reflexión final

• Ronda de preguntas

Agenda

Page 4: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

Page 5: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

Page 6: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

Hacer las cosas bien significa perder el tiempo y dinero

Tener control de calidad es disponer de pruebas funcionales

Falta de empatía con el usuario final

Equipos desmotivados

“Siempre se ha hecho así”

Page 7: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

• Motivación

• Apertura del cajón• Reflexión final

• Ronda de preguntas

Agenda

Page 8: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

Page 9: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

DEV

…PRO

DEV

DEV

Page 10: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

DEV

…PRO

DEV

DEV

PRE

Page 11: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

DEV

…PRO

DEV

DEV

PRE

Page 12: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

DEV

…PROPRE

DEV

DEV

CIVersionControlSystem

continuousdeployment

continuousdelivery

continuousintegration

Page 13: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

Kent Beck

Martin Fowler

Extremme Programming (XP)

Page 14: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

Page 15: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

Page 16: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

TDDRefactor

Red

Green

Page 17: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

Unit Testing ≠ Integration Testing

mock stub

¿Unit Testing?

objetos de simulación

Page 18: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

F.I.R.S.T Principle

Fast

Isolated

Repeateable

Self-validating

Timely

Page 19: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

TDDRefactor

Red

Green

Page 20: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

"Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.“

D.R.Y. PrincipleDon’t Repeat Yourself

Page 21: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

S.O.L.I.D. Principles

Robert C. Martin“Uncle Bob”

Page 22: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

S. O. L. I. D.Single Responsibility Principle

“There should never be more than onereason for a class to change”

public class SuperDashboard extends JFrame {

public Component getLastFocusedComponent()

{...}

public void setLastFocusedComponent(Component lastFocusedComponent)

{...}

public int getMajorVersionNumber ()

{...}

public int getMinorVersionNumber ()

{...}

public int getBuildNumber ()

{...}

}

Page 23: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

S. O. L. I. D.Open-Closed Principle

“Software entities (classes, modules, functions, etc.) shouldbe open for extension, but closed for modification.”

Page 24: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

S. O. L. I. D.Open-Closed Principle

class GraphicEditor {

...

public void drawShape(Shape shape) {

if (shape.type == RECTANGLE)

drawRectangle(shape);

else if (shape.type == CIRCLE)

drawCircle(shape);

}

public void drawCircle(Circle circle)

{....}

public void drawRectangle(Rectangle rectangle)

{....}

}

Page 25: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

S. O. L. I. D.Open-Closed Principle

class Shape {

abstract void draw();

}

class Rectangle extends Shape {

public void draw() {

// draw the rectangle

}

}

class GraphicEditor {

public void drawShape(Shape shape) {

shape.draw();

}

}

Page 26: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

S. O. L. I. D.Liskov Substitution Principle

“Functions that use pointers or references to base classes must be able to use objects of derived

classes without knowing it.”

Page 27: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13S. O. L. I. D.

class Rectangle {

...

public void setWidth(int width){ this.width = width; }

public void setHeight(int height) {this.height = height;}

public int getWidth(){ return width; }

public int getHeight(){ return height; }

public int getArea(){ return width * height; }

}

class Square extends Rectangle {

public void setWidth(int width){

this.width = width;

this.height = width;

}

public void setHeight(int height){

this.width = height;

this.height = height;

}

}

Liskov Substitution Principle

Page 28: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

class LspTest {

private static Rectangle getNewRectangle() {

...

return new Square();

}

public static void main (String args[]) {

Rectangle r = LspTest.getNewRectangle();

r.setWidth(5);

r.setHeight(10);

System.out.println(r.getArea());

}

}

S. O. L. I. D.Liskov Substitution Principle

Page 29: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

S. O. L. I. D.Interface Segregation Principle

“Clients should not be forced to depend uponinterfaces that they do not use.”

Page 30: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

S. O. L. I. D.Dependency Inversion Principle

“High level modules should not depend upon low level modules. Both should depend upon abstractions.”

“Abstractions should not depend upon details. Details shoulddepend upon abstractions.”

Page 31: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13S. O. L. I. D.

Dependency Inversion Principle

class Worker {

public void work() {

// ....working

}

}

class Manager {

Worker worker;

public void setWorker(Worker worker) {

this.worker = worker;

}

public void manage() {

worker.work();

}

}

Page 32: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13S. O. L. I. D.

Dependency Inversion Principleinterface IWorker {

public void work();

}

class Worker implements IWorker {

public void work() { ... }

}

class SuperWorker implements IWorker {

public void work() { ... }

}

class Manager {

Iworker worker;

public void setWorker(IWorker worker) {

this.worker = worker;

}

public void manage() {

worker.work();

}

}

Page 33: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

Martin Fowler

Page 34: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

En el método m de una clase sólo deberían aparecen llamadas a:

• Un método de un miembro de dicha clase

• Otro método de dicha clase

• Un método de un objeto creado por m

• Un método de un objeto pasado como argumento a m

No se debe llamar a métodos de los objetos devueltos por otros métodos.

Law of Demeter (LoD)

Page 35: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

String outputDir = context.getOptions().getDir().getAbsolutePath();

String outputDir = context.getAbsolutePathOfOptionsDir();

return options.getAbsolutePathOfDir();

return directory.getAbsolutePath();

Page 36: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

“Aquel que no conoce la historia, está condenado a repetirla “

Page 37: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

¿Dónde te vas de vacaciones?

5 segundos para continuar…

espacio publicitario

Page 38: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

¿Dónde te vas de vacaciones?

5 segundos para continuar…

espacio publicitario

Planifica también tus pruebas

Page 39: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

espacio publicitario

1 segundo para continuar…

Pruebas funcionales automatizadas…

…trátalas con cariño

Page 40: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

Más ideas para conseguir un código legible…

Page 41: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

Código spaghetti

Page 42: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

Page 43: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

Código ravioli

Page 44: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

// if the item should be deleted

if ((item.amountInStock() == 0) && item.lastEdition())

if (item.shouldBeDeleted())

Page 45: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

int n; // Number of items.

int numberOfItems;

Page 46: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

for (int i = 0; i < 10; i++) {

...

}

for (int i = 0; i < MAX_ARTICLES_IN_STOCK; i++) {

...

}

Page 47: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

Principle of least astonishment (POLA/PLA)

The result of performing some operation should be obvious, consistent, and predictable, based upon the name of the operation and other clues.

Page 48: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

public Space getSpace() {

if (space == null) {

space = new Space();

}

return space;

}

public Space createOrReturnSpace() {

if (space == null) {

space = new Space();

}

return space;

}

Page 49: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

Mutation Testing

Page 50: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

• Motivación

• Apertura del cajón

• Reflexión final• Ronda de preguntas

Agenda

Page 51: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

"Try and leave this world a little better than you found it . . ."

Page 52: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

The Boy Scout Rule

"Leave the campground cleaner than you found it“

Robert C. Martin“Uncle Bob”

Page 53: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

Page 54: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

“It seems that perfection is reached not when there is nothing left to add, but when there is nothing left to take away”

Antoine de Saint Exupéry

K.I.S.S. PrincipleKeep It Small and Simple

Page 55: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

Page 56: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

Page 57: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

Muévete Lee

Practica Comparte

Page 58: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

Coding Codedojo kata

Page 59: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

Page 60: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

Page 61: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

Oath of Non-Allegiance

"I promise not to exclude from consideration any idea based on its source, but to consider ideas across schools and heritages in order to find the ones that best suit the current situation."Alistair Cockburn

Page 62: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

Page 63: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

Page 64: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

“Life begins at the end of your comfort zone”

Neal Donald Walsh

Page 65: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

“It is not the strongest of the

species that survives, nor the

most intelligent that survives.

It is the one that is most

adaptable to change.”

Page 66: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

• Motivación

• Apertura del cajón

• Reflexión final

• Ronda de preguntas

Agenda

Page 67: Semana Informática 2013 - Seminario Cajón de Sastre

eXce

nti

a : E

l “ca

jón

de

sast

re”

del

des

arro

llo d

e so

ftw

are

24

/04

/20

13

@excentiawww.excentia.es

Raquel [email protected]

Muchas gracias por su atención