ARQUITECTURA DE SOFTWARE (MATERIAL DE APOYO CLASE) mejorado

11
ARQUITECTURA DE SOFTWARE DEFINICIÓN: La definición “oficial” de AS se ha acordado que sea la que brinda el documento de IEEE Std 1471-2000, adoptada también por Microsoft, que reza así: La Arquitectura de Software es la organización fundamental de un sistema encarnada en sus componentes, las relaciones entre ellos y el ambiente y los principios que orientan su diseño y evolución. ¿POR QUÉ ES IMPORTANTE LA ARQUITECTURA DE SOFTWARE? La arquitectura de software es de especial importancia ya que la manera en que se estructura un sistema tiene un impacto directo sobre la capacidad de este para satisfacer lo que se conoce como los atributos de calidad del sistema. Ejemplos de atributos de calidad son: El desempeño, que tiene que ver con el tiempo de respuesta del sistema a las peticiones que se le hacen, La usabilidad, que tiene que ver con qué tan sencillo les resulta a los usuarios realizar operaciones con el sistema, o bien La modificabilidad, que tiene que ver con qué tan simple resulta introducir cambios en el sistema. Los atributos de calidad son parte de los requerimientos (no funcionales) del sistema y son características que deben expresarse de forma cuantitativa. No tiene sentido, por ejemplo, decir que el sistema debe devolver una petición “de manera rápida”, o presentar una página “ligera”, ya que no es posible evaluar objetivamente si el sistema cubre o no esos requerimientos. REQUERIMIENTOS. La etapa de requerimientos se enfoca en la captura, documentación y priorización de requerimientos que influencian la arquitectura. Como se mencionó anteriormente, los atributos de calidad juegan un papel preponderante dentro de estos requerimientos, así que esta etapa hace énfasis en ellos. Otros requerimientos, sin embargo, son también relevantes para la arquitectura, estos son los requerimientos funcionales primarios y las restricciones. Los requerimientos no funcionales

Transcript of ARQUITECTURA DE SOFTWARE (MATERIAL DE APOYO CLASE) mejorado

ARQUITECTURA DE SOFTWARE

DEFINICIÓN:

La definición “oficial” de AS se ha acordado que sea la que brinda eldocumento de IEEE Std 1471-2000, adoptada también por Microsoft, que rezaasí:La Arquitectura de Software es la organización fundamental de un sistemaencarnada en sus componentes, las relaciones entre ellos y el ambiente ylos principios que orientan su diseño y evolución.

¿POR QUÉ ES IMPORTANTE LA ARQUITECTURA DE SOFTWARE?

La arquitectura de software es de especial importancia ya que la maneraen que se estructura un sistema tiene un impacto directo sobre lacapacidad de este para satisfacer lo que se conoce como los atributos decalidad del sistema.

Ejemplos de atributos de calidad son:

El desempeño, que tiene que ver con el tiempo de respuesta del sistema alas peticiones que se le hacen, La usabilidad, que tiene que ver con qué tan sencillo les resulta a losusuarios realizar operaciones con el sistema, o bien La modificabilidad, que tiene que ver con qué tan simple resultaintroducir cambios en el sistema.

Los atributos de calidad son parte de los requerimientos (no funcionales)del sistema y son características que deben expresarse de formacuantitativa.

No tiene sentido, por ejemplo, decir que el sistema debe devolver unapetición “de manera rápida”, o presentar una página “ligera”, ya que noes posible evaluar objetivamente si el sistema cubre o no esosrequerimientos.REQUERIMIENTOS.

La etapa de requerimientos se enfoca en la captura, documentación ypriorización de requerimientos que influencian la arquitectura. Como semencionó anteriormente, los atributos de calidad juegan un papelpreponderante dentro de estos requerimientos, así que esta etapa haceénfasis en ellos. Otros requerimientos, sin embargo, son tambiénrelevantes para la arquitectura, estos son los requerimientos funcionalesprimarios y las restricciones.

Los requerimientos no funcionales

Describen como el software debe comportarse, es decir cómo haceralgo, no que debe hacer

Están relacionados con los requerimientos funcionales porquedescriben la forma que se espera se logren dichos requerimientos

En algunos casos tienen restricciones de cómo hacerlo Se clasifican de acuerdo al atributo de calidad esperado del sistema

De particular importancia son los requerimientos no funcionales del sistemade software, pues influyen notoriamente en la calidad del mismo. Estas propiedades tienen un gran impacto en el desarrollo y mantenimientodel sistema, su operabilidad y el uso que éste haga de los recursos(Buschman et al., 1996).

Entre las propiedades no funcionales más importantes se encuentran:modificabilidad, eficiencia, mantenibilidad, interoperabilidad,confiabilidad, reusabilidad y facilidad de ejecución de pruebas (Kazmanet al., 2001). Bass et al. (1998) proponen que el término “requerimientono funcional” es disfuncional, debido a que implica que tal requerimientono existe, o que es una especie de requerimiento que puede serespecificado independientemente del comportamiento del sistema. En este sentido, Bass indica que debe hacerse referencia a atributos decalidad, en lugar de propiedades no funcionales.Definidos sin ambigüedad con criterios claros de medida para verificarcumplimiento o no.“Al decir rápido quiero decir…” desempeño y tiempo de respuesta“El sistema debe ser fácil de usar…” usabilidaad“El sistema debe ser escalable…” escalabilidad

Calidad de software

La ISO/IEC (International Standart Organitation u Organización Internacional deEstándares en español) define a la calidad de software como la totalidadde rasgos y atributos de un producto de software que le apoyan en sucapacidad de satisfacer sus necesidades explícitas o implícitas (ISO/IEC9126, 1998).

Lo más interesante en esta definición de la Calidad de Software, es lanecesidad de que un software de calidad debe satisfacer losrequerimientos dados por el usuario.

Ahora bien, la IEEE, citado por (Barbacci et al, 1995) afirma que lacalidad de un software es el grado en el cual el éste posee unacombinación deseada de factores.

Características de CalidadSegún Barbacci et al. (1995) la calidad de software se define como el grado enel cual el software posee una combinación deseada de atributos. Tales

atributos son requerimientos adicionales del sistema (Kazman et al.,2001), que hacen referencia a características que éste debe satisfacer,diferentes a los requerimientos funcionales.

Estas características o atributos se conocen con el nombre de atributos decalidad, los cuales se definen como las propiedades de un servicio quepresta el sistema a sus usuarios (Barbacci et al. 1995).

A grandes rasgos, Bass et al. (1998) establece una clasificación de los atributos de calidad en dos categorías:

_ Observables vía ejecución: aquellos atributos que se determinan delcomportamiento del sistema en tiempo de ejecución. La descripción dealgunos de estos atributos se presenta en la tabla 1._ No observables vía ejecución: aquellos atributos que se establecen durante el desarrollo del sistema. La descripción de algunos de estos atributos se presenta en la tabla 2.

Es importante destacar que tener conocimiento de los atributosobservables, no necesariamente implica que se satisfacen los atributos noobservables vía ejecución.

Por ejemplo, un sistema que satisface todos los requerimientosobservables puede o no ser costoso de desarrollar, así como también puedeo no ser imposible de modificar.

De igual manera, un sistema altamente modificable puede o no arrojarresultados correctos.

Bosch (2000) establece que los requerimientos de calidad se ven altamenteinfluenciados por la arquitectura del sistema.

Al respecto, Bass et al. (1998) afirman que la calidad del sistema debeser considerada en todas las fases del diseño, pero los atributos decalidad se manifiestan de maneras distintas a lo largo de estas fases.

De esta forma, establecen que la arquitectura determina ciertos atributosde calidad del sistema, pero existen otros atributos que no dependendirectamente de la misma.

Por ejemplo, la usabilidad de un sistema no está relacionada directamentecon la arquitectura del mismo, puesto que los detalles que este atributo

envuelve - como el uso de botones o radio-buttons, pantallas intuitivas,etc. - se encuentran casi siempre encapsulados en un componente simple.

En su mayoría, los atributos de calidad se pueden organizar y descomponerde maneras diferentes, en lo que se conoce como modelos de calidad.

Los modelos de calidad de software facilitan el entendimiento del procesode la ingeniería de software (Pressman, 2002).

Modelos de Calidad

Pressman (2002) indica que los factores que afectan a la calidad delsoftware no cambian, por lo que resulta útil el estudio de los modelos decalidad que han sido propuestos en este sentido desde los años 70.

Dado que los factores de calidad presentados para ese entonces siguensiendo válidos, se estudiarán los modelos más importantes propuestoshasta ahora: McCall (1977), Dromey (1996), FURPS (1987), ISO/IEC 9126(1991) e ISO/IEC 9126 adaptado para arquitecturas de software, propuestopor Losavio et al. (2003).

Modelo de McCall

El modelo de McCall et al. (1977) describe la calidad como un conceptoelaborado mediante relaciones jerárquicas entre factores de calidad, enbase a criterios y métricas de calidad. Este enfoque es sistemático, y permite cuantificar la calidad através de las siguientes fases:

_ Determinación de los factores que influyen sobre la calidad delsoftware_ Identificación de los criterios para juzgar cada factor_ Definición de las métricas de los criterios y establecimiento de unafunción de normalización que define la relación entre las métricas decada criterio y los factores correspondientes_ Evaluación de las métricas_ Correlación de las métricas a un conjunto de guías que cualquier equipode desarrollo podría seguir_ Desarrollo de las recomendaciones para la colección de métricas

En el modelo de McCall, los factores de calidad se concentran en tresaspectos importantes de un producto de software: característicasoperativas, capacidad de cambios y adaptabilidad a nuevos entornos.

La tabla 3. muestra, para el modelo de McCall, los factores de calidad ysus criterios asociados. En ella se observa que algunos de los criteriosson compartidos por más de un factor.

Modelo de Dromey

Dromey (1996) propuso un marco de referencia – o metamodelo - para laconstrucción de modelos de calidad, basado en cómo las propiedadesmedibles de un producto de software pueden afectar los atributos decalidad generales, como por ejemplo, confiabilidad y mantenibilidad.

El problema que se plantea es cómo conectar tales propiedades delproducto con los atributos de calidad de alto nivel.

Para solventar esta situación, Dromey (1996) sugiere el uso de cuatrocategorías que implican propiedades de calidad, que son: correctitud,internas, contextuales y descriptivas.

La tabla 4. presenta la relación que establece Dromey (1996) entre las propiedades de calidad del producto y los atributos de calidad de altonivel.

El proceso de construcción de modelos de calidad propuesto por Dromey

(1996) consta de 5 pasos, basados en las propiedades mencionadas.

Los pasos del marco de referencia propuesto son:_ Especificación de los atributos de calidad de alto nivel (por ejemplo,confiabilidad, mantenibilidad)_ Determinación de los distintos componentes del producto a un apropiadonivel de detalle (por ejemplo, paquetes, subrutinas, declaraciones)_ Para cada componente, determinación y categorización de susimplicaciones más importantes de calidad_ Proposición de enlaces que relacionan las propiedades implícitas a losatributos de calidad, o, alternativamente, uso de enlaces de las cuatrocategorías de atributos propuestas_ Iteración sobre los pasos anteriores, utilizando un proceso deevaluación y refinamiento

Modelo FURPSEl modelo de McCall ha servido de base para modelos de calidadposteriores, y este es el caso del modelo FURPS, producto del desarrollode Hewlett-Packard (Grady et al., 1987).

En este modelo se desarrollan un conjunto de factores de calidad desoftware, bajo el acrónimo de FURPS: funcionalidad (Functionality), usabilidad(Usability), confiabilidad (Reliability), desempeño (Performance) y capacidad desoporte (Supportability).

La tabla 5 presenta la clasificación de los atributos de calidad que seincluyen en el modelo, junto con las características asociadas a cada uno(Pressman, 2002).

Modelo ISO/IEC 9126

El estándar ISO/IEC 9126 ha sido desarrollado en un intento deidentificar los atributos clave de calidad para un producto de software(Pressman, 2002).

Este estándar es una simplificación del Modelo de McCall (Losavio et al.,2003), e identifica seis características básicas de calidad que puedenestar presentes en cualquier producto de software.

El estándar provee una descomposición de las características ensubcaracterísticas, que se muestran en la tabla 6

ISO/IEC 9126 adaptado para arquitecturas de software

Losavio et al. (2003) proponen una adaptación del modelo ISO/IEC 9126 decalidad de software para efectos de la evaluación de arquitecturas desoftware.

El modelo se basa en los atributos de calidad que se relacionandirectamente con la arquitectura: funcionalidad, confiabilidad,eficiencia, mantenibilidad y portabilidad.

Los autores plantean que la característica usabilidad propuesta por elmodelo ISO/IEC 9126 puede ser refinada para obtener atributos que serelacionan con los componentes de la interfaz con el usuario.

Dado que estos componentes son independientes de la arquitectura, no sonconsiderados en la adaptación del modelo.

La tabla 7 presenta los atributos de calidad planteados por Losavio et al. (2003), que poseen subcaracterísticas asociadas con elementos de tipoarquitectónico.

En la literatura es posible encontrar planteamientos en relación alestablecimiento de los atributos de calidad y su relación con laarquitectura de software (Bass et al., 2000).

Kazman et al. (2001) establecen que la arquitectura determina atributosde calidad. Bass et al. (2000) explica la relación existente entre estos,conjuntamente con los problemas y beneficios de la documentación de estarelación.

Relación entre Arquitectura de Software y Atributos de Calidad

Bass et al. (2000) establecen que para alcanzar un atributo específico,es necesario tomar decisiones de diseño arquitectónico que requieren unpequeño conocimiento de funcionalidad.

Por ejemplo, el desempeño depende de los procesos del sistema y suubicación en los procesadores, caminos de comunicación, etc.

Por otro lado, establecen que al considerar una decisión de arquitecturade software, el arquitecto se pregunta cuál será el impacto de ésta sobreciertos atributos; por ejemplo, modificabilidad, desempeño, seguridad,usabilidad, etc.

Por esta razón, Bass et al. (2000) afirman que cada decisión incorporadaen una arquitectura de software puede afectar potencialmente losatributos de calidad. Cada decisión tiene su origen en preguntas acerca del impacto sobre estosatributos, y el arquitecto puede argumentar cómo la decisión tomadapermite alcanzar algún objetivo. Con frecuencia, el objetivo es unatributo de calidad en particular, porlo que al tomar decisiones de arquitectura de software que afecte a losatributos de calidad, se tienen dos consecuencias:

_ Se formula un argumento que explica la razón por la que la decisióntomada permite alcanzar uno o varios atributos de calidad. Esto resultade gran importancia porque además permite comprender las consecuencias deun cambio de decisión._ Surgen preguntas sobre el impacto de una decisión sobre otrosatributos, que a menudo se responden en el contexto de otras decisiones.