Post on 23-Apr-2020
transcript
Ing. Francisco Rodríguez Novoa
UNT. INGENIERIA INDUSTRIAL
Ingeniería de Software
TEMA 1
INTRODUCCION A LA INGENIERIA DE SOFTWARE
Agenda
1. Que es software?
2. Evolución histórica del software
3. Tipos de producto software
4. Definición de Ingeniería de Software.
5. Crisis del software
6. Malas prácticas de desarrollo y mantenim.
7. Principios de la ISW
8. Atributos de Calidad del SW
9. Ciclo de vida del software
10.Industria del Software en el Perú
1. Qué es Software (SW) ?
• Conjunto de programas que proporcionan una
función y un rendimiento esperados.
• Conjunto de estructuras de datos que permiten a
los programas manipular adecuadamente la
información. (Datos de configuración)
• Conjunto de documentos que describen el
funcionamiento del SI (Documentación
▪Genéricos: Productos de uso genérico(procesadores, bases de datos, etc.).
▪ A medida: Productos específicos para un clienteparticular (manual de usuario).
1. Qué es Software (SW) ?
1. Qué es Software. Características
• No tiene forma física.• Se desarrolla, no se fabrica.• Los costes del Sw son de INGENIERÍA. No de
fabricación.• El Sw no se rompe, se deteriora.• La complejidad del mantenimiento del Sw es
mucho más grande que la del Hw.▪ Si el Hw se rompe se cambia por otro y listo. (Hay piezas de recambio).
▪ Si el Sw se deteriora, con cada cambio que se realiza se deteriore aún más. (No hay piezas de recambio).
2. Qué es Software. Características
• No se estropea, pero se degrada:▪ Curva de bañera para fallos del Hw.▪ Curva ideal de fallos del Sw.▪ Curva real de fallos del Sw.
• Se construye a medida Reusabilidad
2. Evolución Histórica del Desarrollo de Sw
8
3. Tipos de productos software
• Un producto software es un sistema software quese acompaña de la documentación necesaria parasu instalación y uso
• Tipos de mercados▪ Productos genéricos
▪ Sistemas autónomos producidos por una organizaciónpara su venta en el mercado abierto a cualquier clienteque pueda adquirirlo
▪ El desarrollador controla la especificación
▪ Productos personalizados▪ Sistemas encargados por un cliente particular▪Desarrollos a medida▪ Las especificaciones las determina el cliente
3. Tipos de productos software
Áreas de aplicación [Pressman, 2010] (i)• Software de sistemas
▪ Software para dar servicio a otros programas: compiladores, editores...▪ Fuerte interacción con el hardware
▪ Uso intensivo por parte de usuarios múltiples.
▪ Recursos compartidos
▪ Ejm: componentes de sistemas operativos, software de redes,
procesadores de telecomunicaciones
• Software de tiempo real• Coordina/analiza/controla sucesos en el mundo real en el
momento en el que suceden: control de vuelo, plantasquímicas, telefonía...▪ Tiempo de respuesta crítico: magnitud de milisegundos▪ Interaccionan directamente con dispositivos físicos y sensores▪ Requisitos de rendimiento críticos▪ Programación de bajo nivel▪ Concurrencia
3. Tipos de productos software
Áreas de aplicación [Pressman, 2010] (ii)• Software de ingeniería y científico
▪ Algoritmos de tratamiento numérico: simulación,
estadística, CAD...
▪ Diseño de algoritmos y estructuras de datos
▪ Cálculo intensivo
▪ Las aplicaciones van de la astronomía a la vulcanología,
del análisis de tensiones en automóviles a la dinámica
orbital del transbordador espacial y de la biología
molecular a la manufactura automatizada.
• Software incrustado▪ Reside en memoria de sólo lectura y se utiliza para
controlar productos y sistemas de los mercadosindustriales y de consumo. (por ejemplo control del tablero de
un horno microondas, funciones digitales en un automóvil)
3. Tipos de productos software
Áreas de aplicación [Pressman, 2010] (iii)• Software de línea de productos
▪ Es diseñado para proporcionar una capacidad específica para uso de muchos consumidores diferentes . El software de línea de productos se centra en algún mercado limitado y particular (por ejemplo, control de inventario de productos) o se dirige a mercados masivos de consumidores (procesamiento de textos, hojas de cálculo, entretenimiento, administración de base de datos y aplicaciones para finanzas personales o de negocios)
• Aplicaciones Web▪ Llamadas “webapps”, agrupa una amplia gama de
aplicaciones. En su forma mas sencilla, las webapps son poco mas que un conjunto de archivos hipertexto vinculados que presentan información con uso de texto y gráficas limitadas. Sin embargo desde que surgió las web 2.0, las webapps están evolucionando integrándose con base de datos corporativas y aplicaciones de negocio.
3. Tipos de productos software
Áreas de aplicación [Pressman, 2010] (iv)• Software de Inteligencia Artificial
▪ Hace uso de algoritmos no numéricos para resolver
problemas complejos que no son fáciles de tratar
computacionalmente o con análisis directo.
▪ Las aplicaciones en esta área incluyen robótica,
sistemas expertos, reconocimiento de patrones (imagen
y voz), redes neuronales artificiales, demostración de
teoremas y juegos.
3. Tipos de productos software
Áreas de aplicación [Pressman, 2010] (v)• Software de gestión
▪ Proceso de información comercial: nóminas, clientes, inventarios...▪ Gran volumen de datos▪ Complejidad de la información▪ Integración
▪ Sistemas transaccionales (TPS)▪ Soportan las operaciones diarias de un negocio: pedidos, compras...▪ Los requisitos, los datos y el procesamiento se conoce y está bien
estructurado
▪ Análisis de datos▪ Aplicaciones de consulta (query )▪ El usuario especifica qué desea no cómo obtenerlo▪ Lenguajes declarativos▪ Datawarehouse▪ Almacenamiento de versiones históricas de entradas a la base de
datos, registros de transacciones y datos históricos▪ Soporte a la toma de decisiones (DSS – Decision Support System)▪ Herramienta de usuario final▪ Análisis “what-if ”, estadístico, tendencias...
3. Tipos de productos software
Áreas de aplicación [Pressman, 2010] (vi)• Software de computadoras personales
▪ Herramientas de escritorio, software para ocio…
• Aplicaciones web▪ Software accedido a través de un navegador Web▪ Los sistemas Web tienen una naturaleza y unos requisitos que difieren
del software tradicional▪ Los sistemas Web están orientados a documentos que contienen
páginas Web estáticas o dinámicas▪ Se centran en el look & feel y enfatizan la creatividad visual y la
presentación en la interfaz▪ Son conducidos por el contenido, incluyendo el desarrollo del contenido▪ Necesitan ofrecer servicios a usuarios con diversidad de características y
capacidades▪ Requieren acortar el tiempo de desarrollo, dificultando aplicar el mismo
nivel de formalidad en la planificación y prueba que se aplica en elsoftware tradicional
▪ Presentan un formato de distribución y explotación diferente al softwaretradicional
▪ Los desarrolladores de los sistemas web difieren en gran medida en suformación, características, conocimiento y comprensión del sistema
4. Qué es Ingeniería de Software?
• “La Ingeniería del Software es la disciplina de
ingeniería encargada de todos los aspectos
relacionados con la producción de software
desde sus etapas más tempranas de la
especificación del sistema hasta el
mantenimiento del sistema tras su puesta en
marcha.” - Ingeniería del Software – Ian
Sommerville
4. ¿Qué es Ingeniería del Software?
• Conjunto de métodos, técnicas y herramientas
que controlan el proceso integral del desarrollo
de software y suministra las bases para
construir software de calidad de forma
eficiente en los plazos adecuados.
17
5. Ingeniería de Software
▪ Diseño y desarrollo de software de alta calidad:
confiable y eficiente.
▪ Buenas prácticas de la ingeniería al software.
▪ Técnicas y herramientas para el diseño y desarrollo de
software
18
5. Ingeniería de Software
Resolución de problemas
▪ Utilizamos: métodos, herramientas, procedimientos y
paradigmas.
▪Métodos: técnica formal para producir un resultado
▪Herramientas: instrumento o sistema automatizado para
realizar una tarea de mejor manera
▪ Procedimientos: combinación de herramientas y técnicas
que producen un resultado
▪ Paradigmas: enfoque particular o filosofía
▪ La finalidad es generar soluciones efectivas
19
¿Qué es Ingeniería del Software?
20
Quien hace la Ingeniería del software?
5. Ingeniería de Software
Participantes-Roles
• El desarrollo se hace para alguien que lo necesita
• El cliente(persona, organización, compañía) que
solicita y paga el sistema que se va a crear.
• Se debe comprender muy bien qué es lo que el cliente
necesita o desea.
21
5. Ingeniería de Software
Participantes-Roles
• Quien construye(persona, compañía, organización) el
software para el cliente es el desarrollador.
• Por el momento entenderemos como desarrollador no
solo a los programadores del software, sino también a
aquellos que los coordinan y a los que verifican el
software.
22
5. Ingeniería de Software
Participantes-Roles
• El software solicitado por el cliente y creado por los
desarrolladores será utilizado por una tercera persona
• Es quien tiene necesidades específicas sobre el sistema
23
5. Ingeniería de Software
Participantes – Miembros del equipo
24
5. Ingeniería de Software
Participantes – Miembros del equipo
• Una vez terminado el trabajo, se entrega al cliente
• Compara el producto obtenido contra el conjunto inicial de
requerimientos especificados al comienzo.
• Entrenan al cliente en el uso del sistema.
• En ocasiones un equipo de mantenimiento trabajará en
corregir defectos y/o cambiar aspectos del sistema con el
correr del tiempo
25
¿Por qué surgió la Ingeniería SW
• Para superar la crisis del software y
terminar con los mitos del software hasta
ahora existentes.
• Para acabar con las malas prácticas de
desarrollo y mantenimiento de software
llevadas a cabo por las empresas.
• Crear software de calidad
26
5. Crisis del Software
• Conjunto de problemas que afectan al desarrollo y
mantenimiento del software derivado de los mitos y
malas prácticas.
• Problemas del software▪ Calidad cuestionable
▪ Mal funcionamiento
▪ Insatisfacción de los clientes
▪ Imprecisión en la planificación y la estimación
▪ Baja productividad
▪ Barrera del mantenimiento
▪ Dificultad inherente
▪ Gran complejidad
▪ Sujeto a continuos cambios
▪ Especificación de requisitos
27
6. Malas prácticas de desarrollo y mantenimiento
• Planificación y estimaciones imprecisas:
▪ No se recopilan datos de proyectos pasados.
• Se invierte más dinero en mantenimiento que
en formación de los ingenieros en las nuevas
tecnologías de desarrollo.
• No se documenta lo suficiente.
• Se pasa directamente a la codificación
28
6. Malas prácticas de desarrollo y mantenimiento
• Procesos software improvisados. No se siguen
rigurosamente las especificaciones.
• No se hace planificación de riesgos. Se
resuelven crisis inmediatas. Se apagan fuegos.
• Se sacrifica funcionalidad y calidad del producto
para cumplir plazos. No se planifica
debidamente.
• No se realizan pruebas, verificaciones o
revisiones del Sw.
29
6. Malas prácticas de desarrollo y mantenimiento
• Síntomas:
• Baja calidad del software desarrollado. Alto
grado de desconfianza e insatisfacción en el
cliente.
• Empresas inmaduras -> En fase artesanal.
▪ Se exceden en los plazos y presupuestos previstos.
▪ 90% de los proyectos no consiguen los objetivos
propuestos.
▪ 40% fracasan completamente.
▪ 29% nunca se entregan.
30
¿Qué propone la IS? – Ser ingenieros
• Artesano Ingeniero
• Para ello se debe:
▪ Aplicar métodos, técnicas y herramientas de
desarrollo. Adoptar estándares de
desarrollo.
▪Utilizar la experiencia acumulada.
Documentación.
31
¿Qué propone la IS? – Ser ingenieros
• ¿Qué conseguimos adoptando estándares de
desarrollo?
▪ Mejorar el proceso.
▪ Reducción de costes.
▪ Reducción del tiempo de desarrollo.
▪ Reducción de riesgos.
▪ Mejora de la calidad del producto.
▪ Protección del cliente.
▪ Protección de la organización. Aumenta su
competitividad.
32
7. Algunos Principios de la Ing. del SW
• Entregar el producto al cliente dentro de plazos.
• Determinar el problema antes de escribirespecificaciones
• Minimizar la distancia intelectual
• Evaluar las alternativas de diseño
• La técnica es más importante que lasherramientas
• Hazlo bien antes de hacerlo rápido
• Inspeccionar el código
33
7. Algunos Principios de la Ing. del SW
• El personal es la clave del éxito
• Un diseño sin documentación, NO es un diseño
• El código difícil de leer es difícil de mantener
• La encapsulación crea Sw fácil de probar y
mantener. “Divide y vencerás”.
• No probar tu propio Sw. Los desarrolladores no
debe probar el Sw que han generado.
34
8. Atributos de Calidad del software
Factores externos• Facilidad de mantenimiento
▪ Ha de poder evolucionar para adaptarse a las necesidades de cambiode los clientes
• Confiabilidad▪ No debe causar daños físicos o económicos en el caso de fallo del
sistema▪ Fiabilidad, seguridad y protección
• Eficacia▪ Hacer efectivo el propósito del software
• Usabilidad▪ Fácil de utilizar▪ Debe tener una interfaz de usuario apropiada y una documentación
adecuada
• Reusabilidad▪ Capacidad de que un software pueda utilizarse en un contexto
diferente al de su creación
• Portabilidad▪ Facilidad de transferir productos software a diferentes plataformas
35
8. Atributos de Calidad del software
Factores internos• Facilidad de traza
• Modularidad
• Tolerancia a fallos
• Eficiencia de ejecución
• Eficiencia de almacenamiento
• Autodescripción
• Legibilidad
• Facilidad de expansión
• Independencia del sistema
• Independencia del hardware
• Estandarización de datos
• Estandarización de comunicaciones
36
9. ¿Qué es el Ciclo de Vida del SW?
• Es una sucesión de etapas por las que pasa el
software en su desarrollo, desde que se
concibe la idea hasta que el software deja de
utilizarse.
• Cada etapa lleva asociada una serie de
actividades y tareas que se deben realizar, y
una serie de documentos que serán la salida
de cada una de estas fases y que servirán de
entrada a la fase siguiente.
9. ¿Qué es el Ciclo de Vida del SW?
• Según la norma ISO/IEC Standard 12207:2008:
Software life-Cycle processes propuesta por la
ISO (International Organization for
Standardization):
▪ “Es un marco de referencia que contiene los
procesos, las actividades y las tareas
involucradas en el desarrollo, explotación y
mantenimiento de un producto software,
abarcando la vida del sistema desde la definición
de requisitos hasta que se deja de utilizar”
9. ¿Qué es el Ciclo de Vida del SW?
• ¿Qué es un proceso?Un proceso es un conjunto de actividades quese suceden siguiendo una ordenación temporaldeterminada
• ¿Qué es una actividad?Una actividad es un conjunto de tareas
• ¿Qué es una tarea?Una acción que transforma unas entradas enunas salidas
9. ¿Qué es el Ciclo de Vida del SW?
Fases genéricas en el ciclo de vida del SW:
• Fase de definición. Tareas:
▪ Ingeniería de sistemas
▪ Planificación del proyecto del SW
▪ Análisis de los requisitos
• Fase de desarrollo. Tareas:
▪ Diseño del SW
▪ Generación de código
▪ Prueba del SW
• Fase de mantenimiento. Cambios:
▪ Corrección
▪ Adaptación
▪ Mejora
▪ Prevención
10. 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.
10. Industria del Software en el Perú
Sector de las Tecnologías de Información cada vez cobra mas importancia, por ser:
10. Industria del Software en el Perú
✓ Países latinoamericanos han tomado la iniciativa de apoyar sus industrias informáticas, considerándolas “sector de interés nacional”
✓ En nuestro país, la industria del software tiene un expectante potencial de crecimiento:
✓Da empleo directo e indirecto altamente calificado a más de 6000 peruanos.
✓ Pese a lo comentado, la industria informática dista aún de estar consolidada. “La informalidad es un cáncer para nuestra actividad porque disipa el esfuerzo de las empresas formales”, comenta Amau.
✓ Se reclama una política gubernamental para incentivar la formalización del sector, que acelere el desarrollo de los centros informáticos
10. Industria del Software en el Perú
Año Ventas(millones de
dólares)
Incremento Exportación (millones de
dólares)
2008 160 - 16
2009 171 7.0 18
2010 182 6.4 19
2011 205 12.6 21
2012 240 17,0 25
2015 438 82,5 45
2016 50
45
10. Industria del Software en el Perú
17
Las limitaciones del sector de TI
• Las principales limitaciones para el desarrollo delsector son:▪ Carencia de fuentes de financiamiento paraproyectos tecnológicos.
▪ Insuficiente infraestructura tecnológica (hardwarey conexiones a costo internacional)
▪ Presencia real y significativa de la piratería delsoftware. Según BSA es de 61%.
¡ Es necesario implementar políticas de fomentopara el sector tecnológico!
Planes de la ind. del sw para los próx 5 años
• Programa BID de apoyo a la industria de software:Sostenibilidad de la Capacitación en CMMi, Ing deSoftware, laboratorio de testeado, estudios,eventos, etc.
• Fomento a las exportaciones de software.• Esquema descentralizado de capacitación
especializada (provincias componente importante)• Centro de arbitraje tecnológico.• Centro de incubación de empresas de base
tecnológica.• Certificación de competencias laborales IT-CARD.
Temas Exposición de Ingeniería de Sw
• Tecnología Orientada a Objetos.
• Proceso de Software. Modelos Prescriptivos del
Proceso:
▪Modelo en Cascada / Modelos Incrementales
▪Modelos Evolutivos
• Desarrollo Ágil:
▪ Programación Extrema
▪ Scrum
• Administración de Proyectos Software. (Personal,
Producto, Proceso, Proyecto)
• Estimación para proyectos software
• Administración del Riesgo.
• Conceptos de Calidad de software
• Ingeniería Web..
Web del curso
http://untingsw.weebly.com
FIN