Ingeniería de Software I

Departamento de Ingeniería de Sistemas e Industrial
Universidad Nacional de Colombia
 
Profesor:
Ing. Fabio A. González O., Ph.D.
Of. 316, Edif. Nuevo de Ingeniería
fgonza@ing.unal.edu.co



Contenido


Descripción del curso

(Contenido diseñado por: Ing. Mario Alberto Pérez)

1. Introducción.

El reciente aumento de aplicaciones en donde se utiliza el computador  ha sido posible debido a la  constante disminución en el costo del hardware, por lo cual la demanda de software ha crecido de forma exponencial. Esto implica que son necesarias técnicas y tecnología eficientes de Ingeniería de Software para resolver los múltiples problemas que se derivan de las aplicaciones en donde se desarrollan sistemas de software de gran tamaño.

Este curso tiene como objetivo presentar al alumno el espectro de técnicas de Ingeniería de Software que pueden ser aplicadas en proyectos de software prácticos. En este curso se tratarán los siguientes conceptos:

* La Ingeniería de Software tiene como principal objetivo servir como base para la producción de software de calidad, lo cual se logra definiendo el proceso del software,  el cual comprende las actividades involucradas en la producción del software.

* La Ingeniería del software se refiere a la producción de sistemas de software desarrollados por grupos y no solo por individuos. Utiliza distintos principios de Ingeniería en el desarrollo de estos sistemas e incluye aspectos técnicos y no-técnicos. Además de contemplar aspectos de computación, los Ingenieros de Software deben ser capaces de comunicarse con otros miembros de su grupo de desarrollo. Cada Ingeniero de Software debe comprender la importancia de la gestión del proyecto y deben de apreciar los problemas que los usuarios del software podrían encontrar en su uso. De la misma forma, se debe tener en cuenta la calidad del software y su confiabilidad, ya que no es igual producir software para un sistema de nominas, que un sistema de software para el control de un reactor nuclear.

* La Ingeniería de Software implica seguir en cualquier proyecto de software una metodología de desarrollo y la utilización de distintas técnicas y herramientas. Los diferentes procedimientos a seguir en cualquier proyecto de Ingeniería de software son: Definición de requerimientos, Análisis, Diseño, Verificación y Validación (Pruebas de Calidad del Software),  Pruebas y Mantenimiento.
 
* La Ingeniería de Software es una disciplina de la Ingeniería en donde se resuelven problemas relacionados con el desarrollo de sistemas de software. Esta disciplina no es solo programación ni computación . Los Ingenieros de Software deben de ser profesionales que deben de utilizar la teoría de otras disciplinas y aplicarlas de forma efectiva en la solución de problemas complejos de sistemas de software. El software no solo significa "programas de computadora" asociados con una aplicación o producto. Además de esto, implica la documentación necesaria para dar seguimiento, la instalación, el uso y el mantenimiento del software. En sistema complejos de gran tamaño, el esfuerzo necesario para escribir esta documentación es a menudo tanto como lo es el desarrollo del software.
 
* No es posible presentar una solución global o precisa a todos los problemas de la Ingeniería de software o presentar una solución única para resolver los problemas de la Ingeniería de Software. Cada proyecto de software presenta distintos problemas en su desarrollo, los cuales involucran personas, equipo, usuarios del software y ambiente de la aplicación. Por estas razones, cada proyecto debe resolver el problema de la producción del software teniendo en cuenta las distintas metodologías y técnicas de desarrollo, pero sin descuidar el aspecto humano,  del usuario del software y del ambiente para el cual se prende desarrollar el software.

2. Prerequisitos:

Teoría General de Sistemas - Bases de Datos

3. Bibliografía:

  1. Software Engineering. Ian Sommerville. Fouth Edition. Addison. Wesley.
  2. Software Engineering: A Practiotioner`s Approach. Roger S. Pressman. Mac Graw Hill.
  3. Ingeniería del Software. Roger S. Pressman Mac Graw Hill.
  4. Construcción de Software Orientado a Objetos.  Bertran Meyer. Prentice Hall
  5. Modelado de Objetos con UML. Pierre-Alain Muller. Ediciones Gestión 2000 S.A.
  6. Desarrollo de Sistemas de Información. Catellanos Horacio Facultad de Ingeniería UN
  7. Artículos de diversas  revistas y reportes técnicos.

4. Evaluación del curso.

a. Dos parciales 40%.
b. Proyecto 30%
b. Exposiciones: 15%.
c. Varios 15%

5. Metodología del curso.

a. Exposición de clases por el Profesor.
b. Asignación de lecturas.
c. Preparación de clases por los alumnos.
d. Clases de Discusión.
e. Proyecto del curso.

6. Contenido del Curso:

Capítulo 1 Introducción

   * 1.1 Productos de Software.
   * 1.2 El  proceso de software.
   * 1.3 El modelo de espiral de Boehm's.
   * 1.4 Visibilidad del Proceso.
   * 1.5 Responsabilidad Profesional.

Capítulo 2 Ingeniería de Sistemas basada en Computadora

   *  2.1 Sistemas y su ambiente.
   *  2.2 Procuración del sistema
   *  2.3 El  Proceso de Ingeniería del sistema.
   *  2.4 Modelación de la arquitectura del sistema.
   *  2.5 Factores humanos.
   *  2.6 Fiabilidad de la Ingeniería del Sistema.

Capítulo 3 Gestión del Proyecto.

   * 3.1 Actividades de la Gestión.
   * 3.2 Planeación del proyecto.
   * 3.3 Organización de actividades.
   * 3.4 Planificación o calendarización del Proyecto.

Capítulo 4 Ingeniería de Requerimientos.

   * 4.1 El  proceso de Ingeniería de Requerimientos.
   * 4.2 El  documento de requerimientos de software.
   * 4.3 Validación de los requerimientos.
   * 4.4 Evolución de los requerimientos.


Capítulo 5 Análisis de Requerimientos.

   * 5.1 Viewpoint-oriented analysis
   * 5.2 Method-based analysis
   * 5.3 Contextos del sistema.
   * 5.4 Introducción a casos de uso.
   * 5.5 Factores sociales y organizacionales.

Capítulo 6 Definición de Requerimientos y Especificación.

   * 6.1 Definición de Requerimientos
   * 6.2 Especificación de Requerimientos.
   * 6.3 Requerimientos no-funcionales.

Capítulo 7 Modelos de Sistema.

   * 7.1 Modelos de flujo de datos.
   * 7.3 Modelos de objetos.

Capítulo 8 Análisis y Diseño Orientado a Objetos con UML

   * 8.1 I Introducción: Modelado de SI
   * 8.2 Breve Tour por UML
   * 8.3 El Paradigma Orientado a Objetos
   * 8.4 El proceso unificado
 
Volver al inicio

Laboratorios y Talleres

Volver al inicio

Material de apoyo y recursos

Presentaciones

Exposiciones


Tema
Expositores
Fecha
.NET
Jairo Aguirre
Jhon Reyes
Nov 6
J2EE
Camilo Pino
Nov 6
eXtreme programming
Diana Castro
Ricardo Alejo
Miguel Dussan
Nov 11
Pruebas de Software (unit testing) César Rojas
Nov 11
Métricas de software
Ligia Mercedes Rincon
German Vargas
Carlos Mario Ahumada
Nov 13
Administración de proyectos de software
Claudia Campuzano
Andrés Jiménez
Isabel Mahecha
Nov 13
Movimiento de software Libre
Daniel Rodriguez
Germán Peña
Carlos Herrera
Nov 18
Desarrollo de software en equipo
Jose Larrarte 
Andres morales
Nov 20
Patrones de diseño
Alexander Marroquín
Jorge Medina
Santiago Salazar
Nov 20
Especificación formal de software Fabian Arturo Diaz
David Velasco
Nov 25
Marco legal del software en Colombia
Juan José Grillo
Nestor Bohorquez
Juan Manuel Gómez
Nov 25
Industria del software en Colombia
Angélica Romero
Elkin Ariza
Nov 27

Links

Capítulo Modelos de Casos de uso (UML y Patrones, Larman)
Presentación Casos de Uso (Por Pablo Gervás)
Object Oriented Design (Capítulo 12 de Sommerville)
Estructura del Documento de Diseño
Instrucciones para la entrega final

Volver al inicio