Semana Informática 2013 - Seminario Cajón de Sastre
-
Upload
raquelmorenocarmena -
Category
Technology
-
view
127 -
download
2
description
Transcript of Semana Informática 2013 - Seminario Cajón de Sastre
El “cajón de sastre” del desarrollo de softwareSeminario
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
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
eXce
nti
a : E
l “ca
jón
de
sast
re”
del
des
arro
llo d
e so
ftw
are
24
/04
/20
13
eXce
nti
a : E
l “ca
jón
de
sast
re”
del
des
arro
llo d
e so
ftw
are
24
/04
/20
13
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í”
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
eXce
nti
a : E
l “ca
jón
de
sast
re”
del
des
arro
llo d
e so
ftw
are
24
/04
/20
13
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
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
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
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
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)
eXce
nti
a : E
l “ca
jón
de
sast
re”
del
des
arro
llo d
e so
ftw
are
24
/04
/20
13
eXce
nti
a : E
l “ca
jón
de
sast
re”
del
des
arro
llo d
e so
ftw
are
24
/04
/20
13
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
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
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
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
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
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”
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 ()
{...}
}
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.”
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)
{....}
}
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();
}
}
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.”
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
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
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.”
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.”
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();
}
}
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();
}
}
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
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)
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();
…
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 “
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
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
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
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…
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
eXce
nti
a : E
l “ca
jón
de
sast
re”
del
des
arro
llo d
e so
ftw
are
24
/04
/20
13
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
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())
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;
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++) {
...
}
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.
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;
}
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
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
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 . . ."
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”
eXce
nti
a : E
l “ca
jón
de
sast
re”
del
des
arro
llo d
e so
ftw
are
24
/04
/20
13
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
eXce
nti
a : E
l “ca
jón
de
sast
re”
del
des
arro
llo d
e so
ftw
are
24
/04
/20
13
eXce
nti
a : E
l “ca
jón
de
sast
re”
del
des
arro
llo d
e so
ftw
are
24
/04
/20
13
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
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
eXce
nti
a : E
l “ca
jón
de
sast
re”
del
des
arro
llo d
e so
ftw
are
24
/04
/20
13
eXce
nti
a : E
l “ca
jón
de
sast
re”
del
des
arro
llo d
e so
ftw
are
24
/04
/20
13
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
eXce
nti
a : E
l “ca
jón
de
sast
re”
del
des
arro
llo d
e so
ftw
are
24
/04
/20
13
eXce
nti
a : E
l “ca
jón
de
sast
re”
del
des
arro
llo d
e so
ftw
are
24
/04
/20
13
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
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.”
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
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