Professional Documents
Culture Documents
21
Administración de Proyectos Conceptos Gestión PSW
2.2. Líderes de equipo: las actividades son humanas, pero los profesionales competentes
con frecuencia no son buenos líderes de equipo. No tienen la mezcla correcta de
habilidades con el personal. Modelo MOI sugiere: Motivación: la habilidad para
alentar al personal técnico para que se produzca según su mejor capacidad.
Organización: la habilidad para adecuar los procesos existentes que permitirán que el
concepto inicial sea traducido en un producto final.
Ideas o innovación: la habilidad para alentar a la gente a crear y sentir creativamente,
incluso cuando deben trabajar dentro de los límites establecidos por un producto o
aplicación de software. Otra visión de las características que definen un gestor de
proyecto eficiente resalta 4 rasgos clave:
Resolución de problemas: puede diagnosticar los conflictos técnicos y organizativos
más relevantes, estructurar de manera sistemática una solución o motivar
adecuadamente a otros profesionales para desarrollar la solución, aplicar nuevas
situaciones en proyectos anteriores, y mantenerse lo suficientemente flexible como
para cambiar de dirección si los intentos iniciales no son los correctos Dotes de
gestión: debe de tener la confianza de asumir el control cuando es necesario y la
seguridad para permitir que los buenos profesionales técnicos sigan sus instintos.
Incentivos: para optimizar la productividad de un equipo de proyecto, un gestor debe
compensar la iniciativa y los logros. Influencia y fomento de la cultura de equipo: un
gestor de proyecto eficaz debe ser capaz de leer a la gente y reaccionar a las
necesidades de la gente que las envía.
2.3. El equipo de software: la estructura organizacional no puede ser fácilmente
modificada. La mejor estructura de equipo depende del estilo de gestión de cada
organización, del número de personas que la integrarán el equipo y de sus grados de
habilidad, así como de la dificultad global del problema. Los 7 factores de proyecto
que deberían considerarse cuando se planifica la estructura de los equipos de
ingeniería del software son:
• La dificultad del problema que se resolverá.
• El tamaño del programa resultante en líneas de código o puntos de función.
• El tiempo que el quipo estará junto.
• El grado en que el problema puede separarse en módulos.
• La calidad y confiabilidad requeridos del sistema que se construirá.
• La rigidez de la fecha de entrega.
• El grado de sociabilidad (comunicación) que requiere el proyecto.
Cuatro paradigmas organizacionales para los equipos de ingeniería del software son:
1) Paradigma cerrado, estructura un equipo a lo largo de una jerarquía tradicional de
autoridad. Estos equipos trabajarán mejor cuando hacen software similar a
proyectos anteriores, pero serán poco innovadores.
2) Paradigma aleatorio, estructura un equipo libremente y depende de la iniciativa
individual de los miembros del equipo. Son innovadores y estos equipos pueden
luchar cuando se requiere desempeño ordenado.
3) Paradigma abierto, intenta estructurar un equipo en una forma que logre algunos
de los controles asociados con el paradigma cerrado, tienen mucho innovación
que ocurre cuando se aplica el paradigma aleatorio. El trabajo se desarrolla en
colaboración.
4) Paradigma sincrónico, se apoya en compartir un problema y organiza a los
miembros del equipo para trabajar en partes del problema con poca comunicación
activa entre ellos. Entonces equipo es cualquier grupo de personas asignadas a
trabajar juntas. Pero muchos de estos grupos no parecen equipos. No tienen una
definición común del éxito o algún espíritu de equipo identificable. Lo que se ha
perdido es un fenómeno que llamamos cuajar. Pero no todos los equipos cuajan lo
cual se llama “toxicidad de equipo” del cual se definen 5 factores:
basadas en puntos de función y LDC son indicadores relativamente precisos del esfuerzo y el
costo del desarrollo de software.
2.4 Métricas orientadas a objetos
Las métricas tradicionales se aplican en la estimación de proyectos de software orientados a
objetos, sin embargo, estas métricas no proporcionan suficiente granularidad para la
planificación y los ajustes de esfuerzo que se requieren conforme se itera a lo largo de un
proceso evolutivo o incremental. Se sugiere el siguiente conjunto de métricas par proyectos
OO:
• Número de guiones de escenario
• Número de clases clave
• Número de clases de apoyo
• Número promedio de clases de apoyo por clase clave
• Número de subsistemas
2.5 Métricas orientadas a casos de uso
Los casos de uso describen indirectamente funciones y características visibles al usuario que
son requisitos básicos para un sistema. El caso de uso es independiente del lenguaje de
programación. Además el caso de uso es proporcional al tamaño de la aplicación LDC, así
como al número de casos de prueba que tendrán que diseñarse para ejercitar completamente
la aplicación.
2.6 Métricas de proyectos de ingeniería Web
Las medidas de métricas de proyectos tradicionales son difíciles de traducir a aplicaciones
Web. Por eso se recopilan las siguientes métricas para aplicaciones Web:
• Número de páginas Web estáticas
• Número de páginas Web dinámicas
• Número de vínculos internos de página
• Número de objetos de datos persistentes
• Número de sistemas externos en interfaz
• Número de objetos de contenido estático
• Número de objetos de contenido dinámico
• Número de funciones ejecutables
3. Métricas para la calidad del software
La meta primordial de la ingeniería del software es producir un sistema, aplicación o producto
de alta calidad dentro de un marco temporal que satisfaga una necesidad del mercado.
3.1 Medición de la calidad
Existen muchas formas de medir la calidad pero las más importantes son:
• Corrección: Un programa debe operar correctamente o proporcionará poco valor para
sus usuarios. La corrección es el grado en que el software desempeña la función para
la que fue creado.
• Facilidad de mantenimiento: La facilidad de mantenimiento es la sencillez con la que
un programa puede corregirse si se encuentra un error, adaptarse si su entorno
cambia, o mejorar si el cliente desea un cambio en los requisitos.
• Integridad: Este atributo mide la habilidad de un sistema para resistir ataques a su
seguridad. Los ataques se pueden presentar en los tres componentes del software:
programas, datos y documentos.
La estimación del costo y el esfuerzo nunca serán una ciencia exacta se pueden utilizar varias
técnicas para lograr que el costo se acerque lo mas posible a la realidad.
1- Demorar la estimación hasta que el proyecto este bien avanzado
2- Basar las estimaciones en proyectos similares
3- Emplear técnicas de descomposición relativamente simples
4- Utilizar uno o más modelos empíricos en la estimación de costo y esfuerzo.
Desgraciadamente la primera opción aunque atractiva no es práctica, la segunda opción puede
funcionar razonablemente bien si el proyecto en curso es similar a los previos.
Las demás opciones pueden ser viables si se utilizan con el debido cuidado y serán tan buenas
como los sean los datos históricos.
Técnicas de descomposición
El problema se descompone en varios segmentos pero antes de este paso es importante
entender el ámbito del sistema para así poder determinar el tamaño del sistema.
Tamaño del software
La precisión de la estimación de un proceso de software se manifiesta en varios factores
1- El grado con el cual el planificador ha estimado adecuadamente el tamaño del producto
que se construirá
2- La habilidad para traducir la estimación del tamaño en esfuerzo humano, programa de
trabajo y dinero
3- El grado en el cual el plan del proyecto refleja las habilidades del equipo de software
4- La estabilidad de los requisitos del producto y el entorno que soporta el esfuerzo de la
ingeniería del software
Estimación basada en el problema
Es importante considerar la estimación basada en el tamaño del problema ya que de esta
manera se puede cuantificar la cantidad de recursos que se debe asignar al proyecto no
obstante toda estimación siempre esta sujeta a una buena dosis de sentido común y la
experiencia que en todos los casos es muy importante.
Un ejemplo de estimación basada en PF
La descomposición de la estimación basada en pf se centra en los valores de dominio de
información mas que en las funciones de software en cuanto a los propósitos de esta
estimación se supone que el factor ponderado de complejidad es el promedio.
Estimación basada en el proceso
La técnica más común para estimar un proyecto es basa basar la estimación en el proceso que
se empleara, esto por cuanto el proceso se descompone en un conjunto de tareas y se estima
el esfuerzo requerido para realizar cada tarea.
Estimación con casos de uso
Los casos de uso permiten que un equipo de software comprenda el ámbito del software y los
requisitos no obstante este sistema cuenta con las siguientes desventajas
1- Los casos de uso se describen empleando muchos formatos y estilos diferentes no
existe un estándar
2- Los casos de uso representan una visión externa
3- Los casos de uso no abordan la complejidad de las funciones ni de las características
que se describen
4- Los casos de uso no describen el comportamiento complejo
Reconciliación de estimaciones
Las técnicas anteriores se deben reconciliar para establecer una sola estimación de esfuerzo
duración del proyecto y costo
Modelos empíricos de estimación
Un modelo de estimación para software de computadora utiliza formulas obtenidas
empíricamente para predecir el esfuerzo como una función de LDC o PF
Un modelo de estimación debe calibrarse para reflejar las condiciones locales si la
concordancia es insuficiente debe afinarse y ponerse a prueba nuevamente.
La estructura de los modelos de estimación
Un modelo de estimación típico se deriva mediante el análisis de regresión de los datos
recompilados de los proyectos anteriores de software previos.
El modelo COCOMO II
Su nombre proviene de las siglas constructive cost model este modelo se volvió uno de los mas
utilizados en la industria además ha evolucionado desde sus inicios a un modelo mas amplio, al
igual que su predecesor cocomo, es una jerarquía de modelos de estimación que aborda las
siguientes áreas:
1- Modelo de composición de la aplicación se emplea durante las primeras etapas de la
ingeniería del software cuando son primordiales los prototipos de internas de usuarios
2- Modelo de etapa de diseño temprano, se utiliza una vez que se han estabilizado los
requisitos y se ha establecido una jerarquía básica de software
3- Modelo de etapa posterior a la arquitectura Se emplea durante la construcción del
software
La ecuación del software
Es un modelo multivariable que supone una distribución específica del esfuerzo a lo largo de la
vida de un proyecto de desarrollo de software, el modelo procede de datos de productividad
recopilados de casi 4000 proyectos de software contemporáneos
Estimación para proyectos orientados a objetos
Vale la pena complementar los métodos convencionales de estimación de costo del software
con un enfoque diseñado explícitamente para software.
Técnicas de estimación especializadas
Dentro de las mas comunes se encuentran la estimación para desarrollo ágil este funciona
bajo un enfoque de estimación informal aunque razonablemente disciplinado y significativo
dentro del contexto de la planificación del proyecto aplica un enfoque de descomposición
La decisión desarrollar-comprar
A menudo en muchas áreas de software es más rentable adquirir que desarrollar esto por
cuanto la empresa no debe lidiar con personal cargas sociales, contratiempos, incapacidades
etc. Que pueden dar al traste con un proyecto de software no obstante las implicaciones de
comprar el software siempre tienen sus inconvenientes si no se compra un software a la
medida debido a la incompatibilidad del mismo con la empresa además de la posibilidad de que
la empresa desarrolladora no haga bien su trabajo por lo que se debe definir políticas claras y
contratos que aseguren el correcto empleamiento de los fondos o recursos de la empresa.
Subcontratación
Tarde o temprano cualquier compañía que desarrolla software de computadora se plantean la
necesidad de sub contratar a terceros para que le desarrollen los sistemas a un costo mas bajo
y se espera que sea con una alta calidad.
La calendarización del proyectos se puede ver de dos perspectivas diferentes, la primera que
no se puede cambiar la fecha ya que esta impuesta por la computadora, por lo cual la empresa
está restringida a distribuir esfuerzos. Y la segunda se maneja límites cronológicos estimados
por lo cual la empresa es la que impone la fecha y así tiene control de distribución de recursos
y esfuerzos.
Existen varios principios de la ingeniería del software lo cual guían la calendarización:
• Compartimentación: llegar a descomponer o dividirse en
compartimentos en varias tareas manejables.
• Interdependencia: determinar su interdependencia algunas actividades
son en paralelo u otras en secuencia., ya que unas no pueden
comenzar hasta que terminen unas y habrán otras actividades que si
se pueden comenzar independientemente.
• Asignación de tiempo: se le debe asignar a cada tarea fecha de inicio y
de final.
• Validación del esfuerzo: Todo proyecto tiene un número definido de
personas, el gestor de proyecto debe asegurarse que, en un tiempo
dado, no se han asignado más que el número de personas
calendarizadas.
• Definición de responsabilidades: toda tarea calendarizada se le debe
asignar a un miembro específico del equipo.
• Definición de resultados: normalmente en los proyectos son productos
que son entregables.
• Definición de hitos: cualquier tarea o grupo de tareas debe estar
relacionado a un hito de trabajo.
Relación entre personal y el esfuerzo.
Un proyecto pequeño se puede realizar con una solo persona que sea la que analice los
requerimientos, diseñe, codifique, y dirija las pruebas, pero cuando valla aumentando la
intensidad del proyecto mas personas se Irán integrando con diferentes responsabilidades.
Existe un mito, que dice que cuando se atrasa la fecha que se ha calendarizado se deben de
ingresar mas personas en el proyecto para ejecutarlo a tiempo, lo cual eso es falso ya que se
desfasa mas el calendario.
Distribución de esfuerzo
Existe una recomendada distribución de esfuerzos en los proyectos de software que es llamada
la regla de los 40-20-40.
Un 20% de los esfuerzos para la etapa análisis y diseño un 20% para lo que es codificación y
un 40% para lo que es para ponerlo a prueba.
Definición de un conjunto de tareas para el proyecto de software
Es una colección de tareas de trabajo de ingeniería del software, hitos, y productos de trabajo
que se deben de terminar para completar un proyecto particular.
La calendarización requiere que se distribuya en un conjunto de tareas en todo la línea del
proyecto.
Dependiendo del proyecto así se hará la distribución de tareas, existen proyectos de:
Proyectos de desarrollo del concepto, los cuales se inician para explorar
algunas de las aplicaciones o conceptos de negocios de alguna tecnología.
Proyectos de desarrollo de nuevas aplicaciones: con solicitud específica del
cliente.
Proyectos de mejora de aplicación: cuando el software existente sufre grandes
modificaciones.
Proyectos de mantenimiento de aplicación.
Luis Randall Zúñiga Pág. 2
IS074 Pressman Cáp. 24
Administración de Proyectos Calendarización de PSW
Proyectos de reingeniería.
Los proyectos de desarrollo del concepto se enfocan en aplicar las siguientes tareas
principales:
1.1 La determinación del ámbito del concepto.
1.2 La planeación preliminar del concepto.
1.3 La valoración del riesgo de la tecnología
1.4 La prueba del concepto.
1.5 La implementación de l concepto.
1.6 La reacción del cliente.
Teniendo estas tareas se pueden refinar detalladamente para así calendarizar detalladamente.
Definición de una red de tareas
También se denomina red de actividades, es una representación gráfica del flujo de tareas en
un proyecto, mediante el cual se puede demostrar la dependencia de tareas y sub-tareas.
Esta se utiliza cuando se requiere crear una Calendarización microscópica.
El gestor del proyecto debe estar al tanto a estas tareas si se encuentran en la ruta crítica.
Calendarización
Con respecto a la calendarización de tareas con el método PERT Y CMP son dos métodos de
calendarización de proyecto que se pueden aplicar al desarrollo de software.
Anteriormente se han realizado la estimación del esfuerzo, descomposición de la función del
producto, Selección del modelo de proceso y conjunto de tareas apropiadas, descomposición
de tareas.
Cronogramas
Cuando se calendariza se comienza con un conjunto de tareas, donde se hace la red de
tareas, se miden los esfuerzos se dan las fechas de inicio y así nace entonces el formar el
cronograma de tareas, también llamado grafico de Gantt.
Cuando las tareas en desglose o descompuestas se les da su duración su fecha de inicio, se
ve la concurrencia de tareas, se ve mediante tablas horizontales el progreso del proyecto lo
cual es una herramienta importante para el gestor del proyecto así llevar su control.
Se debe dar el seguimiento necesario a la calendarización, la cual dice que tareas e hitos
seguir y controlar conforme avanza el proyecto.
Este seguimiento se puede realizar mediante:
o Realización periódica de reuniones valorando el estado del proyecto.
o Evaluación de los resultados a lo largo del proceso.
o Determinación se han logrados los hitos formales del proyecto.
o Medición de tiempos, fechas previstas contra fechas reales.
o Evaluación sugestiva de los trabajadores.
o Evaluación del progreso cuantitativamente
La calendarización es la culminación de una actividad de planificación que es un componente
principal de la gestión del proyecto de software.
Como consecuencia de todas las actividades detalladas anteriormente surge el plan RSGR (Reducción
Supervisión y Gestión del Riesgo) que documenta todo el trabajo realizado en el análisis del riesgo y se
emplea como parte del plan global del proyecto. Posteriormente se realiza la supervisión del riesgo que
es una actividad de seguimiento del proyecto con tres objetivos principales, valorar si los riesgos
predichos de hecho ocurren, asegurar que los pasos para evitar los riesgos definidos se estén aplicando
con propiedad y recopilar información que pueda usarse en futuros análisis.
• Se debe preparar con anticipación, pero sin que requiera más de 2 horas de trabajo de
cada persona.
• La duración de la junta de revisión debe ser menor a 2 horas.
El enfoque de trabajo de la RTF se dirige a un producto de trabajo o una porción de una
especificación.
La RTF comienza con una presentación de la agenda y luego se procede a recorrer el
producto de trabajo y explica el material.
Al final, todos los asistentes a la RTF deben decidir si:
1. Aceptan el producto sin modificaciones posteriores.
2. Rechazan el producto debido a errores severos.
3. Aceptan el producto provisionalmente.
Informe de la revisión y conservación de registros
Durante la RTF, un revisor registra activamente todos los problemas; se llena un informe
resumen de la revisión técnica formal.
Un informe resumen de la revisión responde a 3 preguntas:
1. ¿Qué se revisó?
2. ¿Quién lo revisó?
3. ¿Cuáles fueron los hallazgos y conclusiones?
La lista de problemas de revisión cumple 2 propósitos:
1. Identificar áreas problema en el producto.
2. Funcionar como lista de verificación de elementos de acción que guían al productor
conforme se hacen las correcciones.
Directrices de la revisión
Las siguientes representan un conjunto mínimo de directrices para las revisiones técnicas
formales:
• Revisar el producto, no al productor.
• Establecer una agenda y respetarla.
• Limitar el debate y la impugnación.
• Enunciar áreas de problemas, pero no se intente resolver todos los que se hayan
señalado.
• Limitar el número de participantes e insistir en la preparación anticipada.
• Desarrollar una lista de verificación para cada producto que tenga probabilidad de ser
revisado.
• Asignar recursos y programar las RTF.
• Realizar un entrenamiento significativo de todos los revisores.
• Analizar las revisiones previas.
Enfoques formales acerca del SQA
Si el modelo de requisitos (especificación) y el lenguaje de programación, se representan en
una forma rigurosa, debe ser posible aplicar pruebas matemáticas de exactitud para demostrar
que un programa concuerda exactamente con sus especificaciones.
Garantía de la Calidad Estadística del Software
Para el software, garantía de calidad estadística implica los siguientes pasos:
1. La información acerca de los defectos de software se recopila y clasifica.
En el contexto del software, la falla es la falta de concordancia con los requisitos del software.
Seguridad del software
Es una actividad de aseguramiento de la calidad del software que se enfoca en la identificación
y evaluación de los peligros potenciales que pueden afectar negativamente al software y
provocar una falla de todo el sistema.
La confiabilidad del software utiliza análisis estadístico para determinar la probabilidad de que
ocurrirá una falla del software.
La seguridad del software examina las formas en las cuales las fallas resultan en condiciones
que pueden conducir a un percance.
Los estándares de Calidad ISO 9000
Es posible definir un “sistema de garantía de la calidad” como la estructura organizacional,
responsabilidades, procedimientos, procesos y recursos para implementar la gestión de la
calidad. El estándar ISO 9000 describe un sistema de garantía de la calidad en términos
genéricos que se aplican a cualquier negocio sin importar los productos o servicios ofrecidos;
describe lo que se debe hacer para ser manejable, pero no describe cómo se debe hacer.
El plan del SQA
Proporciona un mapa para instituir la garantía de la calidad del software; funciona como
plantilla para las actividades del SQA.
proyecto. El gestor crea y distribuye las listas de tareas para los ingenieros y básicamente crea el
contexto del proyecto.
La meta de los ingenieros de software es trabajar con eficiencia. Esto significa que no interfieren de
manera innecesaria unos con otros en la creación y prueba del código ni en la producción de los
documentos de soporte. No obstante, al mismo tiempo, intentan comunicarse y coordinarse de
manera eficiente. Ellos se comunican y coordinan al notificarse mutuamente las tareas que se
requieren y las tareas cumplidas. Los cambios se propagan por medio del trabajo de cada uno
mediante archivos fusionados. Existen mecanismos para asegurar que, respecto de los componentes
que experimentan cambios simultáneos, existe alguna forma de resolver los conflictos y fusionar los
cambios.
El gestor del proyecto ve una GC como un mecanismo de auditoria; el gestor de configuración, como
un mecanismo de creación de control, seguimiento y políticas; el ingeniero de software, como un
mecanismo de control de cambio, la construcción y el acceso; y el usuario, como un mecanismo de
garantía de la calidad.
Elementos de un sistema de gestión de la configuración
En su detallado artículo acerca de la gestión de la configuración de software, Susan Dart identifica
cuatro importante elementos que deben estar presentes cuando se desarrolla un Sistema de Gestión
de la Configuración:
9 Elementos de componentes: conjunto de herramientas acopladas dentro de un
sistema de gestión de archivos.
9 Elementos de proceso: serie de procedimientos y tareas que definen un enfoque
eficaz con el cual gestionar el cambio.
9 Elementos de construcción: conjunto de herramientas que automatizan la construcción
del software al asegurar que se ha ensamblado un conjunto adecuado de componentes validados
9 Elementos humanos: implementación GCS eficaz requiere que el equipo de software
utilice un conjunto de herramientas y características de procesos.
Estos elementos no son mutuamente excluyentes.
Líneas base
El cambio es un hecho de vida e el desarrollo del software. Los clientes quieren modificar los
requisitos. Los desarrolladores quieren modificar el enfoque técnico. Los gestores quieren modificar la
estrategia del proyecto. ¿Por qué todas esta modificaciones? La respuesta, en realidad, es bastante
simple. Conforme pasa el tiempo, todos los participantes saben más acerca de lo que necesitan. Este
conocimiento adicional es la fuerza impulsora detrás de la mayoría de los cambios y conduce a una
expresión difícil de aceptar para muchos profesionales de la ingeniería del software: ¡la mayoría de los
cambios están justificados!
Una línea base es un concepto de gestión de la configuración del software que ayuda a controlar el
cambio sin impedir seriamente el cambio justificable. El IEEE define una línea base como:
“Una especificación o producto que sea revisado formalmente y se está de acuerdo con los
resultados, y que a partir de ahí sirve para la base para el desarrollo anterior y que puede cambiarse
sólo por medio de procedimientos formales de control del cambio”
Antes de que un elemento de configuración del software se convierta en línea base, es posible realizar
el cambio rápida e informalmente. Sin embargo, una vez establecida una línea base, metafóricamente
se pasa a través de una puerta giratoria de una sola dirección. Los cambios se pueden realizar, pero
se debe aplicar un procedimiento específico formal para evaluar verificar cada uno.
En el contexto de la ingeniería del software, una línea base es un hito en el desarrollo del software. Se
marca una línea base para la entrega de uno o más elementos de la configuración del software (ECS)
que se han aprobado como consecuencia de una revisión técnica formal.
Elementos de Configuración del Software
Un elemento de configuración del software (ECS) es información que se crea como parte del proceso
de ingeniería de software. De manera más realista, un ECS es un documento, un conjunto completo
de casos de prueba o un componente de un programa dado.
Además de los ECS provenientes de los productos de trabajo de software, muchas organizaciones de
ingeniería de software también colocan las herramientas respectivas bajo control de configuración.
Esto es: versiones especificas de editores, compiladores, navegadores y otras herramientas
automatizadas se “congelan” como parte de la configuración del software. Aunque los problemas son
raros, es posible que una nueva versión de una herramienta produzca resultados diferentes a los de la
versión original. Por esta razón, las herramientas, al igual que el software que ayudan a producir,
pueden convertirse en línea base como parte de un proceso global de gestión de configuración.
En realidad, los ECS están organizados para formar objetos de configuración susceptibles de
catalogar en la base de datos del proyecto con un solo nombre. Un objeto de configuración tiene un
nombre, atributos y está “conectado” con otros objetos por medio de relaciones.
2. El Depósito de ECS
En los primeros días de la ingeniería del software los elementos de configuración se conservaban
como documentos de papel (¡o tarjetas perforadas!). Este enfoque era problemático por muchas
razones: 1) con frecuencia era difícil encontrar un elemento de configuración cuando se necesitaba; 2)
usualmente era un reto determinar cuál elemento había sido cambiado, cuándo y por quien; 3) la
construcción de una nueva versión de un programa existente consumía mucho tiempo y era proclive al
error; 4) la descripción de relaciones detalladas o complejas entre elementos de configuración era
virtualmente imposible.
En la actualidad, los ECS se conservan en una base de datos o depósito del proyecto. El diccionario
Webster define depósito como “cualquier cosa o persona que se considera como centro de
acumulación o almacenamiento”. En los inicios de la ingeniería de software, el depósito de hecho era
una persona. Tristemente, emplear a una persona como “centro de acumulación y almacenamiento”
no funciona muy bien. Hoy el depósito es una “cosa” : una base de datos que actúa como el centro
tanto de la acumulación como del almacenamiento de la información de ingeniería de software.
El papel del depósito
El depósito de ECS es el conjunto de mecanismos y estructuras de datos que permiten que un equipo
de software maneje el cambio en una forma eficaz. El depósito proporciona las funciones obvias de un
sistema de gestión de bases de datos pero, además, el depósito realiza o impulsa las siguientes
funciones:
9 La integridad de los datos incluye funciones para validar las entradas al depósito,
garantizar la consistencia entre objetos relacionados y automáticamente realizar modificaciones “en
cascada” cuando un cambio en un objeto demanda algún cambio a los objetos relacionados con él.
9 El compartir información ofrece un mecanismo para distribuir la información entre
múltiples desarrolladores y herramientas, manejar y controlar los accesos a los datos por parte de
múltiples usuarios y cerrar y abrir los objetos de modo que los cambios no sean trasladados
inadvertidamente hacia otros.
9 La integración de herramientas establece un modelo de datos al que se puede tener
acceso mediante muchas herramientas de ingeniería de software, controlar el acceso a los datos y
realizar funciones adecuadas de gestión de la configuración.
9 La integración de los datos brinda funciones de base de datos que permiten que
varias tareas de GCS se realicen en uno o más ECS.
9 El fortalecimiento de la metodología define un modelo de entidad-relación guardado
en el depósito que implica un modelo de proceso específico para la ingeniería de software.
9 Estandarización de los documentos es la definición de los objetos en la base de datos
que conduce directamente a un enfoque estándar para la creación de documentos de ingeniería de
software.
9 ¿Cómo controla una organización los cambios antes y después de que el software se
libere al cliente?
9 ¿Quién tiene la responsabilidad de aprobar y clasificar los cambios?
9 ¿Cómo se garantiza que los cambios se hayan realizado adecuadamente?
9 ¿Con qué mecanismo se valoran otros cambios que se realizan?
Estas preguntas conducen a la definición de las cinco tareas: identificación, control de la versión,
control de cambio, auditoria de la configuración e informe.
Identificación de objetos en la configuración de software
El control y la gestión de elementos de configuración del software requiere nombrar cada uno por
separado y luego organizado mediante un enfoque orientado a objetos. Es posible identificar dos tipos
de objetos: básicos y agregados. Un objeto básico e una unidad de información creada por un
ingeniero de software durante el análisis, el diseño, el código o las pruebas. Un objeto agregado es
una colección de objetos básicos y otros agregados. Conceptualmente, es posible verlo como una lista
nombrada (identificada) de punteros que especifican objetos básicos. Cada objeto tiene un conjunto
de características distintivas que los identifican de manera exclusiva.
El esquema de identificación para los objetos de configuración debe reconocer que los objetos
evolucionan a lo largo del proceso de software.
Control de la versión
El control de la versión combina procedimientos y herramientas para gestionar diferentes versiones de
objetos de configuración que se crean durante el proceso del software. Un sistema de control de la
versión implementa o está directamente integrado con cuatro grande capacidades: 1) una base de
datos del proyecto que guarda todos los objetos de configuración relevantes; 2) una capacidad de
gestión de la versión que almacena todas las versiones de un objeto de configuración; 3) una facilidad
de hechura que permita al ingeniero de software recopilar todos los objetos de configuración
relevantes y construir una versión específica del software. Además, los sistemas de control de versión
de la versión y control de cambio con frecuencia implementan una capacidad de seguimiento de
conflictos.
Varios sistemas de control de la versión establecen un conjunto de cambio que requiere la creación de
una versión específica de software. Es posible identificar varios conjuntos de cambio nombrados para
una aplicación o sistema. Esto se logra aplicando un enfoque de modelado de sistema. El modelo de
sistema contiene 1) una plantilla que incluye una jerarquía de componentes, 2) reglas de construcción
y 3) reglas de verificación.
Control de cambio
La realidad del control del cambio en un contexto moderno de ingeniería de software es vital. Bach
reconoce que se enfrenta un acto de equilibrio. Demasiado control del cambio, y se crean problemas;
poco, y se crean otros problemas.
En un gran proyecto de ingeniería de software el cambio incontrolado conduce rápidamente al caos.
Respecto a tales proyectos el control del cambio combina procedimientos humanos y herramientas
automatizadas. Se emite una solicitud de cambio y se estima para evaluar los méritos técnicos, los
potenciales efectos colaterales, el impacto global sobre otros objetos de configuración y funciones del
sistema, y el costo proyectado del cambio. Los resultados de la evaluación se presentan como un
informe de cambio, que lo utiliza una autoridad del control de cambio. Se genera una orden de cambio
en la ingeniería para cada cambio aprobado.
El objeto que se cambiara se coloca en un directorio que controle exclusivamente el ingeniero de
software que realiza el cambio. Un sistema de control de la versión actualiza el archivo original una
vez realizado el cambio.
Estos mecanismos de control de la versión, integrados en el proceso de control de cambios,
implementan dos importantes elementos de gestión de cambio: control del acceso y de sincronización.
El control del acceso rige qué ingenieros de software están autorizados para ingresar y modificar un
objeto de configuración particular. El control de la sincronización ayuda a garantizar que los cambios
paralelos, efectuados por dos personas diferentes, no se sobrescriben uno sobre otro. Antes de que
un ECS se convirtiera en línea base sólo se necesita aplicar control de cambio formal. El desarrollador
del objeto de configuración (ECS) en cuestión tiene la posibilidad de realizar cualesquiera cambios
justificados por el proyecto y los requisitos técnicos. Una vez que el objeto haya experimentado una
revisión técnica formal y haya sido aprobado, se puede crear una línea base. Una vez que un ECS se
convierte en línea base se implementa un control de cambio a nivel de proyecto.
Cuando el producto de software se libera entre los clientes se instituye el control de cambio formal. La
autoridad de control del cambio juega un papel activo en la segunda y tercera capas del control.
Dependiendo del tamaño y carácter de un proyecto de software, la ACC puede estar compuesta de
una persona o varias personas.
Auditoria de la Configuración
La identificación, el control de la versión y el control de cambio ayudan al desarrollador del Software a
mantener el orden en lo que de otro modo seria una situación caótica e inestable. Sin embargo,
incluso el mecanismo de control más exitoso solo sigue un cambio hasta que no se genera OCI.
¿Cómo se puede garantizar que el cambio sea implementado con propiedad? La respuesta es
doble:1) revisiones técnicas formales y 2) auditorias de la configuración del software.
La revisión técnica formal se enfoca en la corrección técnica del objeto de configuración que se ha
modificado. Se debe realizar una revisión técnica formal en casi la mayoría de los cambios triviales.
Una auditoria de configuración del software complementa la revisión técnica formal al abordar las
siguientes preguntas:
1. ¿Se ha realizado el cambio especificado en la OCI? ¿Se han incorporado modificaciones
adicionales?
2. ¿Se ha realizado una revisión técnica formal para evaluar la corrección técnica?
3. ¿Se ha seguido el proceso de software? ¿Se han aplicado adecuadamente los estándares
de ingeniería de software?
4. ¿El cambio se ha resaltado en el ECS? ¿Se han especificado la fecha y el autor del
cambio? ¿Los atributos del objeto de configuración reflejan el cambio?
5. ¿Se han seguido los procedimientos de GCS para destacar el cambio, registrarlo e
informar de él?
6. ¿Todos los ECS relacionados se han actualizado de manera adecuada?
En algunos casos, las preguntas de la auditoria se plantean como parte de una revisión técnica formal.
Sin embargo, cuando la GCS es una actividad formal, la auditoria de GCS la lleva a cabo por
separado el grupo de aseguramiento de la calidad.
Informe de estado
El informe de estado de la configuración es una tarea de GCS que responde las siguientes preguntas:
1) ¿qué ocurrió? 2) ¿quién lo hizo? 3) ¿cuándo ocurrió? 4) ¿qué cosa será afectada?
Cada vez que se le asigna una identificación nueva o actualizada a un ECS se efectúa una entrada de
IEC. Cada vez que la ACC aprueba un cambio se genera una entrada en el IEC. Cada vez que se
realiza una auditoria de la configuración los resultados se reportan como parte de la tarea de IEC.
4. Gestión de la Configuración para Ingeniería Web
Entre las muchas características que diferencian a la WebApps del software convencional se
encuentra la naturaleza ubicua del cambio.
La ingeniería Web utiliza un modelo de proceso incremental iterativo que aplica muchos principios
derivados del desarrollo software ágil. Al utilizar este enfoque, un equipo de ingeniería con frecuencia
desarrolla un incremento de WebApp en un periodo muy corto mediante un enfoque basado en el
mayoría de los proyectos de desarrollo WebApp. Entonces, ¿cómo se gestiona una corriente continua
de cambios solicitada para el contenido y la funcionalidad de la WebApp?
La implementación de una gestión de cambio eficaz dentro de la filosofía “codifica y ve” que continúe
dominando el desarrollo de las WebApps requiere modificar el proceso de control de cambios
convencional. Cada cambio se debe clasificar en una de cuatro clases:
Clase 1: un cambio de contenido o función que corrija un error o mejore el contenido o funcionalidad
locales.
Clase 2: un cambio de contenido o función que tenga impacto sobre otros objetos de contenido o
componentes funcionales.
Clase 3: un cambio de contenido o función que tenga amplio impacto a través de una WebApp.
Clase 4: un gran cambio de diseño que inmediatamente apreciaran una o más categorías de usuarios.
Control de la versión
Conforme una WebApp evoluciona por medio de una serie de incrementos, es posible que exista al
mismo tiempo varias versiones diferentes. Una versión está disponible para los usuarios finales por
Internet; otra versión quizá este en las ultimas etapas finales de prueba previas al lanzamiento; una
tercera versión está en desarrollo y representa una gran actualización en contenido, estética de
interfaz y funcionalidad. Los objetos de configuración deben estar claramente definidos, de modo que
cada uno pueda estar asociado con la versión adecuada. Además, deben estar establecidos los
mecanismos de control.
Esta situación debe sonar familiar a todos los ingenieros de software, así como a todos los ingenieros
Web. Para evitarlo, se debe establecer un proceso de control de la versión.
1. Se debe establecer un depósito central para el proyecto WebApp.
2. Cada ingeniero Web crea su propia carpeta de trabajo.
3. Los relojes en las estaciones de trabajo de todos los desarrolladores deben estar sincronizados.
4. Conforme se desarrollen nuevos objetos de configuración o se cambian los objetos existentes e
importan al depósito central.
5. Conforme los objetos se importan al o exportar del depósito se elabora un mensaje automático de
registro cronometrado.
La herramienta de control de la versión mantiene diferentes versiones de la WebApp puede revertirse
a una versión más antigua si se requiere.
Auditoria y elaboración de informes
En búsqueda de agilidad, las funciones de auditoria y elaboración de informes no se resaltan en el
trabajo de ingeniería Web. Sin embargo, no se eliminaran por completo. Todos los sujetos que entran
o salen del depósito se anotan en un registro que puede revisarse en cualquier punto en el tiempo.
Además, de envía unan notificación automática de correo electrónico cada vez que un objeto entre o
salga del depósito.
Aunque la tecnología todavía está en su infancia, la reingeniería del software está empezando a tomar
algunas tareas de programación, particularmente las tareas menos creativas, más repetitivas y las
automatiza. Estos programas de reingeniería, escritos en idiomas especialmente diseñados, operan en el
código fuente de los programas y realizan una variedad de análisis y modificaciones.
Por qué aplicar reingeniería del software
Cuando una aplicación ha servido para las necesidades del negocio de una compañía durante varios
años, se vuelve inestable debido a las correcciones, adaptaciones y mejoras que se realizaron. Esto
deriva en que cada vez que se intenta efectuar un cambio se produzcan efectos colaterales graves e
inesperados. Por esta razón es conveniente utilizar la reingeniería del software.
Tecnología:
La tecnología debe estar al servicio del usuario; a través de ella se hace un mejoramiento de la capacidad
decisoria del personal. La tecnología facilita el diseño de los sistemas de información para la calidad del
servicio, siempre pensando en el cliente. Así se debe manejar más información y menos papeles.
Cada proyecto será desarrollado cuidadosamente por personal capacitado en el área, y cuyo proyecto
será presentado al Presidente para su previa autorización y puesta en marcha después de ésta.
Dicho proyecto será respaldado por su documentación correspondiente y su bitácora de seguimiento.
Ingeniería inversa
La ingeniería inversa se basa en quitar, remover, suspender uno o más temas de protección de alguna
aplicación ya siendo comercial y otras. Muchos consideran esto como un arte.
El objetivo de la ingeniería inversa es obtener información técnica a partir de un producto accesible al
público, con el fin de determinar de qué está hecho, qué lo hace funcionar y cómo fue fabricado. Los
productos más comunes que son sometidos a la ingeniería inversa son los Programas de computadoras y
los componentes electrónicos.
Este método es denominado ingeniería inversa porque avanza en dirección opuesta a las tareas
habituales de ingeniería, que consisten en utilizar datos técnicos para elaborar un producto determinado.
En general si el producto u otro material que fue sometido a la ingeniería inversa fue obtenido en forma
apropiada, entonces el proceso es legítimo y legal.
La ingeniería inversa es un método de resolución. Aplicar ingeniería inversa a algo supone profundizar en
el estudio de su funcionamiento, hasta el punto de que podemos llegar a entender, modificar, y mejorar
dicho modo de funcionamiento.
Pero este término no sólo se aplica al software de protección. Así pues se considera ingeniería inversa
también al estudio de todo tipo de elementos, por ejemplo equipos electrónicos, microcontroladores, etc.,
siempre y cuando el resultado de dicho estudio repercuta en el entendimiento de su funcionamiento.
Un modelo RPN
Definición del Negocio:
Las metas del negocio y los procesos con se logran se deben de adaptar a un entorno de negocios
cambiante pos esta razón no existe principio ni fin para la RPN , se trata de un proceso evolutivo
Definición del negocio:
Las metas del negocio se identifican en el contexto de cuatro controladores clave
1. Reducción del costo
2. Reducción de tiempos
3. Mejora de la calidad y desarrollo
4. Fortalecimiento de del personal
Identificación del proceso:
Se identifican los procesos cruciales para lograr las metas precisadas en la definición del negocio luego
puede clasificarse de acuerdo a su importancia o necesidad de cambio o cualquier otra forma que sea
adecuada para la actividad de la reingeniería.
Evaluación de procesos
El proceso existente se analiza y se mide exhaustivamente. Se identifican las tareas del proceso, se
anotan los costos y el tiempo que consumen los procesos y se aíslan los problemas de calidad y de
desempeño
Especificación y diseño del proceso
Con base a la retroalimentación obtenida durante las primeras tres actividades de la RPN se preparan
casos de uso para cada proceso que será rediseñado
Elaboración de prototipos:
Un proceso de negocio rediseñado debe de convertirse en prototipo antes de que sea integrado por
completo en el negocio
Refinamiento y particularización
Con base a la retroalimentación del prototipo el proceso del negocio se refina y luego se particulariza
dentro del sistema del negocio
Sin embargo la reingeniería demanda recursos limitados que pueden utilizarse para otros propósitos del
negocio por ello se debe de realizar un-análisis costo-beneficio
Aquellas aplicaciones que muestren mayor costo-beneficio podrán destinarse a la reingeniería mientras el
trabajo con otras se puede posponer hasta que haya recursos disponibles.
En costo-beneficio de la reingeniería se determina cuantitativamente.
Conclusión
La ingeniería e presenta en dos diferentes grados de abstracción en el ámbito del negocio con el
propósito de efectuar los cambios para mejorar la competitividad en alguna área del negocio y en el
ámbito del software ,la reingeniería examina los sistemas y aplicaciones de información con la finalidad
de reestructurarlos o reconstruirlos de modo que muestren mayor calidad, define las metas del negocio,
identifica y evalúa los procesos de negocios existentes, especifica y diseña procesos revisados, elabora
prototipos los refina y particulariza dentro del negocio
La reingeniería de software comprende una serie de actividades que incluyen análisis de inventario,
reestructuración de documentos, ingeniería inversa, reestructuración de programas y datos, e ingeniería
directa .la finalidad de todas estas actividades es crear versiones de programas existentes que sean de
mayor calidad y tengan mayor facilidad de mantenimiento.