1/94
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai | Chat |
|---|
No analytics yet
Send a link to your students to track their progress
Objetivo de tecnologia de componentes
Construir aplicaciones mediante ensamblado de modulos que han sido previamente dsenados a fin de ser reusados en multiples aplicaciones
Componente
bloque de contrusccion modular para software de computadora
se puede definier desde 3 puntos de vista:
orientado a objetos
convencional
relacionado a procesos
Componentes vista orientado a objetos
un componente contiene un conjunto de clases que colaboran entre si
el diseno de un componente implica anadir a la definicion de clases en el analisis
Componentes vista convencional
Es un elemento funcional de un programa que incluye:
logica de procesamiento
estructuras de datos internas requeridas para implementar dicha logica
una interfaz que permite que el componente sea invocado y que se le puedan pasar datos
llamado modulo
Roles a nivel de componentes convencionales
componentes de control:
coordina el llamado a otros componentes del dominio del problema
Componente del dominio del problema:
implementa una funcion completa o parcial que es requerida por el usuario
Componente de infraestructura:
responsable de las funciones que apoyan el procesamiento requerido en el dominio del problema
Componentes vista relacionado al proceso
Reutiliza software
se escogen componentes que fueron creados para ser reutilizados
Diseño de componentes basado en clases
4 principios basicos de diseno":
abierto-cerrado
un componente debe estar abierto a extensiones pero cerrado para modificaciones
substitucion de liskov
las subclases deben ser sustituibles por sus clases bases
equivalencia de liberacion y reuso
agrupar clases reusables en paquetes que se puedan administrar y controlar cuando una nueva version se genere
dependencia de inversion
se debe depender de abstracciones, no de eventos concretos
Guias de diseno
establecer convenciones para poner nombres
utilice notacion de interfaces siempre que pueda
modele las dependencias de izquierda a derecha y la herencia de abajo hacia arriba
Cohesion
Implica que un componente encapsula solo atributos y operaciones que estan altamente relacioneados entre ellas y con la clase
se busca la maxima cohestion en una clase
Acoplamiento
es la medida cualitativa del grado en que una clase esta conectada con otra
se busca el minimo acoplamiento entre clases
Pasos para el diseno a nivel de componentes
describa fuentes de datos persistentes e identifique las clases requeridas para manipularlos
desarrolle y elabore representaciones del comportamiento de una clase o componentes
elabora diagramas de liberacion para dar detalles adicionales de implementacion
revise cada representacion de disenio de los componentes y siempre considera alternativas
Refactorizacion
Un cambio hecho a la estructura interna del software para hacerlo mas facil de entender sin modificar su comportamiento
No es:
optimizacion de codigo
limpieza de codigo
reescritura
Principios del refactoring
la prioridad es mantener el comportamiento actual
comenzar con un objetivo en mente
siempre proceder en pasos pequenos y controlados
nunca refactorizar y modificar al mismo tiempo
Reglas de oro de refactoring
Cuando necesitamos anadir una nueva funcionalidad a una aplicacion, si la estructura no es adecuada para introducir los cambios necesarios, primero hay que refactorizar el codigo
Cuando hay que refactorizar codigo?
Refactorizar durante todo el ciclo de vida de una aplicacion ahorratiempo e incrementa la calidad del proyeto
Motivos para refactorizar
mejorar el diseno del software
hacer que el codigo sea mas facil de entender
hacer que sea mas snecillo encontrar fallos
permite programar mas rapidamente
Beneficios de refactoring
reducir complejidad
mayor legibilidad
reducir tiempo de solucion de errores
reducir tiempo de anadir nuevas features
reducir deuda tecnica
evitar errores en el futuro
pone el timpo a correr a tu favor
Cuando no refactorizar
Cuando el codigo original es tan malo que merece la pena reescribirlo desde el principio
Cuando se estan a punto de cumplir los plazos
ie: metodos largos o codigo duplicado
Prueba unitarias y funcionales
pruebas unitarios son una forma de probar el correcto funcionamiento de un modulo de codigo
la idea es escribir casos de prueba para cada funcion, de forma que cada caso sea independiente del resto
las pruebas funcionales verifican una aplicacion comprobando que su funcionalidad se ajusta a los requerimientos o a los documentos de diseno
Requisitos de una prueba unitaria
automatizable
no deberia requerirese una intervencion manual
repetible
no se deben crear pruebas que solo puedan ser ejecutadas una sola vez
independiente
la ejecucion de una prueba no debe afectar a la ejecucion de otra
profesional
las pruebas deben ser consideradas igual que el codigo
Cuando realizar pruebas unitarias
anadir o quitar un parametro
cambiar el nombre de un metodo
Pasos para refactorizacion: replace type code with state
cambiar los valores de las condiciones y acciones de los metodos
mover las acciones asociadas a las condiciones a las subclases