Documente Academic
Documente Profesional
Documente Cultură
Objetivos
Descripcin de las actividades tcnicas e ingenieriles que se llevan a cabo en el ciclo de vida de un producto software
Descripcin de los problemas, principios, mtodos y tecnologas asociadas con la Ingeniera del Software Presentacin de la importancia de los requisitos en el ciclo de vida del software Introduccin a las tcnicas bsicas de elicitacin, documentacin, especificacin y prototipado de los requisitos de un sistema software Introduccin a los mtodos de anlisis/diseo estructurado, y los mtodos de anlisis/diseo orientado a objetos Estudio y comprensin de los fundamentos del diseo de sistemas software Aplicar de forma prctica los conceptos tericos sobre el desarrollo estructurado y orientado a objetos
Motivacin
La Ingeniera del Software dentro del currculo de los ingenieros en informtica aporta la primera aproximacin a la prctica real del desarrollo de software
Proyectos realizados por equipos de desarrollo Programacin a gran escala (programming in large) Obtencin (elicitacin) de los requisitos Modelos de ciclo de vida Gestin de la configuracin Calidad del software Mantenimiento
Ingeniera? de Software
Retraso respecto al potencial de hardware Insatisfaccin de la demanda Bajo cumplimiento de compromisos costos, plazos Baja calidad y satisfaccin de clientes/usuarios Mantencin de sistemas legados
Percepciones de la Disciplina
funcionalidad incorrecta costos y plazos excedidos insatisfaccin de clientes y usuarios poca o nula visibilidad de lo que ocurre
carcter lgico del software formacin profesional (o falta de) entrenamiento y actualizacin resistencia al cambio incorporar enfoque ingenieril en la forma de un proceso de software
Solucin potencial
estndares y procedimientos bastan tecnologa de punta basta ms gente para ponerse al da programacin inmediata fcil acomodo de los cambios programacin: fin del trabajo calidad: slo del ejecutable cdigo es el nico producto
Ingeniera de Software
Establecimiento y uso de principios con caracteres de ingeniera apropiados para obtener, eficientemente, software confiable, que opere eficaz y eficientemente en mquinas reales
Concepto se acu en 1968, en Conferencia de la OTAN en Alemania , con la intencin de que mediante el uso de filosofas y paradigmas de disciplinas ingenieriles establecidas se resolviera la denominada crisis del software
Ingeniera de Software
Objetivos
Ingeniera de Software
Implicancias
Todo en la forma de proceso de software adecuado al tipo de problema que se resuelve y que permitan gestionar de mejor manera los principales riesgos relevantes para todos los stakeholders (involucrados o afectados)
Proceso de Software
Desarrollo de software
Operacin
Anlisis
Diseo
Pruebas
Mantencin
Procesos de apoyo: Gestin de proyectos, Gestin de Configuracin, Gestin de Requerimientos, Gestin de la Calidad, .
Riesgos de Software
Categoras - Top 10
Mtricas inadecuadas Medicin inadecuada Presin excesiva de tiempo Malas prcticas de gestin Estimacin imprecisa de costos Sndrome del silver bullet Requerimientos Baja calidad Baja productividad Cancelacin de proyectos
Proceso de Software
Proveer un producto o un servicio, siempre consiste en seguir una secuencia de pasos, para llevar a cabo un conjunto de tareas Las tareas se ejecutan usualmente en el mismo orden todas las veces Un proceso es una serie de pasos que involucran actividades, restricciones y recursos, que producen una salida esperada, de algn tipo. Un proceso involucra usualmente un conjunto de herramientas y tcnicas.
Proceso de Software
Es importante, pues impone consistencia y estructura al conjunto de actividades Es ms que un procedimiento, es un conjunto organizado de stos. La estructura del proceso gua la accin, permitiendo examinar, entender, controlar y mejorar las actividades comprendidas por ste. Tambin es importante pues permite capturar y transmitir la experiencia, a proyectos futuros Cada proceso puede ser descrito por una combinacin de diferentes medios.
Un poco de Historia
la
A medida que el hardware aument sus capacidades y disminuy sus costos, se ampli el mbito de las aplicaciones y se masific el uso de computadores. Se incursion en reas donde los problemas no eran tan bien acotados (ej. administrativos) y el desarrollo se torn ms complejo.
Un poco de Historia
Aparece un problema an mayor: haba que mantener los sistemas. Esto escap de las manos de los usuarios- programadores, quienes ya no pudieron controlar el proceso, pues slo dominaban su especialidad, no el desarrollo de software. Se incorporan tpicos organizacionales y psicolgicos, as como tambin la demanda por mayor calidad y confiabilidad.
Un poco de Historia
Adems, ahora el desarrollo se convierte en una actividad de grupo, lo cual demanda planificar, organizar y estructurar el trabajo en torno a proyectos. La comunicacin entre humanos (usuario- desarrollador y desarrollador-desarrollador) se convierte en un problema. Se hace necesario definir un Proceso
Un poco de Historia
Unos son prescriptivos: establecen la forma en que debera progresar el proceso de software. Otros son descriptivos: dicen la forma en que el proceso de software progresa en la realidad.
Modelo en Cascada. Modelo en V. Modelo de Prototipacin. Modelo en Espiral. RUP Mtodos giles.
Modelo en Cascada
Es el ms antiguo. Debe completarse un estado antes de comenzar el siguiente. Es til para que el desarrollador visualice lo que va a hacer. Su principal problema es que no refleja la realidad..
Modelo en Cascada
Modelo en Cascada
Anlisis de Requerimientos:
Se centra e intensifica especialmente en el software El ingeniero de software debe comprender el mbito de la informacin del software, as como la funcin, el rendimiento y las interfaces requeridas Se enfoca en cuatro atributos: la estructura de los datos, la arquitectura del software, el detalle procedimental y la caracterizacin de la interfaz El proceso de diseo traduce los requisitos en una representacin del software con la calidad requerida antes de que comience la codificacin El diseo debe traducirse en una forma legible para la maquina. Si el diseo se realiza de una manera detallada la codificacin puede realizarse automticamente
Codificacin:
Modelo en Cascada
una vez que se ha generado el cdigo comienza la prueba del programa. La prueba se centra en la lgica interna del software, y en las funciones externas, realizando pruebas que aseguren que la entrada definida produce los resultados requeridos
Mantenimiento:
el software sufrir cambios despus de que se entrega al cliente, los cambios ocurrirn debido a que hayan encontrado errores, a que el software deba adaptarse a cambios del entorno externo (sistema operativo o dispositivos perifricos), o debido a que el cliente requiera ampliaciones funcionales o del rendimiento
Modelo V
Modelo V
La primera mitad es similar al Modelo en Cascada, y la otra mitad tiene como finalidad hacer pruebas e integracin asociado a cada una de las etapas de la mitad anterior. Se puede identificar una ventaja principal con respecto al Modelo Cascada ms simple, y se refiere a que este modelo involucra chequeos de cada una de las etapas del modelo de cascada.
Modelo de Prototipacin
Permite la construccin rpida del sistema (o parte de ste). Usuario y desarrollador tienen una visin comn. Se reduce el riesgo y lo incierto del desarrollo
Modelo en Espiral
Se combinan las actividades de desarrollo con Anlisis de Riesgo. El modelo es de tipo iterativo:
..En cada iteracin, se evalan las diferentes alternativas y se elige una. Los gestores del proyecto intentan eliminar o minimizar el riesgo.
Modelo en Espiral
Su objetivo es asegurar la produccin de software de calidad dentro de plazos y presupuestos predecibles. Dirigido por casos de uso, centrado en la arquitectura, iterativo (mini-proyectos) e incremental (versiones) Cada ciclo de vida del software abarca 4 fases en el siguiente orden: concepcin/planificacin, elaboracin, construccin y transicin La esencia de RUP es la iteracin, y cada iteracin resulta en un entregable preferentemente ejecutable
37
Caso de negocio:
Contexto Criterios de xito Pronstico financiero
39
Inicio
Elaboracin
Construccin
Transicin
Las partes interesadas deben acordar el alcance y la estimacin de tiempo y costo. Comprensin de los requerimientos plasmados en casos de uso.
40
Visin de una milla de amplitud y una pulgada de profundidad porque las decisiones de arquitectura requieren una visin global del sistema.
41
Ya hay menos riesgos y se puede planificar el resto del proyecto con menor incertidumbre. Se construye una arquitectura ejecutable que contemple:
Los casos de uso crticos Los riesgos identificados
A partir de aqu la arquitectura, los requerimientos y los planes de desarrollo son estables.
42
43
Inicio
Elaboracin
Construccin
Transicin
46
Inicio
Elaboracin
Construccin
Transicin
Se obtiene un producto Beta que debe decidirse si puede ponerse en ejecucin sin mayores riesgos. Condiciones de xito:
El producto est maduro y estable para instalarlo en el ambiente del cliente? Estn los interesados listos para recibirlo?
47
Producto
49
Mtodos giles
Inters creciente en los mtodos giles (inicialmente llamados ligeros, lightweight) en los ltimos aos
enfrentamiento de requerimientos cambiantes tiempos de desarrollo escasos clientes y usuarios cada vez ms exigentes
Mtodos giles
Documentacin mnima Ciclos iterativos breves Reaccin rpida ante los cambios Estrecha relacin con el cliente Diseo simple Satisfaccin de necesidades inmediatas Foco en las personas Organizacin libre Procesos adaptables, no predictivos
Mtodos giles
El proceso de Desarrollo XP
Fase inicial de captura de requerimientos es eliminada El ciclo de desarrollo de XP se divide en liberaciones cada una de las cuales es medida en historias de usuario
Historia de usuario: unidad funcional en un proyecto XP, debe ser entendible tanto para el cliente como para los desarrolladores, verificable y pequea
Mtodos giles
El proceso de desarrollo XP
Fase de Exploracin Fase de Planificacin Fase de Iteraciones y Entregas Fase de Produccin Fase de Mantenimiento Fase de Muerte
Mtodos giles
Extreme Programming, XP Scrum Crystal Family Feature-Driven Design Adaptive Software Development DSDM Otros
Ultimamente, distintos trabajos han investigado la relacin entre modelos de proceso y mtodos giles, observando lo siguiente
CMM/CMMI y XP pueden complementarse (foco en aspectos de gestin vs. tcnicos) Mtodos giles calzan con la esencia del mejoramiento de procesos bajo una interpretacin menos literal (que CMMI, por ejemplo) Mtodos giles apuntan a gestin de proyectos, no a gestin de procesos
Bibliografa
Pressman Roger. Ingeniera del Software. Tercera Software Engineering: Theory and Practice (2nd Ed.) Shari Pfleeger, Prentice Hall (2001), Cap. 1&2 The Software-Research Crisis. Robert L. Glass, IEEE Software, Noviembre 1994 Using Risk to Balance Agile and Plan-Driven Methods Barry Boehm, Richard Turner, IEEE Computer, Junio 2003 Agile Alliance http://www.agilealliance.com/ What is extreme programming? http://www.xprogramming.com/
Anexos
59
Datos
Nivel Conceptual (Esquema del Negocio) Nivel Lgico (S.I.A)
Funcin
Comunicaciones
. ...
Nivel Fsico
(Implementa cin Compu tacional)
60
61