Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INGENIERÍA DE SOFTWARE
Herramientas
Métodos
Proceso
Un Enfoque de Calidad
Capas de la Ingeniería de Software
Un Enfoque de Calidad
Es la correcta aplicación de los
métodos y técnicas, se establecen
hitos que aseguren la calidad y el
cambio se gestiona
adecuadamente.
El Proceso del Software
Un conjunto coherente de
políticas, estructuras organizacionales, tecnologías,
procedimientos y artefactos que son
necesarios para concebir, desarrollar,
instalar y mantener un producto software
Elementos del Proceso de Software
El Proceso del Software
Marco de Trabajo
Actividades del Marco común
Conjunto de Tareas
Hitos
Entregas
PROCESO DE INGENIERIA DE
SOFTWARE
PROCESO DE INGENIERIA DE
SOFTWARE
El proceso de ingeniería de software se define como "un conjunto de etapas
parcialmente ordenadas con la intención de logra un objetivo, en este caso, la
obtención de un producto de software de calidad".
IINGENIERIA DE SOFTWARE
- Ingeniería de Requerimientos
- Modelado de Análisis
- Ingeniería de Diseño
- Diseño de Arquitecturas
- Estrategias y técnicas de pruebas
- Ingeniería de Software Basada en Componentes
-
Métricas
- Estimación ADMINISTRACION
- Planificación DE PROYECTOS
- Administración de Riesgos
- Administración de la calidad
- Administración del cambio
GESTION DE PROYECTOS DE
SOFTWARE
Es una actividad muy necesaria, cuando se construyen productos y sistemas para ser
utilizados por la computadora
Implica la planificación, supervisión, y control de personal del proceso y de los eventos que
ocurren mientras evoluciona el software, desde la fase preliminar, implementación al hasta
la implantación.
Proceso
Proyecto
El Proyecto debe planificarse,
estimando el esfuerzo y el tiempo para
cumplir las tareas, estableciendo
puntos de control de calidad.
Planificación de Proyectos de Software
Para una correcta gestión de proyecto, necesita una buena planificación del proyecto.
La Planificación implica la estimación del trabajo, cuanto dinero, esfuerzo, recursos y tiempo
supondrá construir u sistema o producto especifico de software.
Es importante conocer el costo, tiempo que utilizará el proyecto antes de empezar el proyecto.
Planificación del Tiempo
Perspectiva histórica del Desarrollo de Software
Década 1950-60: Década 1990-00
▪ “Software como un añadido” ▪ Generalización POO
▪ Aplicaciones sencillas ▪ Programación visual
▪ Desarrollo artesanal, a medida ▪ Tecnología de componentes
▪ Lenguajes de bajo nivel ▪ Interoperabilidad (CORBA)
Década 1960-70: ▪ Nuevas plataformas (Java, .NET)
▪ Primeras aplicaciones complejas ▪ Análisis/Diseño OO -“Guerra de los métodos” UML 1997
▪ Década lenguajes y compilación ▪ Patrones
▪ “Crisis del software” ▪ Tecnología CASE (2ª generación)
▪ Popularización de Internet
Década 1970-80:
Década 2000-2020
▪ Programación estructurada ▪ Generalización comercio electrónico
▪ Modelo relacional
▪ Web 2.0
▪ Primeras etapas Ingeniería del Software
▪ Desarrollo web
▪ Primeros métodos estructurados
▪ Seguridad
▪ Modelado de datos
▪ Arquitecturas basadas en servicios (SOA)
Década 1980-90: ▪ Arquitecturas de Capas, MVC, etc.
▪ Programación OO ▪ Métodos ágiles XP, ICONIX, SCRUM, etc.
▪ 4GLs ▪ Desarrollo opensource
▪ Cliente /Servidor ▪ Desarrollo Movil
▪ Tecnología de SGBDs, Sos ▪ Software de AI,
▪ Métodos estructurados ▪Aplicaciones Web progresivas. (web+Movil)
▪ Tecnología CASE (1ª generación)
Situación actual de la Ingeniería de Software
✓ Se ha establecido UML (Lenguaje Unificado de Modelado) como una notación estándar de análisis y
diseño OO.
✓ Aparecen métodos ágiles como Extreme Programming.
✓ SWEBOK(Guide to theSoftware EngineeringBodyofKnowledge) (2001).
✓ Algunas universidades han comenzado a ofrecer un título en isw.
✓ Comités CSAB (ComputerScienceAccreditationBoard) y
✓ABET (AccreditationBoardforEngineeringandTechnology).
✓ CMMI (CapabilityMaturityModelIntegration) del SEI (Software Engineering Institute) y la familia de
estándares ISO 9000 son usados para valorar la capacidad de una organización de ISW.
✓ En EE UU, el Colegio de Ingenieros Profesionales de Texas (Texas BoardofProfessionalsEngineers) ha
comenzado a licenciar ingenieros del software.
✓ ACM e IEEE-CS han desarrollado y adoptado conjuntamente un Código de Ética para Profesionales en
Ingeniería del Software.
Tecnología de Desarrollo de Software
Notación
Gestor de BD
Herramienta Case
Ingeniería de Software
Es la disciplina o área de la informática que ofrece métodos y técnicas para desarrollar y mantener
software de calidad.
Tecnología Desarrollo
Proceso de Desarrollo Requerimientos
Notación Análisis y Diseño
Herramientas Case Implementación
Lenguaje de Desarrollo Pruebas
Arquitectura Implantación
Despliegue de Hardware y
comunicaciones
Ingeniería de
Software
Aseguramiento Gestión
de la calidad
Proyecto
CMMI Personal
Producto
Moprosoft
22
Cuando los stakeholder Cliente indican
Proceso de Desarrollo
Tecnología Lenguaje de
Implementación
y Calidad
Notación
Herramienta Case Gestor de BD
Normas de calidad de software
Tecnología de gestión de Proyectos de Software
Industria del Software en el Perú
• Una de las industrias que tiene inmensas oportunidades es la del software, cuyo
mercado mundial asciende a los $ 1,500 billones.
• El Perú es un actor que tiene significativas ventajas para obtener parte del
consumo internacional, ya que cuenta con un activo en capital humano (30,000
programadores) y con la presencia de aproximadamente 300 empresas (90%
pequeñas y microempresas), que en su mayoría no superan una década de
funcionamiento.
Industria del Software en el Perú
17
36
Las limitaciones del sector de TI
3.15 + 8.7i
Linux
Conceptos Fundamentales
Objeto: Entidad del mundo real, puede ser real o abstracto, que exhibe
propiedades (atributos) , con unos comportamientos (métodos)
particulares.
mostrarComplejo( ) tamañoLeche
abrirLataLeche( )
empresa tipoSerMitologico
tomarLeche( )
tipoOrganigrama tipoComputadora volarSerMitologico( )
tipoEcuacion
añadirNivel( ) tipoDisco
resolverEcuacion( )
tipoProcesador tipoVentana
prenderComputadora( ) abrirVentana( )
nombreObra tipoAvion
autorObra cerrarVentana( )
annioFabAvion
lugarObra tipoPescado volarAvion( )
nombreSO
restaurarObra( ) nadaPescado( ) aterrizarAvion( )
versionSO
comePescado( ) cargarSO( )
exponerObra( )
Linux
apagarSO( )
Objeto
Tipo de objeto
Conceptos Fundamentales
Tipo de Objeto: Es un grupo de objetos que tiene atributos particulares.
Ejemplo: Empleados, estudiantes, clientes, proveedores.
Clase : Agrupación de tipos de Objetos, especifica una estructura de datos y métodos
que se aplican a cada uno de sus objetos.
Ejemplos: Clase : Persona
Tipos de Objeto: Estudiante, profesor, trabajador.
Clase : Documentos
Tipos de Objeto: Orden De Compra, Pedido, Factura, Guías de Remisión, etc.
Clase: Producto
Tipos de Objeto: Productos en Proceso, Productos Terminados, Activos, Materiales.
…En programación
¿Qué es una Clase?
Es un molde a partir del cual podemos construir variables (llamadas objetos).
Dentro de ese molde se incluyen atributos (variables miembro) y funciones (funciones
miembro o métodos).
¿Qué es un objeto?
Es una variable de una clase.
En la terminología de objetos se dice “un objeto es una instancia de una clase”
La Clase es simplemente una declaración, un nuevo “tipo de dato” que contiene atributos
y métodos, formas para ocultar sus partes internas y formas predefinidas para accederlas
desde el exterior.
Si declaramos una variable de alguno de los tipos base simplemente será una variable,
pero si declaramos una variable de una clase, entonces ésta variable se llamara objeto.
Objetos
La Caricatura de César Liza
El auto Fantástico
La Fórmula de Einstein
La Letra A
El Superhéroe Superman La Vía Láctea
11
Clase La Clase Fórmula La Clase Caricatura
La Clase Auto
mM
F = G -------
R2
La Clase SuperHéroe
La Clase Letra
La Clase Galaxia
En el mundo real una clase es una agrupación de objetos que tienen iguales 12
características y comportamiento
Encapsulado
Encapsulado : Es el resultado de ocultar los detalles de implementación de
un objeto respecto a su usuario.
Ejemplo:
Cuando se realiza un préstamo, los usuarios no saben exactamente como
se calculan los intereses.
Mensajes: Es una solicitud que hace que se produzca una operación (método).
Herencia
Conceptos Fundamentales
Herencia : Es la propiedad mediante la cual una superclase hereda sus propiedades,
y métodos, etc. a una subclase. Ejemplo
Auto
Acelera
Frena
Cohete
Acelera
Frena
Transporte
Acelera Caballo
Acelera
Frena
Frena
19
Modelos de Software
Ing. Lourdes Roxana Díaz Amaya
Objetivos:
Un conjunto coherente de
políticas, estructuras organizacionales,
tecnologías,
procedimientos y artefactos que son
necesarios para concebir, desarrollar,
instalar y mantener un producto software.
Mario Platini
Proceso de Software
Es un marco de desarrollo, donde se definen un numero determinado de
actividades, que son aplicables a todos los proyectos de software, con
independencia de su tamaño y complejidad
Marco de Trabajo
Actividades del Marco común
Conjunto de Tareas
Hitos
Entregas
Proceso de Software
Rol
Tiene Norma
Un concepto dado por ISO 12207 “ Es un marco de referencia que contiene los
procesos las actividades y las tareas involucradas en el desarrollo, la explotación y
el mantenimiento de un producto de software, abarcando la vida del sistema desde
la definición de los requisitos hasta la finalización de su uso”
Modelos del ciclo de vida del software
Existen varios modelos del ciclo de vida del software, sin embargo los mas
utilizados son: Cascada, Incremental, Evolutivo y Espiral.
Modelo Cascada -Secuencial
Definición de
Requerimientos
Implementación y
Prueba de unidades
Integración y Prueba
del Sistema
Operación y
Mantenimiento
Modelo Cascada
Es raro que los proyectos reales solo sigan el flujo secuencial que propone el
modelo. El modelo tiene iteraciones indirectas, lo cual confunde al equipo
desarrollador.
Con frecuencia es difícil para el cliente establecer todos los requisitos de manera
explicita. El modelo lo requiere desde un principio.
El Cliente debe tener paciencia. Una versión funcionando estará lista cuando el
proyecto este muy avanzado.
Modelo Cascada -Retroalimentación
Definición de
Requerimientos
Implementación y
Prueba de unidades
Integración y Prueba
del Sistema
Operación y
Mantenimiento
MODELOS DE PROCESOS INCREMENTALES
Ventajas:
Se puede financiar el proyecto por partes
Apropiado para proyectos grandes de larga duración
No se necesita tanto personal al principio como para una implementación completa
Desventajas:
Se necesitan pruebas de regresión (Bugs):
ón: Son pruebas que descubren las causas de errores. Errores de Funcionalidad o
nales, etc.Pueden aumentar el coste debido a las pruebas
MODELOS DE DESARROLLO EVOLUTIVO
Actividades Concurrentes
Versión
Especificación
Inicial
Validación Versión
Final
MODELOS DE DESARROLLO EVOLUTIVO
Ventajas:
Es ideal para sistemas que no tienen bien definidos los requerimientos.
Los desarrolladores ven más rápido el resultado de su trabajo.
Desventajas :
Es difícil distinguirlo del proceso “codifica y corrige”
El Modelo en Espiral
Evalúe alternativas,
Determine objetivos identifique y resuelva
alternativas y Análisis de riesgos
restricciones Riesgos
Análisis de
Riesgos
Análisis de
Riesgos Prototipo
Prototipo Operacional
Análisis Prototipo
de
REVISIÓN Prototipo
Riesgos
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.
Los desarrolladores observan los resultados de sus trabajos más rápidamente.
Puede modificar algunos requerimientos durante el desarrollo.
El Modelo en Espiral
Desventajas
▪Es un modelo amplio y necesita de personal con experiencia, sino podría fracasar
el modelo.
▪Se debe aplicar a proyectos grandes.
Preguntas ?