Date post: | 22-Jan-2016 |
Category: |
Documents |
Upload: | aldonza-ortiz |
View: | 288 times |
Download: | 1 times |
Ingeniería de Software – Ingeniería de Sistemas1
ESCUELA PROFESIONAL DE
INGENIERIA DE SISTEMAS
Ingeniería de softwareSesión 1 :
2 Ingeniería de Software – Ingeniería de Sistemas
Temario ...
Presentación de Silabo
Prueba de Entrada
Introducción
Metodologías
Mensaje Final
Preguntas
3 Ingeniería de Software – Ingeniería de Sistemas
Presentación del SilaboPRIMERA UNIDAD Lunes Jueves
01 LA INGENIERIA DE SOFTWARE 25.Ago
28.Ago
02 PROCESO UNIFICADO DE DESARROLLO DE SOFTWARE 01.Set 04.Set
03 PROCESO DE SOFTWARE Y GESTION DE PROYECTOS DE SOFWARE
08.Set 11.Set
04 REQUERIMIENTOS 15.Set 18.Set
05 CASOS DE USO 22.Set 25.Set
06 INTRODUCCION A LA ORIENTACION A OBJETOS 29.Set 02.Oct
SEGUNDA UNIDAD Lunes Jueves
07 DOCUMENTACION DIAGRAMAS DE MODELOS DE DOMINIO
06.Oct 09.Oct
08 COMPORTAMIENTOS DE OBJETOS 13. .Oct
16.oCT
09 AQUITECTURA DE HW. Y SW. 20. .Oct
23.Oct
10 DIAGRAMA E CLASE Y DIAGRAMAS DE COLABORACION
27. .Oct
30.Oct
11 EXAMEN PARCIAL 03.Nov 06.Nov
4 Ingeniería de Software – Ingeniería de Sistemas
Presentación del SilaboTERCERA UNIDAD Lunes Jueves
12 MODELO DE DISEÑO 10.Nov
13.Nov
13 PRUEBAS 17.Nov
20.Nov
14 METRICAS 24.Nov
27.Nov
15 SUSTENTACION DEL PROYECTO 01.Dic 04.Dic
16 EXAMEN FINAL 08.Dic 11.Dic
17 EXAMEN DE REZAGADOS Y SUSTITUTORIO 15.Dic 18.DicREFERENCIA BIBLIOGRAFICA
005.1 P93PRESSMAN, Roger. Ingeniería de Software. 6ta Edición. México D.F.: McGraw-Hill, 2010. 777p. ISBN: 9786071503145
005.133 J88
JOYANES, Luis. Programación en C ++. Madrid.: McGraw-Hill Interamericana, 2006. 847p. ISBN: 844814645X
005.133 J99
JOYANES, Luis. Programación en C, C ++, Java y UML. México D.F.: McGraw-Hill, 2010. 930p. ISBN: 9789701069493
5 Ingeniería de Software – Ingeniería de Sistemas
Prueba de Entrada
Ingeniería de Software – Ingeniería de Sistemas6
Introducción ...
7 Ingeniería de Software – Ingeniería de Sistemas
IngenieríaConjunto de conocimientos y técnicas científicas
Conjunto de instrucciones que permite al Hardware desempeñar trabajo útil.
Software
8 Ingeniería de Software – Ingeniería de Sistemas
¿Qué es Ingeniería de Software?
Es una disciplina o área de la informática o ciencia de la computación, que ofrece conocimientos, técnicas y métodos para desarrollar y mantener software de calidad que resuelva problemas de todo tipo.
9 Ingeniería de Software – Ingeniería de Sistemas
¿Qué es Software de Calidad?
Es la aptitud de un producto o servicio para satisfacer la necesidades del usuario.
• Funcionalidad• Fiabilidad• Usabilidad• Eficiencia• Mantenibilidad• Portabilidad
10 Ingeniería de Software – Ingeniería de Sistemas
Calidad de Producto – ISO 9126 Características
11 Ingeniería de Software – Ingeniería de Sistemas
• La Ing.Software es una tecnología multicapa– Enfoque de Calidad– Proceso– Métodos– Herramientas
Capas de la Ingeniería de Software
12 Ingeniería de Software – Ingeniería de Sistemas
PROCESOS Es la unión que mantiene juntas las capas de
tecnología y que permite un desarrollo racional y oportuno de la ingeniería de software.
Asegurando un Producto Excelente
Capas de la Ingeniería de Software
13 Ingeniería de Software – Ingeniería de Sistemas
METODOS Indican como construir técnicamente el software Abarcan una gran gama de tareas que incluyen análisis de
requisitos, diseño, construcción de programas, pruebas y mantenimiento.
HERRAMIENTAS Uso de tecnologías para asistir el desarrollo del software y
asegurar el cumplimiento de los objetivos del software Proporcionan un enfoque automático / semiautomático
para el proceso y para las metodologías.
Capas de la Ingeniería de Software
14 Ingeniería de Software – Ingeniería de Sistemas
El estado de desarrollo de software
La mayoría de los proyectos de desarrollo de software fallan Qué significa fallar?
No cumplir los cronogramas No cumplir el presupuesto No satisfacer la funcionalidad requerida Demasiados defectos una vez en producción Demasiado frágil a los cambios...
15 Ingeniería de Software – Ingeniería de Sistemas
¿Qué tipo de Problemas Surgen?
Retrasos en los proyectos. Falta de calidad. Incumplimiento con la funcionalidad acordada. Desarrolladores innovadores. Exceso de requerimientos y funcionalidad. Falta de planificación. Motivación débil, Falta de participación. No existe gestión de riesgos.
ALLSOFT, S.A.. de C.V., 2002
16 Ingeniería de Software – Ingeniería de Sistemas
La gestión tradicional en la ing. de software
17 Ingeniería de Software – Ingeniería de Sistemas
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 !!
Ingeniería de Software – Ingeniería de Sistemas18
Metodologías ...
19 Ingeniería de Software – Ingeniería de Sistemas
¿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.
20 Ingeniería de Software – Ingeniería de Sistemas
Metodologías ...
Metodología Monumental
Existen hace mucho tiempo, no han sido exitosas porque son muy burócratas, se han orientado al documento más
que a los resultados.
21 Ingeniería de Software – Ingeniería de Sistemas
Es necesario establecer un enfoque disciplinado y sistemático para desarrollar un proyecto de software.
“Conjunto de filosofías, fases, procedimientos, reglas, técnicas, herramientas, documentación y aspectos de formación para los desarrolladores de sistemas de información.” - Maddison 1983
“Conjunto de procedimientos, técnicas, herramientas y un soporte documental que ayuda a los desarrolladores a realizar nuevo software.”
Las Metodologías nos describen:
Cómo se debe dividir un proyecto en etapas.
Qué tareas se llevan a cabo en cada una
Qué salidas se producen y cuándo
Qué restricciones se aplican
Qué herramientas se van a utilizar
Cómo se gestiona y controla un proyecto
Metodologías ...
22 Ingeniería de Software – Ingeniería de Sistemas
Modelos Convencionales o Tradicionales
CascadaIncrementalPrototipado EvolutivoEspiral
Modelos de Desarrollo AGILES
Clasificación de las Metologías según el Modelo de Proceso
23 Ingeniería de Software – Ingeniería de Sistemas
Modelo lineal o Cascada
El modelo lineal presenta una estructura secuencial (de ahí el nombre de Modelo en cascada)
Formada por seis fases o etapas: Definición de Requerimientos Análisis y Diseño Implementación Prueba Mantenimiento
El desarrollo de las fases, se produce de manera secuencial. El Modelo en cascada no permite retroceder, por lo que se
hace estrictamente necesario que al final de cada fase el analista de sistemas verifique y valide todo el trabajo realizado.
24 Ingeniería de Software – Ingeniería de Sistemas
Modelo de Cascada (gráfica)
Definición de Requerimientos
Análisis y Diseñoy del Sistema
Implementación yPrueba de unidades
Integración y Prueba del Sistema
Operación yMantenimiento
25 Ingeniería de Software – Ingeniería de Sistemas
Modelo incremental
El modelo incremental es una evolución del modelo de cascada; viene a suplir el problema de no poder retroceder en las fases de desarrollo del software.
Comienza con el análisis de los requisitos, tras el cual se prepara un primer diseño.
Este modelo ofrece la posibilidad de comenzar un diseño, arquitectura, estructura, etc del software, que de no convencer al cliente (o al propio programador) es rechazado y se comienza con una segunda iteración (o un segundo diseño), sin necesidad de realizar un nuevo análisis de requisitos.
Pueden realizarse tantas iteraciones como sean necesarias.
26 Ingeniería de Software – Ingeniería de Sistemas
Modelo incremental
Análisis de Requerimientos
VersiónInicial
VersiónFinal
VersionesIntermedias
Análisis y Diseño
Desarrollo
Validación
ActividadesConcurrentes
27 Ingeniería de Software – Ingeniería de Sistemas
Modelo de construcción de prototipos
Este modelo no secuencial, basado en la construcción de simulaciones o modelos ejecutables de aplicaciones más extensos
Persigue un objetivo principal: la participación directa del cliente en la construcción del software requerido.
Las fases son similares a las del modelo en cascada. El diseño rápido del prototipo se mostrará al cliente para que evalúe el
trabajo realizado. El prototipo es una versión reducida del programa completo. Tras
recoger los requisitos tanto del cliente como del sistema, se comienza con el diseño rápido del prototipo;
El diseño completo obedece al previo diseño de pequeños prototipos específicos para funciones individuales. Más tarde, estos diseños serán unidos en uno sólo.
Después, se procede a la construcción del mismo.
28 Ingeniería de Software – Ingeniería de Sistemas
Modelo de construcción de prototipos
En Ingeniería de software la construcción de prototipos pertenece a los modelos de desarrollo evolutivo, El prototipo debe ser construido en poco tiempo, usando los programas adecuados y no se debe utilizar mucho dinero pues a partir de que este sea aprobado es que el desarrollador puede iniciar el verdadero desarrollo del software.
29 Ingeniería de Software – Ingeniería de Sistemas
Modelo espiral
Este modelo, también no secuencial, es algo más complejo que los anteriores, aunque incluye un elemento muy útil e importante en el desarrollo del software: análisis de riesgos.
El modelo en espiral concreta cuatro fases:Definición de ObjetivosEvaluación y reducción de riesgosDesarrollo y ValidaciónPlanificación
Si ésta última fase es afirmativa, el modelo continúa con la estructura del Ciclo de vida Clásico. Si el cliente no está satisfecho con el resultado, se cubre otra banda de la espiral y se vuelve a la primera fase (de planificación).
30 Ingeniería de Software – Ingeniería de Sistemas
Modelo de Proceso de Espiral
Definición de objetivosAnálisis de riesgos
Análisis deRiesgos
Análisis deRiesgos
Análisis deRiesgos
Análisis de
Riesgos
Planificación Desarrollo y Pruebas
PrototipoOperacionalPrototipo
3Prototipo2Proto
tipo 3
Plan de requerimientosPlan del ciclo de vida
REVISIÓN
Plan de Desarrollo
Plan de Integracióny Prueba
Concepto deOperación
Simulaciones, modelos y benchmarks
Requerimientos de
SWValidación deRequerimientos
Diseño
Servicio
Prueba deAceptación
Prueba deIntegración
Prueba deUnidades
Codificación
DiseñoDetallado
AnalisisProducto
31 Ingeniería de Software – Ingeniería de Sistemas
Metodologías ...
Son la justa medida entre “ningún proceso” y “demasiado proceso”, proporcionando simplemente “suficiente
proceso” para que el esfuerzo valga la pena !!!
Metodología Ágil
32 Ingeniería de Software – Ingeniería de Sistemas
Modelos Tradicionales vs Agiles
Las Metodologías Tradicionales se centran especialmente el control del proceso, mediante un rigorosa definición de roles, actividades, artefactos y herramientas y notaciones para el modelado y documentación detallada. Muy efectivas y necesarias para proyectos grandes.
Las Metodologías Agiles dan mayor prioridad al individuo, a la colaboración con el cliente y al desarrollo incremental del software con interacciones muy cortas.
Metodología Ágil Metodología TradicionalPreparados para el cambio durante el proyecto Cierta resistencia al cambioPocos artefactos Más artefactosPocos roles Más rolesNo existe un contrato tradicional o al menos es bastante flexible
Existe un contrato prefijado
El cliente es parte del equipo de desarrollo (además in-situ)
El cliente interactúa con el equipo de desarrollo mediante reuniones
Grupos pequeños (< 10 integrantes) y trabajando en el mismo sitio
Grupos grandes
Menos énfasis en la arquitectura La arquitectura es esencial
33 Ingeniería de Software – Ingeniería de Sistemas
Costo de los Cambio en la Costrucción de SW
A medida que avanza el tiempo, el costo es exponencial en el caso de la construcción mediante una metodología tradicional a diferencia de la metodología tradicional.
34 Ingeniería de Software – Ingeniería de Sistemas
Principios de la Metología Agil
Satisfacer al cliente a través de tempranos y continuos entregables Abrazar el cambio, ya que los requisitos cambian todo el tiempo Entregar con frecuencia software que funcione, de dos semanas a un par de
meses Trabajar juntos diariamente en el proyecto tanto las personas del negocio
como los desarrolladores. El método mas eficiente y eficaz para transmitir información a los
integrantes de un equipo de desarrollo, es conversación cara a cara La medida principal de avance es el software que funciona Construir proyectos alrededor de individuos motivados Asumir simplicidad Promover el desarrollo sostenible
35 Ingeniería de Software – Ingeniería de Sistemas
¿Cuando un método es ágil?
El desarrollo de software es
Incremental liberaciones pequeñas y ciclos rápidos.
Cooperativo clientes y desarrolladores trabajando juntos.
Simple y Directo el método es fácil de aprender y modificar.
Adaptativo es posible realizar cambios de último momento.
36 Ingeniería de Software – Ingeniería de Sistemas
Reflexión
Highsmith & Cockburn 2001
“Lo que es nuevo en los procesos ágiles no son las prácticas que usan, sino que reconozcan a las personas como primeros implicados en el éxito de un proyecto, además de un intenso foco en la efectividad y la manejabilidad. Esto genera una nueva combinación de valores y principios que definen una visión ágil del mundo.”
37 Ingeniería de Software – Ingeniería de Sistemas
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)
38 Ingeniería de Software – Ingeniería de Sistemas
Programación Extrema (XP)Creado por Kent Beck
Metodología ágilDiseñada para entornos dinámicos
Pensada para equipos pequeños (hasta 10 programadores)
Orientada fuertemente hacia la codificación
Énfasis en la comunicación informal, verbal
Basado en cinco valores 1. Comunicación Eficaz: Colaboración estrecha pero informal (verbal) entre los
clientes y los desarrolladores
2. Simplicidad: XP restringe a los desarrolladores para que diseñen solo para las necesidades inmediatas.
3. Retroalimentación: XP usa las pruebas unitarias como táctica principal de pruebas
4. Coraje y Valentía: Permite a los desarrolladores que se sientan cómodos con reconstruir su código cuando sea necesario.
39 Ingeniería de Software – Ingeniería de Sistemas
Proceso de la Programación Extrema
40 Ingeniería de Software – Ingeniería de Sistemas
SCRUM
SCRUM es un termino de Rugby, es la agrupación de los miembros del equipo. De esta manera el equipo trata de recorrer la distancia hacia la meta como una unidad, pasándose la pelota entre ellos.
Concebido por Jeff Sutherland y su equipo de desarrollo a principios de la década de 1990.
41 Ingeniería de Software – Ingeniería de Sistemas
¿ Que es Scrum?
SCRUM es una metodología ágil de gestión de proyectos cuyo objetivo primordial es elevar al máximo la productividad de un equipo.
Reduce al máximo la burocracia y actividades no orientadas a producir software que funcione y produce resultados en periodos muy breves de tiempo (cada 30 días), por medio de iteraciones o Sprints.
Ideal para proyectos con un rápido cambio de requerimientos.
¿ Ciclo de Vida ?
Todo el trabajo es realizado en Sprints (30 días) Durante el Sprint se realizan reuniones que constituyen la inspección
empírica y las practicas de adaptación de Scrum.
Ingeniería de Software – Ingeniería de Sistemas42
Mensaje Final ...
43 Ingeniería de Software – Ingeniería de Sistemas
Mensaje Final ...
Hay prácticas que son aplicables a cualquier tipo de proyecto que uno quiera emprender.
Para romper paradigmas hay que tener la mente abierta.
Las metodologías nos dan la posibilidad de hacer mejor las cosas y generar valor.
El adoptar metodologías en una organización no es un proceso fácil y requiere de ayuda externa.
Ingeniería de Software – Ingeniería de Sistemas44
Preguntas ...
Ingeniería de Software – Ingeniería de Sistemas45
Gracias ...