¿Por qué?
|
|
|
¿Qué?
|
|
Análisis | Diseño |
---|---|
analizar los requisitos a través de su refinamiento y estructura para realizar una compresión más precisa de los requisitos, una descripción de los requisitos que es fácil de mantener y ayuda a estructurar el sistema: |
desarrollar enfocados en los requisitos no funcionales y en el dominio de la solución para preparar para la implementación y pruebas del sistema: |
|
|
|
|
¿Para qué?
|
|
|
¿Cómo?
|
|
Modelo del Dominio
Cuando los programadores piensan en los problemas, en términos de comportamientos y responsabilidades de los objetos, traen con ellos un caudal de intuición, ideas y conocimientos provenientes de su experiencia diaria
— Budd
Programación Orientada a Objetos. 1994 |
En lugar de un saqueador de bits que saquea estructuras de datos, nosotros tenemos un universo de objetos con buen comportamiento que cortésmente se solicitan entre sí cumplir diversos deseos
— Ingalls
Design Principles Behind Smalltalk. Byte vol. 6(8) |
Índice | |
---|---|
|
|
|
Antipatrón “Descomposición Funcional”
Sinónimos | Synonyms | Libro | Autor |
---|---|---|---|
Descomposición Funcional |
Functional Descomposition |
Antipatrón de Desarrollo |
William Brown et al |
Síntomas | Justificación | Solución | Ejemplo |
---|---|---|---|
|
|
|
Estrategias de Clasificación
Descripción informal
|
|
Análisis clásico
|
|
|
|
|
|
|
||
|
|
|
|
Análisis del Dominio
|
|
|
|
|
Análisis del Comportamiento
|
el conocimiento que un objeto mantiene y las acciones que un objeto puede realizar. Las responsabilidades tienen el propósito de transmitir un sentido de la finalidad de un objeto y su lugar en el sistema. Las responsabilidades de un objeto son todos los servicios que presta a todos los contratos que apoya
— Rebecca Wirfs-Brock; Wilkerson y Wiener
|
Patrón de Experto en la Información | |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
Análisis de Casos de Uso
|
|
|
|
|
Relaciones entre Clases
|
Un objeto en si mismo no es interesante. Los objetos contribuyen al comportamiento de un sistema colaborando con otros objetos
— Grady Booch
Análisis y Diseño Orientado a Objetos. 1996 |
Tipos de Relaciones entre Clases
Relaciones/Dependencias por Colaboración entre Objetos | Relaciones/Dependencias por Transmisión entre Clases |
---|---|
|
|
|
|
Relaciones entre Clases por Colaboración
Característica | Definición | Ejemplos |
---|---|---|
Visibilidad |
carácter privado o público de la colaboración entre dos objetos, o sea si otros objetos o no colaboran también con el que recibe los mensajes. |
un profesor colabora con de forma privada con su bolígrafo que mordisquea y nadie más “colabora” con él y colabora con un proyector del aula y otros profesores también colaboran con él |
Temporalidad |
mayor o menor duración de la colaboración entre dos objetos que colaboran. |
un profesor colabora un tiempo “reducido” (5 horas!) con el proyector del aula y, por tiempo “indefinido” colabora con su computadora con todos sus documentos, instalaciones, … |
Versatilidad |
intercambiabilidad de los objetos en la colaboración con otro objeto. |
un profesor colabora con su computadora para preparar la documentación de un curso y colabora con cualquier computadora para consultar el correo electrónico |
Relación de Composición/Agregación
Definición | Ejemplos | |
---|---|---|
|
|
|
|
|
Relación de Composición | Relación de Agregación |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Características | Notación UML | Código Java |
---|---|---|
|
|
|
|
Características | Notación UML | Código Java |
---|---|---|
|
|
|
|
Relación de Asociación
Definición | Ejemplos | |
---|---|---|
|
|
|
|
|
Características | Notación UML | Código Java |
---|---|---|
|
|
|
|
Relación de Dependencia/Uso
Definición | Ejemplos | |
---|---|---|
|
|
|
|
|
Características | Notación UML | Código Java |
---|---|---|
|
|
|
|
Comparativa de Relaciones entre Clases por Colaboración
|
|
La decisión de utilizar una agregación es discutible y suele ser arbitraria. Con frecuencia, no resulta evidente que una asociación deba ser modelada en forma de agregación, En gran parte, este tipo de incertidumbre es típico del modelado; este requiere un juicio bien formado y hay pocas reglas inamovibles. La experiencia demuestra que si uno piensa cuidadosamente e intenta ser congruente la distinción imprecisa entre asociación ordinaria y agregación no da lugar a problemas en la práctica.
— Rumbaugh
1991 |
|
Relaciones entre Clases por Transmisión
Herencia por especialización | Herencia por extensión | Herencia por limitación | Herencia por construcción |
---|---|---|---|
donde la clase descendiente implementa todas las operaciones de la clase base, añadiendo o redefiniendo partes especializadas |
donde la especialización transforma el concepto de la clase base a la clase derivada |
donde la clase descendiente no implementa todas las operaciones de la clase base, completamente desaconsejada porque imposibilita el tratamiento polimórfico |
donde realmente es una relación de composición, completamente desaconsejada si no existe herencia privada como en C++ |
Compartiva entre Herencia y Composición | ||
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ejemplos | |
---|---|
|
|
Legibilidad
Software | autoexplicativo | consistente | y mínimo |
---|---|---|---|
Una línea de código se escribe una vez y se lee cientos de veces
— Tom Love
|
|
|
|
Software Autoexplicativo
Nombrado
Sinónimos | Synonyms | Libro | Autor |
---|---|---|---|
Elige nombres descriptivos |
Choose descriptive names |
Clean Code |
Robert Martin |
Elige nombres al nivel de abstracción apropiado |
Choose names at the appropriate level of abstraction |
Clean Code |
Robert Martin |
Usa nomenclatura estándar donde sea posible |
Use standard nomenclature where possible |
Clean Code |
Robert Martin |
Nombre no ambiguos |
Unambiguous name |
Clean Code |
Robert Martin |
Usa nombres largos para ámbitos largos |
Use long names for long scopes |
Clean Code |
Robert Martin |
Evita codificaciones |
Avoid Encodings |
Clean Code |
Robert Martin |
Los nombre deberían describir los efectos laterales |
The names should describe the side effects |
Clean Code |
Robert Martin |
Justificación | Implicaciones | Violaciones TicTacToe |
---|---|---|
|
|
|
Comentarios
- Justificación | - Implicaciones | - Violaciones TicTacToe |
---|---|---|
No comentes código malo, reescribelo
— Kernighan & Plaugher
|
|
|
Formato
Justificación | Implicaciones | Violaciones TicTacToe |
---|---|---|
Un equipo de desarrolladores debe ponerse de acuerdo sobre un único estilo de formato y luego todos los miembros de ese equipo debe usar ese estilo.
— Martin
R. |
|
|
Software Consistente
Estándares
Sinónimos | Synonyms | Libro | Autor |
---|---|---|---|
Seguir las convencion estándar |
Follow Standard Conventions |
Clean Code |
Robert Martin |
|
|
|
|
Alertas
Sinónimos | Synonyms | Libro | Autor |
---|---|---|---|
Seguridad anulada |
Overridden Safeties |
Clean Code |
Robert Martin |
Justificación | Ejemplos |
---|---|
|
|
Consistencia
Sinónimos | Synonyms | Libro | Autor |
---|---|---|---|
Inconsecuencia |
Inconsistency |
Clean Code |
Robert Martin |
Justificación | Ejemplos |
---|---|
|
|
Software Mínimo
Código Muerto
Sinónimos | Synonyms | Libro | Autor |
---|---|---|---|
Flujo de lava |
Lava Flow |
Justificación | Implicaciones | Violaciones TicTacToe |
---|---|---|
|
|
|
DRY
Sinónimos | Sinónimos | Libro | Autor |
---|---|---|---|
No te repitas |
DRY(Don’t Repeat Yourself) |
||
Fuente Única de la Verdad |
Single Source of Truth |
Antónimos | Antonyms | Libro | Autor |
---|---|---|---|
Código Duplicado |
Duplicate code |
Smell Code -(Refactoring) |
Martin Fowler |
Duplicación |
Duplication |
Smell Code(Clean Code) |
Robert Martin |
Copiar y Pegar |
Copy + Paste |
Antipatrónde Desarrollo |
William Brown et al |
Escribe todo dos veces o disfrutamos tecleando |
Write everything twice or we enjoy typing WET |
Justificación | Implicaciones | Violaciones TicTacToe |
---|---|---|
|
|
|
YAGNI
Sinónimos | Synonyms | Libro | Autor |
---|---|---|---|
No lo vas a necesitar |
You aren’t going to need it o You ain’t gonna need it |
||
Generalidad Especulativa |
Speculative Generality |
Smell Code(Refactoring) |
Martin Fowler |
Justificación | Implicaciones | Violaciones TicTacToe |
---|---|---|
|
|
|
Sintesis
|
|
Modelo del Dominio | |
---|---|
|
|
|
Legibilidad | |||
---|---|---|---|
Una línea de código se escribe una vez y se lee cientos de veces
— Tom Love
|
|
|
|
Bibliografía
Obra, Autor y Edición | Portada | Obra, Autor y Edición | Portada |
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ponente
|
|
|