Ingeniería de Software Iv
Ingeniería de Software Iv
Ingeniería de Software Iv
Unidad 10
Reingeniería
SISTEMA TECNOLOGIA
Creación
REINGENIERÍA
Se originó a finales de la década de 1980 aunque se popularizó en la
década de 1990.
MODELO DE Refinamiento
e
REINGENIERÍA instanciación
Se integra en
un sistema de
DE PROCESO Creación de
Prototipos
Neg.
Definición
de Procesos
DE NEGOCIO Se
comprueba
“Procesos
Criticos”
el proceso
para
Especificació
refinamiento Evaluación
n y diseño
de Procesos
de Procesos
Casos prácticos Costes y tiempos
para diseño de de tareas
Proc.
PRINCIPIOS DE LA
REINGENIERÍA
The Boston Consulting Group, gracias a sus años de experiencia en la
consultoría relacionada con la Reingeniería, estima en doce los principios
clave en los que se basa la BPR:
implica:
MODELO DE
PROCESO DE
REINGENIERÍA
DE SOFTWARE
• Se divide en
procesos
separados que se
llevan a cabo
secuencialmente:
CUÁNDO ES NECESARIA LA
REINGENIERÍA?
A pesar de estas
razones, y antes de • Dejar el producto como está.
reconstruir un sistema
• Adquirir uno en el mercado que
en uso, es conveniente realice la misma función.
analizar las diversas
alternativas • Reconstruirlo.
disponibles:
RELACIONES TÉRMINOS
REINGENIERÍA
PASOS DE LA REINGENIERÍA DEL
SOFTWARE
La reingeniería del software involucra diferentes actividades como son:
• análisis de inventarios
• reestructuración de documentos
• ingeniería inversa
• reestructuración de programas y datos
• ingeniería directa
La documentación débil
es la marca de muchos
El sistema es crucial
sistemas heredados.
La documentación debe para el negocio y debe Cada una de estas
¿Pero que se hace
actualizarse pero se volver a documentarse opciones es viable. Una
acerca de ellos?
tiene recursos limitados. por completo incluso en organización de software
¿Cuáles son las
Se utiliza un enfoque de este caso un enfoque debe elegir la más
opciones? Crear
“documentar cuando se inteligente es recortar la apropiada para cada
documentación consume
toque”. documentación a un caso.
mucho tiempo, si el
mínimo esencial.
sistema funciona vivirá
con lo que tenga.
REINGENIERÍA: INGENIERÍA
INVERSA
Este término tiene sus orígenes en el mundo del hardware. Una cierta compañía
desensambla un producto de hardware competitivo en un esfuerzo por comprender los
“secretos” del diseño y fabricación de su competidor.
En esencia, una ingeniería inversa con éxito precede de una o más especificaciones de diseño y
fabricación para el producto, mediante el examen de ejemplos reales de ese producto.
REINGENIERÍA: INGENIERÍA
INVERSA
La ingeniería inversa del software es algo similar. En la mayoría de los casos, el programa del cual
hay que hacer una ingeniería inversa no es el de un rival, sino, más bien, el propio trabajo de la
compañía.
Los “secretos” que hay que comprender resultan incomprensibles porque nunca se llegó a
desarrollar una especificación.
Llevar a cabo esta actividad requiere analizar el código fuente empleando una herramienta de
reestructuración, se indican las violaciones de las estructuras de programación estructurada, y
entonces se reestructura el código (esto se puede hacer automáticamente).
Cuando la estructura de datos es débil (por ejemplo, actualmente se implementan archivos planos, cuando
un enfoque relacional simplificaría muchísimo el procesamiento), se aplica una reingeniería a los datos.
Dado que la arquitectura de datos tiene una gran influencia sobre la arquitectura del programa, y también
sobre los algoritmos que lo pueblan, los cambios en datos darán lugar invariablemente a cambios o bien
de arquitectura o bien de código.
REINGENIERÍA: INGENIERÍA
DIRECTA
La ingeniería directa no solo
Después de un espacio de
recupera la información de
tiempo corto, es probable que
En un mundo ideal, las diseño a partir del software
llegue a aparecer este “motor”,
aplicaciones se reconstruyen existente, también utiliza esta
pero los fabricantes de CASE
utilizando un “motor de información para alterar o
han presentado herramientas
reingeniería” automatizado. En reconstruir el sistema
que proporcionan un
el motor se insertaría el existente con la finalidad de
subconjunto limitado de estas
programa viejo, que lo mejorar su calidad global. En
capacidades y que se
analizaría, reestructuraría y la mayoría de los casos el
enfrentan con dominios de
después regeneraría la forma software sometido a
aplicaciones específicos. Lo
de exhibir los mejores reingeniería vuelve a
que es más importante, estas
aspectos de la calidad del implementar la función del
herramientas de reingeniería
software. sistema existente y también
cada vez son más
añade nuevas funciones o
sofisticadas.
mejoras
TALLER
• Hacer una investigación acerca de la Reingeniería de Software,
según Ian Sommerville.
• Defina los diferentes Métodos y modelos de la Reingeniería
Importante: La comunicación entre docente y estudiantes es únicamente a través del
correo electrónico: [email protected]
Igualmente se reciben desde el correo institucional del estudiantes pnombres-
[email protected]
También utilizaremos la plataforma Microsoft Teams
INGENIERÍA DE SOFTWARE IV
Unidad 9
Métricas en los Sistemas Orientados a
Objetos
En el contexto OO, la información se concentra mediante el encapsulamiento tanto de datos como de procesos
dentro de los límites de una clase u objeto.
Dado que las clases constituyen la unidad básica de los sistemas OO, la localización está basada en los objetos.
Por tanto, las métricas deberían de ser aplicables a la clase (objeto) como si se tratara de una entidad completa.
Además, la relación entre operaciones (funciones) y clases no es precisamente uno-a-uno. Por tanto, las métricas
que reflejan la forma en que colaboran las clases deben de ser capaces de adaptarse a las relaciones uno-a-
muchos y muchos-a-uno.
CARACTERÍSTICAS DEL SOFTWARE
OO: ENCAPSULAMIENTO
Pressman define el encapsulamiento como “el empaquetamiento (o enlazado) de una colección de elementos.
Para los sistemas OO, el encapsulamiento comprende las responsabilidades de una clase, incluyendo sus atributos (y
otras clases para objetos agregados) y operaciones, y los estados de la clase, según se definen mediante valores
específicos de atributos.
El encapsulamiento influye en las métricas cambiando el objetivo de la medida, que pasa de ser un único módulo a ser un
paquete de datos (atributos) y de módulos de procesamiento (operaciones).
Dado que la herencia es una característica fundamental de muchos sistemas OO, hay
muchas métricas OO que se centran en ella.
Ejemplos:
• se cuentan el número de descendientes (número de instancias inmediatas de una clase),
• número de predecesores (número de generalizaciones inmediatas),
• grado de anidamiento de la jerarquía de clases (profundidad de una clase dentro de una jerarquía de
herencia) y otros.
CARACTERÍSTICAS DEL SOFTWARE
OO:
ABSTRACCIÓN
La abstracción es un mecanismo que permite al diseñador centrarse en los detalles esenciales de
algún componente de un programa (tanto si es un dato como si es un proceso) sin preocuparse por
los detalles de nivel inferior.
Cuando los niveles de abstracción van elevándose, se ignoran más y más detalles, por lo tanto, se proporciona una
visión más general de un concepto u objeto. A medida que pasamos a niveles mas reducidos de abstracción, se
muestran más detalles, esto es, se proporciona una visión más específica de un concepto u objeto.
Dado que una clase es una abstracción que se puede visualizar con muchos niveles distintos de detalles, y de muchas
maneras diferentes, las métricas OO representan la abstracción en términos de medidas de una clase (p.ej.: número de
instancias por clase por aplicación).
MÉTRICAS PARA EL MODELO DE
DISEÑO ORIENTADO A OBJETOS
Gran parte del diseño orientado a objetos es subjetivo, un diseñador experimentado “sabe”
como puede caracterizar un sistema OO para que se implemente de forma efectiva los
requisitos del cliente.
Pero a medida que los modelos de diseño OO van creciendo de tamaño y complejidad,
puede resultar beneficiosa una visión más objetiva de las características del diseño, tanto
para el diseñador experimentado como para el menos experimentado.
Una visión objetiva del diseño debería de tener un componente cuantitativo y esto nos
lleva a las métricas OO, en donde se pueden aplicar no solo al modelo de diseño, sino
también al modelo de análisis [Laranjeira].
MÉTRICAS ORIENTADAS A
CLASES
Se sabe que la clase es la unidad principal de todo sistema OO. Por consiguiente, las medidas y
métricas para una clase individual, la jerarquía de clases, y las colaboraciones de clases resultarán
sumamente valiosas para un ingeniero de software que tenga que estimar la calidad de un diseño.
Se ha visto que la clase encapsula a las operaciones (procesamiento) y a los atributos (datos). La
clase suele ser el “predecesor” de las subclases (que a veces se denominan “descendientes”) que
heredan sus atributos de operaciones.
La clase suele colaborar con otras clases. Todas estas características se pueden utilizar como bases
de las métricas explicadas , a continuación:
MÉTRICAS ORIENTADAS A CLASES:
CONJUNTO DE MÉTRICAS CK
Uno de los conjuntos de métricas de software OO a los que se hace más ampliamente referencia es el
propuesto por Chidamber y Kemener . Estas métricas propuestas de diseño basadas en clases, a las
cuales suele aludirse con el nombre de conjunto de métricas CK para sistemas OO.
Los métodos ponderados por clase (MPC), son aquellos en donde se definen n métodos de complejidad
C1, C2..., Cn, para una clase C. La métrica de complejidad específica que se selecciona debe de
normalizarse de tal modo que la complejidad nominal para un método tome el valor 1.0.
Sin embargo, existen algunas ideas que pueden llegar a estimarse, se indican
a continuación tres métricas sencillas propuestas por Lorenz y Kidd:
Clases Clave • Por esta razón, unos valores elevados NCC indican que en nuestro camino
encontraremos una cantidad notable de trabajo de desarrollo.
• Lorenz y Kidd sugieren que entre el 20 y el 40 por ciento de todas las clases
(NCC). de un sistema OO típico son clases clave. El resto sirve como
infraestructura de apoyo (IGU, comunicaciones, bases de datos, etc.).
MÉTRICAS PARA PROYECTOS
ORIENTADOS A OBJETOS
Las métricas OO siguientes pueden
aportar ideas acerca del tamaño del
software:
Número de • El número de subsistemas proporciona una
idea general de la asignación de recursos,
SUBsistemas de la planificación (con especial hincapié en
el desarrollo en paralelo), y del esfuerzo
(NSUB). global de integración.
MÉTRICAS PARA PROYECTOS
ORIENTADOS A OBJETOS
Las métricas NCC y NSUB se pueden escoger para otros
proyectos OO anteriores, y se pueden relacionar con el
esfuerzo invertido en el proyecto y también con las
actividades de proceso individuales.