10/03/2023
ELEMENTOS DE LA CONFIGURACION
DE SOFTWARE
INGENIERO MARCO ZAPATA
Definición
 (1993) La aplicación mecanismos sistemáticos,
disciplinados, y cuantificables para el desarrollo,
operación y mantención de software; esto es la
aplicación de la ingeniería al software.
 Establecimiento y uso de principios con caracteres de
ingeniería apropiados para obtener, eficientemente,
software confiable, que opere eficaz y eficientemente
en máquinas reales
 La aplicación del arte del desarrollo software junto con
las ciencias matemáticas y computadores para diseñar,
construir, y mantener programas computacionales
eficientes y económicos que logran sus objetivos.
Estado del arte en Ing. De Software
 ¿Es una ciencia rigurosa con fuertes
fundamentos matemáticos?
 ¿Es una campo técnico bien desarrollado con
mucho de disciplina de ingeniería?
 O está realmente en un estado primitivo...
 A lo más una serie de “mejores prácticas”,
desarrolladores de software construyen software y si
éstos funcionan entonces nosotros estudiamos como
ellos lo hicieron.
 Si éstos funcionan por un largo tiempo entonces
estudiamos sus procesos de software aún más
cuidadosamente.
Construcción de una casa para “fido”
Puede hacerlo una sola persona
Requiere:
Modelado mínimo
Proceso simple
Herramientas simples
Construcción de una casa
Construida eficientemente y en un tiempo
razonable por un equipo
Requiere:
Modelado
Proceso bien definido
Herramientas más sofisticadas
Construcción de un rascacielos
¿Por qué la Orientación a Objetos?
 Proximidad de los conceptos de modelado
respecto de las entidades del mundo real
 Mejora la captura y validación de requisitos
 Acerca el “espacio del problema” y el “espacio de la
solución”
 Modelado integrado de propiedades estáticas y
dinámicas del ámbito del problema
 Facilita construcción, mantenimiento y reutilización
 Podríamos dar muchas razones pero hay
problemas..
“...Los conceptos básicos de la OO se conocen desde hace
dos décadas, pero su aceptación todavía no está tan
extendida como los beneficios que esta tecnología puede
sugerir”
Problemas en OO
… Problemas en OO
 Un objeto contiene datos y operaciones que operan
sobre los datos, pero ...
 Podemos distinguir dos tipos de objetos degenerados:
 Un objeto sin datos (que sería lo mismo que una biblioteca de
funciones)
 Un objeto sin “operaciones”, con sólo operaciones del tipo
crear, recuperar, actualizar y borrar (que se correspondería con
las estructuras de datos tradicionales)
 Un sistema construido con objetos degenerados no es
un sistema verdaderamente orientado a objetos
Áreas cubiertas por la Ing. de
Solftware
La Ingeniería del Software estudia todos los aspectos
involucrados en el desarrollo de software, entre los
cuales se encuentran:
 Etapas de un Proyecto de software
 Paradigmas / enfoques para enfrentar el desarrollo del
proyecto de software (Cascada, Interativo
incremental)
 Tiempo y Costos
 Aspectos tecnológicos
 Gestión de Proyectos
Etapas de un proyecto de Software
Etapas / Hitos escenciales rqueridos en un proyecto de
desarrollo de software:
 Oportunidad de Negocio (Hito)
 Levantamiento Incial de Requerimientos (Dominio del
problema)
• Entendimiento inicial de la problemática a resolver
• Reuniones con Cliente
• Especificación inicial de requerimientos
 Confección de Propuesta
• Estimación de esfuerzos y planificación del proyecto. Uso
de técnicas (COCOMO) y estadisticas de proyectos
similares al que se dessarrollará, entrevistas a personas
con experiencia en proyectos similares al que se
desarrollará
• Definición del alcance del proyecto
• Costos
 Análisis OO (Dominio del problema)
• Casos de Uso – análisis dinámico
• Modelos Conceptuales – análisis estático
• Diseño preliminar de interfaces (web, GUI, comandos,
Etapas de un proyecto de Software
(cont)
 Arquitectura (Dominio de la Solución)
• Especificación de la tecnología a utilizar (J2EE, .NET)
• Especificación de Patrones de Diseño
 Diseño (Dominio de la Solución)
• Diseño de Interfaces (web, gui, comandos, voz)
• Realización de diagramas de secuencia
• Realización de diagramas de clases
 Construcción / Codificación
• Entendimiento real del diseño ( solución) a programar
• Programación eficiente y optima del código fuente
• Comentar en forma entendible y razonable el código
fuente
• Construcción de programa de “TEST”
• Prueba unitaria del desarrollador mediante un programa
de “TEST”
 Pruebas Unitarias
• Realización de plan de pruebas
 Pruebas Integradas
Etapas de un proyecto de Software
(cont)
 Capacitación a Usuarios
• Confección de Manuales de Usuario
• Reuniones con usuario final
 Puesta en Producción
• Confección de plan de puesta en producción
 Marcha Blanca
 Garantía
• Resolución de Incidencias
Planificar y Evaluar Proyectos ...
 ¿Podré cumplir con los plazos?
 ¿Estaré dentro de lo
presupuestado?
 ¿El “cliente” quedará satisfecho?
Las Metodologías pueden ser la ayuda que
necesitamos, si podemos usarlas correctamente !!
10/03/2023
Procesos, Metodologías
¿Qué es una Metodología ...
Las metodologías imponen un
proceso disciplinado sobre el
desarrollo de software con el fin
de hacerlo más predecible y
eficiente.
Las ágiles más conocidas ...
 XP (Programación Extrema)
 La familia Cristal de Cockburn
 Código Abierto
 ASD (Desarrollo de Software Adaptable)
 SCRUM
 FFD (Desarrollo Manejado por Rasgos)
 DSDM (Método de desarrollo de sistema dinámico)
 RUP (Rational Unified Process)
Yo no conozco todas, pero vale la pena conocer al
menos una. Aquellas en rojo son la más populares.
Metodologías en área TI
 Más detalles aquí.
Requisitos
Capturar, definir y
validar los casos de uso
Realizar los
casos de uso
Verificar que se
satisfacen los casos
de uso
Análisis & Diseño
Implementación
Pruebas
Casos de Uso
integran el
trabajo
Proceso dirigido por los Casos de Uso
Caso de Uso Realización de Análisis Realización de Diseño
Caso de Prueba
X
«trace» «trace»
«trace»
«trace»
Pruebas Funcionales
Pruebas
Unitarias
[The Unified Software Development Process. I. Jacobson, G. Booch and J. Rumbaugh. Addison-Wesley, 1999]
... Proceso dirigido por los Casos de Uso
 El ciclo de vida iterativo se basa en la evolución
de prototipos ejecutables que se muestran a los
usuarios y clientes
 En el ciclo de vida iterativo en cada iteración se
reproduce el ciclo de vida en cascada a menor
escala
 Los objetivos de una iteración se establecen en
función de la evaluación de las iteraciones
precedentes
Proceso Iterativo e Incremental
... Proceso Iterativo e Incremental
 Cada iteración comprende:
 Planificar la iteración (estudio de riesgos)
 Análisis de los Casos de Uso y escenarios
 Diseño de opciones arquitectónicas
 Codificación y pruebas. La integración del nuevo
código con el hecho en iteraciones anteriores se
hace gradualmente durante la construcción
 Evaluación de la entrega de ejecutable (evaluación
del prototipo en función de las pruebas y de los
criterios definidos)
 Preparación de la entrega (documentación e
instalación del prototipo)
Enfoque
Cascada
Enfoque
Iterativo e
Incremental
Proceso Iterativo e Incremental
Grado de Finalización de Artefactos
... Proceso Iterativo e Incremental
Fases del Ciclo de Vida
 El ciclo de vida consiste en una serie de ciclos,
cada uno de los cuales produce una nueva versión
del producto
 Cada ciclo está compuesto por fases y cada una de
estas fases está compuesta por un número de
iteraciones
 Las fases son:
 Inicio o Estudio de oportunidad
 Elaboración
 Construcción
 Transición
...Fases del Ciclo de Vida
 Inicio o Estudio de oportunidad (inception)
 Define el ámbito y objetivos del proyecto
 Se define la funcionalidad y capacidades
del producto
 Elaboración
 Tanto la funcionalidad como el dominio del
problema se estudian en profundidad
 Se define una arquitectura básica
 Se planifica el proyecto considerando
recursos disponibles
...Fases del Ciclo de Vida
 Construcción
 El producto se desarrolla a través de iteraciones
donde cada iteración involucra tareas de análisis,
diseño e implementación
 Las fases de estudio y análisis sólo dieron una
arquitectura básica que es aquí refinada de manera
incremental conforme se construye (se permiten
cambios en la estructura)
 Gran parte del trabajo es programación y pruebas
 Se documenta tanto el sistema construido como el
manejo del mismo
 Esta fase proporciona un producto construido junto
con la documentación
...Fases del Ciclo de Vida
 Transición
 Se libera el producto y se entrega al usuario para un
uso real
 Se incluyen tareas de marketing, empaquetado
atractivo, instalación, configuración, entrenamiento,
soporte, mantenimiento, etc.
 Los manuales de usuario se completan y refinan con
la información anterior
 Estas tareas se realizan también en iteraciones
Dos lecciones importantes
 El tiempo es independiente del contexto.
Ahorrar una semana la comienzo de un
proyecto es tan bueno como ahorrarla al final.
Una semana es una semana.
 Es mucho más fácil ahorrar tiempo al inicio del
proyecto (cuando los entregables son menos
claros).
 Conclusión: Pronto hay que tener claro el
proyecto del ramo.
Ejemplo: Patrón Observador
 Modelo, vista, controlador
Vista
Modelo
Controlador

ELEMENTOS DE LA CONFIGURACION DE SOFTWARE.ppt

  • 1.
    10/03/2023 ELEMENTOS DE LACONFIGURACION DE SOFTWARE INGENIERO MARCO ZAPATA
  • 2.
    Definición  (1993) Laaplicación mecanismos sistemáticos, disciplinados, y cuantificables para el desarrollo, operación y mantención de software; esto es la aplicación de la ingeniería al software.  Establecimiento y uso de principios con caracteres de ingeniería apropiados para obtener, eficientemente, software confiable, que opere eficaz y eficientemente en máquinas reales  La aplicación del arte del desarrollo software junto con las ciencias matemáticas y computadores para diseñar, construir, y mantener programas computacionales eficientes y económicos que logran sus objetivos.
  • 3.
    Estado del arteen Ing. De Software  ¿Es una ciencia rigurosa con fuertes fundamentos matemáticos?  ¿Es una campo técnico bien desarrollado con mucho de disciplina de ingeniería?  O está realmente en un estado primitivo...  A lo más una serie de “mejores prácticas”, desarrolladores de software construyen software y si éstos funcionan entonces nosotros estudiamos como ellos lo hicieron.  Si éstos funcionan por un largo tiempo entonces estudiamos sus procesos de software aún más cuidadosamente.
  • 4.
    Construcción de unacasa para “fido” Puede hacerlo una sola persona Requiere: Modelado mínimo Proceso simple Herramientas simples
  • 5.
    Construcción de unacasa Construida eficientemente y en un tiempo razonable por un equipo Requiere: Modelado Proceso bien definido Herramientas más sofisticadas
  • 6.
  • 7.
    ¿Por qué laOrientación a Objetos?  Proximidad de los conceptos de modelado respecto de las entidades del mundo real  Mejora la captura y validación de requisitos  Acerca el “espacio del problema” y el “espacio de la solución”  Modelado integrado de propiedades estáticas y dinámicas del ámbito del problema  Facilita construcción, mantenimiento y reutilización  Podríamos dar muchas razones pero hay problemas..
  • 8.
    “...Los conceptos básicosde la OO se conocen desde hace dos décadas, pero su aceptación todavía no está tan extendida como los beneficios que esta tecnología puede sugerir” Problemas en OO
  • 9.
    … Problemas enOO  Un objeto contiene datos y operaciones que operan sobre los datos, pero ...  Podemos distinguir dos tipos de objetos degenerados:  Un objeto sin datos (que sería lo mismo que una biblioteca de funciones)  Un objeto sin “operaciones”, con sólo operaciones del tipo crear, recuperar, actualizar y borrar (que se correspondería con las estructuras de datos tradicionales)  Un sistema construido con objetos degenerados no es un sistema verdaderamente orientado a objetos
  • 10.
    Áreas cubiertas porla Ing. de Solftware La Ingeniería del Software estudia todos los aspectos involucrados en el desarrollo de software, entre los cuales se encuentran:  Etapas de un Proyecto de software  Paradigmas / enfoques para enfrentar el desarrollo del proyecto de software (Cascada, Interativo incremental)  Tiempo y Costos  Aspectos tecnológicos  Gestión de Proyectos
  • 11.
    Etapas de unproyecto de Software Etapas / Hitos escenciales rqueridos en un proyecto de desarrollo de software:  Oportunidad de Negocio (Hito)  Levantamiento Incial de Requerimientos (Dominio del problema) • Entendimiento inicial de la problemática a resolver • Reuniones con Cliente • Especificación inicial de requerimientos  Confección de Propuesta • Estimación de esfuerzos y planificación del proyecto. Uso de técnicas (COCOMO) y estadisticas de proyectos similares al que se dessarrollará, entrevistas a personas con experiencia en proyectos similares al que se desarrollará • Definición del alcance del proyecto • Costos  Análisis OO (Dominio del problema) • Casos de Uso – análisis dinámico • Modelos Conceptuales – análisis estático • Diseño preliminar de interfaces (web, GUI, comandos,
  • 12.
    Etapas de unproyecto de Software (cont)  Arquitectura (Dominio de la Solución) • Especificación de la tecnología a utilizar (J2EE, .NET) • Especificación de Patrones de Diseño  Diseño (Dominio de la Solución) • Diseño de Interfaces (web, gui, comandos, voz) • Realización de diagramas de secuencia • Realización de diagramas de clases  Construcción / Codificación • Entendimiento real del diseño ( solución) a programar • Programación eficiente y optima del código fuente • Comentar en forma entendible y razonable el código fuente • Construcción de programa de “TEST” • Prueba unitaria del desarrollador mediante un programa de “TEST”  Pruebas Unitarias • Realización de plan de pruebas  Pruebas Integradas
  • 13.
    Etapas de unproyecto de Software (cont)  Capacitación a Usuarios • Confección de Manuales de Usuario • Reuniones con usuario final  Puesta en Producción • Confección de plan de puesta en producción  Marcha Blanca  Garantía • Resolución de Incidencias
  • 14.
    Planificar y EvaluarProyectos ...  ¿Podré cumplir con los plazos?  ¿Estaré dentro de lo presupuestado?  ¿El “cliente” quedará satisfecho? Las Metodologías pueden ser la ayuda que necesitamos, si podemos usarlas correctamente !!
  • 15.
  • 16.
    ¿Qué es unaMetodología ... Las metodologías imponen un proceso disciplinado sobre el desarrollo de software con el fin de hacerlo más predecible y eficiente.
  • 17.
    Las ágiles másconocidas ...  XP (Programación Extrema)  La familia Cristal de Cockburn  Código Abierto  ASD (Desarrollo de Software Adaptable)  SCRUM  FFD (Desarrollo Manejado por Rasgos)  DSDM (Método de desarrollo de sistema dinámico)  RUP (Rational Unified Process) Yo no conozco todas, pero vale la pena conocer al menos una. Aquellas en rojo son la más populares.
  • 18.
    Metodologías en áreaTI  Más detalles aquí.
  • 19.
    Requisitos Capturar, definir y validarlos casos de uso Realizar los casos de uso Verificar que se satisfacen los casos de uso Análisis & Diseño Implementación Pruebas Casos de Uso integran el trabajo Proceso dirigido por los Casos de Uso
  • 20.
    Caso de UsoRealización de Análisis Realización de Diseño Caso de Prueba X «trace» «trace» «trace» «trace» Pruebas Funcionales Pruebas Unitarias [The Unified Software Development Process. I. Jacobson, G. Booch and J. Rumbaugh. Addison-Wesley, 1999] ... Proceso dirigido por los Casos de Uso
  • 21.
     El ciclode vida iterativo se basa en la evolución de prototipos ejecutables que se muestran a los usuarios y clientes  En el ciclo de vida iterativo en cada iteración se reproduce el ciclo de vida en cascada a menor escala  Los objetivos de una iteración se establecen en función de la evaluación de las iteraciones precedentes Proceso Iterativo e Incremental
  • 22.
    ... Proceso Iterativoe Incremental  Cada iteración comprende:  Planificar la iteración (estudio de riesgos)  Análisis de los Casos de Uso y escenarios  Diseño de opciones arquitectónicas  Codificación y pruebas. La integración del nuevo código con el hecho en iteraciones anteriores se hace gradualmente durante la construcción  Evaluación de la entrega de ejecutable (evaluación del prototipo en función de las pruebas y de los criterios definidos)  Preparación de la entrega (documentación e instalación del prototipo)
  • 23.
  • 24.
    Grado de Finalizaciónde Artefactos ... Proceso Iterativo e Incremental
  • 25.
    Fases del Ciclode Vida  El ciclo de vida consiste en una serie de ciclos, cada uno de los cuales produce una nueva versión del producto  Cada ciclo está compuesto por fases y cada una de estas fases está compuesta por un número de iteraciones  Las fases son:  Inicio o Estudio de oportunidad  Elaboración  Construcción  Transición
  • 26.
    ...Fases del Ciclode Vida  Inicio o Estudio de oportunidad (inception)  Define el ámbito y objetivos del proyecto  Se define la funcionalidad y capacidades del producto  Elaboración  Tanto la funcionalidad como el dominio del problema se estudian en profundidad  Se define una arquitectura básica  Se planifica el proyecto considerando recursos disponibles
  • 27.
    ...Fases del Ciclode Vida  Construcción  El producto se desarrolla a través de iteraciones donde cada iteración involucra tareas de análisis, diseño e implementación  Las fases de estudio y análisis sólo dieron una arquitectura básica que es aquí refinada de manera incremental conforme se construye (se permiten cambios en la estructura)  Gran parte del trabajo es programación y pruebas  Se documenta tanto el sistema construido como el manejo del mismo  Esta fase proporciona un producto construido junto con la documentación
  • 28.
    ...Fases del Ciclode Vida  Transición  Se libera el producto y se entrega al usuario para un uso real  Se incluyen tareas de marketing, empaquetado atractivo, instalación, configuración, entrenamiento, soporte, mantenimiento, etc.  Los manuales de usuario se completan y refinan con la información anterior  Estas tareas se realizan también en iteraciones
  • 29.
    Dos lecciones importantes El tiempo es independiente del contexto. Ahorrar una semana la comienzo de un proyecto es tan bueno como ahorrarla al final. Una semana es una semana.  Es mucho más fácil ahorrar tiempo al inicio del proyecto (cuando los entregables son menos claros).  Conclusión: Pronto hay que tener claro el proyecto del ramo.
  • 30.
    Ejemplo: Patrón Observador Modelo, vista, controlador Vista Modelo Controlador