Está en la página 1de 39

Fundamentos de Ingeniería de Software

Introducción a la Ingeniería de software. Disciplinas


asociadas. Problemáticas actuales
Ing. Anabel Montero Posada. M.Sc.
anmontero@javeriana.edu.co
3208320 Ext. 5993
Actividades de la clase

▪ Definir los grupos de proyecto


▪ Introducción sobre donde se encuentra nuestra carrera dentro
del currículo de la ACM
▪ Ver unos videos de algunos conceptos importantes, como
¿qué es Ingeniería de Software?
▪ Ver temas varios relacionados con IS y el estado actual de los
proyectos.
Objetivos

▪ Reconocer dónde se encuentra la ingeniería de sistemas


dentro del currículum de la computación.
▪ Conocer conceptos asociados a la Ingeniería de software
▪ Nombrar los principales problemas que está presentando la
industria de software en los últimos años.
Un poco de historia…

EE: Ingeniería Electrónica


CE: Ingeniería de Computadores
CS: Ciencias de la computación
IS: Sistemas de información

SE: Ing. de Software


IT: Tecnologías de la
información

https://www.acm.org/education/curricula-recommendations
Ingeniería de sistemas

CE: Ingeniería en computadores


+
CS: Ciencias de la computación
+
SE: Ingeniería de Software
Ver los siguientes videos

▪ ¿Porqué el desarrollo de software es difícil?


https://youtu.be/4y7HyUZ9wjU

▪ ¿Qué es Ingeniería de Software?


https://youtu.be/B9jcCjfK1_Y

▪ ¿Porqué es importante contar con modelos?


https://youtu.be/Ae9ffcl82WM
Modelos en la Ingeniería de Software
Modelos con menos nivel de detalle o más abstracción
Modelos con mayor nivel de detalle o menos abstracción
Actividades Genéricas de Ingeniería de
Software
Actividades en el desarrollo de la ingeniería de software

▪ Captura de Requisitos
▪ Análisis
▪ Diseño del sistema
▪ Diseño de objetos
▪ Implementación
▪ Pruebas
▪ Entrega y despliegue
▪ Mantenimiento
Actividades en el desarrollo de la ingeniería de software

▪ Captura de Requisitos
▪ Análisis
▪ Diseño del sistema
▪ Diseño de objetos
▪ Implementación
▪ Pruebas
▪ Entrega y despliegue
▪ Mantenimiento
Actividades en el desarrollo de la ingeniería de software

▪ Captura de Requisitos
▪ Análisis
▪ Diseño del sistema
▪ Diseño de objetos
▪ Implementación
▪ Pruebas
▪ Entrega y despliegue
▪ Mantenimiento
Actividades en el desarrollo de la ingeniería de software

▪ Captura de Requisitos
▪ Análisis
▪ Diseño del sistema
▪ Diseño de objetos
▪ Implementación
▪ Pruebas
▪ Entrega y despliegue
▪ Mantenimiento
Actividades en el desarrollo de la ingeniería de software

▪ Captura de Requisitos
▪ Análisis
▪ Diseño del sistema
▪ Diseño de objetos
▪ Implementación
▪ Pruebas
▪ Entrega y despliegue
▪ Mantenimiento
Actividades en el desarrollo de la ingeniería de software

▪ Captura de Requisitos
▪ Análisis
▪ Diseño del sistema
▪ Diseño de objetos
▪ Implementación
▪ Pruebas
▪ Entrega y despliegue
▪ Mantenimiento
Actividades en el desarrollo de la ingeniería de software

▪ Captura de Requisitos
▪ Análisis
▪ Diseño del sistema
▪ Diseño de objetos
▪ Implementación
▪ Pruebas
▪ Entrega y despliegue
▪ Mantenimiento
Actividades en el desarrollo de la ingeniería de software

▪ Captura de Requisitos
▪ Análisis
▪ Diseño del sistema
▪ Diseño de objetos
▪ Implementación
▪ Pruebas
▪ Entrega y despliegue
▪ Mantenimiento
Actividades en el desarrollo de la ingeniería de software

▪ Captura de Requisitos
▪ Análisis
▪ Diseño del sistema
▪ Diseño de objetos
▪ Implementación
▪ Pruebas
▪ Entrega y despliegue
▪ Mantenimiento
Actividades transversales

▪ La gestión del proyecto de software es una actividad


transversal que no puede dejar de hacerse en el proceso
de desarrollo de software.

Administración
Administración Control de
de la Documentación
de Proyectos Calidad
Configuración
Tipos de Documentos – Análisis y Diseño

Descripción funcional

Descripción Estática

Descripción Dinámica

Diseño Arquitectónico

Diseño de Datos

Diseño de Interfaces
Tipos de Documentos – Técnicos

Documentación del código

Algoritmos

Interfaces (GUI)

API's
Tipos de Documentos – Manuales

Usuario Final

Administrador del Sistema

Personal de soporte
Ingeniería de software - Importancia

▪ Los sistemas son cada vez más complejos


▪ Es más barato pensar un buen diseño que realizar cambios
después de terminado el software.

Sommerville, 2011
Para generar todos los Tipos de Documentos
necesitamos Guías, Estándares y Plantillas que nos
ayuden
¿Qué es un Estándar / Guía?

▪ Una Guía generalmente describe


▪ Buenas Prácticas
▪ Ejemplos
▪ Orden y objetivos del documento

▪ Ayuda a comunicar los objetivos de los artefactos entre el


grupo de trabajo

▪ Ayuda a orientar el proceso de desarrollo, ahorrando tiempo


de entrenamiento
Los que conocemos

▪ Software Project Management Plans


▪ Software Requirements Specification
▪ Software Design Description
▪ Software Arquitecture Document
▪ Documento de Visión
▪ User Documentation
▪ Testing Documentation
▪ Etc.
▪ …
▪ Podemos inventarlos, adaptarlos…

Para eso nos llamamos


Ingenieros!
Problemas en el proceso de desarrollo de
software
Estado de los proyectos

▪ Tradicional: En tiempo, en presupuesto y que cumpla su


objetivo.

▪ Moderna: En tiempo, en presupuesto y con resultados


satisfactorios.

▪ Puro éxito: Alto valor y satisfacción del cliente.

CHAOS Report, 2018


Estado de los proyectos

CHAOS Report, 2018


Estado de los proyectos - el tamaño importa

CHAOS Report, 2018


Estado de los proyectos - Ágil VS Casada

CHAOS Report, 2018


Estado de los proyectos - Habilidades técnicas

CHAOS Report, 2018


Top 5 Factores de éxito de un proyecto de software

1. Participación del Usuario


2. Apoyo de la gerencia ejecutiva
3. Declaración clara de requisitos
4. Planificación adecuada
5. Expectativas realistas

CHAOS Report, 2018


¿Preguntas?

Anabel Montero Posada MSc.


anmontero@javeriana.edu.co
Resumiendo…

▪ ¿Qué disciplinas forman nuestra carrera?


▪ ¿Por qué el desarrollo de software es difícil?
▪ ¿Software profesional es igual a código?
▪ ¿Qué es ingeniería de software?
▪ ¿Por qué necesitamos modelos?
▪ ¿Qué lenguaje usamos?
▪ ¿Cuáles son las actividades en el desarrollo de la ingeniería de
software?
▪ ¿Qué otras actividades transversales son importantes para el
desarrollo de software?
▪ ¿Qué documentación se genera?
▪ ¿Y por qué es importante todo eso?
▪ ¿Qué estándares nos sirven para guiarnos a documentar?
▪ ¿Cuál es el estado actual de los proyectos de software?
Tarea

▪ Definir propuesta de valor


▪ Utilizar el formato de Lean Canvas para la creación de la propuesta de
valor
▪ Para la segunda sesión de la próxima semana traer una presentación de
10 min (un Pitch) sobre su proyecto utilizando el modelo Canvas.
▪ Enviar un correo por grupo con los nombres de grupo, de proyecto y
los usuarios de github de los integrantes (Crear Usuario Github si no
lo tiene)
▪ Una vez se tenga el proyecto y el equipo en github:
▪ Crear una página de presentación del grupo (Wiki dentro de GitHub) con
la siguiente información:
▪ Nombre del grupo, nombre del proyecto
▪ Integrantes
▪ Nombre, foto, biografía (Un párrafo), rol, responsabilidades
Bibliografía

• Sommerville, I. Software Engineering, 9th Edition, Addison Wesley, 2011.


• Software Engineering Code of Ethics and Professional Practice IEEE Computer Society -
https://www.computer.org/cms/Publications/code-of-ethics.pdf
• The Standish Group. The CHAOS Report. 1995.
https://www.standishgroup.com/sample_research_files/chaos_report_1994.pdf [Dic. 2016]
• The Joint Task Force for Computing Curricula. 2005
▪ The Association for Computing (ACM) - http://www.acm.org/education/curricula-recommendations
▪ The Association for Information Systems (AIS)

• http://www.techscribe.co.uk/techw/software_usability.htm
• http://best-practice-software-engineering.ifs.tuwien.ac.at/
• Booch G. et.al, “El Lenguaje Unificado de Modelado,” Ed. Addison Wesley Iberoamericana,
Madrid 1999
• Larman C., “UML y Patrones”, Prentice Hall, Segunda Edición, 2003
• Bruegge B., “Ingeniería de Software Orientada a Objetos,” Ed. Prentice Hall, Mexico 2002
• McConnell S. www.construx.com

También podría gustarte