Ingeniería de Software 2
CI-4712
Septiembre-Diciembre 2000
Tabla de contenido
Objetivo general
Introducir al estudiante en los procesos característicos de la ingeniería
de software orientado a objetos. El curso enfatizará:
-
Un desarrollo incremental e iterativo;
-
El modelado, diseño, mantenimiento y programación de software
orientado a objetos de mediana envergadura;
-
El trabajo disciplinado en equipos de 4-12 personas (teamwork);
El contenido del curso incluye como mínimo:
Arquitecturas de software orientado a objetos. Patrones de
análisis y diseño. Criterios y evaluación del diseño
orientado a objetos. Refactorización. Diferencias entre las metodologías
OMT y RPM. Ingeniería de software orientada a componentes. Manejo
de riesgos en el desarrollo. Elementos del trabajo en equipo (teamwork).
Programación Java.
El avance adicional del curso dependenderá del nivel de los estudiantes
inscritos en la asignatura.
Requisitos:
Bases de Datos.
Sistemas de Programas.
Permiso de la Coordinación
Cupo: Originalmente se consideró un
máximo de 24 estudiantes y un mínimo de 8 estudiantes, sin
embargo para ayudar a resolver la transición al nuevo pensum de
la carrera, se permitieron 36 inscritos, lo que tendrá impactos
importantes en el desarrollo del curso.
Créditos:
4 créditos (6 horas semanales)
Observaciones especiales
Este curso presupone que el estudiante aprobó Sistemas
de Programas durante el trimestre Enero-Marzo de 1999 o Abril-Julio
de 1999 y que por lo tanto tiene un dominio básico de una metodología
desarrollo orientada a objetos y del lenguaje de programación Java.
Este trimestre (Septiembre-Diciembre 2000) contaremos con la valiosa
participación de seis profesores invitados:
-
Prof. Rocío Meneses del Dpto. de Ciencia y Tecnología del
Comportamiento quien coordinará y dictará el hilo dedicado
a dinámica de grupos;
-
Prof. Nunzio Savino del Dpto. de Computación y T.I. , quien se encargará
del módulo del curso dedicado a Ingeniería de Software orientada
por Componentes;
-
Prof. Jesús Ravelo del Dpto. de Computación y T.I., quien
se encargará del módulo de Métodos Formales en Ingeniería
de Software.
-
Prof. Belinda Bozo del Dpto. de Ciencia y Tecnología del Comportamiento
quien asesorará el hilo dedicado a dinámica de grupos;
-
Prof. Ascánder Suárez del Dpto. de Computación
y T.I., quien dictará una charla sobre Claire.
-
Prof. Nagib Callaos del Dpto. de Computación y T.I., quien dictará
una clase sobre estimaciones.
-
Prof. Nicolina Calvanesse del Dpto. de Ciencia y Tecnología del
Comportamiento, quien dictará una clase sobre el manejo del stress.
Programa
Septiembre-Diciembre
2000
Evaluación
A efecto de la evaluación, el curso se centra en el desarrollo incremental
de software por parte de empresas formados por 12 personas. El grueso
de la evaluación dependerá de la calidad del trabajo que
presente cada empresa en un proyecto de desarrollo y mantenimiento
de software, así como el grado de participación de los inscritos
en las sesiones de clase.
Los criterios para evaluar el trabajo de equipo incluyen:
-
Calidad y productividad técnica del trabajo realizado;
-
Calidad y productividad de la dinámica del equipo, lo que incluye
aspectos como:
-
Cohesión del equipo;
-
Coordinación, delegación, compromiso, integración
y cumplimiento de tareas;
-
Calidad de la documentación del proceso de desarrollo: e.g. agendas,
minutas y distribución de tareas;
-
Comunicación interna y externa del grupo.
-
Calidad de las presentaciones sobre tópicos seleccionados o hitos
del desarrollo.
Se incorporan mecanismos de penalización y bonificación por
parte del propio equipo como
tarjeta
roja/tarjeta amarilla y jugada valiosa/jugador destacado.
Tareas:
-
Tarea
1 (Fecha de entrega: Jueves 21 de septiembre)
-
Tarea
2 (Fecha de entrega: Martes, 26 de septiembre)
-
Tarea
3 (Fechas de entrega: Lunes, 2 de octubre y Jueves, 5 de octubre)
A partir de esta tarea entran en vigencia mecanismos de penalización
y bonificación de equipos: Tarjeta
amarilla/tarjeta roja, jugada valiosa/jugador destacado.
-
Tarea
4 (Fechas de entrega: Miércoles, 10 de octubre y de mutuo acuerdo
entre el profesor y cada empresa)
-
Tarea
5 (Fecha de entrega: Lunes, 4 de diciembre).
Notas de apoyo para el curso:
-
El Proyecto Delta Pensum
El Proyecto Delta Pensum desarrolla un software de apoyo a la
Coordinación de Ingeniería de Computación en la Universidad
Simón Bolívar. A este desarrollo iterativo e incremental
han aportado múltiples grupos de estudiantes desde su inicio en
Abril 1999.
Pueden consultarse tanto el repositorio de requerimientos
generales del proyecto como los artefactos producidos en cada uno de
los incrementos.
-
Delta Pensum 2.x (Septiembre 2000 - Marzo 2001)
Corresponden a las nuevas versiones a a ser desarrolladas en el período
indicado.
-
Requerimientos
(actualizado el 15/11/2000)
-
Delta Pensum 2.3 (a desarrollar a partir de Enero 2001)
Entre sus requerimientos se
destacan:
-
Leer asignaturas obligatorias aprobadas de Cápsula.
-
Rediseñar la capa del repositorio.
-
Implementar el patrón Decorador para manejar Equivalencias.
-
Implementar el patrón Constructor para salvar la Recomendación
Curricular.
-
Delta Pensum 2.2
Sus requerimientos
incluyen tanto mantenimiento correctivo como perfectivo. Entre los requerimientos
perfectivos se destacan:
-
Incluir facilidad rudimentaria que permita salvar la Recomendación
Curricular.
-
Incorporar un segundo calendario (Proyecto de Grado) por pensum.
-
Delta Pensum 2.1 (entregada el 5 de octubre de 2000)
Corresponde a unos pequeños ajustes de la versión anterior
(1.1). En principio no está previsto publicar esta versión
transitoria que corresponde a un ejercicio de calentamiento para las empresas
desarrolladoras.
-
Delta Pensum 1.1 (Junio-Julio 2000)
Un pequeño ajuste a la versión anterior (1.0). Los documentos
disponibles son:
-
Delta Pensum 1.0 (Septiembre 1999- Marzo 2000)
Los documentos que guiaron el desarrollo fueron:
Esta versión fue desarrollada por dos equipos quienes proporcionan
los documentos definitivos del desarrollo:
-
Southpark
Desarrolla la versión 1.0 seleccionada como base de futuras
extensiones.
El código
y los manuales
de esta versión está disponible para desarrolladores autorizados.
-
Injavakus
Pese a desarrollar un diseño muy interesante en cuanto a la
utilización de patrones de diseño, no avanzó tanto
en la fase de implementación como su rival.
El desarrollo fue realizado por los estudiantes que cursaron Ingeniería
de Software 2 e Ingeniería
de Software 3.
-
Delta
Pensum 0.1 (Abril-Julio 1999)
Este desarrollo también tiene disponible una evaluación
que reporta el grado de cumplimiento de sus requerimientos. Esta versión
fue desarrollada por los estudiantes que cursaron Sistemas
de Programas.
-
Apuntes
de clase.
Incluyen apuntes para las sesiones de clase.
Herramientas utilizadas en el desarrollo
-
Lenguaje de programación: Java
Exigido para el desarrollo.
-
Ambiente general de programación: JDK 1.2 (para ambiente Solaris)
y JDK 1.3 para ambiente Windows.
Exigidos para el desarrollo.
Antes de finalizas el trimestre se aspira usar sólo JDK
1.3 en ambos ambientes. La migración a JDK 1.3 para Solaris depende
de los recursos disponibles del Laboratorio Docente de Computación
(LDC).
-
Analizador sintáctico: Claire, un analizador LR novedoso desarrollado
en Java por el Profesor Ascánder Suárez en la Universidad
Simón Bolívar.
Claire está incorporado en los desarrollos Delta Pensum 1.x.
Fue
propuesta por el equipo Injavakus y adoptada por Injavakus
y Southpark.
-
Otros ambientes de desarrollo:
-
Forte, utilizado para extender y mejorar la interfaz de la aplicación.
-
Rational Rose para elaborar los diagramas UML del desarrollo y hacer cierta
reingeniería sobre el código.
Opcional. Forte ha sido adoptada por GammaSoft y Evolution Systems.
-
Control de configuración: CVS y Freepository,
una herramienta web basada en CVS.
Usar una herramienta de control de configuración es una exigencia
del desarrollo, pero cada "empresa" de desarrollo escoge la herramienta
específica. La primera empresa en adoptar CVS fue GammaSoft,
seguida luego por Evolution Systems; Neo Abacus propuso y adoptó
Freepository.
-
Instalador: InstallAnywhere
Opcional. Fue propuesta y adoptada por Evolution Systems.
Textos:
No hay un texto para la asignatura ya que el material a cubrir se encuentra
disperso en la literatura. Recomiendo que cada empresa forme una
biblioteca con los siguientes textos como mínimo:
-
Cay Horstmann, Gary Cornell. Core Java 2. Volume 1: Fundamentals.
Prentice-Hall, 1999.
-
Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides. Design Patterns:
Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995.
-
Craig Larman: UML y Patrones: Introducción al análisis
y diseño orientado a objetos. Prentice-Hall Hispanomericana,
1999.
-
Clay Carr: Team Leader's Problem Solver. Prentice-Hall, 1996.
Referencias complementarias
Desarrollo de software orientado por objetos
-
Michael Blaha y William Premerlani: Object-Oriented Modeling and Design
for Database Applications. Prentice-Hall, 1998.
-
Frank Buschmann, Regine Meunier, Hans Rohnert,
Peter Sommerlad, Michael Stal. A System of Patterns: Pattern-Oriented
Software Architecture.
Wiley, 1996.
-
Luiz Fernando Capretz y Miriam A. M. Capretz: Object-Oriented Software:
Design and Maintenance. Series on Software Engineering and Knowledge
Engineering, vol. 6. World Scientific, 1996.
-
Martin Fowler: Analysis Patterns: Reusable Object
Models. Addison-Wesley, 1997.
-
Martin Fowler: Refactoring: Improving the Design of Existing Code. Addison-Wesley,
1999.
-
Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides.
Design
Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley,
1995.
-
Ivar Jacobson, Grady Booch y James Rumbaugh: The Unified Software Development
Process. Addison-Wesley, 1999.
-
Craig Larman: UML y Patrones: Introducción
al análisis y diseño orientado a objetos. Prentice-Hall
Hispanomericana, 1999. Es una buena traducción de Applying UML
and Patterns (Prentice-Hall, 1998).
-
John Vlissides: Pattern Hatching: Design Patterns Applied. Addison-Wesley,
1998.
-
Jos Warmer y Anneke Kleppe: The Object Constraint Language: Precise
Modeling with UML. Addison-Wesley, 1999.
-
Láminas
sobre Internet, HTML y Java.
-
Object Management Group (OMG).
-
Sitio web base para los patrones: http://hillside.net/patterns/patterns.html
-
Repositorio Cetus sobre Tecnología
Orientada a Objetos.
-
Tutorial SUN, documentos y enlaces sobre Java (accesible desde dominio
ldc.usb.ve):
file:/usr/local/docs/java/index.html
-
Tutorial SUN (remoto)
sobre Java.
Desarrollo de software orientado por componentes
-
Sametinger: Component Oriented Software Engineering. Springer ...
-
Clemens Szyperski: Component Based Software Engineering: Beyond Object-Oriented
Programming. Addison-Wesley,1997.
Dinámica de grupos
-
Clay Carr: Team Leader's Problem Solver. Prentice-Hall, 1996.
-
S. Robbins: Comportamiento Organizacional: Teoría y Práctica.
Octava
edición. Prentice-Hall Hispanoamericana, 1999.
Otros tópicos en Ingeniería de Software
Referencias adicionales
En esta sección he agrupado referencias en dos categorías,
aquellos que no me han convencido en una primera lectura (N) y aquellos
que tengo pendientes por leer (P)
Leonor Barroca, Jon Hall y Patrick Hall (eds.): Software Architectures:
Advances and Applications. Springer 2000. (P)
Len Bass, Paul Clements y Rick Kazman: Software Architecture in Practice.
Addison-Wesley,
1998. (N)
Bernd Bruegge y Allen Dutoit: Object-Oriented Software Engineering:
Conquering Complex and Changing Systems. Prentice-Hall, 2000.
(P)
Christine Hofmeister, Robert Nord y Dilip Soni: Applied Software Architecture.
Addison-Wesley,
2000. (N)
Bertrand Meyer: Construcción de Software Orientado a Objetos.
Prentice-Hall,
1999. (P)
Esta página fue creada el 14 de junio de 2000.
Ultima actualización: 15 de noviembre de 2000.