Este documento presenta una introducción a la ingeniería de software. Explica que la ingeniería de software incluye métodos, herramientas y procedimientos para construir software de manera sistemática. Luego, describe algunos modelos de ciclo de vida de desarrollo de software como la cascada, el espiral, el prototipado y las metodologías ágiles. Finalmente, introduce el Modelo CMM para evaluar la madurez de los procesos de desarrollo de software en una organización.
Diseño de una infraestructura TI para un ambiente de Integración Continua en ...Lis Pater
El presente documento trata del diseño de una infraestructura TI para crear un sistema de Integración Continua a la vanguardia de las tendencias actuales en desarrollo de software, con el objetivo de solucionar los problemas presentados en el programa de ingeniería de sistemas de la Facultad De Ciencias Básicas, Ingenierías Y Arquitectura de la Corporación Universitaria del Caribe CECAR, tales como la falta de acceso, compartición y modificación de proyectos de software por parte de docentes y estudiantes durante el proceso de desarrollo de software.
Diseño de una infraestructura TI para un ambiente de Integración Continua en ...Lis Pater
El presente documento trata del diseño de una infraestructura TI para crear un sistema de Integración Continua a la vanguardia de las tendencias actuales en desarrollo de software, con el objetivo de solucionar los problemas presentados en el programa de ingeniería de sistemas de la Facultad De Ciencias Básicas, Ingenierías Y Arquitectura de la Corporación Universitaria del Caribe CECAR, tales como la falta de acceso, compartición y modificación de proyectos de software por parte de docentes y estudiantes durante el proceso de desarrollo de software.
Metodologías de desarrollo ágiles: Scrum, XPejordi
Metodologías de desarrollo ágiles: Scrum y eXtreme Programming.
Treball de l'assignatura Gestió de Sistemes d'Informació (GESI) de la Universitat Politècnica de Catalunya (UPC). Professor: Jordi Esteve. Gener 2009. Vilanova i la Geltrú. Barcelona. Catalunya.
PRINCIPIOS BÁSICOS DE CONSTRUCCIÓN DE SOFTWARE Y TRATAMIENTO DE EXCEPCIONESFranklin Parrales Bravo
Objetivo: Identificar los principios básicos del desarrollo de software y del tratamiento de excepciones en el desarrollo mediante la aplicación de técnicas usadas en la industria para construir software seguro.
Metodologías de desarrollo ágiles: Scrum, XPejordi
Metodologías de desarrollo ágiles: Scrum y eXtreme Programming.
Treball de l'assignatura Gestió de Sistemes d'Informació (GESI) de la Universitat Politècnica de Catalunya (UPC). Professor: Jordi Esteve. Gener 2009. Vilanova i la Geltrú. Barcelona. Catalunya.
PRINCIPIOS BÁSICOS DE CONSTRUCCIÓN DE SOFTWARE Y TRATAMIENTO DE EXCEPCIONESFranklin Parrales Bravo
Objetivo: Identificar los principios básicos del desarrollo de software y del tratamiento de excepciones en el desarrollo mediante la aplicación de técnicas usadas en la industria para construir software seguro.
Charla impartida en la Confederación de Empresarios de Pontevedra el 13 de junio de 2007 sobre diferentes aspectos de la planificación y la gestión de proyectos tecnológicos.
Mejores Practicas en Proyectos de Inversión de Capital PDVSAfcomputacional
Curso Dictado a PDVSA a personal de Bariven sobre Mejores Prácticas en Proyectos de Inversión de Capital orientado a Procura, algunas laminas fueron añadidas intencionalmente para romper hielo y otras para aligerar el curso
Content personalisation is becoming more prevalent. A site, it's content and/or it's products, change dynamically according to the specific needs of the user. SEO needs to ensure we do not fall behind of this trend.
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldabaux singapore
How can we take UX and Data Storytelling out of the tech context and use them to change the way government behaves?
Showcasing the truth is the highest goal of data storytelling. Because the design of a chart can affect the interpretation of data in a major way, one must wield visual tools with care and deliberation. Using quantitative facts to evoke an emotional response is best achieved with the combination of UX and data storytelling.
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
By David F. Larcker, Stephen A. Miles, and Brian Tayan
Stanford Closer Look Series
Overview:
Shareholders pay considerable attention to the choice of executive selected as the new CEO whenever a change in leadership takes place. However, without an inside look at the leading candidates to assume the CEO role, it is difficult for shareholders to tell whether the board has made the correct choice. In this Closer Look, we examine CEO succession events among the largest 100 companies over a ten-year period to determine what happens to the executives who were not selected (i.e., the “succession losers”) and how they perform relative to those who were selected (the “succession winners”).
We ask:
• Are the executives selected for the CEO role really better than those passed over?
• What are the implications for understanding the labor market for executive talent?
• Are differences in performance due to operating conditions or quality of available talent?
• Are boards better at identifying CEO talent than other research generally suggests?
Los Modelos Prescriptivos de Proceso definen un conjunto distinto de actividades, acciones, tareas, flujo de trabajo, fundamentos y productos de trabajo que se requieren para software de alta calidad.
Sesión 3: Modelos prescriptivos de proceso de softwareLuis Fernández
Los Modelos Prescriptivos de Proceso definen un conjunto distinto de actividades, acciones, tareas, flujo de trabajo, fundamentos y productos de trabajo que se requieren para software de alta calidad.
5. 1.- La Ingeniería de Software
El considerar que un proyecto
de desarrollo de software podía
abordarse como cualquier otro ha
llevado a una serie de problemas
El identificar dichos problemas
y conocer sus causas es el único
método que nos puede llevar
hacia su solución.
6. 1.- La Ingeniería de Software
La ingeniería del software abarca un conjunto de tres elementos
clave: métodos, herramientas y procedimientos
Los métodos indican cómo construir técnicamente el software, y
abarcan una amplia serie de tareas que incluyen:
La planificación y estimación de proyectos,
El análisis de requisitos
El diseño de estructuras de datos
Programas y procedimientos
La codificación
Las pruebas
El mantenimiento.
7. 1.- La Ingeniería de Software
Las herramientas proporcionan un soporte automático o
semiautomático para utilizar los métodos, se denominan CASE
(Computer Assisted Software Engineering).
Los procedimientos definen la secuencia en que se aplican los
métodos, los documentos que se requieren, los controles que
permiten asegurar la calidad y las directrices de evaluación de
progresos.
8. 1.- La Ingeniería de Software
La elección del ciclo de vida más
apropiado para un proyecto es una cuestión
fundamental ya que influye decisivamente
en la velocidad con la que se llevará a
cabo el proyecto y la satisfacción que
generará al cliente.
La evolución de la tecnología y la alta
heterogeneidad que presentan los proyectos
hoy en día han creado la necesidad de
afrontar los proyectos con ciclos de vida
personalizados para el perfil de cada
proyecto.
METODOLOGIAS DE DESARROLLO DE SWMETODOLOGIAS DE DESARROLLO DE SW
9. 1.- La Ingeniería de Software
Modelo de Cascada
Modelo Espiral
Prototipado
Metodología Ágil (XP)
Proceso Unificado
Modelo CMM
Entre los modelos Genéricos de Desarrollo de Software
tenemos:
METODOLOGIAS DE DESARROLLO DE SWMETODOLOGIAS DE DESARROLLO DE SW
10. 1.- La Ingeniería de Software
Naturaleza estrictamente secuencial en la ejecución de sus fases.
Modelo es adecuado cuando los requisitos están bien definidos,
estables y se dominan las metodologías y herramientas a utilizar.
MODELOS CLASICO O CASCADAMODELOS CLASICO O CASCADA
11. 1.- La Ingeniería de Software
Minimiza las tareas de desarrollo
Minimiza la carga de planificación.
La complejidad de proyectos grandes
se afronta de una manera ordenada y
aumenta las posibilidades de éxito.
Alto control de cada actividad y sus
resultados.
Ayuda a trabajar mejor con equipos de
desarrollo de relativamente baja
cualificación.
Ventajas:
MODELOS CLASICO O CASCADAMODELOS CLASICO O CASCADA
12. 1.- La Ingeniería de Software
Es muy inflexible,
Retrocede en las fases para corregir
errores
Resultados tangibles para el cliente
aparecen prácticamente al final del
proyecto, algo que muchas veces no
aceptan los clientes.
Desventajas:
MODELOS CLASICO O CASCADAMODELOS CLASICO O CASCADA
13. 1.- La Ingeniería de Software
La “cascada” retarda la reducción del Riesgo
R
I
E
S
G
O
T I E M P O
Test Subs.
Test. Sistema
Cod. & Test U.
Diseño
An. Requer.
MODELOS CLASICO O CASCADAMODELOS CLASICO O CASCADA
14. 1.- La Ingeniería de Software
DDESARROLLO DEL CICLO ESPIRALESARROLLO DEL CICLO ESPIRAL
En cada iteración se realizan los siguientes pasos:
Planificación: Determinar objetivos, alternativas y restricciones
Análisis de riesgo: Análisis de riesgos y evaluación de
alternativas
Ingeniería: Desarrollo de los entregables o prototipos de la
iteración
Evaluación del resultado: Evaluación y validación del resultado
Ciclo de vida iterativo orientado a la eliminar progresivamente los
riesgos, hasta que el nivel de riesgo sea suficientemente bajo para
continuar con un ciclo menos complejo.
16. 1.- La Ingeniería de Software
Ventajas:
Centra su atención en la reutilización de
componentes y eliminación de errores en
información descubierta en fases iniciales.
Los objetivos de calidad son el primer
objetivo.
Integra desarrollo con mantenimiento.
Provee un marco de desarrollo de
hardware/software.
DDESARROLLO DEL CICLO ESPIRALESARROLLO DEL CICLO ESPIRAL
17. 1.- La Ingeniería de Software
Desventajas:
El desarrollo contractual especifica
el modelo del proceso y los resultados
a entregar por adelantado.
Requiere de experiencia en la
identificación de riesgos.
DDESARROLLO DEL CICLO ESPIRALESARROLLO DEL CICLO ESPIRAL
18. 1.- La Ingeniería de Software
Plantilla para una ronda del espiral
Objetivos.
Restricciones.
Alternativas.
Riesgos.
Resolución de riesgos.
Resultados.
Planes.
Garantías (commitments).
DDESARROLLO DEL CICLO ESPIRALESARROLLO DEL CICLO ESPIRAL
19. 1.- La Ingeniería de Software
DESARROLLO EVOLUTIVO ORIENTADO A PROTOPTIPOSDESARROLLO EVOLUTIVO ORIENTADO A PROTOPTIPOS
Se parte de un concepto inicial de la aplicación y es este concepto
el que evoluciona.
Se desarrolla un primer prototipo relativamente completo,
frecuentemente a ser ya utilizado por cliente.
El cliente aporta realimentación, se desarrolla la siguiente versión, y
así sucesivamente hasta que se alcance una versión que le satisface.
Establish
prototype
objectives
Define
prototype
functionality
Develop
prototype
Evaluate
prototype
Prototyping
plan
Outline
definition
Executable
prototype
Evaluation
report
20. 1.- La Ingeniería de Software
Ventajas:
Se detectan los servicios que hacen falta y
confusos
Un sistema desarrollado esta disponible antes
del sistema final
El prototipo puede servir como la base de la
especificación del sistema
El cliente participa muy activamente en el
desarrollo
Aporta resultados tangibles.
Se añade mucha flexibilidad a la negociación
del proyecto.
DESARROLLO EVOLUTIVO ORIENTADO A PROTOPTIPOSDESARROLLO EVOLUTIVO ORIENTADO A PROTOPTIPOS
21. 1.- La Ingeniería de Software
Desventajas:
En grandes proyectos es casi imposible
saber cuando se llegará al producto final
Hay una gran tentación de no llegar al final
con las iteraciones necesarias.
Para un desarrollador este ciclo de vida
puede ser una tentación a desarrollar de
forma anárquica (dejar de lado requisitos,
análisis, etc.)
DESARROLLO EVOLUTIVO ORIENTADO A PROTOPTIPOSDESARROLLO EVOLUTIVO ORIENTADO A PROTOPTIPOS
22. 1.- La Ingeniería de Software
Objetivo: controlar el problema en el desarrollo del SW: alta
volatilidad, especificaciones incompletas, cambios y falta de
cultura del negocio que hace que se tarden en entender el sistema
que deben desarrollar.
EXTREME PROGRAMINGEXTREME PROGRAMING
Una metodología ágil de desarrollo de software.
23. 1.- La Ingeniería de Software
Los requerimientos continuos (user stories)
Número alto de versiones con pocas funcionalidades nuevas.
Alto nivel de rotación entre tareas del proyecto
Máxima simplicidad en el diseño.
Mantener la funcionalidad en el nivel más básico posible.
Aplicar técnicas de Refactoring
El cliente debe estar siempre disponible.
Programar antes el código de las pruebas unitarias.
Propiedad colectiva del código.
Dejar las optimizaciones para el final.
Todo el código debe tener sus pruebas de unidad.
Uso intensivo de tests de aceptación.
EXTREME PROGRAMINGEXTREME PROGRAMING: CARACTERISTICAS: CARACTERISTICAS
24. 1.- La Ingeniería de Software
Planning
Designing
Coding Testing
EXTREME PROGRAMINGEXTREME PROGRAMING: PARTES: PARTES
25. 1.- La Ingeniería de Software
Ventajas:
Considera la realidad en los desarrollos con los
clientes.
Enfatiza en la importancia el diseño simple y de
las pruebas.
Inconvenientes:
La metodología no es escalable.
Algunos de los principios parecen demasiado
extremos y no tienen un respaldo: Por ejemplo, el
principio de la programación colectiva, Refactoring.
EXTREME PROGRAMINGEXTREME PROGRAMING
26. 1.- La Ingeniería de Software
DESARROLLO ORIENTADO A ENTREGABLES O HITOSDESARROLLO ORIENTADO A ENTREGABLES O HITOS
Esta metodología tiene cierta indefinición en las funcionalidades
implementadas en el SW, pero fija claramente un punto final en el
tiempo.
En este ciclo de vida básicamente se trabaja secuencialmente en
la base estable del producto que incluye llegar hasta el diseño de la
arquitectura, a partir de ahí se trabaja en ciclos iterativos sobre el
diseño detallado, codificación y pruebas.
27. 1.- La Ingeniería de Software
Ventajas
Estrategia relativamente óptima ante una situación
de fecha límite rígida
Permite reducir mucho el riesgo en proyectos
grandes si se gestionan sus módulos de menor
prioridad con esta técnica.
Inconvenientes
Si se implementan pocas funcionalidades de las
previstas se habrá perdido mucho tiempo en la
especificación y diseño de funcionalidades no
implementadas al final, por tanto hay que medir bien
la ambición del trabajo previo a los ciclos iterativos.
DESARROLLO ORIENTADO A ENTREGABLES O HITOSDESARROLLO ORIENTADO A ENTREGABLES O HITOS
28. 1.- La Ingeniería de Software
Definición de
Requisitos
Análisis
Diseño
Arquitectura
Requisitos alta prioridad: Diseño detallado,
codificación, depuración y pruebas
Requisitos alta/media prioridad: Diseño
detallado, codificación, depuración y pruebas
Requisitos prioridad media: Diseño detallado,
codificación, depuración y pruebas
Requisitos baja prioridad media: Diseño
detallado, codificación, depuración y pruebas
Entrega
Final
Limite en el
tiempo
DESARROLLO ORIENTADO A ENTREGABLES O HITOSDESARROLLO ORIENTADO A ENTREGABLES O HITOS
29. 1.- La Ingeniería de Software
MODELO CMM (Modelo de Madurez de Capacidades)MODELO CMM (Modelo de Madurez de Capacidades)
Es el producto de la experiencia colectiva de muchos exitosos
proyectos de software, la cual se ha documentado en la forma de un
modelo.
Usado ampliamente por la comunidad del software para evaluar la
madurez y seguridad de los procesos del software.
Se basa en la evolución de un nivel a otro para mejorar sus
capacidades.
El CMM es un modelo de tres (3) capas.
Primera capa están los Niveles de Madurez
Segunda están las Áreas de Proceso Clave
Tercera capa, las Prácticas Claves.
30. 1.- La Ingeniería de Software
MODELO CMMMODELO CMM – Objetivos:– Objetivos:
Objetivo 1: Determinar el nivel de
madurez del Proceso de Desarrollo que
permita establecer un indicador de
Calidad del proceso. -> 5 Niveles de
Madurez
Objetivo 2: Servir de guía en el Proceso
de Desarrollo permitiendo la Mejora
Continua de la organización -> Control
de Procesos
31. 1.- La Ingeniería de Software
MODELO CMMMODELO CMM: NIVELES DE MADUREZ: NIVELES DE MADUREZ
32. 1.- La Ingeniería de Software
MODELO CMMMODELO CMM: Niveles de Madurez: Niveles de Madurez
5 Niveles de Madurez
18 Áreas Clave de Proceso
(KPA) en el CVS
Marco de trabajo
Actividades
Conjunto de Tareas
Tareas
Hitos, entregas
Puntos SQA
Actividades de Protección
33. 1.- La Ingeniería de Software
MODELO CMMMODELO CMM :: Áreas de Proceso Clave (KPA´s - Key Process Areas)Áreas de Proceso Clave (KPA´s - Key Process Areas)
Objetivos
Compromisos sobre distintas Unid.Negocio
Capacidades organizativas y técnicas
Actividades
Métodos de supervisar la implantación
Métodos de verificar la implantación
KPA
34. 1.- La Ingeniería de Software
MODELO CMMMODELO CMM :: Áreas de Proceso Clave (KPA´s - Key Process Areas)Áreas de Proceso Clave (KPA´s - Key Process Areas)
NIVEL 2: Repetible
Gestión de Requisitos
Planificación del Proyecto
Seguimiento y Supervisión del Proyecto
Software
Gestión de Subcontratación del Software
Garantía de Calidad del Software
Gestión de Configuración del Software
35. 1.- La Ingeniería de Software
Nivel 3: Definido
Enfoque del proceso de la organización
Definición del proceso de organización
Programa de formación
Gestión de integración del software
Ingeniería de productos software
Coordinación entre grupos
Revisiones periódicas
MODELO CMMMODELO CMM :: Áreas de Proceso Clave (KPA´s - Key Process Areas)Áreas de Proceso Clave (KPA´s - Key Process Areas)
36. 1.- La Ingeniería de Software
Nivel 4: Gestionado
Gestión cuantitativa del proceso
Gestión de calidad del software
Nivel 5: Optimización
Prevención de defectos
Gestión de la tecnología
Gestión de cambios en el proceso
MODELO CMMMODELO CMM :: Áreas de Proceso Clave (KPA´s - Key Process Areas)Áreas de Proceso Clave (KPA´s - Key Process Areas)
37. 1.- La Ingeniería de Software
EL PROCESO UNIFICADOEL PROCESO UNIFICADO
Es un producto de Rational Software Corp,
Incorpora las mejores prácticas para el desarrollo de software de una
manera adaptable a un amplio rango de proyectos y entornos
Propone Qué y Cuándo desarrollar.
Objetivos
Satisfacer los requerimientos del usuario
En tiempo y presupuesto predecible.
38. 1.- La Ingeniería de Software
EL PROCESO UNIFICADOEL PROCESO UNIFICADO: DIMENSIONES: DIMENSIONES
40. 2.- Modelado de Sistemas
MODELADO
Para conseguir un software de calidad, hay que idear una sólida
base arquitectónica que sea flexible al cambio.
Para desarrollar software rápida y eficientemente, hay que
disponer, además de la gente y las herramientas necesarias, de un
enfoque apropiado.
Para conseguir, un producto de calidad, es necesario seguir
ciertas pautas y no abordar los problemas de manera somera, con
el fin de obtener un modelo que represente bien el problema..
El modelado es la espina dorsal del desarrolloEl modelado es la espina dorsal del desarrollo
software de calidad.software de calidad.
41. 2.- Modelado de Sistemas
MODELADO
Un modelo es una simplificación de la realidad. El modelo nos
proporciona los planos de un sistema, desde los más
generales, hasta los más detallados.
Ayudan a visualizar cómo es o queremos que
sea un sistema.
Nos permiten especificar la estructura o el
comportamiento de un sistema.
Nos proporcionan plantillas que nos guían en
la construcción de un sistema.
Documentan las decisiones que hemos
adoptado.
42. 2.- Modelado de Sistemas
MODELADO: Principios básicos del modelado
Hay que seleccionar el modelo
adecuado para cada momento y se
obtendrán diferentes beneficios y
diferentes costes.
Todo modelo puede ser expresado a
diferentes niveles de precisión.
Los mejores modelos están ligados a la
realidad.
Un único modelo no es suficiente.
43. 2.- Modelado de Sistemas
ANALISIS Y DISEÑO ORIENTADO A OBJETOS
Es una técnica para el “modelado de sistemas”,
Modelo
Relacional !!
Análisis Diseño Implementación
Diagramas de Casos de Uso
Diagramas de Actividad
Diagramas de Secuencia
Diagramas de Colaboración
Diseño de Interfaces
DFDs
Diagrama de Clases
Diagrama de Estados
Diagramas de Actividad
DEs Entornos de
Programación
Visual
Bases de Datos
(Objeto-)
Relacionales
Modelo
Relacional
E-R
44. 2.- Modelado de Sistemas
ANALISIS Y DISEÑO ORIENTADO A OBJETOS
Fortalezas de la Tecnología de Objetos:
Un solo lenguaje usado por los usuarios,
analistas, diseñadores e implementadores.
Facilidades de arquitectura y reúso de código.
Reflejan mejor el mundo real.
Mayor precisión describiendo datos corporativos
y procesos.
Descomposición basada en divisiones naturales.
Fácil de entender y mantener.
Estabilidad.
45. 2.- Modelado de Sistemas
LA METODOLOGÍA UML, PARA EL DISEÑO OO
UML = Unified Modeling Language
Un lenguaje de propósito general para el modelado orientado a
objetos cuyo objetivo es describir cualquier tipo de sistema en
términos de diagramas orientados a objetos.
46. Resumen
La Ingeniería de software concierne a las teorías, métodos y
herramientas para el desarrollo, administración y evolución de
productos de software.
Los productos de software consisten de programas y
documentación. Los atributos de los productos son,
mantenabilidad, dependabilidad, eficiencia y usabilidad.
El proceso de software consiste en aquellas actividades
involucradas en el desarrollo de software.
47. Resumen
El modelo de cascada considera cada actividad del proceso
como una actividad discreta.
El modelo de espiral se basa en análisis de riesgos.
La visibilidad del proceso involucra la creación de documentos
o resultados de las actividades.
Los Ingenieros de software deben tener responsabilidades éticas,
sociales y profesionales.