Está en la página 1de 4

FACULTAD DE INGENIERÍA

DEPARTAMENTO DE TECNOLOGÍAS DE INFORMACIÓN Y


COMUNICACIONES

Código-Curso 09710 - Arquitectura de Software


Requisitos: 09705 - Ingeniería de Software
Programa – Semestre: Ingeniería de Sistemas – VII
Período académico: 201920
Intensidad semanal: 4 horas
Créditos: 3
Profesor Gabriel Tamura – gtamura@icesi.edu.co
Johan Ballesteros

Ingeniería de Sistemas
• C: Diseño de Software (T)
Resultados de Aprendizaje • F: Ética (T)
relacionados con el
Programa • H: Impacto de las Soluciones de Ingeniería (T)
• K: Herramientas de Ingeniería (T)
Resultados
Fuente de Valoración ABET NO de N/A
Aprendizaje

DESCRIPCION

En este curso se estudian los elementos que definen la estructura y el comportamiento de la arquitectura de
software, las relaciones que se pueden dar entre estos elementos, y cómo se especifican en una notación
estandarizada como UML. Se tendrán en cuenta, de manera general, los tres componentes que involucra la
arquitectura de todo sistema informático o computacional considerable: el software, el hardware, y la interconexión
entre sus componentes respectivos.

OBJETIVOS DE APRENDIZAJE

General
Al finalizar el curso, en un entorno productivo cualquiera (empresarial, industrial, propio, o como empleado),
el estudiante estará en capacidad de diseñar arquitecturas de software, de complejidad de su nivel de
formación, que respondan a los requerimientos funcionales y no funcionales arquitectónicamente
significativos de sistemas. Como es natural, la arquitectura de software diseñada debe evaluarse y
considerarse en su relación con la arquitectura del sistema computacional de la que es parte, y teniendo en
cuenta tanto las restricciones del contexto como su función e impacto en la sociedad. Este ejercicio, además,
debe hacerse con todo el sentido de la ética y responsabilidad profesional.

Terminales

1. Explicar los elementos fundamentales involucrados en el diseño de la arquitectura de un sistema computacional,


incluyendo la arquitectura de hardware (procesamiento y almacenamiento), como elementos complementarios a la
arquitectura de software, y cómo estos afectan el logro de atributos de calidad en el sistema; y utilizar correctamente
una notación estandarizada como UML para especificar dichos elementos de diseño.
En este planteamiento se debe reconocer la responsabilidad que se asume al diseñar la arquitectura del sistema,
en el alcance de la solución propuesta y los tradeoffs implicados, observando los principios de la ética profesional.
2. Derivar una primera versión de arquitectura de software a partir del análisis de requerimientos dados,
especificándola usando una notación estandarizada. Este análisis implica identificar requerimientos
arquitectónicamente significativos (RAS) establecidos por los stakeholders, y seleccionar los drivers
Arquitectura de Software Página 1 de 4
arquitectónicos a partir de la priorización de dichos RAS.
En el proceso de esta derivación, deben reconocerse tanto los compromisos (tradeoffs) y responsabilidades que
asume un arquitecto de software con los stakeholders y con la sociedad en general al escoger un subconjunto de
los RAS priorizados, así como el alcance e incidencia que éstos tienen en el diseño global del sistema y en sus
atributos de calidad.
3. Identificar y aplicar modelos de referencia, patrones y estilos de arquitectura según un conjunto priorizado de
requerimientos arquitectónicamente significativos (RAS), mapeables a atributos de calidad, para refinar una
arquitectura de referencia y obtener una arquitectura concreta de software.
Del buen tratamiento de estos RAS y de las relaciones (interacciones) entre los componentes (re)utilizados en el
software depende en gran parte la calidad del software, pues de todo ello emergen propiedades deseables (e.g.,
buenos atributos de calidad).
4. Utilizar herramientas tecnológicas que permitan diseñar una arquitectura de software adecuada con respecto a
sus requerimientos arquitectónicamente significativos y atributos de calidad priorizados.

UNIDADES Y OBJETIVOS ESPECÍFICOS

UNIDAD OBJETIVOS ESPECÍFICOS


1. Reconocer y explicar (i) la arquitectura de hardware (procesamiento y
almacenamiento), y (ii) la arquitectura de software como elementos fundamentales
de diseño para cumplir con los compromisos que corresponden a la arquitectura
de sistemas computacionales, y con los atributos de calidad de los servicios que
se pueden prestar sobre estos sistemas. Estos compromisos reflejan la
1 – La arquitectura de software responsabilidad asumida frente a los stakeholders del proyecto y a la sociedad en
en el contexto de los sistemas general, y deben cumplirse con los principios de la ética y responsabilidad
computacionales profesional.
2. Describir y utilizar correctamente las reglas léxicas, sintácticas y semánticas de
los diagramas de UML (notación estandarizada) que se utilizan para especificar la
arquitectura de un sistema de software.
3. Describir y explicar los principales esquemas de procesamiento y estructuras de
almacenamiento para satisfacer atributos de calidad específicos.

1. Describir las características que se deben observar en el planteamiento y


clasificación de requerimientos funcionales y no funcionales, y arquitectónicamente
significativos para un sistema computacional.
2 – Derivación inicial de la
2. Especificar, con las características requeridas, los requerimientos
arquitectura de un sistema de
arquitectónicamente significativos, especialmente los atributos de calidad.
software a partir del análisis
3. Identificar los componentes de base de la arquitectura de software de un
de requerimientos
sistema computacional y plantearlos en un diagrama de deployment preliminar que
arquitectónicamente
satisfaga el conjunto de requerimientos funcionales.
significativos
4. Seleccionar los drivers arquitectónicos a partir de la priorización de un conjunto
de requerimientos arquitectónicamente significativos, según los intereses de los
stakeholders del sistema solicitado.
1. Explicar las características de un modelo de referencia, estilo y patrón de
3 – Modelos de referencia,
arquitectura, arquitectura de referencia y arquitectura de software.
patrones y estilos de
2. Explicar y aplicar algunos de los estilos y patrones de arquitectura más
arquitectura y diseño como
representativos en el refinamiento de una arquitectura de software, usando
pasos en el refinamiento de
herramientas tecnológicas apropiadas.
arquitectura de software que
3. Mapear los componentes de base de una arquitectura de software sobre los
satisfaga un conjunto
componentes de los modelos de referencia, patrones y estilos de arquitectura, y
priorizado de requerimientos
refinar el resultado para concretar la arquitectura de software.
arquitectónicamente
4. Realizar la implementación y despliegue de la configuración de la arquitectura
significativos
de software de un sistema pequeño, usando herramientas apropiadas.

Arquitectura de Software Página 2 de 4


Objetivos Específicos de Formación en Valores y Capacidades Generales

Durante el curso cada estudiante reflexionará y pondrá en práctica los siguientes valores:
 La autonomía y la responsabilidad, dado que en el curso estudiará y diseñará con autonomía arquitecturas
de software como elemento fundamental del ciclo de vida de desarrollo de software, teniendo en cuenta la
responsabilidad social que este diseño implica.
 La tolerancia, la autoestima y la integridad ética, fomentando el respeto por las posiciones y opiniones de
los demás, pero a la vez reconociendo el valor de la opinión propia sin perder el sentido de la objetividad y
la razón. Además, manteniendo la coherencia entre el deber ser, y el hacer, teniendo en cuenta la ética
profesional.
 La curiosidad intelectual, al confrontarse con diversas fuentes de información que constituyen los
principales referentes mundiales en el área. A partir de esta confrontación, se le invita a reflexionar
críticamente sobre sus posiciones y convicciones, las de sus compañeros, y en general, sobre las de todas
las fuentes de información, hasta satisfacer el origen de su curiosidad respondiendo las preguntas que esta
confrontación haya suscitado.
 La disciplina y la perseverancia, al motivarlo para aplicar técnicas y metodologías útiles para diseñar una
arquitectura de software.

También habrá podido fortalecer las siguientes capacidades generales:


 Pensamiento sistémico y holístico, al exhortar al estudiante a considerar los problemas que debe resolver
desde los distintos puntos de vista que requiere el modelamiento de un sistema: físico, lógico, estático y
dinámico, entre otros.
 Pensamiento crítico y creativo, al tener que analizar críticamente los requerimientos arquitectónicamente
significativos y proponer soluciones arquitectónicas costo-eficientes.
 Comunicación técnica de diseño e ingeniería.
 Planeación, al considerar los pasos metodológicos para diseñar una arquitectura de software.

METODOLOGÍA

El curso se desarrollará por unidades, de acuerdo al contenido presentado, con espacios de discusión reflexiva y
(auto)crítica, análisis y aplicación de los conceptos, y la participación activa de los estudiantes. A lo largo de todo
el semestre, en grupos de máximo cuatro personas, los estudiantes aplicarán los temas vistos en el desarrollo de
trabajos prácticos.

Actividades del estudiante

Los estudiantes deberán preparar, antes de la clase, los temas que asigne el profesor. Bajo el esquema de
trabajo de este curso, preparar un tema significa ESTUDIARLO, es decir hacer una lectura crítica (análisis y
síntesis en forma de mapa conceptual y llevarlo a clase en forma digital) del tema asignado, indagar sobre los
aspectos desconocidos, resolver las preguntas y los ejercicios planteados. Durante la clase, el estudiante deberá
participar en las discusiones del tema y en la formulación de preguntas orientadas a resolver las dudas que hayan
surgido al realizar las actividades mencionadas y las propuestas por el profesor; para esto, el estudiante deberá
llevar a clase en formato digital, los mapas conceptuales y soluciones planteadas a los ejercicios propuestos como
preparación del tema con el fin de discutir estas propuestas con todo el grupo. Después de cada clase, además
de realizar los trabajos asignados por el profesor para poner en práctica y afianzar conceptos, el estudiante deberá
reflexionar sobre la relación del tema con temas anteriores de este y otros cursos y con su futuro desempeño
profesional como Ingeniero de Sistemas.

EVALUACIÓN

Los exámenes del curso comprenden los temas en sus aspectos tanto teóricos como prácticos, y el profesor
eventualmente realizará evaluaciones cortas con o sin previo aviso, orales o escritas. En el caso de las
sustentaciones de trabajos grupales, serán tanto individuales como grupales.

Arquitectura de Software Página 3 de 4


Semana en que se Objetivos de aprendizaje a evaluar
Forma de Evaluación Porcentaje
realiza
Examen Parcial 1 20% Semana 7 Todos los de la unidad 1.
Examen Parcial 2 20% Semana 12 Todos los de la unidad 2.
Examen Parcial 3 25% Semana 17 Todos los de la unidad 3.
Tareas 20% Durante el semestre Todos los cubiertos hasta cada entrega.
Control de lectura y quices 15% Durante el semestre
Total 100%

La nota definitiva corresponderá al cálculo de las notas con la ponderación del cuadro anterior.

 La herramienta de E-learning (Moodle) es el medio oficial para comunicar, publicar y entregar los
ejercicios y tareas del curso. Es responsabilidad del estudiante asegurar que su correo electrónico esté
registrado correctamente pues las comunicaciones se harán a través de Moodle.
 Las tareas y trabajos desarrollados por los estudiantes deberán ser entregados en las fechas, horas, y
enlaces establecidos en Moodle. Lo que no se entregue en la fecha, hora, y enlace indicadas tendrán
una nota de cero (0.0). Los quices, tareas y demás pruebas y trabajos que no se presenten por falta de
asistencia o cualquier otro motivo también tendrán una nota de cero (0.0).
 Para la entrega de trabajos grupales UN SOLO miembro del grupo debe hacer la entrega a través de
Moodle. DEBEN incluir un archivo de texto donde incluya los nombres de los demás miembros de
grupo y las instrucciones de compilación o de interpretación, si es del caso.

BIBLIOGRAFÍA
Este curso usa significativamente el primer libro de la lista abajo relacionada, aunque tiene material
complementario de otras fuentes. Todo el material del curso está disponible a través de la plataforma de
aprendizaje virtual, Moodle.

Material complementario: Estos recursos ayudarán al estudiante a complementar su trabajo académico en cada
uno de los temas durante el desarrollo del curso. Las recomendaciones sobre su consulta se irán realizando a
medida que se aborda cada tema.

1. Bass, Len, Paul Clements, Rick Kazman. Software Architecture in Practice, 3rd Ed. Addison Wesley, 2012.
2. Nick Rozansky, Eoin Woods. Software Systems Architecture. Pearson Education, 2008.
3. Buschmann, Frank, Regine Meunier, Hans Rohnert, Meter Sommerland, Michael Stal. Pattern
Oriented Software Architecture. John Wiley & Sons, 2001.
4. SWEBOK: Guide to the Software Engineering Body of Knowledge. http://www.swebok.org/
5. Garlan, David, Mary Shaw. An Introduction to Software Architecture.
http://www-2.cs.cmu.edu/afs/cs/project/able/ftp/intro_softarch/intro_softarch.pdf
6. Gamma, Erich, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns: Elements of Reusable
Object-Oriented Software. Addison Wesley.
7. Jacobson, Ivar, Grady Booch, James Rumbaugh. El proceso unificado de desarrollo de software. Prentice
Hall.
8. Jacobson, Ivar, Grady Booch, James Rumbaugh. The Unified Modeling Language User Guide. Addison
Wesley.
9. MacCabe, Arthur. Sistemas Computacionales: arquitectura y organización. IRWIN, 1995.
10. Pressman, Roger. Ingeniería del Software: Un Enfoque Práctico. 8 Ed. Prentice Hall, 2006.
11. Sommerville, Ian. Software Engineering. 8 Ed. Addison Wesley, 2006.
12. Thayer, Richard, Merlin Dorfman. Software Requirements Engineering. IEEE.

Arquitectura de Software Página 4 de 4

También podría gustarte