Aplicación de los atributos de calidad de Arquitectura Software

Anuncio
ESCUELA TÉCNICA SUPERIOR DE INGENIERIA (ICAI)
INGENIERO SUPERIOR INFORMÁTICO
Aplicación de los atributos de calidad de
Arquitectura Software para el diseño de sistemas
software basado en versiones
AUTOR: Marcos Morosini Obregón
DIRECTOR: Juan Antonio Pérez-Campanero
MADRID, Mayo 2014
i
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
ii
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
AUTORIZACIÓN PARA LA DIGITALIZACIÓN, DEPÓSITO Y DIVULGACIÓN EN
ACCESO ABIERTO ( RESTRINGIDO) DE DOCUMENTACIÓN
1º. Declaración de la autoría y acreditación de la misma.
El autor D. _____________________________________ , como _______________ de la
UNIVERSIDAD PONTIFICIA COMILLAS (COMILLAS), DECLARA
que es el titular de los derechos de propiedad intelectual, objeto de la presente cesión, en relación
con
la
obra____________________________________________________________________________
__________________________________________________________1, que ésta es una obra
original, y que ostenta la condición de autor en el sentido que otorga la Ley de Propiedad
Intelectual como titular único o cotitular de la obra.
En caso de ser cotitular, el autor (firmante) declara asimismo que cuenta con el consentimiento de
los restantes titulares para hacer la presente cesión. En caso de previa cesión a terceros de derechos
de explotación de la obra, el autor declara que tiene la oportuna autorización de dichos titulares de
derechos a los fines de esta cesión o bien que retiene la facultad de ceder estos derechos en la
forma prevista en la presente cesión y así lo acredita.
2º. Objeto y fines de la cesión.
Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la
Universidad y hacer posible su utilización de forma libre y gratuita ( con las limitaciones que más
adelante se detallan) por todos los usuarios del repositorio y del portal e-ciencia, el autor CEDE a
la Universidad Pontificia Comillas de forma gratuita y no exclusiva, por el máximo plazo legal y
con ámbito universal, los derechos de digitalización, de archivo, de reproducción, de distribución,
de comunicación pública, incluido el derecho de puesta a disposición electrónica, tal y como se
describen en la Ley de Propiedad Intelectual. El derecho de transformación se cede a los únicos
efectos de lo dispuesto en la letra (a) del apartado siguiente.
3º. Condiciones de la cesión.
1
Especificar si es una tesis doctoral, proyecto fin de carrera, proyecto fin de Máster o cualquier otro trabajo
iii
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Sin perjuicio de la titularidad de la obra, que sigue correspondiendo a su autor, la cesión de
derechos contemplada en esta licencia, el repositorio institucional podrá:
(a) Transformarla para adaptarla a cualquier tecnología susceptible de incorporarla a internet;
realizar adaptaciones para hacer posible la utilización de la obra en formatos electrónicos, así como
incorporar metadatos para realizar el registro de la obra e incorporar “marcas de agua” o cualquier
otro sistema de seguridad o de protección.
(b) Reproducirla en un soporte digital para su incorporación a una base de datos electrónica,
incluyendo el derecho de reproducir y almacenar la obra en servidores, a los efectos de garantizar
su seguridad, conservación y preservar el formato. .
(c) Comunicarla y ponerla a disposición del público a través de un archivo abierto institucional,
accesible de modo libre y gratuito a través de internet.2
(d) Distribuir copias electrónicas de la obra a los usuarios en un soporte digital. 3
4º. Derechos del autor.
El autor, en tanto que titular de una obra que cede con carácter no exclusivo a la Universidad por
medio de su registro en el Repositorio Institucional tiene derecho a:
a) A que la Universidad identifique claramente su nombre como el autor o propietario de los
derechos del documento.
b) Comunicar y dar publicidad a la obra en la versión que ceda y en otras posteriores a través de
cualquier medio.
c) Solicitar la retirada de la obra del repositorio por causa justificada. A tal fin deberá ponerse en
contacto con el vicerrector/a de investigación ([email protected]).
d) Autorizar expresamente a COMILLAS para, en su caso, realizar los trámites necesarios para la
obtención del ISBN.
2
En el supuesto de que el autor opte por el acceso restringido, este apartado quedaría redactado en los
siguientes términos:
(c) Comunicarla y ponerla a disposición del público a través de un archivo institucional, accesible de modo
restringido, en los términos previstos en el Reglamento del Repositorio Institucional
3
En el supuesto de que el autor opte por el acceso restringido, este apartado quedaría eliminado.
iv
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
e) Recibir notificación fehaciente de cualquier reclamación que puedan formular terceras personas
en relación con la obra y, en particular, de reclamaciones relativas a los derechos de propiedad
intelectual sobre ella.
5º. Deberes del autor.
El autor se compromete a:
a) Garantizar que el compromiso que adquiere mediante el presente escrito no infringe ningún
derecho de terceros, ya sean de propiedad industrial, intelectual o cualquier otro.
b) Garantizar que el contenido de las obras no atenta contra los derechos al honor, a la intimidad y
a la imagen de terceros.
c) Asumir toda reclamación o responsabilidad, incluyendo las indemnizaciones por daños, que
pudieran ejercitarse contra la Universidad por terceros que vieran infringidos sus derechos e
intereses a causa de la cesión.
d) Asumir la responsabilidad en el caso de que las instituciones fueran condenadas por infracción
de derechos derivada de las obras objeto de la cesión.
6º. Fines y funcionamiento del Repositorio Institucional.
La obra se pondrá a disposición de los usuarios para que hagan de ella un uso justo y respetuoso
con los derechos del autor, según lo permitido por la legislación aplicable, y con fines de estudio,
investigación, o cualquier otro fin lícito. Con dicha finalidad, la Universidad asume los siguientes
deberes y se reserva las siguientes facultades:
a) Deberes del repositorio Institucional:
- La Universidad informará a los usuarios del archivo sobre los usos permitidos, y no garantiza ni
asume responsabilidad alguna por otras formas en que los usuarios hagan un uso posterior de las
obras no conforme con la legislación vigente. El uso posterior, más allá de la copia privada,
requerirá que se cite la fuente y se reconozca la autoría, que no se obtenga beneficio comercial, y
que no se realicen obras derivadas.
- La Universidad no revisará el contenido de las obras, que en todo caso permanecerá bajo la
responsabilidad exclusiva del autor y no estará obligada a ejercitar acciones legales en nombre del
autor en el supuesto de infracciones a derechos de propiedad
intelectual derivados del depósito y archivo de las obras. El autor renuncia a cualquier reclamación
frente a la Universidad por las formas no ajustadas a la legislación vigente en que los usuarios
hagan uso de las obras.
- La Universidad adoptará las medidas necesarias para la preservación de la obra en un futuro.
v
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
b) Derechos que se reserva el Repositorio institucional respecto de las obras en él registradas:
- retirar la obra, previa notificación al autor, en supuestos suficientemente justificados, o en caso de
reclamaciones de terceros.
Madrid, a ……….. de …………………………... de ……….
ACEPTA
Fdo……………………………………………………………
vi
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
vii
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Agradecimientos:
Quiero mostrar mis agradecimientos a todo el mundo que ha estado junto a mi durante
todos estos años de carrera haciéndome más fácil y llevadero el duro trabajo que conlleva
llegar a ser ingeniero superior. Es una gran recompensa al esfuerzo y dedicación que ser
ingeniero supone.
En primer lugar agradecer a mis padres de todo corazón el esfuerzo económico al
que han estado expuestos durante todos estos años para que pudiese estudiar en una de las
mejores universidades posibles viviendo en una ciudad que no es la mía de origen,
teniendo así un gasto mayor. Nunca me han faltado ni su apoyo ni su atención,
ayudándome así a conseguir todos y cada uno de mis objetivos académicos.
También agradecer al resto de familiares y amigos de toda la vida el estar junto a
mi durante todos estos años ya que teniéndoles cerca han hecho que cada día que he
pasado haya valido la pena.
Por otra parte, mencionar con especial cariño a todas y cada una de las personas
que he tenido a mi lado en la universidad, tanto profesores como compañeros, ya que se
pasan muchas horas dentro de la universidad, y tener una gran relación con todos ellos han
hecho que todo el tiempo que he pasado en ese edificio lo recuerde durante el resto de mi
vida. Agradecer aquí a mi director de proyecto, Juan Antonio Pérez-Campanero, por
ayudarme con sus conocimientos en la realización del proyecto y al coordinador Israel
Alonso por mantenerme informado en todo momento de las mejoras que debía hacer para
llegar a la consecución del mismo.
Por último, no quiero terminar sin mencionar a mi novia, ya que es de las personas
que más me ha apoyado en los momentos difíciles y que ha estado día tras día conmigo
aguantándome en lo bueno y sobre todo en lo malo. Espero estar en todos los momentos
importantes de su vida y que, por supuesto, ella esté en los míos.
Muchísimas gracias, todos tenéis parte de culpa de haber conseguido que me
convierta en ingeniero superior informático.
viii
I
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
APLICACIÓN DE LOS ATRIBUTOS DE CALIDAD DE
ARQUITECTURA SOFTWARE PARA EL DISEÑO DE SISTEMAS
SOFTWARE BASADOS EN VERSIONES.
Autor: Morosini Obregón, Marcos
Director: Pérez-Campanero, Juan Antonio.
Entidad Colaboradora: ICAI – Universidad Pontificia Comillas
RESUMEN DEL PROYECTO
Introducción
La aportación de este proyecto es unir los aspectos técnicos con los económicos teniendo
como base la arquitectura software. Es algo innovador que aún no se encuentra en el
mercado y resulta de gran utilidad para las empresas que quieran mejorar los sistemas que
utilizan ya que no pierden ni tiempo ni dinero en buscar información o contratar personal
que les haga el trabajo que esta aplicación puede hacer.
Es un tema que está en el día a día de las empresas y que no se le presta la atención
y dedicación que merece. Al tenerlo en cuenta se evitarían muchos problemas a la hora de
incurrir en costes innecesarios o pérdida de tiempo en un proyecto. Si se estudia bien la
arquitectura del software de un sistema, teniendo en cuenta principalmente los atributos de
calidad que, en su conjunto, definen de alguna manera un sistema, se elabora una lista de
requisitos necesarios para completar un proyecto cualquiera. Al tener claro lo que se va a
necesitar hacer para conseguir la ejecución perfecta del mismo, se evita en un porcentaje
muy alto que surjan imprevistos y problemas durante la elaboración del proyecto.
Además de una lista de requisitos también se tienen en cuenta los costes en los que
se va a incurrir al mejorar cada atributo por separado. Al unirlo se obtiene el coste total y
ahí es cuando la empresa se da cuenta si es viable realizarlo o no dependiendo de lo que se
esté dispuesto a pagar por dicho proyecto.
En resumidas cuentas, este proyecto es un avance importante en el ámbito de la
creación o modificación de proyectos. Propone estudiar todos y cada uno de los puntos a
tener en cuenta para conseguir un resultado óptimo y ver cuánto esfuerzo económico va a
suponer para la empresa. Permite saber aproximadamente cómo va a ser la realización de
I
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
un proyecto antes de comenzarlo. Esto lleva a la empresa a decidir y prepararse para ello
de dos maneras posibles: Darse cuenta que es inviable y pensar qué otros cambios pueden
realizar o ver que es viable y teniendo la lista de requisitos comenzar a cumplir lo que hay
en ella.
Cualquier error cometido en una fase del desarrollo, se multiplica por 10 o 20 en
fases posteriores, por lo que un error cometido en los requisitos del software llevará a un
análisis incorrecto o con errores. En las fases de diseño y desarrollo será más grave, de ahí
la importancia del Diseño de la Arquitectura del Software, que es anterior a cualquier fase
del ciclo de vida del software. Esto además impediría iniciar proyectos que fueran
inviables evitando importantes pérdidas de dinero, ya que precisamente la viabilidad o
inviabilidad es uno de los aspectos que se detectarían antes ni siquiera de haber empezado
el proyecto.
Metodología
Este proyecto se ha dividido en dos partes diferenciadas a la hora de su realización. En
primer lugar se ha hecho un estudio teórico exhaustivo para tener claros todos los
conceptos que se están tratando y así poder obtener un resultado que permita proponer una
solución útil y avanzada para las empresas.
Se estudia cómo está en la actualidad la arquitectura software y sus posibles
avances pero sobre todo se centra en saber todo acerca de los seis atributos de calidad
principales y las tácticas a utilizar para mejorarlos. Es la parte más importante ya que si
conocemos bien toda la información relativa a estos atributos, más fácil resultará
mejorarlos en un sistema.
Esta basado también en poder realizarlo en diferentes versiones, por los que se
manejan tres de las más importantes y utilizadas en la actualidad. Se trata de las
aplicaciones móviles y las modalidades RIA Y WEB. La modalidad RIA (Rich Internet
Applications) son aplicaciones web que tienen la mayoría de las características de las
aplicaciones tradicionales. Utilizan navegador web y por medio de una máquina virtual se
añaden características adicionales. Esta modalidad surge como la combinación de las
ventajas de aplicaciones de escritorios y web. Mejoran la productividad y experiencia del
II
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
usuario. Sólo se produce comunicación con el servidor cuando se necesitan datos externos
ubicados en bases de datos o de otros ficheros externos, situación que rara vez pasa ya que
desde el principio se carga toda la información en la aplicación. [RICH2007]. La
modalidad WEB permite a los usuarios utilizar herramientas accediendo a un servidor web
a través de Internet/Intranet mediante un navegador. Una página web puede contener
elementos que permiten comunicación activa entre el usuario y la información que quiere
así accede a los datos de modo interactivo respondiendo la página a cada acción deseada
por el usuario. [CONS2014]. La aplicación móvil es una aplicación informática diseñada
para ser utilizada por teléfonos inteligentes, tabletas y cualquier dispositivo móvil. Se
encuentran disponibles a través de plataformas de distribución operadas por compañías
propietarias de los sistemas operativos móviles. [DISE2011]
Resuelta esta parte, también se realizará, como es lógico, un estudio intenso sobre
aspectos económicos para poder relacionarlo con el aspecto descrito anteriormente ya que
es el fundamento de este proyecto.
Por último, combinando los dos estudios anteriores, se procederá a realizar una
aplicación que los relacione y así de un soporte de gran utilidad a las empresas que quieran
realizar cambios en su sistema y lo quieran utilizar.
Resultado
Obtenemos una aplicación que ofrece a las empresas unos resultados interesantes acerca de
las relaciones existentes entre los atributos de calidad y la viabilidad del proyecto en sí.
Ofrece información que puede ser muy útil para ayudar a tomar decisiones acerca de los
cambios que se van realizar en un sistema. Se pueden hacer todas las simulaciones que se
quiera para ver que cambios son los óptimos para ellos y, al introducir los costes
previamente adquiridos con presupuestos, ver si es viable o no realizar ese proyecto
sabiendo la inversión económica que se puede realizar. Sirve para nuevos proyecto o para
introducir variaciones en uno ya existente.
III
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Referencias
[RICH2007] Modalidad RIA. http://searchsoa.techtarget.com/definition/Rich-InternetApplication-RIA
[DISE2011]
Modalidad WEB.
http://www.bab-
soft.com/es/diseno_desarrollo_aplicaciones_web.php
[CONS2014] Aplicación móvil.
http://www.siliconnews.es/2014/05/05/5-consejos-
para-desarrollar-una-aplicacion-movil/
IV
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
APPLICATION OF QUALITY ATTRIBUTES OF SOFTWARE
ARCHITECTURE FOR THE DESIGN OF SOFTWARE SYSTEMS
BASED ON DIFFERENT VERSIONS.
Author: Morosini Obregón, Marcos
Director: Pérez-Campanero, Juan Antonio.
Collaborating Entity: ICAI – Universidad Pontificia Comillas
PROJECT SUMMARY
Introduction
The contribution of this Project is to link the engineering aspect with the economic one on
the basis of the software architecture. It is something innovative that is not yet on the
market and is useful for companies whose want to improve their systems. They don´t waste
time and don´t spend money searching for information or hiring employees for doing the
same as the application does.
This subject it´s not given the attention and dedication it deserves because taking account
of it, many problems would be avoided when incurring on unnecessary costs.
Considering quality attributes we can develope a list of requirements for completing any
project. When we know what we are going to need to get the perfect execution are avoided
the problems in a very high percentage during the development of the project.
In addition to a list of requirements, we also take account the costs of improving each
attribute separetely. Joining it, we obtain the total cost and the company can know if this
project is feasible or not depending on what they are willing to pay for it.
Summarizing, this project is an important advance in the area of project creation and
modification. It considers all the important points for having the best possible results and
see the economic effort will mean for the company. It allows to know about the realization
of the project before starting it. This make the company to prepare and decide in two
different ways; Realice that it´s not feasible and think in other changes can be made or see
that is feasible and, having the list of requirements, begin serving what is in it.
Any mistake made in a developmental phase, it´s multiplied by 10 or 20 in later stages,
so an error in software requirements will lead to an incorrect analysis or with errors. In the
V
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
design and development phases will be more serious, hence the importance of Design
Software Architecture, which is prior to any phase of the software lifecycle. This will also
prevent the start of unfeasible projects, avoiding substantial losses of money. The
feasibility or infeasibility is one of the aspects that would be detected before even having
started the project.
Methodology
This project has been divided in two different parts on it realization. First, An exhaustive
theorical study about all the concepts we are working with has been made in order to give a
result as close as possible to perfection.
We study how it is the software architecture now and it possible developments but
mainly focused on knowing everything about the six main quality attributes and the tactics
used to improve them. It´s the most important part because if we know well the
information on these attributes, it will be easier to improve a system.
It´s also able to do it in different versions, which are handled by three of the most
important and used modalities today; RIA and WEB modalities and mobile app´s. A rich
Internet application (RIA) is a Web application designed to deliver the same features and
functions normally associated with deskop applications. RIAs generally split the
processing across the Internet/network divide by locating the user interface and related
activity and capability on the client side, and the data manipulation and operation on the
application server side. An RIA normally runs inside a Web browser and usually does not
require software installation on the client side to work. However, some RIAs may only
work properly with one or more specific browsers. For security purposes, most RIAs run
their client portions within a special isolated area of the client desktop called a sandbox.
The sandbox limits visibility and access to the file and operating system on the client to the
application server on the other side of the connection. [RICH2007]. A web application is
any application software that runs in a web browser or is created in a browser-supported
programming language. There is an active comunication between the server and the client
with an interactive method where the server answering any question to the client.
[CONS2014]. A mobile application is an application designed to run on smartphones or
tablets. This applications are available through application distribution platforms. The
VI
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
popularity of that is rising because it use has become increasingly prevalent across mobile
phone users. Developing applications for mobile devices requires to consider the
constraints of it. The power of the battery is less than the computers one. It´s important to
consider that mobiles are not computers and it applications have to be adapted for them.
[DISE2011]
Resolved this part, an intensive study of economics aspects will be taken in order to link
it with the aspect described above. This is the clue of the project.
Finally, combining the two previous studies we proceed to program an application that
support companies to make decisions about system changes.
Results
We obtain an application that offers companies some interesting results about the
relationship between quality attributes and the viability of the project. It provides
information than can be very useful in helping to make decisions about changes that can be
made on a system. Multiple simulations can be made to see what changes are optimal for
them and introducing costs estimated previosuly, see if it is viable or not knowing the
finantial investment that the company can support. It´s useful to new projects or only for
introducing changes in an existing one.
VII
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
References
[RICH2007] Modalidad RIA. http://searchsoa.techtarget.com/definition/Rich-InternetApplication-RIA
[DISE2011]
Modalidad WEB.
http://www.bab-
soft.com/es/diseno_desarrollo_aplicaciones_web.php
[CONS2014] Aplicación móvil.
http://www.siliconnews.es/2014/05/05/5-consejos-
para-desarrollar-una-aplicacion-movil/
VIII
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Índice de la memoria
CAPÍTULO 1. INTRODUCCIÓN ............................................................................................................... 1 CAPÍTULO 2. METODOLOGIAS BASADAS EN ARQUITECTURA SOFTWARE ............................ 5 2.1. LINEAS DE INVESTIGACIÓN DE LA ARQUITECTURA SOFTWARE ............................................. 7 2.2. MODELOS Y VISTAS ..................................................................................................................................... 10 2.3. LENGUAJES DE DESCRIPCIÓN ARQUITECTONICA ........................................................................ 13 2.4. PROCESOS Y METODOLOGÍAS ................................................................................................................ 15 2.5. ESCENARIOS ................................................................................................................................................... 16 2.6. MÉTODOS DE EVALUACIÓN DE ARQUITECTURAS SOFTWARE .............................................. 17 2.7. HERRAMIENTAS DE EVALUACIÓN DE ARQUITECTURAS SOFTWARE ................................. 18 CAPÍTULO 3. FUTURO DE LA ARQUITECTURA SOFTWARE ...................................................... 21 3.1. ARQUITECTURA SOFTWARE COMO CONCEPTO ............................................................................................. 21 CAPÍTULO 4. VALIDACIÓN DE LA ARQUITECTURA SOFTWARE ............................................. 23 4.1. ATRIBUTOS DE CALIDAD ................................................................................................................................... 23 4.2. LAS TÁCTICAS ..................................................................................................................................................... 29 CAPÍTULO 5. DISPONIBILIDAD .......................................................................................................... 31 5.1. TÁCTICAS ............................................................................................................................................................. 40 CAPÍTULO 6. MODIFICABILIDAD ...................................................................................................... 47 6.1. TÁCTICAS ............................................................................................................................................................. 49 CAPÍTULO 7. RENDIMIENTO ............................................................................................................... 53 7.1. TÁCTICAS ............................................................................................................................................................. 55 CAPÍTULO 8. SEGURIDAD .................................................................................................................... 59 8.1. TÁCTICAS ............................................................................................................................................................. 64 CAPÍTULO 9. USABILIDAD ................................................................................................................... 67 9.1. TÁCTICAS ............................................................................................................................................................. 76 CAPÍTULO 10. VERIFICABILIDAD ..................................................................................................... 79 10.1. TÁCTICAS .......................................................................................................................................................... 82 CAPÍTULO 11. MODELO COCOMO ..................................................................................................... 85 11.1. TIPOS DE MODELOS ......................................................................................................................................... 86 IX
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
CAPÍTULO 12. MODELO COPLIMO .................................................................................................... 91 CAPÍTULO 13. DESARROLLO DEL MODELO ................................................................................... 93 13.1. CASOS REALES DEL MODELO ....................................................................................................................... 118 CAPÍTULO 14. CONCLUSIONES ......................................................................................................... 125 BIBLIOGRAFIA ....................................................................................................................................... 127 ANEXO A. PLANIFICACIÓN DEL PROYECTO ................................................................................. 129 ANEXO B. ESTUDIO ECONÓMICO ..................................................................................................... 133 X
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Índice de figuras
FIGURA 1. SISTEMA .................................................................................................................................. 4 FIGURA 2. KRUCHTEN 4+1 ..................................................................................................................... 7 FIGURA 3. DIAGRAMA DE CAJAS ........................................................................................................... 9 FIGURA 4. DIAGRAMAS DE CASO DE USO DE UML ....................................................................... 10 FIGURA 5. FLUJO CONTEXTUAL ATAM ............................................................................................ 17 FIGURA 6. RED DE PETRI ..................................................................................................................... 19 FIGURA 7. ATRIBUTOS DE CALIDAD INGLÉS ................................................................................. 23 FIGURA 8. ATRIBUTOS DE CALIDAD ESPAÑOL ............................................................................. 24 FIGURA 9. ESCENARIO EN EL MODELO DE KRUCHTEN 4+1 ..................................................... 27 FIGURA 10. REPRESENTACIÓN DEL ESCENARIO .......................................................................... 27 FIGURA 11. REPRESENTACIÓN DE TÁCTICA ................................................................................. 29 FIGURA 12. GRÁFICA DE MTBF, MTTR ............................................................................................ 37 FIGURA 13. ALGORITMO DE DECISIÓN ........................................................................................... 41 FIGURA 14. MONITORIZACIÓN .......................................................................................................... 44 FIGURA 15. CONCEPTOS DE LA USABILIDAD ................................................................................ 67 FIGURA 16. VENTANA PRINCIPAL .................................................................................................... 94 FIGURA 17. DISPONIBILIDAD ............................................................................................................. 95 FIGURA 18. MODIFICABILIDAD ......................................................................................................... 95 FIGURA 19. RENDIMIENTO ................................................................................................................. 96 FIGURA 20. SEGURIDAD ....................................................................................................................... 96 FIGURA 21. USABILIDAD ..................................................................................................................... 97 FIGURA 22. VERIFICABILIDAD ........................................................................................................... 97 FIGURA 23. MANUAL DE USO ............................................................................................................. 99 FIGURA 24. RELACIÓN ENTRE ATRIBUTOS ................................................................................. 100 XI
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
FIGURA 25. PARÁMETROS DISPONIBILIDAD .............................................................................. 101 FIGURA 26. PARÁMETROS MODIFICABILIDAD .......................................................................... 102 FIGURA 27. PARÁMETROS RENDIMIENTO .................................................................................. 102 FIGURA 28. PARÁMETROS SEGURIDAD ........................................................................................ 103 FIGURA 29. PARÁMETROS USABILIDAD ...................................................................................... 104 FIGURA 30. PARÁMETROS VERIFICABILIDAD ............................................................................ 105 FIGURA 31. RELACIONES ................................................................................................................... 106 FIGURA 32. MODELO ........................................................................................................................... 107 FIGURA 33. CÁLCULOS ........................................................................................................................ 108 FIGURA 34. ALMACENAMIENTOS .................................................................................................... 108 FIGURA 35. CONSULTAS ..................................................................................................................... 109 FIGURA 36. INFORMES ........................................................................................................................ 110 FIGURA 37. CÁLCULO DE COSTES .................................................................................................... 110 FIGURA 38. VIABILIDAD PROYECTO .............................................................................................. 111 FIGURA 39. RELACIONAR PARÁMETROS ..................................................................................... 112 FIGURA 40. MODIFICACIÓN PORCENTAJES ................................................................................. 112 FIGURA 41. PRESUPUESTO ............................................................................................................... 113 FIGURA 42. VIABILIDAD .................................................................................................................... 114 FIGURA 43. DISCOS RAID ................................................................................................................... 116 FIGURA 44. DIAGRAMA DE GANTT ................................................................................................. 130 FIGURA 45. TAREAS ............................................................................................................................. 131 FIGURA 46. RESUMEN TAREAS ........................................................................................................ 131 FIGURA 47. DIAGRAMA DE GANTT II ............................................................................................. 132 XII
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Índice de tablas
TABLA 1. SIGLAS DE ABREVIACIÓN .................................................................................................. 25 TABLA 2. RELACIÓN ENTRE ATRIBUTOS DE CALIDAD .............................................................. 25 TABLA 3. DEFINICIÓN DE LOS ELEMENTOS DEL ESCENARIO .................................................. 28 TABLA 4. MTTR DEL HARDWARE ..................................................................................................... 35 TABLA 5. MTTR DEL SOFTWARE ...................................................................................................... 36 TABLA 6. TIEMPO DE INACTIVIDAD ................................................................................................ 37 TABLA 7. ESCENARIO PARA LA DISPONIBILIDAD ....................................................................... 39 TABLA 8. RESUMEN DE LAS TÁCTICAS PARA LA DISPONIBILIDAD ....................................... 44 TABLA 9. IMPACTO DE LAS TÁCTICAS PARA LA DISPONIBILIDAD ....................................... 45 TABLA 10. ESCENARIO PARA LA MODIFICABILIDAD ................................................................. 48 TABLA 11. RESUMEN DE LAS TÁCTICAS PARA LA MODIFICABILIDAD ................................. 51 TABLA 12. ESCENARIO PARA EL RENDIMIENTO ......................................................................... 54 TABLA 13. RESUMEN DE LAS TÁCTICAS PARA EL RENDIMIENTO ......................................... 58 TABLA 14. ESCENARIO PARA LA SEGURIDAD ............................................................................... 63 TABLA 15. RESUMEN DE LAS TÁCTICAS PARA LA SEGURIDAD .............................................. 66 TABLA 16. ESCENARIO PARA LA USABILIDAD ............................................................................. 75 TABLA 17. RESUMEN DE LAS TÁCTICAS PARA LA USABILIDAD ............................................. 77 TABLA 18. ESCENARIO PARA LA VERIFICABILIDAD .................................................................. 81 TABLA 19. RESUMEN DE LAS TÁCTICAS PARA LA VERIFICABILIDAD .................................. 82 TABLA 20. TARIFAS DEL PERSONAL .............................................................................................. 133 TABLA 21. TARIFAS DE SERVICIOS ................................................................................................ 134 TABLA 22. TABLA DE COSTES .......................................................................................................... 135 TABLA 23. COSTES TOTALES ............................................................................................................ 135 XIII
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
XIV
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Capítulo 1. Introducción.
La “ingeniería del software” es un término que mencionó por primera vez Fritz Bauer en
1968 y, como es lógico, desde ese momento hasta el día de hoy se han producido avances
que hacen que se sepa cada vez más acerca de ello. Este proyecto es un avance más para
conocer mejor acerca de este tema. [INTR2003]
La base se compone principalmente de dos libros. El primero es “ The mitical
man/month : Essays on software engineering” de Fred Brooks, y el segundo es “El modelo
COCOMO” de Barry Boehm, siendo ambos libros de 1975 y 1970 respectivamente. Se
consideran de los libros más influenciables debido a que fueron los que recogieron la
información más importante acerca de este tema durante muchos años.
La investigación en este área no ha cesado hasta el día de hoy y eso lleva a muchas
teorías establecidas por aquellas personas que se han dedicado a realizar estudios
exhaustivos, llegando cada uno de ellos a conclusiones diferentes, aportando su pequeño
granito de arena para poder acercarse a la perfección en su conocimiento. Lo principal en
lo que se ha trabajado ha sido en el desarrollo de metodologías de análisis, desarrollo y
diseño del software. El objetivo no es otro que comprobar si el software a desarrollar es el
aconsejable y poder determinar con la mayor certeza posible si va a ser correcto o no el
desarrollo del sistema. Se combinan la estructura, el funcionamiento y el resultado, lo que
nos lleva a una nueva definición : la arquitectura software.
Unido esto a la evolución constante de las tecnologías y la necesidad de realizar
ajustes económicos a la hora de comenzar un proyecto debido a la situación económica
actual, se procederá a realizar dicho proyecto.
La evolución tecnológica permitirá la posibilidad de escoger diferentes tipos de
versiones, desde la modalidad web (cada vez utilizada por más gente gracias a que las
personas tienen cada vez más información de cómo utilizar Internet), hasta las aplicaciones
móviles cada vez más usadas en los teléfonos inteligentes o tabletas, que se han convertido
en un foco de producción bastante importante. Una conclusión muy importante, sobre todo
para las modalidades WEB y RIA es HTML5. Es la quinta versión del lenguaje básico
1
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
HTML. Especifica dos variantes de sintaxis: el clásico HTML con la variante HTML5 y
otra XHTML conocida como sintaxis XHTML5 que deberá ser servida como XML. Esta
es la primera vez que HTML y XHTML se han desarrollado en paralelo.
El consorcio internacional que produce recomendaciones para la Word Wide Web,
conocido como W3C, indica que se encuentra aún en fase experimental, aunque ya es
usado por múltiples desarrolladores web por las mejoras que incorpora. El consorcio,
denominado W3C, regula el desarrollo con este lenguaje de marcado.
Al no ser reconocido en viejas versiones de navegadores por sus nuevas etiquetas,
se recomienda al usuario común actualizar a la última versión mejorada y así poder
disfrutar de todo el potencial que provee HTML5.
Algunas de las novedades que incorpora son:
•
Etiquetas (canvas 2D y 3D, audio, vídeo) con codecs para mostrar los contenidos
multimedia. Actualmente hay una lucha entre imponer codecs libres (WebM + VP8) o
privados (H.264/MPEG-4 AVC).
•
Etiquetas para manejar grandes conjuntos de datos: Datagrid, Details, Menu y
Command. Permiten generar tablas dinámicas que pueden filtrar, ordenar y ocultar
contenido en cliente.
•
Mejoras en los formularios. Nuevos tipos de datos (eMail, number, url, datetime…)
y facilidades para validar el contenido sin Javascript.
•
Visores: MathML (fórmulas matemáticas) y SVG (gráficos vectoriales). En general
se deja abierto a poder interpretar otros lenguajes XML.
•
Drag & Drop. Nueva funcionalidad para arrastrar objetos como imágenes.
Económicamente hablando, hay que tener mucho cuidado en la actualidad con las
inversiones o cambios que se realizen ya que se pueden producir pérdidas importantes que,
incluso en una situación extrema, pueden llevar a la bancarrota a una empresa. Por ello,
este proyecto supone un avance, ya que antes de comenzar con gastos en cualquier
2
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
proyecto, se realiza una simulación sobre qué supondría la realización de dicho proyecto, y
así analizar si conviene o no meterse en un proyecto de tal envergadura.
Centrándonos en el proyecto en sí, sobre qué va a aportar y qué impacto va a tener
en la industria, se puede comentar todo lo mencionado anteriormente, es decir, la gran
ayuda que supone a la hora de afrontar un proyecto. Además de esto, después de todo el
estudio necesario que se realizará, la programación de la aplicación es un gran avance ya
que es fácilmente modificable según vayan surgiendo nuevos descubrimientos en el mundo
de la tecnología y así, modificar dentro de la aplicación todo lo necesario, para seguir
dando los resultados correctos según el punto en el que se encuentre la industria.
El trabajo no termina una vez acabe el proyecto, ya que como acabamos de
comentar, necesitarán actualizarse los valores. Según aumente la experiencia en el trabajo
con los sistemas además del avance tecnológico, se ajustarán en mayor medida los valores
que se muestran en el modelo como resultado (porcentajes como veremos durante el
proyecto).
Resumiento, el proyecto es una mezcla entre la ingeniería, la economía y la
experiencia a la hora de trabajar con estos dos temas principales. Además supone el
resurgir de un tema que se había dejado un poco abandonado dentro de la ingeniería y que
como se va a demostrar a lo largo del proyecto, es de gran utilidad para todas las personas
que trabajen en esta industria.
Hay una serie de razones por las que se debe realizar este proyecto y no otro, las
cuales voy a explicar a continuación.
Lo primero y más importante es el interés por el tema de la ingeniería del software,
el cual al estudiar una carrera relacionada totalmente con la informática, es clave a la hora
de tener más conocimientos acerca de esta ciencia. La programación de código es una de
las bases de esta ingeniería y por lo tanto, todo lo que se pueda profundizar en ello y
mejorarlo día a día será beneficioso para este mundo.
La otra razón de peso que ha llevado a elegirlo ha sido el interés por la economía y
su relación con todos y cada uno de los ámbitos de la ingeniería. Es aplicable totalmente a
muchas situaciones de la vida cotidiana, y por lo tanto, también lo es a la ingeniería
informática, y en concreto a la parte relacionada con el software.
3
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
La unión de estas motivaciones da como resultado el proyecto que está
comenzando. Una combinación entre la ingeniería del software y la economía que dará
resultados muy interesantes y supondrá un avance en esta rama de la informática. Si a esto
le añadimos la situación económica actual, resulta aún más importante tener en cuenta este
aspecto, ya que para realizar planes de viabilidad y estudios de mercado, hay que tener en
cuenta en que situación nos encontramos ya que esto nos puede limitar a la hora de poder
ser aconsejable o no un proyecto.
Figura 1. Sistema.
4
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Capítulo 2. Metodologías basadas en arquitectura
software. Su estado actual.
La primera constancia que se tuvo acerca del término “arquitectura del software” fue
cuando Dijkstra mencionó este termino a la hora de afirmar que se necesita una estructura
firme antes de comenzar a desarrollar sin orden. Esta definición fue un primer
acercamiento hacia este término, pero más adelante fue cuando de verdad se comenzó a
profundizar en ello. Se veía que las metodologías existentes no conseguían resolver los
problemas en los desarrollos de software, es decir, no podían eliminar todos los defectos
existentes.
“Arquitectura software” es un término que tiene un gran número de definiciones,
dependiendo de quién lo defina se referirá a un ámbito o a otro dependiendo del autor en
cuestión. Se denominó como estructura conceptual de un sistema desde la perspectiva del
programador por parte de Brooks y Iverson.
Después de los fallos que seguía teniendo el software, como hemos comentado
anteriormente, se empezó a utilizar el diseño estructurado, teniendo más en cuenta el
diseño cíclico eliminando así el diseño en cascada. Esto suponía una separación entre el
diseño y la implementación. Fue muy importante la creación de técnicas, herramientas y
lenguajes de modelado específicos.
Para hacer el sistema más flexible, Parnas declaró que la modularidad era muy
importante. Para verlo más claro, la utilización de funciones es clave para ello y para poder
acceder a las variables, sólo se podía realizar a través de dichas funciones. La idea
principal era el aislamiento de los módulos siendo cada uno visto como una caja negra
desde fuera. Existe un punto en común entre todos los módulos al que hay que volver
siempre que se quiera acceder de un módulo a otro. Se afirmaba que todos los módulos
más cercanos al punto en común previamente mencionado eran los que más probabilidad
tenían de ser cambiados y en cambio los que más alejados se encontraban, probablemente
no tendrían la necesidad de ser modificados. Resumiendo, se comenzó a pensar en la
5
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
“arquitectura software” como un paso previo indispensable antes de comenzar con el
desarrollo del software.
Después de todos los avances sobre la definición de la “arquitectura software” se
llegó a un punto importante en el que esta se basaba en tres componentes clave:
-­‐
-­‐
-­‐
Elementos : de procesamiento, datos o conexión. Forma : propiedades y relación entre los elementos. Razón : restricciones del sistema, la base. Wolf y Perry fueron los que llegaron a esta conclusión, y veían a la arquitectura más
cercana a la codificación que al diseño. La idea principal del término es la relación entre
requisitos, costes y proceso.
Se deben satisfacer todos los requisitos, realizar una estimación de costes tal que se
llegue al mejor punto en relación calidad precio y llevar una buena administración del
proceso.
Posteriormente surge el concepto de diseño basado en patrones. Son ideas que
principalmente surgieron para la arquitectura en el mundo de la edificación pero fácilmente
trasladables al mundo de la informática. Christopher Alexander declaraba que el término
de reutilización era muy importante.
En la primera década de siglo, la arquitectura software se orientó hacia el análisis,
definición de atributos y diseño basado en escenarios.
6
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Capítulo 2.1. Líneas de investigación de la
arquitectura software.
En primer lugar cabe hablar de el diseño orientado a objetos. Aquí entran en juego los
diagramas UML. La arquitectura en esta fase se centra en las fases iniciales del proceso
referido a los niveles más altos de abstracción, tanta que no tiene relación con el posterior
diseño. Es fundamental la abstracción de datos, es decir, el encapsulamiento en clases y
objetos. En esta línea de investigación se hace referencia a decisiones importantes en la
organización, selección de elementos estructurales, comportamiento, composición y estilo
arquitectónico. Estas características pueden ser descritas mediante las cinco vistas clásicas
del modelo 4+1 de Kruchten. [KRUC2014]
Figura 2. Kruchten 4+1
Centrándonos en el modelo de Kruchten explicaremos en que se basa cada vista para
entender como se pueden describir las anteriores características. [KRUC2011]
-­‐
Vista Lógica: Aquí es donde se representa la funcionalidad que servirá para los
usuarios finales. Se representa todo lo que el sistema debe hacer, es decir, sus
funciones y servicios ofrecidos.
7
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
-­‐
Vista de despliegue: Se muestra la perspectiva del programador. Gestiona el
software de manera que se observa cómo está dividido el sistema software en
componentes y la relación entre ellos.
-­‐
Vista de procesos: Como su propio nombre indica, se muestran los procesos que
hay en el sistema y cómo se comunican entre ellos. Se representa el flujo de trabajo
de negocio desde la perspectiva de un integrador de sistemas.
-­‐
Vista física: Son todos los componentes físicos del sistema y su relación mostrados
desde la perspectiva de un ingeniero de sistemas.
-­‐
Vista de escenarios: Representado por los casos de uso de software cuya función es
unir y relacionar las cuatro vistas anteriores.
En segundo lugar analizaremos la arquitectura estructural, basada en modelos como
el estático de estilos, ADL’s y vistas. Se trata de la corriente clásica de la disciplina que
nació mayoritariamente en la Universidad Carnegie Mellon (Clements, Shaw, Allen...). Su
uso se ha visto reducido al ámbito universitario.
Existen tres modalidades principales en su formalización. Se trata de los diagramas de
cajas, ADL y lenguajes formales de especificación como pueden ser CHAM y Z.
[SIST2009]
8
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Figura 3. Diagrama de cajas.
El diseño arquitectónico es el de más alto nivel de abstracción. El principal
problema es que no se sabe cómo podría integrarse en el ciclo de vida debido a que su
diseño no tiene por qué coincidir con al configuración del sistema y entonces no se suele
hablar de lenguajes de programación ni clases u objetos. Se ha evolucionado la
arquitectura hasta hacerla más relacionada con procesos.
En tercer lugar conoceremos el estructuralismo arquitectónico radical. Está
relacionado con lo que acabamos de comentar, es decir, con la arquitectura estructural.
Tiene dos ideas principales. Una es la de excluir la importancia del modelado orientado a
objetos y la otra definir metamodelos y estereotipos de UML.
En cuarto lugar hablaremos de la arquitectura basada en patrones. Los modelos son
de más bajo nivel que las anteriores. Gustan las metodologías de programación extrema.
La idea principal es identificar y articular patrones preexistentes.
En quinto y último lugar tenemos la arquitectura basada en escenarios. Es la más
reciente de todas y su idea base es la de volver a la unión entre la arquitectura software y
los requisitos y funcionalidad del sistema. Los autores más importantes salieron de la
Universidad Técnica de Eindhoven, Brije, Groningen y Phillips Research (Bosch, Ionita,
Obbink…). Se considera este estilo una evolución de la arquitectura estructural, la cual
9
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
podemos decir que es la que ha tenido más influencia. Se utilizan diagramas de casos de
UML como herramienta ocasional.
Figura 4. Diagramas de caso de uso de UML
Capítulo 2.2. Modelos y vistas.
Son ayudas a la hora de tomar decisiones. Hay muchos estándares (ISO, OMG, CEN,
IEEE) que han querido normalizar aspectos de la arquitectura software para homogeneizar
la terminología, modelos y procedimientos. Se ordenan las diversas perspectivas de los
modelos arquitectónicos en forma de vistas y marcos de trabajo (formados por hasta seis
vistas). Con estas afirmaciones podemos decir que las vistas son el subconjunto resultante
de realizar una abstracción de la realidad.
Se necesita establecer relaciones entre las vistas ya que son fundamentales para poder
describir el sistema completo. Los principales marcos que podemos encontrarnos son:
10
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
-­‐
Marco de referencia para la arquitectura empresarial : Creado por Zachman.
Identifica 36 vistas basadas en 6 niveles (ámbito, empresa, sistema lógico,
tecnología, representación detallada y funcionamiento empresarial) y aspectos
(datos, función, red, personas, tiempo y motivación). Es demasiado rígido y
obsoleto (aunque ha servido de ayuda para posteriores definiciones).
-­‐
Marco de referencia para Procesamiento Distribuido Abierto : Estándar de ISO.
Sirve para grandes sistemas distribuidos. Define 5 puntos de vista para el sistema y
su entorno (empresa, información, computación, ingeniería y tecnología). El
lenguaje Corba es el más recomendado, significando sus siglas “Common Object
Request Broker Architecture” y siendo un estándar definido por el Object
Management Group permitiendo que algunos componentes software escritos en
múltiples lenguajes de programación y en diferentes computadores puedan trabajar
juntos. El problema es que no proporciona soporte para el punto de vista
empresarial. [CORB2014]
-­‐
C4ISR Architecture Framework : Propuesto por el Departamento de Defensa de
Estados Unidos. Sus vistas son la Operacional, de Sistemas y Técnica.
-­‐
TOGAF : Cuatro componentes principales siendo uno el más importante y
definiendo cuatro vistas. Arquitectura de negocios, de datos, de aplicación y
tecnológica.
-­‐
Modelo 4+1 de Kruchten : Ya descrito anteriormente.
-­‐
Esquema de cinco vistas : Creado por Booch, Rumbaugh y Jacobson. Las vistas
propuestas son la de casos de uso, diseño, procesos, implementación y despliegue.
Las más relacionadas con el tema que nos concierne, es decir, con la arquitectura
software son las de diseño (tiene las clases, interfaces y relaciones entre el
11
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
problema y la solución) y de proceso (hilos y procesos, valga la redundancia, que
forman los mecanismos de sincronización y concurrencia).
-­‐
Nueve vistas : Bass, Clements y Kazman, autores importantísimos en la historia de
la arquitectura software, las crean pensando en el diseño y la implementación. Son
la estructura de módulo (asignación de tareas), lógica (abstracciones de requisitos
funcionales del sistema), procesos (threads), física, uso (procedimientos o
módulos), llamadas a funciones (subprocedimientos), flujo de datos (módulos para
envío de datos), flujo de control (programas) y clases (objetos).
-­‐
IEEE 1471-2000 : Base común para describir la arquitectura software. Términos
clave como la arquitectura, vista y punto de vista. La arquitectura es la
organización fundamental del sistema, con sus componentes y sus relaciones. El
punto de vista define un patrón para representar un conjunto de incumbencias. La
vista es la representación concreta del sistema desde una única perspectiva. Éstas
últimas se usan ya que ayudan a obtener una simplificación en la visualización de
sistemas complejos, pero hay teorías que están en contra de su utilización debido a
que al existir muchas vistas pueden, pueden llevar a problemas de integración y
consistencia entre ellas. Todas las teorías que se sitúan en contra de las vistas se
ven anuladas debido a su gran utilidad a la hora de dividir los diferentes aspectos
existentes y tener una descomposición correcta del sistema para su mejor
entendimiento. Las vistas fundamentales de las que podemos hablar son:
-­‐
Estática: Define los componentes de la arquitectura.
-­‐
Funcional: Describe qué hace cada componente.
-­‐
Dinámica: Indica cómo se comportan los componentes en el transcurso del tiempo
y su interacción.
Para su mejor entendimiento se utilizan lenguajes desde el natural hasta el UML
(lenguaje único para los modelos o vistas).
12
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Shaw y Garlan definieron distintos modelos muy importantes en este apartado:
-­‐
Estructurales: Trabajo caracterizado por desarrollar lenguajes de descripción
arquitectónica. (ADL’s). Son importantes los componentes que forman esta
arquitectura, la conexión entre ellos y su configuración, propiedades, etc.
-­‐
Framework: Parecido al anterior. Centrado en una única estructura del sistema
completo.
-­‐
Dinámicos: Atención a los cambios en la configuración del sistema y al proceso de
datos e información.
-­‐
De proceso: Construcción de la arquitectura y en sus pasos.
-­‐
Funcionales: Proporcionan servicios.
Capítulo
2.3.
Lenguajes
de
descripción
arquitectónica.
Los lenguajes formales son una parte muy importante a la hora de representar la
arquitectura software (basada en vistas). El UML es el más utilizado debido a una decisión
unánime, pero los ADL, aunque sean más complejos, no tienen las carencias que poseen
los lenguajes UML. Sin embargo, éste último está más extendido y entonces se tiene más
experiencia a la hora de utilizarlo. Los problemas que surgen al utilizar UML como ADL
son el basarse en conexión de objetos, semántica poco adecuada y relaciones entre vistas
ocultas y poco claras.
13
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
A la par, las ventajas que poseen los lenguajes ADL son su forma de representación
formal de la arquitectura, enfoque para buen entendimiento, sistema descrito al máximo
nivel de abstracción, análisis de la arquitectura para saber si es completa y consistente y su
fácil manera de generar automáticamente sistemas software.
Aparte de estas ventajas, como todo, existen unos inconvenientes a la hora de utilizar el
lenguaje ADL. No existe una clara especificación de qué se debe representar, sobre todo
desde el punto de vista del comportamiento de la arquitectura. Representaciones difíciles
de utilizar y no existe una herramienta que ayude a su uso. No está desarrollada más allá
del nivel académico.
Los tipos de ADL existentes son los siguientes:
-­‐
ACME: Muy simple. Permite análisis sintáctico. Se estudia añadirle el componente
del análisis de comportamiento de la arquitectura. Se sigue evolucionando.
-­‐
Rapide: Especialidad en simulación. Su funcionamiento se basa en conjuntos de
eventos ordenados. Fue desarrollado para aplicarlo al diseño de sistemas
distribuidos grandes. Se comparan los resultados obtenidos en la simulación con los
patrones establecidos de permisión o prohibición. Permite también el análisis en el
tiempo. Una característica bastante importante es que se permite analizar, antes de
comenzar con la producción del software, el rendimiento de sistemas sensibles al
tiempo. Con los Posets (conjuntos de eventos) se consigue visualizar y analizarla
ejecución del sistema. Es un lenguaje de simulación orientado a objetos y basado
en eventos que permite expresar los requisitos del sistema como restricciones en el
tiempo. Los componentes se ejecutan por separado esperando y generando eventos.
Éstos pueden ser programados así controlándolos y sincronizándolos con un reloj.
Es una arquitectura basada en interfaces y conexiones entre ellos de tipo básico,
pipelines y agentes. La configuración define componentes, conexiones y
restricciones.
14
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
-­‐
Wright: Lenguaje de propósito general con el objetivo de analizar protocolos de
comunicaciones. Se utiliza una herramienta CPS, al ser derivado suyo, para el
análisis. Similar sintácticamente a ACME y Aesop (del que hablaremos a
continuación) .
-­‐
Aesop: Mismo desarrollador que el anterior. Enfocado hacia estilos arquitectónicos.
Cuenta con un conjunto de herramientas y un marco de trabajo específicos, cosa
que Wright no tiene. También posee mucha facilidad en cuanto al intercambio e
interoperabilidad con otros lenguajes de diseño arquitectónico.
-­‐
MetaH: Enfocado al diseño de aplicaciones de navegación, guiado y control.
Herramientas muy útiles.
-­‐
C2 SADL: Facilita el diseño utilizando estilos basados en el dinamismo.
-­‐
SADL: Especifica jerarquías de arquitectura software centrándose en el
refinamiento de la arquitectura.
También existen otros tipos de lenguajes como Lileanna o Modechart, pero hemos
mencionado los más importantes.
Capítulo 2.4. Procesos y metodologías.
Desde 1998, el SEI (Software Engineering Institute) y otros organismos elaboraron
métodos específicos de procesos de ingeniería que sistematizan el rol de la arquitectura en
el proceso que concierne desde la elaboración de requisitos hasta la entrega del producto
terminado. Podemos mencionar algunos métodos como son ABD (Architecture Based
Design), SAAM (Software Architecture Analysis Method), QAW (Quality Attribute
Workshops), QASAR (Quality Attribute Oriented Software Architecture Desing Method),
15
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
ADD (Attribute Driven Design), ATAM (Architecture Tradeoff Analysis Method), ARID
(Active Review for Intermediate Design), CBAM (Cost Benefits Analysis Method),
FAAM (Family Architecture Analysis Method), ALMA (Architecture Level Modifiability
Analysis), SACAM (Software Architecture Comparison Analysis Method).
Esta gran variedad de métodos significa que es muy difícil llegar a un método estándar
debido a diferencias a la hora de pensar y mostrar puntos de vista y diversos.
Capítulo 2.5. Escenarios.
Es la base de muchos métodos. Kruchten lo definió correctamente al dividirlos en dos
categorías; casos de uso (secuencias de actuación o interacción entre elementos de la
arquitectura) y casos de cambio (modificaciones del sistema).
Pensar en cómo nace un proyecto es la idea clave. El cliente y diseñador piensan en las
posibles situaciones y en el comportamiento futuro del sistema. Así surgen las
especificaciones de requisitos para recoger el comportamiento esperado del sistema. Los
requisitos del sistema se traducen así en posibles escenarios cómo herramienta muy útil a
la hora de ver la utilización que queremos del sistema antes de su desarrollo.
En resumen, un escenario es como un guión de cómo se debe comportar el sistema
normalmente o en una situación anómala dada por un problema inesperado.
Son descritos en lenguaje natural, pero se suele utilizar el UML al ser más conocido y
formal. Permite comprender más sencillamente y ver más claramente el escenario.
Los escenarios pueden involucrar a más de un módulo o componente del sistema,
comprobando su interrelación y así detectar errores en la arquitectura antes de comenzar
con el proceso de desarrollo.
16
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Capítulo
2.6.
Métodos
de
evaluación
de
arquitecturas software.
Algunos de los métodos existentes los hemos mencionado anteriormente. En este apartado
nos centraremos en uno de los considerados más importante y extendido. Se trata del
método ATAM (Architecture Tradeoff Analysis Method). Fue desarrollado por el SEI para
analizar los atributos que definen la arquitectura software. Se utiliza mayoritariamente en
el ámbito de la industria y está en continuo desarrollo. Utilizándolo, la evaluación dura
entre tres y cuatro días, y se obtienen las siguientes conclusiones:
· Clarificación de los requisitos de los atributos de calidad.
· Mejora de la documentación de la arquitectura.
· Documentación de las decisiones que afectan a la arquitectura final.
· Identificación de posibles riesgos en el software lo antes posible.
· Aumento y mejora de la comunicación entre todos los participantes.
Figura 5. Flujo contextual ATAM
17
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Los escenarios ayudan a evaluar y mejorar la arquitectura, y se toman decisiones
para cada uno de los escenarios propuestos. De aquí salen los riesgos, puntos débiles,
puntos fuertes y decisiones finales en cuanto a la arquitectura. Así se consiguen diferentes
arquitecturas diferentes de la inicial, es decir, diversas posibilidades que mejoran la
primera. Los aspectos más significativos de la evaluación realizada son normalmente el
estilo, un modelo jerárquico de los requisitos de la arquitectura, todos los escenarios que se
han creado y su aplicación a la arquitectura, atributos de calidad aplicables, riesgos y
fortalezas.
Capítulo 2.7. Herramientas de evaluación de
arquitecturas software.
Son pocas las herramientas existentes para la evaluación de arquitecturas software.
Algunas de ellas son:
-­‐
ArchKriti: Se encarga del diseño y evaluación de arquitecturas software. Ayuda al
arquitecto en el proceso de desarrollo con la generación de atributos de calidad,
ADD y evaluación y documentación de la arquitectura así creando nuevos estilos
de arquitectura y vistas.
-­‐
SAM: Son las siglas de “Software Architecture Modeling and Analysis”. Capturan
el modelo de carga de trabajo y los objetivos de rendimiento. El arquitecto así
podrá identificar una arquitectura adecuada. Construyendo una “ Layered Queuing
Network “ (LQN) , dígase en español una red de enlocamiento, el arquitecto
encontrará la arquitectura que tendrá las restricciones de rendimiento, y queda
resuelto mediante la simulación de eventos discretos. Se permite así refinar la
arquitectura hasta encontrar la definitiva que cumpla los requisitos buscados. Se
han buscado formas de integrar esta herramienta con las Redes Petri para crear
18
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
marcos de trabajo unificados con el fin de especificar y analizar los aspectos de la
arquitectura software.
-­‐
Arche: Herramienta experimental, como las anteriores, pero basada en software
libre y utilizando la plataforma de desarrollo Eclipse. Desarrollada en MySQL.
Figura 6. Red de Petri
19
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
20
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Capítulo 3. Futuro de la arquitectura software.
El futuro del tema abordado se antoja complicado ya que ha estado, está y estará en fase de
investigación. Es caso de estudio en muchos lugares, pero a la hora de ponerlo en
funcionamiento no se utiliza, bien por desconocimiento o bien por no existir interés por
parte de las empresas. Una razón importante puede ser la económica. El software debe ser
rentable y asegurar eso es difícil. Las teorías que se han establecido se han centrado en la
información ya existente acerca de este tema y eso no ayuda a avanzar, se necesita algo
más innovador acerca de ello. La confusión de mucha gente en cuanto a la palabra
“arquitectura” lleva a que no se entienda bien lo que es la “arquitectura software”, y esa
dificultar a la hora de entenderlo lleva a que muchas personas no quieran entrar en ello por
verlo demasiado complejo. Por ello este caso de estudio, para ver si se logra un mejor
entendimiento de ello y se ve aprovechable el utilizarlo en la industria.
Capítulo
3.1.
Arquitectura
software
como
concepto.
Evaluar los sistemas que se van a desarrollar es una acción muy importante para tener
controlados los aspectos de seguridad y calidad, ya que son dos características del sistema
software muy importantes para los ingenieros y gestores de proyectos de este tipo. Uno de
los objetivos principales siempre es el de tener el mínimo coste posible a la hora de
desarrollar un sistema software, y por ello se realizan constantes pruebas para detectar los
problemas lo antes posible y, por lo tanto, resolverlos antes para evitar costes extras. La
posibilidad que presenta la arquitectura software. siendo un claro beneficio, es que permite
encontrar y resolver los problemas antes de comenzar con el diseño del sistema.
Identificar los aspectos fundamentales de la arquitectura software es un aspecto muy
importante a la hora de evaluar las arquitecturas software. Se intenta alcanzar el máximo
21
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
nivel de fiabilidad y mantenimiento. Cumplir los requisitos de calidad exigidos es el punto
final al que se debe llegar.
La revisión de la arquitectura dará lugar a mejores arquitecturas, valga la redundancia,
debido a que se han mejorado todos los errores o riesgos de las anteriores, y esto dará a su
vez lugar a mejores sistemas.
Por norma general, cuando hay que hacer un sistema para un cliente, a éste se le entrega
de manera que, con el paso del tiempo, se da cuenta que el propio sistema tiene problemas
de disponibilidad y seguridad. Esto es por culpa de no haber realizado las pruebas
pertinentes de la arquitectura. Plantear todas las posibles soluciones y llegar a la más
óptima (hay veces que llegar a la mejor solución no es posible por cualquier motivo) es lo
que se debe hacer, y de esto se encargará este proyecto, de evaluar todas las soluciones
posibles, teniendo en cuenta estos requisitos de calidad y también el gasto que supondría
implantarlo. Una vez realizado esto, la negociación con el cliente es el siguiente paso para
que decida cuánto está dispuesto a gastar y que solución le gusta más. Así sí se realiza
correctamente el proceso y se evitan las situaciones previamente comentadas, es decir, los
problemas que le surgen al cliente posteriormente. Las decisiones que se toman finalmente
se denominan más técnicamente tácticas. [MANT2012]
22
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Capítulo 4. Validación de la arquitectura software.
Conocer cómo se puede evaluar la arquitectura y que se acerque lo más posible a los
objetivos propuestos es clave. Los atributos de calidad nos permiten definir los propios
requisitos del sistema y las decisiones necesarias a tomar. Estas tácticas sólo hará falta
utilizarlas si el resultado de la evaluación es negativo.
Capítulo 4.1. Atributos de calidad.
Los más importantes y utilizados a la hora de validad una arquitectura software son seis.
Son los necesarios para realizar dicha evaluación y así poder modificar y adaptar a la
arquitectura software las opciones planteadas. El riesgo del proyecto disminuye
notablemente así y permite corregir todo lo posible antes de comenzar con el ciclo de vida
de desarrollo aplicaciones software. Tal y como hemos dicho, existes más atributos, pero
los que marcan la diferencia son los definidos por Bass, Clements y Kazman.
[ATRIB2014]
Figura 7. Atributos de calidad inglés
23
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Figura 8. Atributos de calidad español
Como podemos comprobar en ambas fotos, existen distintas posibilidades a la hora de
elegir los atributos de calidad que queramos. Los que utilizaremos nosotros serán los de la
última foto, es decir, seguridad (security), rendimiento (performance), verificabilidad
(testability),
modificabilidad
(modificability),
uso
(usability)
y
disponibilidad
(disponibility). Estos atributos de calidad forman parte de la arquitectura por lo que es
complicado añadirlos posteriormente. Dependiendo de lo que exija cada arquitectura, se
decantarán más por un atributo o por otro.
Existen complejidades como por ejemplo, si tomamos como referencia el atributo de
disponibilidad con el objetivo de que un sistema funcione al 100% en una empresa, es
decir las 24 horas de cada día, si se corta el suministro eléctrico por la noche para ahorrar,
¿Se puede decir que se cumple el objetivo? Hay que tener en cuenta el entorno en el que se
trabaja. Si se está pensando en instalar paneles solares, lo que daría electricidad gratuita,
pero con vistas al futuro, de nuevo podríamos hacernos la pregunta, ¿Se puede decir que se
cumple el objetivo?
24
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
En los sistemas de gran tamaño, el que se cumplan los atributos de calidad, no dependen
sólo del código, sino también de la arquitectura software definida. [PONC2014]
Los atributos de calidad dependen unos de otros. Si decidimos mejorar algún atributo de
calidad debemos tener en cuenta que podemos estar empeorando otro. Existen relaciones
fijas entre los atributos de calidad, es decir, siempre que modifiquemos uno, siempre será
el mismo o los mismos los que se podrán ver modificados. Los atributos de calidad afectan
directamente a la funcionalidad del sistema.
D
DISPONIBILIDAD
M
MODIFICABILIDAD
R
RENDIMIENTO
S
SEGURIDAD
U
USABILIDAD
V
VERIFICABILIDAD
Tabla 1. Siglas de abreviación
D
D
M
R
S
X
X
X
X
R
S
M
X
X
X
X
U
X
X
V
X
V
X
X
X
U
X
X
X
X
X
X
Tabla 2. Relación entre atributos de calidad
25
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Como podemos observar en la tabla de relaciones entre los atributos de calidad, vemos
cómo modificando el atributo que sea, se ven afectados otros. Hay afirmaciones erróneas
que explicaremos a continuación por qué lo son.
Los atributos de calidad sólo se deben tener en cuenta en la definición de la arquitectura
ya que durante el desarrollo software no se verán afectados. Esto no es verdad debido a que
no podemos considerar los atributos independientes de la arquitectura. Si el desarrollo es
perfecto no quiere decir que la calidad del sistema se alcance sin tener en cuenta los
atributos.
Para entenderlo mejor, utilizando como referencia el atributo de usabilidad, es
importante definirlo correctamente en el aspecto arquitectónico pero también es clave
conseguir una interfaz clara para que el usuario tenga facilidad a la hora de usarlo. Esto
último no se consigue en la definición de la arquitectura, se realiza posteriormente. Tomar
unas decisiones u otras influye mucho en la calidad que percibe el usuario al final.
[ESTA2012]
Teniendo en cuenta todos estos aspectos se llegó a la definición de un término que
ayuda a resolver los problemas que pudieran surgir. Se trata de los escenarios de atributos
de calidad.
Recordamos que un escenario es la definición de un requisito específico de un atributo
de calidad que nos permitirá poder evaluar el sistema y ver claramente si se han cumplido
los propios requisitos o no. Así podremos enumerar los requisitos del sistema y evaluarlos
en la arquitectura que elijamos antes de comenzar a diseñar y desarrollar y, por lo tanto,
antes de comenzar con la creación del sistema.
Cada escenario consta de seis partes. Cada una de ellas tendrá un valor diferente
concreto, independiente del sistema. Si vamos a definir un escenario específico, podremos
elegir una de entre varias opciones y asignar el valor que queremos que sea evaluado.
26
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Figura 9. Escenario en el modelo de Kruchten 4+1
RESPUESTA
ESTÍMULO
ENTORNO
ARTEFACTO
MEDIDA
FUENTE
Figura 10. Representación del escenario
27
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
En la siguiente tabla se explican los conceptos de los que se habla en la figura
anterior:
ELEMENTO
DESCRIPCIÓN
FUENTE
ACTOR QUE ACTÚA SOBRE EL
SISTEMA DEFINIDO. PUEDE SER
HUMANO,
MECÁNICO
O
INFORMÁTICO
ESTÍMULO
ACTO
PRODUCIDO
POR
LA
FUENTE. EVENTO A TRATAR POR
EL SISTEMA.
ENTORNO
CONDICIONES EN LAS QUE SE
PRODUCE EL ESTÍMULO.
ARTEFACTO
PARTE
DEL
SISTEMA
QUE
RECIBE EL ESTÍMULO.
RESPUESTA
ACTIVIDAD
GENERADA
AL
RECIBIR EL ESTÍMULO.
MEDIDA
MEDICIÓN DE LA RESPUESTA
PARA
SU
CORRESPONDIENTE
EVALUACIÓN.
Tabla 3. Definición de los elementos del escenario.
28
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Los estímulos recibidos pueden ser muchos y diversos dando lugar a acciones
totalmente diferentes en el sistema. Es totalmente irrelevante cuántas fuentes del mismo
tipo generen los estímulos. Basta solamente con modificar la tasa de producción de los
mismos.
Capítulo 4.2. Las tácticas.
Si al realizar la evaluación salen resultados negativos, es cuando entran en juego las
llamadas tácticas. Estas son las decisiones que habrá que tomar para lograr el alcance de
los objetivos. Con dichas tácticas se deberá controlar el cumplimiento de los escenarios
definidos. Bass, Clements y Kazman representan la táctica en un gráfico muy simple. Es lo
que se realiza después de recibir el estímulo y por lo que podremos generar la respuesta.
[SCAL2012]
ESTÍMULO
TÁCTICAS
Figura 11. Representación de táctica.
29
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Cada táctica que tomamos es una opción de cambio o mejora de la arquitectura, y estará
relacionada con un atributo, requisito o escenario específico. Es muy importante tener en
cuenta que la implantación de estas tácticas además de mejorar lo que no funcionaba del
todo bien, puede afectar a la evaluación de otros atributos.
Los atributos, como ya sabemos, no son independientes, pero es más, tienen una
fuerte relación entre sí. Por ello debemos tener especial cuidado en la evaluación de la
arquitectura. Cuanto antes se resuelvan estos problemas, más rápido, más fiable y
económico será el desarrollo posterior.
Para el mismo atributo a estudiar, tenemos diferentes opciones a la hora de tomar
decisiones, por ello, debemos establecer un orden de prioridad en cuando a todas las
decisiones posibles. Se puede utilizar una o varias.
Una vez hablado de todo esto, podemos centrarnos en los seis atributos de calidad
que van a ser parte fundamental de este proyecto y por ello, vamos a entrar en profundidad
y tomar cada uno como un capítulo aparte.
30
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Capítulo 5. Disponibilidad (Availability).
Es una de las medidas más estudiadas debido a que es una de las más importantes. Se mide
mediante el factor de disponibilidad, es decir, cuánto tiempo está un sistema o equipo
operativo respecto de la duración total que se pretendía en un principio. Normalmente este
resultado viene expresado en forma de porcentaje. [FACT2014]
Horas deseadas
Factor de disponibilidad = -------------------------------------------------------------Hº deseadas + Tº inoperativo + Tº reparación
Definimos la disponibilidad de otra manera como la capacidad de que el sistema
esté parcial o totalmente operativo y a su vez que maneje eficazmente los fallos que
puedan ocurrir y afecten a la disponibilidad del sistema. En la definición de disponibilidad
entran en juego los conceptos de confiabilidad y recuperación. [DISP2008]
La disponibilidad de estado estacionario es la medición del tiempo que está
funcionando un sistema en un periodo suficientemente largo como para poder recoger
datos fiables y válidos. A partir de esto se definen los requisitos de disponibilidad del
sistema. La fórmula asociada es la siguiente, que tiene mucho que ver con la que se ha
definido anteriormente de factor de disponibilidad. [DISP2014]
Disponibilidad = MTBF / ( MTBF + MTTR)
MTBF = Mean time before failures (tiempo entre fallos).
MTTR = Mean time to repair (tiempo de reparación).
31
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Es considerada como alta disponibilidad siempre y cuando la fórmula anterior
tenga un porcentaje de “cinco nueves” o superior, es decir, 99,999% o mejor. [ALTA2014]
Existen una serie de definiciones bastante relacionadas con el concepto de
disponibilidad. Algunos de los más importantes los mencionamos a continuación:
-­‐
Tiempo de recuperación: Es el necesario para realizar un parón ya programado o
uno inesperado. Si no fuese posible recuperar el sistema, este tiempo sería infinito.
-­‐
Disponibilidad de datos: Teniendo en cuenta todas las transacciones realizadas en
sistemas de bases o almacenamiento de datos, es el grado de copias realizadas
correctamente. Es un concepto que va aparte ya que el sistema puede fallar pero por
ello no significa que se incurra en una pérdida de datos.
-­‐
SLA: “Service Level Agreement”. Se trata del Acuerdo de Nivel de Servicio para
el mantenimiento de equipos y servicios.
Existen dos tipos de definiciones que conviene aclarar ya que puede dar lugar a
equívoco su relación. Se trata de los fallos, dícese de un error o evento producido en el
sistema del que el propio usuario se da cuenta de su aparición; y de las faltas, error que
pasa desapercibido en un principio y que si sigue su desarrollo, en un futuro se convertirá
en un fallo.
El tiempo de reparación de un fallo transcurre desde la aparición del fallo hasta que
éste deja de ser visible por el propio usuario.
Estamos desarrollando un proyecto centrado básicamente en la parte software, pero la
parte hardware también está relacionada con ello por lo que también hay que cuidarla. Los
fallos hardware que pueden existir tienen como principales causas las siguientes:
-­‐
Fallos de diseño: Errores presentes en el propio diseño, y por ello, serán pocos.
32
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
-­‐
Fallos aleatorios: Pueden producirse en cualquier momento. La forma de llevar a
cabo su resolución es la redundancia.
-­‐
Fallos iniciales: Se producen en productos nuevos. Sus principales causas son las
malas soldaduras
-­‐
Fallos por envejecimiento: Se dan cuando el producto ya está llegando al final de
su vida útil. El deterioro lógico de los componentes produce fallos. La única
solución posible es el mantenimiento de los mismos de manera que cuanto mejor se
cuiden más tiempo durarán. Otra solución es cambiar los módulos de manera que
no se permite que un componente llegue al mal estado por envejecimiento.
Los fallos software se determinan teniendo en cuenta los defectos encontrados en el
sistema. Se obtienen calculando el historial de todos los fallos producidos en la vida del
producto. La densidad de defectos se mide en errores por número de líneas de código. La
dimensión de estos errores depende de:
· El procedimiento para diseñar y programar el software (no revisar código, no
compilarlo, no ejecutarlo…).
· La complejidad del software. Dependiendo del tipo de sistema y sus conexiones con
el exterior, interfaces y demás características, son las que hacen que un sistema sea más
complejo o menos. Cuanto más complejo sea, más probabilidad de que se puedan producir
fallos. También, cuantos más componentes tenga un sistema, más complejo será. Esto
indica que habrán más puntos susceptibles de fallos, por lo que su disponibilidad
disminuirá en caso de que se produzcan.
33
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
· El tamaño del software también es muy importante. Cuanto mayor sea el sistema, es
decir, cuantos más componentes tenga, más difícil será su mantenimiento y así aumentarán
las probabilidades de que falle.
· El porcentaje del código que se ha reutilizado en otros proyectos.
· La rigurosidad de las pruebas que se han llevado a cabo con el software antes de
ponerlo en producción e instalárselo al cliente.
Todos estos posibles fallos de los que hemos hablado son los que pueden hacer que el
sistema se caiga y perder así porcentaje de disponibilidad. Las medidas de disponibilidad
se pueden clasificar de manera que nos queda:
-­‐
MTBF: Se trata del tiempo medio entre fallos suponiendo un funcionamiento
normal del sistema. Así se da la estimación de tiempo que debe pasar antes de que
se produzca un fallo.
-­‐
MTTR: Es el tiempo medio de reparación de un sistema. Relacionado con esta
definición, disponemos de una tabla en la que, teniendo en cuenta todo tipo de
posibilidades, mostraremos el tiempo posible de reparación. Debemos pensar que
son los hipotéticos casos que pueden darse ya que no todas las empresas son
iguales y se dedican a las mismas cosas.
34
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Tipo de reparación
de MTTR estimado
Contrato
mantenimiento
24 horas al día
Directamente con el cliente
Media hora
Jornada normal de trabajo Catorce horas
(7 días)
Jornada normal de trabajo Tres días
(5 días)
Fallo notificado mediante A través del sistema
Siete días
un mediador
Operador a distancia
Sistemas remotos
Catorce días
MTTR del HARDWARE
Tabla 4. MTTR del Hardware.
El MTTR de un módulo software se calcula como el tiempo necesario para que
vuelva a estar operativo tras detectarse un fallo. Por todo esto, el objetivo principal es
mantener este parámetro lo más bajo posible.
Los factores de los que depende el MTTR son:
· El uso de técnicas de tolerancia a fallos.
· El Sistema Operativo.
· Las técnicas de descarga de imágenes de código.
35
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
de MTTR estimado
Mecanismo
de Mecanismo
recuperación
de puesta en marcha
fallos
tras un fallo
Arranca sistema desde Treinta segundos
ROM
No se arranca el sistema
de
nuevo.
Se
lanzan Treinta segundos
Fallo detectado mediante funciones paradas.
un
mecanismo Se arranca el SO desde
especializado
disco. También se lanzan Tres minutos
aplicaciones.
Se
arranca
el
SO.
Aplicaciones descargadas Diez minutos
en remoto
No soporta detección de Sistema
fallos
arrancado Desde
manualmente
treinta
minutos
hasta dos semanas
MTTR del SOFTWARE
Tabla 5. MTTR del Software.
Como podemos observar, el MTTR varía dependiendo de lo que cojamos como
referencia, es decir, la parte hardware o la parte software.
36
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Figura 12. Gráfica de MTBF, MTTR.
La disponibilidad se puede medir de otra manera teniendo en cuenta el cálculo del
tiempo que está caído o que no funciona. Esto es lo que se llama el tiempo de inactividad
por año.
DISPONIBILIDAD
TIEMPO DE INACTIVIDAD
90% Entendido como un nueve
36,5 días en un año
99% Entendido como dos nueves
3,65 días en un año
99,9% Entendido como tres nueves
8,76 horas en un año
99,99% Entendido como cuatro nueves
52 minutos en un año
99,999% Entendido como cinco nueves 5 minutos en un año
99,9999% Entendido como seis nueves
31 segundos en un año
Tabla 6. Tiempo de inactividad.
37
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
La caída de un sistema puede producirse o bien por una planificación previa, o bien
debido a un evento exterior inesperado. El primero de los casos bien puede ser por trabajos
de mantenimiento que requieran que el sistema no esté operativo durante la realización de
dichos trabajos. El segundo de los casos se deben normalmente a fallos hardware o
software.
Las caídas planificadas, es decir, el primero de los casos previamente comentados,
no suelen tenerse en cuenta a la hora de contar el porcentaje de disponibilidad de un
sistema, ya que se supone que serán cortas y no afectarán al servicio de manera importante.
Esto se debe a que se elige el mejor momento posible para que el impacto sea el menor
posible.
En términos económicos, el precio de venta de un producto siempre será
directamente proporcional a muchas características, y entre ellas, la disponibilidad del
sistema. El precio de los módulos y sistemas en función de su grado de disponibilidad es
otro factor importante. Cuanto mayor sea la disponibilidad, más caro será desde el punto
de vista económico, así creciendo el coste de forma exponencial en relación con la
disponibilidad.
Anteriormente hemos hablado de los escenarios. Por ello podemos establecer un
escenario diferente para cada atributo de calidad. En este caso, vamos a definir el de la
disponibilidad.
38
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
ELEMENTO
DESCRIPCIÓN
FUENTE
Diferenciamos entre fallos y faltas. La
respuesta del sistema será diferente
tratándose de una o de otra.
ESTÍMULO
Los fallos o faltas que se pueden
producir son omisión (módulo falla al
responder a una entrada sin responder),
caída (módulo sufre constantes faltas
de omisión), tiempo (respuesta fuera
del
intervalo
requerido),
respuesta
(incorrecta).
ARTEFACTO
Recurso necesario para ofrecer una alta
disponibilidad.
ENTORNO
Estado en el que se encuentra el
sistema al producirse un fallo o falta.
RESPUESTA
Reacciones
al
fallo
del
sistema.
(Registrar el fallo, notificarlo..).
MEDIDA
Porcentaje de disponibilidad, el tiempo
de reparación, el tiempo que el sistema
debe estar operativo. Todo relacionado
con
la
medida
disponibilidad.
Tabla 7. Escenario para la disponibilidad.
39
concreta
de
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Capítulo 5.1. Tácticas.
La disponibilidad es un término que es fácilmente detectable por el usuario, debido a que
su funcionamiento se muestra en forma de fallos del sistema, o bien porque hace que el
sistema no funcione correctamente, o bien porque el sistema puede seguir funcionando
pero no de la manera que se requiere. Aunque estemos hablando de la disponibilidad, estos
fallos tienen que ver con los demás atributos de calidad de los que hablaremos
posteriormente.
Visto desde la posición del usuario, la disponibilidad es el tiempo en el que no
pueden utilizar el sistema. El tiempo de reparación o recuperación está relacionado con
ello.
Siempre es conveniente implantar medidas que permitan mejorar la tolerancia a
fallos de un sistema. Estas tácticas las puede ofrecer el sistema operativo o los gestores de
bases de datos. Se deberían tener en cuenta a la hora de diseñar el sistema.
Estas tácticas se dividen en dos tipos; las que se centran en el tiempo dedicado al
diseño y las del tiempo de ejecución. Lo que nos interesa a nosotros son las dedicadas al
sistema, para que funcione correctamente y ofrezca la tolerancia a fallos requerida. Las
tácticas se centran en la detección, recuperación y prevención de fallos o faltas. Son una
parte muy importante de los atributos ya que son los que permitirán, en su mayor parte, el
buen funcionamiento de un sistema en conjunto.
Para comenzar, vamos a centrarnos en las tácticas definidas para detectar los fallos.
Están orientadas al tiempo de ejecución y son:
-­‐
Ping: Enviar un mensaje al receptor para que éste lo devuelva en un tiempo
determinado, de manera que si vemos que no lo devuelve, sabremos que el sistema
receptor ha caído y está fuera de servicio.
-­‐
Excepciones: Mecanismos que detectan errores que podrían impedir el normal
funcionamiento del programa, y al resolverlo, evitamos un fallo del sistema.
40
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
-­‐
Mensajes: El envío periódico de mensajes nos permite saber si el sistema receptor
está en servicio o no. Es una táctica muy parecida al Ping.
Para recuperar las faltas existen otro tipo de tácticas. Están todas ellas basadas en
redundancia: [REDU2014]
-­‐
Votación: Los procesos ejecutados en procesadores redundantes reciben los
mismos datos y devuelven un valor que envían a un servidor, el cual decide cual es
el mejor en base a un algoritmo de decisión. Esto detectará fallos hardware, los
software no. Para que pueda resultar bien esta táctica, habría que añadir un
componente que reciba los valores de los procesos y decidir cual es el adecuado.
Una posibilidad existente es instalar algoritmos o software diferente, así detectaría
fallos en los algoritmos y permite el buen funcionamiento en los casos que la
tolerancia a fallos sea un requisito fundamental. La sincronización no será un
problema ya que está asegurada debido a que todos los componentes están activos
al mismo tiempo y reciben los mismos datos de entrada.
Figura 13. Algoritmo de decisión.
41
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
-­‐
Redundancia activa: Los componentes reciben los eventos en paralelo, así que
todos ellos estarán en el mismo estado. Si uno falla, cualquiera de los otros puede
ocuparse del trabajo que debía hacer el componente caído. Se suele utilizar esta
táctica en los sistemas cliente/servidor. La sincronización también está garantizada.
Es requisito fundamental que los algoritmos o protocolos estén preparados para
recuperar los fallos. Se necesita que haya algún elemento que elija qué componente
debe tomar el control.
-­‐
Redundancia pasiva: Un componente estará activo en un momento dado. Los
demás estarán realizando la función de back up. Si cae el componente activo,
cualquiera de los otros podrá tomar el control. También aquí debe existir un
elemento que indique que componente debe ponerse a funcionar en lugar del caído.
La actualización de datos suele ser constante por lo que el componente del back up
se actualizará también al momento siendo esto beneficioso para el sistema. La
sincronización en esta situación corresponde al componente primario, que utilizará
la difusión a todos los back up para asegurar la propia sincronización.
-­‐
Recambio: Se asemeja a tener piezas de recambio por si fallase algún componente
y así asegurar la disponibilidad del sistema. Es una plataforma que se activará al
detectarse el fallo para sustituir el componente que se encuentra en fallo. Los
sistema que suelen tener este tipo de táctica son aquellos que tienen varios
componentes que comparten la carga y son semejantes entre sí. Todos los
componentes deben estar actualizados y deben tener el mismo estado. También
aquí se necesitará un árbitro que decida qué componente escoger. Estos sistema que
tienen esta táctica no suelen tener requisitos importantes de tiempo, debido a que la
sustitución del componente puede llevar un tiempo.
42
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Las tácticas existentes para volver a poner a funcionar el sistema después de recuperar
un componente fallido son:
-­‐
Sombra : Al fallar un componente, el sistema lo restaura pero aún así podría seguir
trabajando en un segundo plano para ver si su funcionamiento es correcto o no para
asegurarse que no habrá problemas a la hora de ponerlo en estado de operación
normal.
-­‐
Sincronización de estado: Al recuperar el componente, se sincroniza con el resto
para volver a la actividad normal. Esto requiere de un elemento que le envíe los
mensajes necesarios para que vuelva a sincronizarse.
-­‐
Checkpoint y Rollback: El checkpoint es el registro de estado consistente ante la
presencia de determinados eventos. Gracias a esto, el sistema podrá recuperarse
devolviéndolo a un punto anterior en el tiempo.
Otro tipo de tácticas son las empleadas para la prevención de fallos, y son las
siguientes:
-­‐
Eliminación: Se trata de quitar del servicio de forma temporal un componente con
el objetivo de realizar operaciones que permitan anticiparse a futuros fallos.
-­‐
Transacción: Se trata de poner en conjunto operaciones de modo que se puede
deshacer de ellas con una operación muy simple a la hora de que surgiese un fallo.
Se utiliza mucho en los gestores de bases de datos.
-­‐
Monitor: Vigila el funcionamiento de los procesos. Al producirse un fallo de un
proceso, crea una instancia del mismo inicializándolo a un estado concreto. Este
proceso es el que se conoce comúnmente como monitorización.
43
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Figura 14. Monitorización.
ESTÍMULO
TÁCTICA
Detección
RESPUESTA
·Ping
·Excepciones
·Mensajes
Recuperación y
·Votación
reparación
·Redundancia
activa
Fallos
·Redundancia
Reparaciones
pasiva
realizadas
·Recambio
Poner en
·Sombra
funcionamiento
·Sincronización
·Rollback
Prevención
·Eliminación
·Transacción
·Monitorización
Tabla 8. Resumen de las tácticas para la disponibilidad.
44
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
CAMBIO
DESCRIPCIÓN
IMPACTO
EN
COMPONENTE
EN
RELACIONES
En el propio
Parte implementada Sólo
cambia
el
componente
en el componente, comportamiento
del
sin cambios externos
IMPACTO
Sin cambios
componente. Fácil de
implementar
Réplicas
Adición
Se
de
duplica
el Fácil de implantar
relaciones
componente,
sin
entre
cambios
su
componentes de la
en
los
comportamiento,
arquitectura
redundancia
réplica
Entra dentro de la Depende
modificabilidad
componente
Nuevas
y
la
de
la
y
del
entre
Suele
ser
componentes de la
arquitectura
modificando la
sistema.
arquitectura
fácil de implantar
Nuevas
demás
relaciones
los
arquitectura
demás
y
el
nuevo
Adición
de
componente
sin
Necesario
cambiar Difícil de implantar
los requisitos
modificar
la arquitectura
Nuevas
relaciones
requiriendo cambios
entre
en
componentes de la
objetivos
y
requisitos
los
arquitectura
demás
y
el
nuevo
CAMBIO
Modificar
DESCRIPCIÓN
IMPACTO
Cambio de estructura
EN
IMPACTO
COMPONENTE
RELACIONES
Fácil o difícil
Modificar
componente
EN
relaciones
Eliminar
Eliminarlo
componente
arquitectura
de
la Cambios
arquitectura
en
Eliminar relaciones
y
requisitos
Figura 9. Impacto de las tácticas para la disponibilidad.
45
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
46
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Capítulo 6. Modificabilidad (Modificability).
Para comenzar a definir este atributo podemos hablar de muchos aspectos que están
íntimamente relacionados con el propio atributo y que reflejan clarísimamente su relación
con el mismo:
-­‐
Facilidad de mantenimiento: Influye en la resolución de problemas.
-­‐
Extensibilidad: Capacidad para añadir funcionalidades al software.
-­‐
Reestructurabilidad y reusabilidad: Asignación de módulos y su utilización en
funciones o proyectos.
Definir los máximos escenarios posibles también es objetivo en este atributo, como lo
va a ser también en los demás. La modificabilidad tiene íntima relación con el coste que
supone el cambio, por ello cada vez que se defina un escenario debemos preguntarnos qué
queremos cambiar, cuándo y quién.
-­‐
Qué: Cambiar algo puede afectar al sistema entero o alguna parte, ya que pueden
añadir nueva funcionalidad, cambiándola o eliminándola. Se puede ver afectada
tanto la parte hardware como la software. Hay unas partes que son más susceptibles
al cambio que otras (interfaz de usuario o hardware), por evolucionar más rápido
que lo demás.
-­‐
Cuándo: Hay que elegir un determinado momento que será justo en el que menos
afecte al desarrollo normal. La ventaja existente es que la mayoría de cambios de
código se pueden realizar durante el funcionamiento del sistema ya que no le
47
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
afectará. Resumiendo, se puede realizar cambios hoy en día en tiempo de
compilación, construcción, ejecución y uso normal.
-­‐
Quién: Los puede realizar el usuario final, el programador, el administrador o el
propio sistema.
Cualquier cambio que se realice consume tiempo y dinero por lo que hay que elegir
bien si es realmente necesario realizar un cambio o no. También es fácilmente
cuantificable un cambio para su evaluación.
ELEMENTO
DESCRIPCIÓN
FUENTE
Usuario
final,
programador
o
administrador del sistema
ESTÍMULO
Cambios
a
realizar.
Funcionales,
cualitativos o de capacidad del sistema
ARTEFACTO
El propio sistema recibe el estímulo
ENTORNO
Cuándo debe cambiarse, es decir, en
tiempo de diseño, de compilación,
arranque o ejecución
RESPUESTA
Cómo se debe hacer el cambio
MEDIDA
Tiempo y coste del cambio.
Tabla 10. Escenario para la modificabilidad.
48
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Capítulo 6.1. Tácticas.
Existen tres puntos de vista desde los cuales podemos conocer las tácticas a tener en cuenta
para el atributo de modificabilidad y son:
· Limitar las modificaciones: Se trata de reducir el número de módulos afectados por un
cambio ya que cuantos menos módulos se vean afectados, menor será el coste de la
modificación. Asignando responsabilidades a los módulos durante el diseño se limita el
alcance de los cambios. Cinco tácticas pertenecen a esta característica:
-­‐
Coherencia semántica: Son las relaciones entre las responsabilidades dentro de un
módulo. Lo que se quiere asegurar aquí es que estas responsabilidades no dependen
de otros módulos. Para que esto se cumpla se deben elegir funciones que tengan
coherencia semántica.
-­‐
Anticipo: Ante posibles cambios, intentan predecirlos, aunque esto es complicado
ya que saber lo que va a ocurrir en el futuro es complicado. Se pretende minimizar
los efectos de los cambios. Normalmente se suele utilizar esta táctica junto con la
anterior.
-­‐
Generalización del modulo: Así podremos manejar un número mayor de entradas a
funciones y más fácil se podrán realizar los cambios.
-­‐
Limitar posibles opciones: Las modificaciones que se plantean podrían afectar a
muchos módulos. Al restringir las opciones se reducen los efectos de las
modificaciones.
· Prevenir el efecto onda: Este efecto consiste en la necesidad de tener que realizar
cambios en módulos debido a que ser vieron afectados por el cambio en otro módulo.
Según la dependencia entre módulos tomaremos unas tácticas u otras y estas pueden ser:
49
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
-­‐
Ocultar información: Descomponer la función en partes más pequeñas y ahí decidir
cuáles van a ser públicas y cuáles privadas. Así aislaremos los cambios en un
módulo para que no afecten a otros. Tiene relación con la táctica de anticipación a
cambios.
-­‐
Mantener interfaces: Desarrollo de interfaces los más abstractos posibles para
enmascarar modificaciones entre funciones.
-­‐
Limitar rutas de comunicación: Restringir datos compartidos entre módulos.
-­‐
Intermediarios: Inserción de una responsabilidad entre otras dos la cual gestionará
la relación entre ellas.
· Diferir el tiempo de entrega: El tiempo necesario para realizar el cambio y la posibilidad
de que los usuarios realicen ese cambio son dos elementos que necesitan de tácticas
diferentes de las anteriores. Existen bastantes posibilidades en forma de tácticas para tratar
esto. Hay cambios que se pueden realizar en tiempo de ejecución.
-­‐
Registro en tiempo de ejecución: El sistema estará preparado para realizar cambios
mientras se está ejecutando.
-­‐
Ficheros de configuración: Cada línea del fichero contiene una palabra clave con
uno o más argumentos.
-­‐
Polimorfismo: Posibilidad de enviar un mensaje a un grupo de objetos cuya
naturaleza puede ser heterogénea. Los objetos deben responder al mensaje.
[POLI2014]
-­‐
Reemplazar componentes: Si algún componente deja de funcionar correctamente
realizar su reemplazamiento sin afectar a los demás.
50
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
-­‐
Fijar protocolos: Métodos a realizar normalmente de la misma manera.
ESTÍMULO
TÁCTICA
RESPUESTA
·Coherencia
semántica
Localizar
·Anticipar
cambios
cambios
·Generalización
·Limitar
opciones
·Ocultar
Presencia de cambios
información
Cambios realizados,
Prevenir
·Mantener
probados y desarrollados
efecto onda
interfaces
en tiempo y presupuesto
·Restringir
comunicaciones
·Usar
intermediario
·Registro en
tiempo de
ejecución
·Ficheros de
Diferir el
configuración
tiempo de
·Polimorfismo
entrega
·Reemplazar
componentes
·Fijar
protocolos
Tabla 11. Resumen de las tácticas para la modificabilidad.
51
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
52
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Capítulo 7. Rendimiento (Performance).
Es el atributo de calidad por excelencia utilizado como mejor herramienta de evaluación de
un sistema. El resto de atributos eran considerados como complemento del rendimiento,
pero a lo largo de los años esto ha ido cambiando y se ha entendido que el resto de
atributos son importantes también y que pueden dar información que el rendimiento no
puede dar. De hecho, la seguridad, modificabilidad y disponibilidad se consideran hoy en
día más importantes. [REND2014]
La información que nos da el rendimiento es el comportamiento del sistema o
componente del mismo en el momento de su ejecución. Define la forma de reaccionar del
sistema ante los eventos, los cuales deben ser atendidos más o menos rápido dependiendo
del tipo de evento que sea. Por lo tanto, se evalúan en base a medidas de tiempo o eventos
temporales que exigirán una respuesta del sistema.
Un ejemplo relacionado con el rendimiento es Google. No han realizado inversiones en
equipos de gran potencia de procesamiento. Han preferido invertir en arquitecturas más
distribuidas centradas en la seguridad y la disponibilidad, es decir, controlando que haya el
mínimo de fallos posible y que el propio sistema tenga la mayor disponibilidad posible con
el mayor número de nueves a ser posible.
Como hasta ahora, también existe un escenario explícito para el rendimiento y este se
recogerá en la tabla siguiente:
53
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
ELEMENTO
DESCRIPCIÓN
FUENTE
Usuario,
sistema,
reloj,
línea
de
comunicaciones…Cualquier actor que
pueda producir un evento en el tiempo
(sin tener en cuenta el número de
actores que lo generen). Internas o
externas.
ESTÍMULO
Tipo de estímulo y tasa de llegada al
sistema
(periódico,
estocástico
o
esporádico).
ARTEFACTO
Recibe el estímulo el propio sistema, el
cual lo gestionará.
ENTORNO
Condiciones en las que se produce el
estímulo (normal, sobrecarga..).
RESPUESTA
Actividad a realizar para tratar el
estímulo.
MEDIDA
Tiempo
en
procesar
el
estímulo
recibido (latencia, tiempo máximo,
número de estímulos al minuto para ser
procesados, número de eventos que no
han
podido
ser
respondidos
cualquier situación…).
Tabla 12.Escenario para el rendimiento.
54
por
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Analizar este atributo de calidad a veces se antoja difícil ya que el número de
estímulos o eventos que se pueden producir son muchos y diferentes. Para entender qué
tipo de eventos pueden darse podemos mencionar respuestas de un usuario por pantalla,
recepción de un mensaje por una línea de comunicaciones, un reloj que marca intervalos de
tiempo…por lo que la respuesta del sistema será completamente diferente para cada uno de
ellos.
Desde el punto de vista del análisis de rendimiento del sistema, da igual el número
de actores de igual tipo que generen los estímulos, ya que el efecto sería aumentar o
disminuir el número total de estímulos y de su frecuencia. Esto se podría realizar
modificando la tasa de producción de cada uno de ellos lo que quedaría reflejado en la
mayor o menor presencia de actores productores de eventos.
Capítulo 7.1 Tácticas.
Están relacionadas con la capacidad de generar una respuesta del sistema en un tiempo
determinado ante la presencia de un evento (mensaje, finalización de temporización…). Se
controla el tiempo en el que se generan las respuestas.
El tiempo que transcurre entre la generación del estímulo y la respuesta del sistema
puede deberse a dos causas en principio:
-­‐
Consumo de recursos: Procesador, almacenadores de datos, ancho de banda de
líneas de comunicación o el tipo de memoria. A la hora de procesar los eventos se
puede involucrar a varios de estos recursos. La gestión del software, drivers de
entrada y salida, composición de mensajes, gestión de buffers o el algoritmo de
tratamiento consumen tiempo y retardan la respuesta a los eventos.
-­‐
Tiempo de bloqueo: En la utilización de dispositivos hardware. Aquí el tiempo es
necesario para realizar operaciones de entrada y salida. Puede haber en cola
operaciones que hagan que el evento deba esperar a ser tratado. Si el dispositivo no
está disponible en el momento de tratar el evento o intentar acceder a datos que
55
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
están siendo utilizados o que un proceso deba esperar el resultado de la operación
de otro proceso para poder empezar su cometido pueden ser otras causas posibles.
Todo esto está relacionado con la concurrencia y los sistemas multiprogramados.
En cuanto a las tácticas para mejorar la arquitectura teniendo en cuenta el rendimiento
podemos hablar de: [DESF2014] ; [PROG2013] ; [OPTI2013]
-­‐
Necesidad de recursos: Reducirlos es la idea. Para disminuir la latencia hay que
disminuir también el número y tipo de recursos necesarios para el tratamiento del
evento ya que debido a la concurrencia y a la gestión de los eventos por el sistema
operativo, cada uno contribuye por separada a hacer más largo el tiempo de
respuesta. Para conseguir esto existen diversas opciones:
· Aumentar la eficiencia: Los tiempos de respuesta pueden ser más o
menos largos dependiendo del diseño del algoritmo de tratamiento. Cuanto
más mejoremos el algoritmo, menor será la latencia.
· Reducir la sobrecarga: Eliminando intermediarios que puedan
producir procesamiento innecesario en diversas situaciones.
· Reducir el número de eventos: Revisando el diseño de la
arquitectura se pueden realizar cambios que a la larga, generarán menor
número de eventos. En esto mucho tienen que ver los datos, ya que a veces
existen datos duplicados o innecesarios para el sistema. Si los reducimos,
también se reducirá el tiempo de latencia con mejores tiempos de respuesta.
-­‐
Gestión de recursos: Beneficia al sistema utilizar alguna de las tácticas que vamos a
mencionar a continuación:
56
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
· Concurrencia: Puede beneficiar al rendimiento del sistema ya que
permitirá ejecutar procesos o hilos al mismo tiempo además siendo estos
especializados en el tratamiento de determinados tipos de eventos.
· Copias: Mantener múltiples copias de datos o de las operaciones
realizadas. La utilización de un sistema cliente/servidor permite tener
clientes idénticos repartidos, de manera que esto contribuye a mejorar los
tiempos de respuesta del sistema en general. La técnica de ‘catching’ nos
permitirá llevar el contenido lo más cerca posible del sitio donde va a ser
utilizado minimizando el tiempo. El coste así será menor.
· Recursos: Aumentar el número de recursos. Existen varias
características que contribuyen a que el tiempo de latencia sea menor como
pueden ser procesadores más rápidos, sistemas multiprocesador, más
memoria en el sistema que lleva a una menor paginación, más velocidad,
discos más rápidos… Sencillo y eficaz.
-­‐
Planificación de recursos: Al existir un recurso que tuviese que atender a múltiples
peticiones a la vez, habrá que establecer mecanismos de planificación del mismo.
Conocer las características de cada recurso es fundamental para la realización de un
algoritmo de planificación correcto y adecuado a los requisitos de la arquitectura.
Los principales son FIFO (First Input First Output), RR (Round Robin), por
prioridad, SJF (Shortest Job First) y muchos más que podríamos mencionar.
57
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
ESTÍMULO
TÁCTICA
RESPUESTA
·Incrementar eficiencia
Necesidad de
·Disminuir sobrecarga
recursos
·Reducir número de
eventos
·Concurrencia
Eventos
Gestión de recursos
·Realizar
copias
Respuesta con
restricción de
·Aumentar el número de
recursos
·Algoritmos de
planificación
Tabla 13. Resumen de las tácticas para el rendimiento.
58
tiempo
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Capítulo 8. Seguridad (Security).
Hablamos de la seguridad como una medida del sistema para mostrar la capacidad del
mismo a la hora de resistirse a un uso no autorizado. La seguridad se puede romper debido
a ataques que pueden ser de distintos tipos (acceso no autorizado a datos, modificaciones,
denegar acceso a usuarios autorizados…).
La seguridad se caracteriza por tener las siguientes propiedades:
-­‐
No repudiar: No negar una transacción, es decir, el acceso o modificación de datos.
Un usuario no puede ocultar una operación si la ha realizado.
-­‐
Confidencialidad: Protección de datos y servicios ante accesos no autorizados.
-­‐
Integridad: No se cambian los datos o servicios entregados y se ejecutan como son.
-­‐
Garantía: Se verifica que las partes de una transacción son las que son.
-­‐
Disponibilidad: Un sistema estará disponible para su uso a los usuarios autorizados
legítimamente.
-­‐
Auditabilidad: Se registran las actividades ejecutadas para poder reconstruirlas si
fuese necesario.
Las vulnerabilidades son las que hacen posible que el sistema sea fácilmente atacable.
La mayoría de ellas son vulnerabilidades software no resueltas y configuraciones software
inseguras surgidas en diseño y codificación.
Los fallos de seguridad pueden producirse durante todo el ciclo de vida del producto.
Pueden producirse de manera involuntaria o provocados por acciones mal hechas del
personal. Por estas razones, la seguridad del software debe ser vigilada en todo momento y
concretamente:
59
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
-­‐
Desarrollo: El software puede corromperse por el desarrollador. En un futuro esto
puede afectar a la fiabilidad del propio software y la confianza de cuando estaba en
funcionamiento.
-­‐
Despliegue: Involucra las actividades de distribución e instalación. Dependiendo
del medio de distribución del software, éste quedará expuesto a posibles ataques.
Para no ser vulnerable a ataques se debe configurar el software de manera segura y
bloquear el hardware en el lugar de instalación.
-­‐
Operación: Al estar el software operativo se debe actualizar periódicamente para
que las vulnerabilidades queden eliminadas y no se puedan descubrir o publicar.
Así el software será menos inseguro. La red de comunicaciones en la que se trabaje
también será importante a la hora de que el software quede más o menos expuesto a
ataques. Depende de que ésta sea pública o privada, conectada a Internet o que esté
configurado para minimizar su exposición. Nunca se podrá garantizar una
seguridad completa ya que obviamente habrá siempre personal que tenga acceso al
sistema, y nunca se sabe si alguien lo usará con fines indeseados.
-­‐
Logística: Los responsables de corregir los fallos de seguridad del sistema son
piezas clave también, ya que si fallan cuando deben emitir actualizaciones o no
encuentran y arreglan las causas que generan las vulnerabilidades, con el paso del
tiempo el software será cada vez más dado a recibir ataques y así se hará más
vulnerable. Estos serán los principales problemas siempre y cuando supongamos
que los empleados de mantenimiento del software no añadan fallos ni trampas en
las distintas versiones del código.
Desde el punto de vista de la experiencia, se advierte que es muy aconsejable encontrar
y solucionar las vulnerabilidades cuanto antes, y además si pudiese ser posible, poder
preverlas antes de comenzar la etapa de desarrollo. Esto favorece desde el punto de vista
60
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
económico, ya que menor será el coste cuanto antes se hayan detectado y solucionado los
problemas.
Las propiedades fundamentarles que debe tener un software para ser seguro son las
siguientes:
-­‐
Fiabilidad: La ejecución debe estar controlada en todo momento y funcionar
correctamente en cualquier condición del sistema, hasta sufriendo ataques.
-­‐
Confiabilidad: Para tener el grado de confianza necesario, el software no debe tener
elementos dañinos que impidan su correcto funcionamiento. Un software de
confianza tendrá pocas vulnerabilidades.
-­‐
Flexibilidad: El sistema debe resistir o tolerar los ataques más comunes y además
hacerlo lo mejor posible con los nuevos. De los que no pueda resistir o tolerar, debe
recuperarse lo mejor posible.
Para un desarrollo seguro del software se debe diseñar, implementar, configurar y
mantener sistemas en el que la seguridad es un atributo necesario desde el comienzo del
ciclo de vida hasta el final. [PASO2012] ; [PASO2013]
Existen esquemas que se dedican a la evaluación de la seguridad del software. Los
hay de distintos tipos, desde los que garantizan la seguridad de los sistemas
gubernamentales hasta los que van dedicados a productos y servicios con un coste y
tiempo más eficientes. Algunos de todos ellos son los que mencionaremos a continuación:
· FIPS-140 de Canada/US.
· CESG Assisted Products Scheme (CAPS) de Reino Unido.
· CESG System Evaluation (SYSn)
· Fast Track Approach (FTA).
· CESG Tailored Assurance Service (CTAS).
· CESG Claims Tested Mark (CTT Mark).
61
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
· Common Criteria for Information Technology Security Evaluation (CC).
Vamos a explicar solamente el que más repercusión tiene debido a la existencia de
muchas de sus versiones. Estamos hablando del CESG. Las siglas significan
Communications-Electronics Security Group Es un grupo que se encuentra dentro de la
GCHQ (Government Communications Headquarters), lo que es el Cuartel General de
Comunicaciones
del
Gobierno.
CESG
presta
asistencia
a
los
departamentos
gubernamentales para la propia seguridad de las comunicaciones. Trabaja para el Reino
Unido y es la Autoridad Nacional Táctica de allí. No fabrican equipos de seguridad pero
trabaja con la industria para asegurar la disponibilidad de productos y servicios adecuados.
La GCHQ les financia las investigaciones. Como hemos visto, existen diferentes tipos de
programas. [COMM2014] ; [SEGU2013] ; [BUQU2013]
62
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
ELEMENTO
DESCRIPCIÓN
FUENTE
Puede ser un ser humano u otro sistema
y además puede ser conocida o
desconocida. Dependiendo de la fuente
que sea, si es muy fuerte, da igual la
medida que se tome ya que puede ser
insuficiente. El ataque puede ser un
acceso no autorizado, modificaciones
de datos o no realización correcta del
servicio. El proceso de identificación
es suficiente para el problema de
usuarios no autorizados.
ESTÍMULO
El ataque o acción de vulnerar la
seguridad.
ARTEFACTO
Los servicios del sistema o sus datos.
ENTORNO
Ataque producido cuando el sistema
está conectado o desconectado a la red
de ordenadores.
RESPUESTA
Autorizar a usuarios legítimos, no
autorizar a los ilegales. Registro de
intento de modificación o acceso.
MEDIDA
Dificultades de protección ante ataques
y dificultades de recuperación después
de sufrir un ataque.
Tabla 14. Escenario para la seguridad.
63
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Capítulo 8.1. Tácticas.
Las tácticas existentes para mejorar a seguridad de la arquitectura propuesta se pueden
dividir en tres tipos diferentes:
-­‐
Resistencia al ataque: Se dedican a intentar impedir que un elemento no autorizado
pueda entrar en el sistema. Las tácticas pertenecientes a este tipo son las siguientes:
· Autenticación de usuario: Asegura que un usuario es quien dice ser. Como
ejemplo de esto son las contraseñas, firmas digitales, DNI electrónico…
· Autorización de usuario: Derechos de acceso y modificación de un usuario
autenticado. Para ello existen patrones de acceso.
· Confidencialidad de datos: Protección de accesos no autorizados. La
criptografía es una herramienta muy utilizada ya que cifrar datos es muy útil
para acceder a ellos sólo por personal autorizado y con restricciones.
· Mantenimiento de la integridad: Los datos no deben ser modificados y se
deben poder recuperar cuando se quiera por parte del propietario.
·Limitación de recursos disponibles: Así se evita que un ataque pueda tener
acceso a todo el sistema.
· Limitación de acceso: Los cortafuegos realizan esta operación. Se limita el
acceso a ciertos recursos. Hay mensajes que es posible limitarlos.
64
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
-­‐
Detección de ataques: Se basa en el estudio y comparación de patrones de tráfico
por las líneas de comunicaciones. Así se puede reconocer si se está produciendo un
ataque o no, y si es así, poder combatirlo. Los patrones están basados en ataques ya
conocidos. Se filtran todos los paquetes de comunicaciones que llegan al sistema y
se estudian los flags, direcciones del remitente y destinatario junto con el número
de puerto. Cuando se detecta un ataque se actúa y se reporta al analista para que
éste adopte las medidas necesarias si fuese requerido.
-­‐
Recuperación tras un ataque: Básicamente se centra en devolver al sistema al
estado anterior de sufrir el ataque.
· Recuperar el estado correcto del sistema: Relacionado con las tácticas
aplicables a la disponibilidad. Referido al buen funcionamiento del sistema
después de un estado inconsistente, que lo más seguro es que no diese
correctamente un servicio, que no estuviera disponible.
· Identificar el atacante: Realizado gracias a un registro de auditoría que
consiste en grabar una copia de cada transacción realizada en el sistema y
por quién. Esto debe permitir devolver al sistema a un estado consistente,
identificando al atacante.
65
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
ESTÍMULO
TÁCTICA
RESPUESTA
·Autenticación de
usuario
·Autorización de
usuario
·Confidencialidad
Resistencia al ataque
de datos
· Mantenimiento
de la integridad
· Limitación de
recursos
· Limitación de
acceso
Detección por el
Ataque
sistema. Resistencia o
·Detectar
Detección de ataque
recuperación.
intrusiones en el
propio sistema
· Recuperar el
estado correcto
Recuperación de ataque
del sistema
· Identificar al
atacante
Tabla 15. Resumen de las tácticas para la seguridad.
66
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Capítulo 9. Usabilidad (Usability).
Es la facilidad con la que un usuario puede manejar y acceder al sistema de información
con garantías de éxito. Para poder medir este atributo de calidad, se requiere establecer un
método. Gracias a la usabilidad, se puede conocer mejor la claridad con la que se diseñó el
sistema. El grado de usabilidad influye mucho en el grado de satisfacción del usuario, pero
no debemos confundirlo ya que no es lo mismo. Además de éste, existen otros conceptos
muy importantes relacionados con este atributo y son los siguientes: [PATR2014]
-­‐
Eficacia: Exactitud con la que los usuarios pueden realizar la tarea que desean en
un ambiente concreto.
-­‐
Eficiencia: Recursos consumidos en relación a la eficacia (financieros, de tiempo y
humanos).
Figura 15. Conceptos de la usabilidad
67
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Como todo este tipo de conceptos, existen un gran número de definiciones
diferentes dadas sobre el atributo. La que más se ha tenido en cuenta ha sido la dada por la
organización llamada OSI, muy conocida en el mundo de la informática, que la define
como “La extensión para la que un producto puede usarse por usuarios específicos, para
lograr metas específicas con efectividad, eficacia y satisfacción en un contexto de uso
específico”. Esta definición está dada en el estándar ISO 9241-11. ISO 9241 la define
como calidad de trabajo de un sistema en estado normal.
Otro estándar es el ISO/IEC 9126 [ISO 91] que refleja la usabilidad como un
atributo de la calidad del software y lo define exactamente como “Un conjunto de atributos
de software que se sostienen en el esfuerzo necesitado para el uso y en la valoración
individual de tal uso, por un conjunto de usuarios declarados o implicados”. Esto hace
referencia a la capacidad del sistema para ser usado fácilmente (comprensibilidad,
operabilidad, facilidad de aprendizaje, calidad del interfaz…).
También se considera muy importante la definición de Nielsen que indica que “La
usabilidad es parte de la utilidad del sistema, la cual es parte de la aceptabilidad práctica y,
finalmente, parte de la aceptabilidad del sistema”. Para esta definición ha tenido en cuenta
las características del aprendizaje, eficiencia, memorización, prevención de error y
satisfacción subjetiva.
La complejidad de los sistemas de información van en aumento, y en el día a día
podemos comprobarlo. Por esto la usabilidad es uno de los atributos más importantes y
más cuidado ya que es clave en la distinción entre los fabricantes. Los sistemas de
información se diseñan centrándose en el usuario, y así se establece la base. A partir de
aquí se va desarrollando el sistema hasta cumplir el objetivo.
Los sistemas pueden ser fáciles de aprender y usar siendo estas dos características
muy importantes en el propio concepto de usabilidad. Se cree que las interfaces de usuario
deben ser lo más intuitivas posible ya que, por ejemplo, los usuarios de páginas web
presentan muy poca tolerancia a los sitios con un diseño complejo que complique el acceso
o éste sea lento. [CLOU2013]
68
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
La usabilidad es tan simple como la percepción que tiene el usuario de la
efectividad y eficiencia de la interfaz, es decir, que cumpla su propósito y haga lo que
realmente tiene que hacer. No se puede definir como un atributo funcional ya que no se
puede medir directamente, pero teniendo en cuenta otras medidas indirectas, se puede
cuantificar. Unos ejemplos de estas medidas son el número de errores detectados o el ratio
de operaciones ejecutadas respecto al número total de operaciones realizadas.
El método de entrevista a los usuarios de un sistema es la mejor forma de
desarrollar sistemas con una buena concepción de usabilidad. Se extraen conclusiones
acerca de las entrevistas y a partir de ello se hacen las modificaciones convenientes.
Para evaluar la usabilidad tenemos varios métodos diferentes, unos basados en
información obtenida de los usuarios y otros basados en expertos. El coste y el tiempo son
fundamentales para elegir un tipo de evaluación u otra. [MWEB2013]
Vamos a estudiar a continuación, los métodos de evaluación de la usabilidad:
-­‐
Métodos basados en el conocimiento: También llamados cognitivos. Requieren la
creación de un modelo computacional para estimar el tiempo que le llevaría a
alguien completar una tarea. Definen un modelo basado en la experiencia humana
al utilizar los sistemas, describiendo el interfaz humano de los mismos. Es un
método de revisión donde los especialista que evalúan construyen un prototipo
inicial y a partir de ahí estudian la facilidad de aprendizaje desde el punto de vista
del usuario. Así se permite evaluar el software en las etapas iniciales del desarrollo.
A este método pertenecen tres tipos de información involucrados en la usabilidad
de los sistemas. Son la descripción de los usuarios con su conocimiento de la
experiencia, las tareas realizadas por los usuarios con el sistema y las acciones
ejecutadas por los usuarios para realizar correctamente el trabajo requerido. El
diseño paralelo, GOMS y el procesador humano son algunos de los métodos que
pertenecen a este tipo.
69
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
· Diseño paralelo: Se crea un diseño inicial a partir del mismo conjunto de
requisitos. Se realiza en grupo y cada integrante realiza su trabajo por
separado y al acabar, se ponen en conjunto todas las ideas y entre todos
intenta mejorar lo de cada uno para así llegar a la mejor idea posible.
· GOMS: Son siglas de cuatro palabras de origen inglés. “Goal” que es el
objetivo, “Operator” el operador, “Methods” los métodos y “Selection
Rules” las reglas de selección.
· Procesador humano: Utilizado al descomponer una tarea en componentes
más pequeños y así poder analizarlos individualmente mejor. Así se
detectan áreas de mejora.
-­‐
Métodos de inspección formal: Estos métodos requieren tener evaluadores que
examinen y realicen inspecciones sobre los principios relacionados con la
usabilidad. Son utilizadas más como técnicas de evaluación. Cuantos más
evaluadores haya más problemas se encontrar, en el caso que los haya, y así se
solucionarán más rápido. Existe un guión de pruebas por el que se rigen los
evaluadores. Los métodos de evaluación existentes serán descritos a continuación.
· Evaluación heurística: Se prueban interfaces de una manera rápida y
económica. Un experto examina cada elemento del interfaz de usuario para
comprobar si se cumplen los principios de usabilidad establecidos. El
objetivo es encontrar los problemas que pueda presentar el interfaz de
usuario. Al diseñar un interfaz de usuario existen diez principios
fundamentales, que más que tratarse de unas guías son unos principios
creados basándose en el sentido común. Son la visibilidad del estado del
sistema, la coincidencia entre el sistema y el mundo real, control por el
usuario y libertad, consistencia y estándares, prevención de errores, no
memorización, flexibilidad y eficiencia de uso, diseño minimalista y sin
70
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
estética, ayuda a usuarios y documentación. Nielsen realizó varios test de
usabilidad a usuarios a lo largo de las distintas fases del desarrollo.
U = 1 – (1-p) ^ n
Donde la ‘p’ es la probabilidad de identificación de un problema y ‘n’ el
número de personas que están realizando la evaluación. Esta teoría ha sido
discutida y han surgido dos argumentaciones principales. Una trata sobre
que la usabilidad está relacionada con un conjunto específico de usuarios, y
por tanto la opinión de unos pocos no es tan representativa como se creía.
La otra dice que no todos los problemas de usabilidad son iguales de
detectar, por lo que la fórmula no valdría igual para todos. En resumen, se
considera que siempre será mejor una muestra de unos pocos a no tener
nada, pero si es posible, es mejor realizar una muestra más representativa.
· Inspección pluralista: Se trata de una reunión en la que los usuarios,
desarrolladores y expertos discuten cómo tratar la relación hombremáquina. Las características más importantes acerca de este método son los
tipos de participantes (usuarios, desarrolladores y expertos), las pantallas
impresas que aparecen en el sistema, la actuación de los participantes como
usuarios del sistema, la escritura de cómo realizarían las acciones para
ejecutar cada tarea por parte de los participantes y la discusión de las
soluciones propuestas.
·
Inspección
de
consistencia:
Utilizado
cuando
existen
varios
programadores o grupos de desarrollo en un mismo paquete. Este paquete
será complejo y estará compuesto por varios productos. La finalidad es
evaluar el interfaz de un nuevo producto para garantizar la consistencia de
todo el paquete. Los expertos analizan el interfaz de los diferentes
71
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
desarrollos comprobando cómo implementa cada uno su función.
Dependiendo de las conclusiones obtenidas, se procederá a la unificación
del interfaz para todos.
-­‐
Métodos basados en encuestas: Recogen datos cualitativos de los propios usuarios
y los usan para evaluar la usabilidad. Los datos no dejan de ser subjetivos pero
proporcionan información muy valiosa sobre lo que los usuarios quieren y esperan
del sistema. La identificación de requisitos del usuario y del producto para
satisfacer las necesidades del usuario será posible incluso antes del comienzo del
desarrollo. Así se podrá realizar ajustándose a las necesidades del usuario con un
uso fácil. El aprendizaje es clave para generar ideas nuevas de diseño. Las técnicas
más usadas son:
· Focus Group: Discusión manejada por un moderador que lidera el grupo
de participantes utilizando preguntas sobre un tema en particular. Son
reuniones grabadas en vídeo con el objetivo de poder repasar la reunión las
veces que sea necesario y así elaborar un informe final lo mejor posible.
· Encuestas: Menos coste económico sin necesidad de realizar pruebas. Es
realizada individualmente a los usuarios con preguntas escogidas
minuciosamente para que las respuestas tengan una validez en el futuro y
sean de utilidad.
-­‐
Métodos basado en prototipos: Utilizado en las fases iniciales del desarrollo para
validar y refinar la usabilidad del sistema.
72
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
La usabilidad es tremendamente importante en la fase de diseño del software, y por
ello se evalúa en la Arquitectura Software. Los requisitos deberían establecerse antes de
empezar el desarrollo ya que a posteriori es muy difícil cambiar el interfaz, ya que se
incurren en gastos más altos de lo normal además de lo costoso que es en términos
ingenieriles. En resumen, cambiar el interfaz requeriría volver a definir la arquitectura.
Hay que tener en cuenta de qué tipo van a ser los usuarios, la finalidad del proyecto
y cómo van a utilizar el sistema los propios usuarios.
A tener en cuenta también si los usuarios van a necesitar una formación previa a la
utilización del sistema. [SOFT2006]
La usabilidad se divide en las siguientes tareas:
-­‐
Aprendizaje de las características del sistema: Si el usuario no está familiarizado
con un sistema en concreto o con algo relacionado con él, el propio sistema debería
proporcionar los medios necesarios para hacer el aprendizaje lo más fácil posible.
-­‐
Uso del sistema lo más eficiente posible: El sistema también debe ofrecer
facilidades para conseguir que el uso sea lo más eficiente posible.
-­‐
Minimización del impacto de errores: Ofrecer medios para que el impacto de los
errores sea el mínimo posible y recuperarlos cuando se necesite.
-­‐
Adaptación del sistema a las necesidades del usuario: Permitir que el usuario pueda
adaptar el sistema para facilitar la realización de las tareas.
-­‐
Incremento de la confianza y satisfacción: Ofrecer medidas oportunas para que el
usuario tenga la seguridad de que las acciones que realiza se ejecutan
correctamente.
73
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
La usabilidad es un aspecto muy importante a tener en cuenta en el diseño de los
sistemas, y por tanto, está incluido entre los atributos a valorar en la Arquitectura Software.
Se puede ahorrar tiempo y dinero y ofrecer garantías de éxito si valoramos este atributo en
el momento correcto.
Se ha evolucionado últimamente en el conocimiento de este atributo de calidad y en
cuanto a su relación con la Arquitectura Software se ha sacado en claro que la detección
temprana de los errores de usabilidad implicará un menor coste a la hora de corregirlos. Al
tener la usabilidad tanta relación con la estructura del sistema, la idea que acabamos de
comentar afectará directamente a la propia estructura del sistema.
Como en todos los atributos de calidad de los que hemos hablado anteriormente, la
usabilidad tiene un escenario posible que estudiaremos a continuación en una tabla
detallada en la que se especificará todo lo necesario para realizar una evaluación correcta
de la usabilidad.
74
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
ELEMENTO
DESCRIPCIÓN
FUENTE
Para no repetir lo que se dice en cada
escenario, la única fuente de estímulo
es el propio usuario.
ESTÍMULO
Utilización concreta que realice el
usuario del sistema.
ARTEFACTO
El sistema.
ENTORNO
Las acciones del usuario relacionadas
con la usabilidad siempre se realizarán
en tiempo de ejecución o en la
configuración del sistema.
RESPUESTA
El sistema debe anticiparse a las
necesidades del usuario.
MEDIDA
La respuesta se puede medir como
tiempo para realizar la tarea, número de
errores,
número
de
problemas
resueltos, satisfacción del usuario,
aumento del conocimiento del usuario,
ratio de operaciones correctas frente al
total de operaciones, tiempo y datos
perdidos al producirse un error…
Tabla 16. Escenario para la usabilidad.
75
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Capítulo 9.1. Tácticas.
Existen dos tipos de usuarios concretos a los que puede afectar la usabilidad. Se trata de los
desarrolladores o programadores y de los usuarios finales.
Se debe tener en cuenta el colectivo de programadores, pero concretamente, para la
descripción de las tácticas aplicables a la usabilidad es mejor centrarse en el estudio de los
usuarios finales.
Una de las posibles evaluaciones que veremos puede ser la facilidad de utilización
de los comandos que debe teclear el usuario en pantalla y cómo soportan los errores en
cuanto a la información que ofrecen al usuario sobre ellos, siendo en forma de avisos de
error o del propio error y de cómo poder resolverlo. Las facilidades que soporta para que el
usuario pueda seleccionar los comandos más utilizados y agruparlos bajo un menú es un
claro ejemplo de las posibles opciones que existen en este atributo y que son de gran
utilidad.
El tiempo que tarda en reaccionar o responder el sistema ante la entrada de un
nuevo usuario es otro factor que influye en la percepción del grado de usabilidad.
Las distintas funciones del sistema que tienen interacción con el usuario y que
tienen como requisito un determinado tiempo de respuesta ante una acción deben ser
enumeradas por el arquitecto.
En otras situaciones, el propio sistema toma la iniciativa y avisa al usuario de un
evento o acción que deba realizar.
Las tácticas deben identificar los modelos utilizados para predecir lo que va a
ocurrir o para prever las intenciones del usuario y así poder anticiparse. Agrupar estos
modelos sería lo ideal para hacer más fácil su evaluación y modificación. Los tres tipos de
modelos a tener en cuenta por el arquitecto son:
76
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
-­‐
Modelo de tareas: Determinará el contexto, de forma que el sistema pueda tener
una idea de las acciones que va a desarrollar el usuario y así le pueda suministrar
diversos tipos de asistencia. Un buen ejemplo de esto sería el ajuste de las opciones
de los menús que pueda ver.
ESTÍMULO
TÁCTICA
RESPUESTA
·Interfaz de usuario separada.
·Soporte a las iniciativas del
usuario;
Petición del usuario
Cancelación, Información y asistencia
deshacer operaciones y añadir dadas al usuario
opciones.
·Soporte a iniciativas del
sistema; Modelos.
Tabla 17. Resumen de las tácticas para la usabilidad.
-­‐
Modelo de usuario: Determina el conocimiento que tiene el usuario del sistema y su
comportamiento en cuanto a tiempo esperado de respuesta u otros, dependiendo del
tipo de usuarios a los que va destinado, así como el tipo de trabajo que van a
desarrollar al utilizar dicho sistema.
-­‐
Modelo de sistema: Recoge el comportamiento esperado del sistema, lo que
permitirá ofrecer al usuario la información necesaria.
77
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
78
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Capítulo 10. Verificabilidad (Verificability).
Este atributo permite evaluar la arquitectura para comprobar hasta qué nivel podemos
comprobar el sistema o un componente perteneciente al mismo. No es una propiedad
propiamente dicha del sistema en sí, si no que depende de las pruebas que deba soportar,
los objetivos, los métodos utilizados y los recursos empleados para realizar las pruebas.
Por ello no se puede medir directamente.
Cuanto menor sea el resultado de la medida de verificabilidad, más esfuerzo hay que
dedicar a la hora de realizar las pruebas. Este esfuerzo viene dado por factores como la
concreción de los requisitos software, la complejidad del sistema, la documentación
existente y la organización de las pruebas. Algunos conceptos interesantes relacionados
con el atributo de verificabilidad son los siguientes:
-­‐
Contingencia: Indica el estado del software. Los resultados de las pruebas no
pueden ser sabidos con exactitud antes de ser realizadas. Estos resultados dependen
de en qué momento se hagan, de las condiciones del entorno y del funcionamiento
de los demás componentes relacionados.
-­‐
Factibilidad: Informa que las pruebas deben ser reales para garantizar un correcto
funcionamiento del software en el entorno y objetivo con el que se ha diseñado, sin
fallos. Las pruebas deben ir dedicadas concretamente al sistema o a un elemento
particular del mismo. Hay que tener en cuenta que existen componentes que
trabajan en conjunto con otros, entonces se hace muy difícil realizar una prueba
válida del componente en cuestión, ya que como realmente se ve si funciona bien
es realizando la prueba individualmente.
-­‐
Refutabilidad: Las pruebas deben realizarse para demostrar que el software es
erróneo. Aunque se demuestre que existe un pequeño fallo, eso no demuestra que el
sistema no realice el trabajo que se le pide correctamente. Esto se debe a que lo que
realmente se quiere es que funcione bien y haga correctamente el objetivo que se le
79
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
pide. Si lo hace, aunque exista algún fallo, no se puede considerar que el sistema no
sea bueno.
Dadas estas características, vamos a ver que se debe cumplir para que un sistema sea
verificable:
· El sistema y todos sus componentes deben de estar debidamente documentados y con
los requisitos perfectamente definidos y detallados, y poder medirse o comprobar su
funcionamiento. Esto es necesario para poder realizarse las pruebas y que su coste no sea
muy elevado. Los requisitos son consistentes, completos sin ambigüedades, cuantificados y
verificables, por supuesto.
· El estado de cada componente debe ser controlable en todo momento para poder
asegurar que el resultado de las pruebas es correcto.
· Observar los resultados y el funcionamiento de las pruebas del componente es
fundamental para poder ver los resultados intermedios que se van dando y realizar una
valoración.
· Como hemos mencionado anteriormente, es importante poder realizar las pruebas a
cada componente por separado. Realizarlas individualmente es la única manera de asegurar
el correcto funcionamiento de un componente en concreto.
· El objetivo de cada componente se debe especificar detalladamente.
80
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
ELEMENTO
DESCRIPCIÓN
FUENTE
Prueba
realizada
por
probadores,
desarrolladores (en el caso de pruebas
de diseño) o por el propio cliente.
ESTÍMULO
Hito alcanzado en el desarrollo del
proyecto (final de diseño, análisis,
codificación…).
ARTEFACTO
Componente a probar, pudiendo ser
también el sistema completo.
ENTORNO
Pruebas
realizadas
en
tiempo
de
diseño, de desarrollo, de integración o
de producción.
RESPUESTA
Sistema controlado con realización y
resultado de pruebas.
MEDIDA
Es el porcentaje de líneas de código
ejecutadas en una prueba determinada.
También la probabilidad de encontrar
nuevos errores en el software.
Tabla 18. Escenario para la verificabilidad.
81
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Capítulo 10.1. Tácticas.
Las tácticas correspondientes a este atributo de calidad están centradas en permitir realizar
las pruebas necesarias que debe pasar el sistema de la manera más sencilla posible. No es
de los atributos principales pero sí que hay que tenerlo en cuenta ya que su coste
económico es muy elevado y conviene realizar cualquier táctica posible para poder
disminuirlo.
ESTÍMULO
TÁCTICA
RESPUESTA
·- Gestión de entrada/salida
· Registro.
Incremento del tamaño ·Rutas.
del sistema
Fallos detectados
· Interfaz
· Monitorización
Tabla 19. Resumen de las tácticas para la verificabilidad.
El objetivo de estas pruebas es descubrir fallos en el software. Esto requerirá software
adicional que permita alimentar con datos a los componentes a probar y recoger los
resultados de las pruebas para su correcta evaluación. Las tácticas aplicables son las
siguientes:
-­‐
Registro: También llamado reproducción. Es la recogida y grabación de los datos
obtenidos en ejecución real por el sistema. Posteriormente podrán ser utilizados
como datos de entrada en las pruebas. También se grabarán los resultados
82
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
obtenidos por un componente antes y después de realizar un cambio. Así se podrán
realizar comparaciones y valoraciones de los resultados obtenidos.
-­‐
Interfaz: Separar la interfaz de la implementación permitirá sustituir los
componentes de procesamiento sin problemas y poder realizar pruebas sin
interrumpir al resto de usuarios, ya que la interfaz seguirá siendo la misma. A veces
hasta se puede eliminar un componente y el sistema seguir funcionando
correctamente, aunque algún usuario se vería afectado.
-­‐
Rutas: El acceso a través de interfaces o rutas permite particularizar las pruebas y
cambiar los datos sin problema. Estas rutas deben quedar separadas de la operación
normal y no ser accesibles, a no ser que se vayan a realizar pruebas.
-­‐
Monitores: Utilizados para el seguimiento del comportamiento del componente
bajo estudio.
Hemos finalizado con la explicación teórica acerca de los inicios de la arquitectura
software y sus características y con el detallado estudio de cada atributo de calidad
fundamental en un sistema. A continuación introduciremos una breve explicación de los
modelos existentes para poder hacer una aplicación práctica de lo ya explicado y ver cómo
podemos mejorar un sistema real teniendo en cuenta un atributo de calidad en concreto,
también aplicable a todos los demás.
83
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
84
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Capítulo 11. Modelo COCOMO.
Es un acrónimo del inglés “Constructive Cost Model” y fue diseñado por Barry W. Boehm
hace aproximadamente 40 años. Es un modelo matemático de base empírica utilizado para
estimación de costes de software. Está formado por tres submodelos, los cuales tienen cada
uno su propio nivel de detalle y aproximación a medida que avanza el proceso de
desarrollar el software. Este desarrollo se divide en tres partes: básico, intermedio y
detallado. Este modelo pertenece a la categoría de modelos de subestimaciones basados en
estimaciones matemáticas orientado al producto final, midiendo el tamaño del proyecto en
líneas de código, sobre todo. [COCO2014]
Los inconvenientes que tiene este modelo son los siguientes:
· Resultados no proporcionales a las tareas de gestión ya que no tiene en cuenta los
recursos necesarios para realizarlas.
· Si indicamos mal el porcentaje de líneas de comentarios en el código, el resultado se
puede desviar de la realidad.
· Es un modelo subjetivo. Dependiendo del analista que utilice el método, se basará en
unas estimaciones o parámetros diferentes.
· La productividad no se mide.
· La medición no es válida para la orientación a objetos.
· Es un modelo de uso ligeramente complicado.
85
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Capítulo 11.1. Tipos de modelos.
Los tres modelos de los que hemos hablado anteriormente utilizan las siguientes
ecuaciones:
E = a(Kl)b * m(X) , en persona-mes
Tdev = c(E)d , en meses
P = E/Tdev , en personas
Donde tenemos que:
E es el esfuerzo requerido por el proyecto, en persona-mes.
Tdev es el tiempo requerido por el proyecto, en meses.
P es el número de personas requerido por el proyecto.
a, b, c y d son constantes con valores definidos en una tabla, según cada
submodelo.
Kl es la cantidad de líneas de código, en miles.
m(X) Es un multiplicador que depende de 15 atributos.
En los modelos, existen modos que representan el tipo de proyecto, y son el modo
orgánico (se desarrolla software por un grupo de pequeños programadores y el tamaño de
código es pequeño), modo semilibre (el grupo de trabajo está formado por gente
experimentada y no tan experimentada) y el modo rígido (un proyecto con restricciones
debido a su dificultad).
86
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Ahora comencemos a hablar de los modelos existentes. En primer lugar está el
modelo básico.
· Modelo básico: Utilizado para obtener una primera aproximación rápida del esfuerzo
realizado. Se utiliza una tabla con valores para calcular distintos aspectos de los costes:
MODO
A
B
C
D
Orgánico
2,4
1,05
2,5
0,38
Semilibre
3
1,12
2,5
0,35
Rígido
3,6
1,2
2,5
0,32
Valores utilizados para:
Personas necesarias por mes para llevar adelante el proyecto :
(MM) = a*(Klb)
Tiempo de desarrollo del proyecto : (TDEV) = c*(MMd)
Personas necesarias para realizar el proyecto :
(CosteH) = MM/TDEV
Costo total del proyecto (CosteM) = CosteH * Salario medio entre los
programadores y analistas.
·Modelo intermedio: Se trata del modelo básico con la adición de quince modificaciones
opcionales para poder aplicarlas a un entorno de trabajo, así incrementando la precisión de
la estimación. La parte que se modifica respecto al modelo básico es:
87
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
MODO
A
B
Orgánico
3,2
1,05
Semilibre
3
1,12
Rígido
2,8
1,2
A este modelo se le pueden aplicar los atributos que se decidan. Hablaremos de ellos al
terminar de detallar los tipos de modelos existentes.
· Modelo detallado: Tiene dos mejoras importantes. Los factores correspondientes a los
atributos son sensibles o dependientes de la fase sobre la que se realizan las estimaciones.
Existen aspectos como la experiencia y la utilización que tienen mayor influencia en una
fase que en otra y además varían de una etapa a otra.
También establece una jerarquía de tres niveles de productos. Los aspectos que representan
gran variación a bajo nivel (nivel de módulo) , los que representan pocas variaciones (nivel
de subsistema) y los demás (nivel de sistema).
Los atributos de los que hemos hablado en el modelo intermedio se cuantifican para
un entorno del proyecto. La escala de los atributos se divide en:
MUY BAJO – BAJO – NOMINAL – ALTO – MUY ALTO –
EXTREMADAMENTE ALTO
Dependiendo de la calificación de cada atributo, se asigna un valor para usar de
multiplicador en la fórmula. Por ejemplo, ALTO = x1000. Existen cuatro tipos de
atributos, y tienen un significado diferente dependiendo del tipo.
88
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
· Software: RELY (garantía de funcionamiento requerida), DATA (tamaño de la base de
datos en relación al tamaño del programa entero) y CPLX (complejidad del producto).
· Hardware: TIME (limitaciones en el porcentaje de uso de la CPU), STOR (limitaciones
en el porcentaje del uso de la memoria), VIRT (volatilidad de la máquina virtual) y TURN
(tiempo de respuesta requerido).
·Personal: ACAP (calificación de los analistas), AEXP (experiencia del personal en
aplicaciones), PCAP (calificación de los programadores), VEXP (experiencia del personal
en máquina virtual) y LEXP (experiencia en el lenguaje de programación a usar).
·Proyecto: MODP (uso de prácticas modernas de programación), TOOL (uso de
herramientas de desarrollo de software) y SCED (limitaciones en el cumplimiento de la
planificación.
El modelo COCOMO ha evolucionado y tiene distinas versiones. En la primera
versión se calcula el esfuerzo y el coste del desarrollo en función del tamaño estimado del
programa. Se utiliza para una aproximación rápida al ciclo de vida. En el modelo
COCOMO II se permite estimar el coste, esfuerzo y tiempo cuando se planifica una nueva
actividad de desarrollo software. Tiene tres submodelos, los cuales son el modelo de
composición de aplicaciones, de diseño anticipado y de post-arquitectura.
Analizando este modelo, encontramos unas ventajas y unas desventajas que
comentamos a continuación:
· Ventajas: Es un modelo transparente, se puede ver como trabaja con otros modelos. Los
manejadores de costo ayudan al estimador a comprender el impacto de diferentes factores
que afectan en el coste del proyecto.
· Inconvenientes: La adaptación del modelo a las necesidades de la organización utilizando
datos históricos es muy importante. Los datos pueden estar no disponibles.
89
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
90
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Capítulo 12. Modelo COPLIMO.
El modelo COPLIMO es un acrónimo del inglés “Constructive Product Line Investment
Model” e investiga el efecto de los costes de calidad del software en el ROI. Existen dos
fuentes de despliegue del modelo: [COPL2014]
· RCWR: “The Relative Cost of Writing for Reuse” indica el coste adicional de escribir
software a la hora de encontrar la mejor relación entre la efectividad y el coste reutilizada a
través de la nueva aplicación de la familia de líneas de producto con el coste de escribir el
software para usarlo en una aplicación.
· RCR: “The Relative cost of Reuse” es el coste de reutilizar software en una nueva
aplicación de la familia de líneas de producto relativo al desarrollo de software recién
construido para la aplicación.
Para las dos fuentes existen tablas con distintos valores, los cuales se utilizarán en
un caso o en otro. Los multiplicadores de esfuerzo obtienen un valor diferente dependiendo
de si es bajo o alto, teniendo en cuenta también valores intermedios.
Es una variación del modelo COCOMO utilizado para las líneas de producción,
pero la utilización de valores en tablas es casi similar.
En la reutilización de activos de la organización común, la línea de productos
software ofrece oportunidades de negocio importantes para reducir el coste unitario de los
productos similares, la mejora de la productividad, reducir el tiempo de comercializar y
mejorar la satisfacción de los clientes. Mediante la adopción de prácticas efectivas de
líneas de producto, el ROI (Retorno de la Inversión) se vuelve más crítico en el proceso de
toma de decisiones. La mayoría de estimaciones de coste y el ROI limitan su labor a los
costes y ahorros del desarrollo de software.
91
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Descriptors None
Across
Across
Across
Across
Project
Program
Product
Multiple
line
Product
line
Rating
low
Nominal
High
Very High
Extra high
0,95
1
1,07
1,15
1,24
levels
Effort
multiplier
92
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Capítulo 13. Desarrollo del MODELO.
Ahora comienza el desarrollo del modelo teniendo en cuenta los aspectos tecnológicos y
los económicos, principalmente, ya que existen otros factores también pero menos
importantes a la hora del desarrollo del modelo.
Antes de comenzar a describir la aplicación por partes, hay que tener claro qué es lo
que queremos aportar al cliente. Para ello, primero debemos estudiar en profundidad los
atributos de calidad y ver qué parámetros son los mejores para mejorar dichos atributos. La
adición, modificación o eliminación de hardware/software es algo fundamental en un
sistema por lo que es útil para cualquiera de los atributos. El resto de parámetros dependen
de los atributos, y se han escogido aquellos en los que, al introducirlos o modificarlos,
tienen mayor impacto en los atributos de calidad. Esta aplicación está creada para ser
utilizada por cualquier usuario, desde los que tienen un gran conocimiento sobre la
arquitectura software hasta para los que se inician en la materia. Por ello, dentro de la
propia aplicación, hay información detallada sobre todos los términos utilizados en ella.
Tiene un uso el cual es muy útil para relacionar los conceptos vistos a lo largo del
proyecto y el aspecto económico. A continuación se explicará cada parte de la aplicación y
el porqué de los datos que se manejan. Las empresas podrán utilizar esta aplicación para
introducir los cambios que van a querer hacer en los atributos de calidad de su sistema
interno, indicando que parámetro han elegido mejorar de cada atributo y las consecuencias
que tiene en el resto de atributos y en el coste relacionado.
Inicialmente encontramos una ventana en la que más que nada se muestra
información al usuario acerca de cómo utilizar la aplicación y acerca de los atributos de
calidad, ya que gracias a esto se puede tener más claro los cambios que se quieren realizar
en un sistema.
93
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Figura 16. Ventana principal
Existe una ventana emergente dedicada a cada uno de los atributos de calidad para
conocer más acerca de ellos. Esta es la parte mencionada anteriormente que puede ayudar a
cualquier empresa a saber qué le conviene modificar según sus intereses. Es la información
más relevante acerca de los atributos de calidad descrita a lo largo de este documento.
Puesto que ha sido determinante para conocer más acerca de ellos, se ha creído necesario
que todos los avances teóricos sean mostrados en la aplicación para que los usuarios que la
vayan a utilizar puedan acceder a los mismos conocimientos. La disposición de la ventana
de información de cada uno de los atributos de calidad es la siguiente para cada uno de
ellos:
94
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Figura 17. Disponibilidad.
Figura 18. Modificabilidad.
95
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Figura 19. Rendimiento.
Figura 20. Seguridad.
96
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Figura 21. Usabilidad
Figura 22. Verificabilidad.
97
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Existe una opción que es el manual de instrucciones de utilización del modelo.
Aquí se describe cómo se deben introducir los datos en el propio modelo y cómo deben ser
relacionados entre sí para obtener los datos correctos y en general, todas las opciones que
están disponibles. La guía de utilización del modelo debe ser la siguiente para un correcto
uso de la misma:
-­‐
Acceder a las ventanas de información mostradas anteriormente para conocer más
acerca de los atributos de calidad. Así se tendrá más claro qué es lo que se quiere
cambiar en el sistema.
-­‐
Acceder a la ventana donde se muestra la relación entre los atributos y la definición
de lo que hace el parámetro en cuestión. Los parámetros vienen explicados en este
documento más adelante. Con este punto y el anterior se tiene la información
teórica necesaria para realizar los cambios.
-­‐
Comenzar a utilizar el modelo para conocer cómo van a afectar los cambios entre sí
a los atributos dependiendo del porcentaje de mejora que se desee. Dependiendo de
qué se quiera mejorar en el sistema, se querrá mejorar más o menos un atributo u
otro.
-­‐
En el modelo, seguiremos los mismos pasos siempre para que quede toda la
información ordenada y clara para el usuario. Primero introducimos el primer
cambio, es decir, el primer parámetro que hemos decidido mejorar para el atributo
de calidad deseado. Introducimos sus costes, divididos por costes hardware, de
diseño, de desarrollo y de instalación y obtenemos el coste total del atributo.
Guardamos siempre que términos de editar un atributo. Hacemos el mismo proceso
con todos los atributos y cuando terminemos, procedemos a la generación de un
informe inicial. En este punto comenzaremos a relacionar los atributos de calidad,
uno a uno, con su correspondiente porcentaje de mejora. Lo hacemos con todos y a
continuación, para finalizar, calculamos el coste total y así generamos el informe
final con el coste total y las mejoras totales por cada atributo.
98
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
-­‐
Al tener claras las ideas acerca de qué cambios se van a realizar, la empresa en
cuestión deberá pedir por su cuenta presupuestos acerca de lo que le va a costar
realizar los cambios. Estos datos serán introducidos posteriormente en el modelo.
También deberán estipular cuánto dinero están dispuestos a invertir en la creación
del proyecto.
Figura 23. Manual de uso.
En esta ventana creada a partir de este botón, obtenemos toda la información
relevante acerca de todos los parámetros de los atributos de calidad. En primer lugar vemos
como, tanto los atributos como los parámetros, están dispuestos en dos menús desplegables
para un manejo más fácil para el usuario. Por si la visualización de las imágenes no fuese
correcta del todo, son: para la disponibilidad (redundancia activa, redundancia pasiva,
sustitución, añadir/modificar componentes hardware/software), para la modificabilidad
(añadir/modificar componentes hardware/software), para el rendimiento (velocidad del
CPU/memoria/disco/comunicaciones, capacidad de discos, cambiar el SO, modificar
componentes software), para la seguridad (configurar firewall, redundancia activa,
redundancia pasiva, añadir/modificar componentes hardware/software), para la usabilidad
99
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
(añadir/modificar componentes hardware/software) y para la verificabilidad (monitor de
funcionamiento, pruebas en tiempo de ejecución, manejo de fallos).
Figura 24. Relación entre atributos.
A continuación vamos a comentar brevemente cada uno de los parámetros de los
atributos. De todas maneras, es una pequeña introducción ya que a partir de la página 114
habrá una explicación más extensa y detallada de qué significa cada parámetro y las
posibilidades de cada uno de ellos.
100
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Parámetros de la disponibilidad:
Figura 25. Parámetros disponibilidad.
La redundancia activa utilizada de manera que teniendo varios componentes, si uno
falla, cualquiera de los otros puede realizar el trabajo que debía hacer el componente caído.
Los componentes estarán activos en todo momento. La redundancia pasiva realiza lo
mismo que la activa con la única diferencia que sólo un componente estará activo en un
momento dado y por ello, debe existir un elemento que indique qué componente debe
ponerse a funcionar en lugar del caído. La sustitución consiste simplemente en el cambio
de un elemento por otro en el sistema que ayude a aumentar la disponibilidad. Añadir o
modificar hardware o software es para todos los atributos lo mismo, es cambiar
componentes en el hardware o en el software para mejorar el atributo en cuestión.
101
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Parámetros de la modificabilidad:
Figura 26. Parámetros modificabilidad.
Parámetros del rendimiento:
Figura 27. Parámetros rendimiento.
102
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Las velocidades referidas al rendimiento simplemente se quieren mejorar para una
ejecución más rápida del CPU, los discos, la memoria o las comunicaciones.
Cambiar el sistema operativo debido a que el nuevo a instalar tenga mejores
prestaciones que el anterior.
Aumentar la capacidad de los discos ya que cuanta más memoria tenga más rápido
irá. Es un principio claro en al informática, cuanto más sobrecargado está el
sistema, más lento irá.
Parámetros de la seguridad:
Figura 28. Parámetros seguridad.
Configurar un cortafuegos que evite cualquier elemento que pueda dañar el
sistema, como pueden ser los virus. Es un método fácil de implantar y con efectividad.
103
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Parámetros de la usabilidad:
Figura 29. Parámetros usabilidad.
Esto nos permite en cualquier momento disponer de la información que se necesite
a la hora de elegir qué parámetro queremos elegir. Cuando se tenga claro, se eligen y
accionando el botón “OK” nos aparece en el apartado explicación, de qué se trata la mejora
de ese parámetro y en el siguiente apartado, los atributos que se ven afectados al efectuar
dicho cambio. Estas explicaciones sobre qué significa cada parámetro vienen dadas al final
de este capítulo ya que se entra en detalle para que queden claras.
104
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Parámetros de la verificabilidad:
Figura 30. Parámetros verificabilidad.
Monitor de funcionamiento para comprobar cómo funciona el sistema y así ver si está todo
correcto o se deberían realizar cambios. Realizar pruebas en tiempo real como
comprobación del funcionamiento del sistema. Manejar los fallos y los errores para
arreglarlos y conseguir un sistema lo más cercano a la perfección.
105
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Figura 31. Relaciones.
Comenzando con la explicación de cómo utilizar el modelo, vemos cómo es la
disposición de la ventana ya que su uso se puede dividir en tres partes bien diferenciadas
(costes, relación entre atributos y viabilidad) antes de obtener el resultado final deseado
formado por distintos datos. La primera parte es la introducción, por parte de la empresa,
de los parámetros de los atributos que quiere mejorar con su porcentaje de mejora deseado,
la versión en la que lo desea hacer y los costes que les va a suponer en hardware, diseño,
desarrollo e implantación esa mejora. Los atributos, parámetros y versiones se encuentran
en menús desplegables para un uso más fácil y rápido del modelo. [PEQU2014]
106
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Estos datos se introducen donde la señal roja en la siguiente imagen:
Figura 32. Modelo.
Introducimos los datos como en el ejemplo mostrado a continuación. Elegimos en
los menús desplegables la versión que se desee (será la misma para todos los atributos), el
atributo con su parámetro a mejorar y rellenamos las cajas de texto para el porcentaje de
mejora deseado y los costes imputados del cambio. Una vez hecho para un atributo,
pinchamos en “Calcular” (indicado en rojo en la siguiente imagen) para que calcule el
coste total en ese atributo.
107
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Figura 33. Cálculos.
En cuanto a los costes, los cálculos realizados para cualquier atributo quedan
reflejados en la parte derecha de la aplicación. El porcentaje de mejora queda almacenado
temporalmente en la parte inferior del modelo ya que se verá modificado más adelante al
realizar otros cálculos tan importantes como necesarios.
34. Almacenamientos.
108
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Cada vez que introducimos los datos de un cambio, los guardamos (botón
“Guardar”) para más adelante poder recordar cuál fue la información que se introdujo para
un atributo en particular. En el botón “Consultar” es dónde se puede ver esta información.
Figura 35. Consultas.
También, además de disponer de la información en manera de consulta individual,
se puede generar un informe para tener una vista resumen de todos los datos introducidos
cuando hayamos especificado todos los cambios.
109
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Figura 36. Informes.
Una vez realizado este proceso para todos los atributos, calculamos el coste total de
todos los cambios realizados para el sistema. Es una variable que será fundamental para
calcular posteriormente la viabilidad del proyecto.
Figura 37. Cálculo de costes.
110
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Figura 38. Viabilidad proyecto.
Una parte muy útil de este modelo es esta última que vamos a mencionar. Los
cambios en un atributo afectan al resto. Entonces esto se verá reflejado en el porcentaje
final de mejora de cada atributo. Individualmente, cada atributo mejora en un porcentaje
elegido previamente por el cliente, pero al modificar otros atributos, ese porcentaje inicial
del que hablamos podrá aumentar o disminuir dependiendo de si los cambios en el resto de
atributos le afectan positiva o negativamente. Esto se realiza en la zona indicada a
continuación:
111
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Figura 39. Relacionar parámetros.
Figura 40. Modificación porcentajes.
112
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Por último, la última parte del modelo. Trata de que la empresa introduzca el
presupuesto del que dispone para realizar este proyecto y, comparándolo con los costes
totales de los cambios, se decide si el proyecto es viable o no para realizarlo. Pueden salir
tres tipos de resultados dependiendo de la comparación entre cifras. Puede ser que el
proyecto no sea viable, que si lo sea o que lo sea pero indicando que para el presupuesto
del que se dispone supone un esfuerzo económico importante.
Figura 41. Presupuesto.
En el apartado económico es fácil de explicar su funcionamiento. Simplemente se
almacenan los costes de cada uno de los atributos para, al finalizar, calcularlos en su
conjunto y realizar la comparación con la inversión para ver si el proyecto es viable o no.
113
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Figura 42. Viabilidad.
Centrándonos en el contenido interno de la aplicación, es decir, en el porqué de
todos los datos que forman el modelo, vamos a explicar qué significa cada uno de ellos.
Para ello, vamos a ir por partes centrándonos inicialmente en cada uno de los parámetros
de los atributos para explicar qué significan y más tarde el porqué de los cálculos
realizados.
Los parámetros de adición o modificación de hardware o software no hace falta
explicarlo en profundidad ya que se trata simplemente en, como indica su propia
descripción, en añadir, cambiar o eliminar partes del hardware o del software para mejorar
el atributo al que pertenezcan. El resto son:
-Redundancia activa/pasiva: se trata de repetir datos o hardware de carácter crítico
para asegurar que no se pierdan en caso de fallo. Es una solución ante los
problemas de protección y confiabilidad. Se realiza el mismo proceso en más de
una estación, ya que si en algún momento dejara de funcionar o se colapsara el
sistema, otro ocuparía su lugar inmediatamente para realizar las tareas del anterior
y así no perder disponibilidad del sistema. Una base de datos replicada es un claro
ejemplo de sistema distribuido redundante. Los dispositivos redundantes de un
servidor son los discos duros, tarjetas de red y fuentes de alimentación. Los discos
114
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
RAID (Redundant Array of Independent Disk) son un conjunto de unidades de
disco que están dispuestos como si fuesen uno, así los datos se dividen entre dos o
más unidades. Esto incrementa el rendimiento pero sobre todo la disponibilidad de
un sistema protegiéndose del fallo de un disco. Las tarjetas de red comunican al
servidor con el cliente y para garantizar que no haya fallos en esta comunicación,
los servidores suelen utilizar dos. Además de conseguir que no se note en caso de
fallo, se utiliza para la técnica conocida como “bonding”, en la que las dos tarjetas
suman sus capacidades y se utilizan como una sola. Siguiendo con los servidores,
hoy en día traen al menos dos fuentes de alimentación proporcionando electricidad
a la computadora. Las fuentes conectadas a diferentes sistemas eléctricos
garantizan el suministro en caso de fallo afectando también a conmutadores,
enrutadores y demás elementos. Centrándonos en los discos, que son la medida más
utilizada en redundancia, vamos a ver gráficamente algunos discos RAID. La
diferencia entre activa y pasiva es únicamente que los elementos esten activos todo
el tiempo o solamente cuando se necesiten. [SRED2014]
115
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Figura 43. Discos raid
-­‐
Sustitución: Se trata de cambiar elementos que mejoren la disponibilidad del
sistema, realizándolo en momentos que menos se note el tiempo de pérdida de
disponibilidad que va a suponer el cambio.
-­‐
Velocidad CPU, memoria, disco y comunicaciones: Mejorando la velocidad de
procesamiento en estos elementos del sistema se mejora el rendimiento del sistema,
ya que ejecutará las intrucciones a mayor velocidad. [VCPU2014]
-­‐
Capacidad de discos: Aumentando la capacidad de los mismos se podrán almacenar
más datos por lo que la memoria tardará más en llenarse y al estar el sistema más
descargado seguirá trabajando a alta velocidad.
-­‐
Cambiar SO: El realizar un cambio de sistema operativo puede mejorar un sistema
ya que puede tener unas prestaciones mejores que el anterior. Se trabaja
continuamente en mejorar todo lo posible para llegar a tener un sistema que
funcione perfectamente y eso lleva a realizar actualizaciones con mejoras.
116
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
-­‐
Configurar un cortafuegos: También llamado “firewall”, diseñado para bloquear el
acceso no autorizado al sistema. Permite, limita, cifra y descifra el tráfico de
información entre el propio sistema y el resto. Protege el ordenador de ser dañado y
es un elemento que ayuda mucho a la seguridad del sistema, pero como
complemento y no como única solución. [CORT2014]
-­‐
Monitorización: Utilizado para ver cómo funciona un sistema en cada uno de los
momentos que se necesite y así poder comprobar cómo se comporta ante una
situación en concreto. El resultado serán los datos obtenidos de esa monitorización
y así verificar dónde el sistema funciona mejor y dónde peor.
-­‐
Pruebas en tiempo de ejecución: Mientras el sistema está trabajando se realizan
pruebas para ver cómo se comporta el mismo y así ver qué funciona mejor o peor.
-­‐
Manejo de fallos: Se controlan los errores ocasionados durante la ejecución de
programas informáticos. Así al ver los fallos que ocurren se pueden solucionar ya
que para encontrar una solución primero hay que saber qué hay que solucionar.
En cuanto a los porcentajes de los factores de mejora de los atributos, vemos como
a la hora de mejorar un atributo afecta tanto positiva como negativamente a otros. La
variaciones en los porcentajes es baja ya que está tratado sobre 100% que es la
perfección, y la modificación afecta a un atributo en concreto para el que se ha
pensado. Bien es cierto que tiene incidencia en otros atributos pero la variación no es
muy alta. Dependiendo del porcentaje de mejora elegido para un atributo, variará más o
menos el aumento o disminución de los atributos involucrados.
Bajo experiencia personal cambiando discos duros a amigos o añadiendo memorias
he elegido las variaciones de las que hablo. Seguramente se pueda precisar más por ello
esta aplicación ofrece la posibilidad de ser mejorada en cualquier momento
actualizándose cuando sea necesario.
En cuanto a las relaciones porqué son así se ha decidido debido a la numerosa
información obtenida acerca de la arquitectura software. En libros como el de Clements
y Bass se explican conceptos sobre ello con claridad y juntando esa información más la
117
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
experiencia personal tanto propia como de informáticos conocidos o que han expuesto
sus experiencias en la red, se acierta a saber qué relaciones existen entre los atributos.
Esto también es actualizable como lo anterior ya que con todos los avances que existen
en la tecnología pueden variar las relaciones y el porcentaje de incidencia en ellos.
La propia experiencia es la que ha determinado que se escojan dichos valores. El
ejemplo práctico que se ha llevado a cabo, además de opiniones de personas que han
trabajado con ello, ha sido la mejora del rendimiento aumentando la velocidad de un
disco.
El disco interrumpía cada 512 bytes siendo la duración de la interrupción de 20
milisegundos. Se tomaron los datos del resto del sistema para comprobarlos
posteriormente a ver cómo cambiaban. Hecho esto, con las reglas de tres oportunas,
vimos que se producían mejoras en otros componentes del sistema pero de manera muy
leve, en bajos porcentajes. Por este tipo de experiencias más opiniones de gente con
experiencia en ello se han decidido realizar este tipo de modificaciones tan leves.
Capítulo 13.1. Casos reales del modelo.
Se van a realizar simulaciones del modelo para ver los tres tipos de situaciones que se
pueden dar:
1º Situación: Una empresa quiere cambiar su sistema para que tenga unas prestaciones
más altas. Quieren mejorar la modalidad WEB por lo que, haciendo un estudio de qué les
viene mejor, han decidido mejorar la disponibilidad, modificabilidad, rendimiento y
seguridad. Para esta mejorar, han decidido que no les interesa gastar ni en usabilidad ni en
verificabilidad ya que por el momento les funciona bien según sus propios intereses. Sobre
todo, quieren mejorar el rendimiento del sistema para que se ejecute más rápido, además
de ofrecer garantías de seguridad. Al querer centrarse en la seguridad, se realizará una
mejora en redundancia activa ya que, además de mejorar la disponibilidad, también tiene
un impacto importante en la seguridad. Modificando el hardware se pretenden obtener
118
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
pequeñas mejoras en la modificabilidad y así el sistema tenga mejor tolerancia a los
cambios. Por ello se han elegido los porcentajes de mejora que se mostrarán a
continuación. Los costes van en relación al porcentaje de mejora elegido. Cuanto mayor
sea el factor de mejora, mayores costes supondrá realizar ese cambio. Los costes divididos
en hardware, diseño, desarrollo e instalación son calculados por la propia empresa,
teniendo en cuenta qué van a necesitar cambiar por cada atributo, piden presupuesto a
empresas que se dediquen a realizar dichos cambios, ya que ellos saben qué se va a
necesitar para llevar a cabo el cambio.
Mejoras:
Disponibilidad: Factor de mejora del 25% en redundancia activa.
Modificabilidad: Factor de mejora del 10% en modificación de hardware.
Rendimiento: Factor de mejora del 40% en aumento de la velocidad CPU.
Seguridad: Factor de mejora del 50% en configuración del firewall.
Usabilidad: Intacta
Verificabilidad: Intacta
Costes:
Disponibilidad: 350 Euros en hardware, 200 Euros en diseño, 150 Euros en desarrollo, 450
Euros en instalación. Hacen un total de 1150 Euros.
Modificabilidad: 150 Euros en hardware, 50 Euros en diseño, 75 Euros en desarrollo, 175
Euros en instalación. Hacen un total de 450 Euros.
Rendimiento: 550 Euros en hardware, 300 Euros en diseño, 250 Euros en desarrollo, 460
Euros en instalación. Hacen un total de 1560 Euros.
Seguridad: 600 Euros en hardware, 400 Euros en diseño, 550 Euros en desarrollo, 750
Euros en instalación. Hacen un total de 2300 Euros.
Usabilidad: 0 Euros.
Verificabilidad: 0 Euros.
Coste total: 5460 Euros.
Inversión: 500000 Euros
119
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Comparando la inversión y el coste total, el resultado de la ejecución del modelo es un
proyecto viable con un esfuerzo económico para la empresa (establecido en 500000
Euros).
Después de relacionar los atributos entre sí nos queda una mejora total como la siguiente:
Disponibilidad: 28,4%.
Modificabilidad: 15,618%
Rendimiento: 40,699%
Seguridad: 55,96%.
Usabilidad: 6,349%
Verificabilidad: 1,92%
Conclusión: Cómo se ha explicado a lo largo del proyecto, los atributos tienen relación
entre sí. Por ellos quedan los porcentajes que vemos al final del caso. Aunque se decidió
no mejorar ni la verificabilidad ni la usabilidad, se ve como se obtienen mejoras en dichos
atributos, ya que se ven afectados por las mejoras del resto de atributos (la usabilidad en
mayor medida que la verificabilidad). Vemos como en las mejoras realizadas, todos los
atributos se han visto beneficiados por los cambios. La inversión para este proyecto es
mayor que los costes generados pero no por mucha diferencia económica, por lo que el
proyecto es viable para poder realizarse, pero sabiendo que merecerá la pena ya que
supondrá un gran gasto para la empresa.
2º Situación: Se quiere modificar en el sistema, de inicio, una aplicación móvil para la
empresa. Se requiere que tenga una buena disponibilidad para que el usuario pueda usarla
el mayor tiempo posible sin caídas, un buen rendimiento para que quede contento con su
utilización, y que tenga una modificabilidad muy alta ya que en las aplicaciones se pueden
introducir mejoras continuamente. La usabilidad también será necesaria para que el usuario
tenga mayor facilidad en su utilización y la verificabilidad se mejorará para monitorizar la
aplicación y comprobar que funciona correctamente. Por el momento no se necesita
120
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
mejorar la seguridad ya que es buena y además no es un factor crítico en la aplicación que
se utiliza.
Mejoras:
Disponibilidad: Factor de mejora del 50% en sustitución.
Modificabilidad: Factor de mejora del 70% en modificación de software.
Rendimiento: Factor de mejora del 40% en cambio del SO.
Seguridad: Intacta.
Usabilidad: Factor de mejora del 20% en modificación de hardware.
Verificabilidad: Factor de mejora del 10% en monitorización.
Costes:
Disponibilidad: 1650 Euros en hardware, 3200 Euros en diseño, 3150 Euros en desarrollo,
4450 Euros en instalación. Hacen un total de 12450 Euros.
Modificabilidad: 3150 Euros en hardware, 4050 Euros en diseño, 2175 Euros en
desarrollo, 3175 Euros en instalación. Hacen un total de 12550 Euros.
Rendimiento: 5550 Euros en hardware, 5300 Euros en diseño, 5250 Euros en desarrollo,
9460 Euros en instalación. Hacen un total de 25560 Euros.
Seguridad: 0 Euros.
Usabilidad: 250 Euros en hardware, 300 Euros en diseño, 250 Euros en desarrollo, 260
Euros en instalación. Hacen un total de 1060 Euros.
Verificabilidad: 50 Euros en hardware, 100 Euros en diseño, 50 Euros en desarrollo, 460
Euros en instalación. Hacen un total de 1560 Euros.
Coste total: 52280 Euros.
Inversión: 50000 Euros
Comparando la inversión y el coste total, el resultado de la ejecución del modelo es un
proyecto inviable debido a que el coste es mayor que la inversión.
121
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Después de relacionar los atributos entre sí nos queda una mejora total como la siguiente:
Disponibilidad: 52,2%.
Modificabilidad: 75,579%
Rendimiento: 42,449%
Seguridad: 8,81%.
Usabilidad: 25,819%
Verificabilidad: 11,92%
Conclusion: El coste total es muy alto debido a las modificaciones que se realizan
relacionado con el dinero disponible por la empresa para realizar la inversión. Por ello, este
proyecto no es viable, pero a partir de los resultados, si se quiere realizar algo así,
modificando algunos datos (menos mejora en algún atributo) se tendrán menos costes y así
se podrá llegar a un proyecto viable.
3º Situación: Se ha visto en una empresa, que la modalidad RIA no va lo rápido que se
esperaba y que no es del todo segura por lo que los usuarios no están contentos con ello
porque no es del todo fiable además de su lentitud. Por ello se ha decidido mejorar en gran
medida el rendimiento y la seguridad. Además, se querrá comprobar que los cambios que
se han realizado son correctos por lo que se mejorará la verificabilidad realizando pruebas
en tiempo real para ver los resultados. Ya metidos a realizar cambios, se mejorará la
usabilidad un poco para que sea más fácil su uso.
Mejoras:
Disponibilidad: Intacta.
Modificabilidad: Intacta.
Rendimiento: Factor de mejora del 70% en aumento de velocidad de discos.
Seguridad: Factor de mejora del 40% en redundancia pasiva.
Usabilidad: Factor de mejora del 5% en adición de software.
Verificabilidad: Factor de mejora del 35% en prueba en tiempo real.
122
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Costes:
Disponibilidad: 0 Euros.
Modificabilidad: 0 Euros.
Rendimiento: 3250 Euros en hardware, 3100 Euros en diseño, 4050 Euros en desarrollo,
7460 Euros en instalación. Hacen un total de 17860 Euros.
Seguridad: 450 Euros en hardware, 700 Euros en diseño, 850 Euros en desarrollo, 960
Euros en instalación. Hacen un total de 2960 Euros.
Usabilidad: 50 Euros en hardware, 40 Euros en diseño, 70 Euros en desarrollo, 100 Euros
en instalación. Hacen un total de 260 Euros.
Verificabilidad: 250 Euros en hardware, 200 Euros en diseño, 530 Euros en desarrollo, 360
Euros en instalación. Hacen un total de 1340 Euros.
Coste total: 22420 Euros.
Inversión: 1000000 Euros
Comparando la inversión y el coste total, el resultado de la ejecución del modelo es un
proyecto viable totalmente.
Después de relacionar los atributos entre sí nos queda una mejora total como la siguiente:
Disponibilidad: 4,5%.
Modificabilidad: 4,96%
Rendimiento: 67,25%
Seguridad: 42,85%.
Usabilidad: 8,78%
Verificabilidad: 37,21%
Conclusión: Debido a que esta empresa tiene un alto poder económico, el proyecto es
viable totalmente además que si se quisiera mejorar algo más, se podría vistos los
resultados.
123
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
124
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Capítulo 14. Conclusiones (Know-How).
Tras realizar este proyecto he adquirido unos conocimientos acerca del aspecto software de
la ingeniería que antes no tenía. Al entrar en detalle en el tema, te das cuenta de lo
importante que es este apartado de la informática a la hora de realizar proyectos de mejora
en sistemas. El estudio de los atributos de calidad permite conocer más acerca de cómo
mejorar las prestaciones de un sistema en cuanto a la disponibilidad, modificabilidad,
rendimiento, seguridad, usabilidad y verificabilidad. Son características propias que
dependiendo de ellas funcionará mejor o peor un sistema. También existe una relación
directa entre ellas y conviene saberlo para no equivocarse, ya que queriendo mejorar un
atributo podemos empeorar varios. Añadido a esto, el estudio de modelos económicos
permite conocer más acerca de la economía en general y de la imputación de costes de un
proyecto en particular. La mezcla de estos conocimientos es el tema tratado durante el
proyecto y a la hora de involucrarse en un proyecto futuro sería de gran ayuda haber
tratado todos estos temas durante la realización de este proyecto.
Como en todo proyecto, han surgido errores a la hora de realizar la programación
de la aplicación, con su correspondiente solución. En la teoría no suelen surgir errores, ya
que se trata de buscar y contrastar información. Hay que encontrar fuentes fiables de
información de gente experimentada y entendida en el tema ya que cualquiera puede dar su
opinión acerca de algo sin tener mucha idea. Por lo tanto, teóricamente aportamos un
proyecto con información valiosa sobre la arquitectura software.
En la práctica, la creación del modelo es una innovación a la hora de relacionar la
informática con la economía como bien hemos dicho anteriormente. Entonces a la hora de
relacionar porcentajes y costes surgieron errores de cálculo hasta que se encontró la
relación más óptima posible. Debido a la gran cantidad de datos que alberga la aplicación,
se tuvieron que crear dos botones diferentes para relacionar los atributos por separado. Uno
que tiene en cuenta la disponibilidad, la modificabilidad y la seguridad y otro que relaciona
el rendimiento, la usabilidad y la verificabilidad. También en la creación del informe
inicial surgieron problemas para que se generase correctamente hasta conseguir que
mostrase la información. Un detalle que no tiene que ver con el proyecto pero sí con el
125
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
aspecto de programación es que el tamaño de las ventanas, dependiendo del monitor, se ve
la ventana perfectamente o queda expandida de manera que hay que modificar las
dimensiones para que aparezca correctamente. También a la hora de escribir texto en
Windows o Mac, se modifican los caracteres extraños como la eñe, comas, tildes o
porcentajes. Si se ha escrito en un sistema operativo alguno de esos caracteres, en el otro se
cambian y por ejemplo, en vez de aparecer “añadir” escribe “a%adir”.
Un gran acierto ha sido programar en lenguaje Java ya que ofrece múltiples
opciones que otros no ofrecen además del conocimiento del lenguaje por haber
programado en ello durante la carrera realizando prácticas de buen nivel. El código permite
realizar cambios con gran facilidad sin afectar negativamente a lo programado
anteriormente, ya que muchas actualizaciones serían numéricas por lo que sólo habría que
cambiar las cifras en cuestión. Si fuese añadir algún componente más, se crea una nueva
ventana en el modelo o directamente en la ventana principal se ejecuta el cambio
añadiendo mejoras en las prestaciones del modelo.
Además de este aprendizaje, existen futuras mejoras que podrán ser implantadas en
un futuro de las que los conocimientos están adquiridos pero necesitando más tiempo para
poder realizarlas. Al estar el proyecto dividido en dos partes bien diferenciadas como son
el estudio teórico y la aplicación a la práctica, al buscar información constantemente se te
ocurren más ideas para que salga un proyecto mejor, pero algunas de ellas son con vistas al
futuro ya que formarían parte de un proyecto muy completo que podría llegar a ser
utilizado por muchas empresas a la hora de realizar cambios o crear nuevos proyectos. En
estas mejoras se incluyen mayoritariamente relaciones numéricas con menor porcentaje de
error entre los atributos, generación de informes detallados a la hora de terminar de utilizar
la aplicación y mejoras generales de la aplicación añadiendo pequeños detalles que hagan
de ella un modelo referencia para las empresas en la relación software-economía. En un
futuro, además de la aplicación en sí, se podría crear una herramienta del estilo de Arche
(de la que hemos hablado durante el proyecto), que tiene en cuenta los atributos de calidad
casi en su perfección.
126
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Bibliografía.
[INTR2003]
“Introducción a la arquitectura de software” Clements, Bass, Kazman.
[KRUC2014] http://jarroba.com/modelo-“41”-vistas-de-kruchten-para-dummies/
[CORB2014] http://es.wikipedia.org/wiki/CORBA
[SCAL2012] http://www.sciencedirect.com/science/article/pii/S0164121211000793
[ESTA2012] http://olgacarreras.blogspot.it/2012/03/estandares-formales-de-usabilidad-ysu.html
[KRUC2011] http://alfa4.blogspot.it/2011/01/arquitectura-de-software-41-kruchten.html
[FACT2014] http://es.wikipedia.org/wiki/Factor_de_disponibilidad
[POLI2014]
http://es.wikipedia.org/wiki/Polimorfismo_(informática)
[COMM2014] http://en.wikipedia.org/wiki/CommunicationsElectronics_Security_Group#CESG
[SIST2009]
http://direccionylagestion.blogspot.it/2009_07_01_archive.html
[MANT2012] http://apistarelli.com.ar/mantenibilidad.pdf
[PASO2012] http://blog.optimyth.com/es/2012/12/4-pasos-para-mejorar-lamantenibilidad-de-nuestro-software
[PASO2013] http://www.20minutos.es/noticia/1985292/0/
[SEGU2013] http://losapuntesdetux.blogspot.com.es/2013/10/bastille-linux-o-comomejorar-la_27.html
[BUQU2013] http://www.ingenieros.es/noticias/ver/sistemas-para-mejorar-de-laseguridad-en-el-atraque-de-grandes-buques/4170
[DISP2008]
http://everac99.wordpress.com/2008/08/19/alta-disponibilidad-que-es-y-
como-se-logra/
[DISP2014]http://es.rockwellautomation.com/applications/gs/emea/gses.nsf/pages/at11020
3
[REDU2014] http://www.castelomega.com/index.php/Noticias/sistemas-de-servidoresredundantes-para-aumentar-la-disponibilidad.html
[ALTA2014] http://www.d2soluciones.com/ad.asp
127
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
[REND2014]http://h10025.www1.hp.com/ewfrf/wc/document?cc=es&lc=es&dlc=es&doc
name=c00844500
[DESF2014] http://www.bitdefender.es/support/¿cómo-puedo-mejorar-el-rendimientode-mi-sistema-1017.html
[PROG2013] http://www.genbeta.com/windows/cinco-programas-para-mejorar-elrendimiento-de-tu-equipo-con-windows
[OPTI2013]
http://www.softzone.es/2013/09/18/consejos-para-optimizar-el-
rendimiento-del-sistema-operativo/
[MWEB2013] http://www.10formas.com/10-formas-de-mejorar-la-usabilidad-de-un-sitioweb
[PATR2014] http://www.willydev.net/descargas/prev/PatronesUsa.pdf
[CLOU2013] http://www.qipu.es/noticias/r2-sistemas-mejora-usabilidad-r2-docuo-gestordocumental-cloud
[SOFT2006] http://noticias.universia.es/ciencia-nntt/noticia/2006/11/14/594994/usabilidad-software-pensado-usuarios.html
[ATRIB2014]http://sistemas.uniandes.edu.co/~csof5204/dokuwiki/lib/exe/fetch.php?medi
a=principal:modulo3-atributosdecalidad.pdf
[PEQU2014] http://es.wikipedia.org/wiki/Pequeña_y_mediana_empresa
[PONC2014] http://ponce.inter.edu/vl/computing/hard6.html
[EMPR2014]http://www.emprendia.org/faq.php?id=1&tema=42&f=36&lang=cas
[SRED2014] http://es.wikipedia.org/wiki/Sistema_redundante
[VCPU2014] http://www.ehowenespanol.com/mide-velocidad-del-cpu-como_170594/
[CORT2014] http://es.wikipedia.org/wiki/Cortafuegos_(informática)
[COPL2014] http://www.sciencedirect.com/science/article/pii/S0957417412001273
[COCO2014] http://es.wikipedia.org/wiki/COCOMO
128
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Anexo A. Planificación del proyecto.
Desde que se ha comenzado a realizar el proyecto hasta que se ha terminado, se ha pasado
por muchas fases y refleja perfectamente el tipo de metodología que se ha llevado a cabo y
que vamos a describir a continuación:
-­‐
Estudio teórico: De este modo, adquirimos los conocimientos necesarios para poder
tratar el tema de manera que todo lo que aparezca en el proyecto se acerque lo
máximo posible a la realidad. La mayoría de temas a tratar vienen perfectamente
expresados en el libro de Clements y Bass, llamado “Arquitectura Software”, y
sumando a este libro otra información adicional hemos llegado a tener todos los
conocimientos actuales. Es un proceso largo ya que hay que documentarse bien,
contrastando para comprobar que las fuentes son fiables. Ha sido la etapa más larga
del proyecto ya que además de buscar correctamente, hay que seleccionar que
información es la más importante para el proyecto ya que la cantidad de datos
recogidos es inmensa.
-­‐
Planificación y análisis: Esta etapa también ha sido clave ya que se buscó cómo
enlazar toda la información teórica con una aplicación práctica. Existían
muchísimas posibilidades ya que el campo de la arquitectura software es extenso.
Por lo tanto, esto conllevó a parar y pensar a ver cual era la mejor solución y así se
llegó al punto de realizar la aplicación existente, no sin antes realizar cambios sobre
qué mejoras podrían realizarse.
-­‐
Diseño: Una vez llegado a la decisión de qué aplicación realizar, es cuándo se tuvo
que comenzar a diseñar la aplicación, es decir, de qué partes iba a constar, qué
servicios iba a ofrecer al cliente y, en resumen, todo lo relevante en ella. Bien es
cierto, como hemos comentado anteriormente, que de la propuesta inicial de la
aplicación a lo que ha salido finalmente han surgido variaciones ya que durante la
programación de la misma, surgían nuevas ideas que mejoraban lo presente.
129
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
-­‐
Programación: Cuando se ha realizado el diseño de la aplicación, se lleva a la
práctica programando todo según lo previsto. Esta etapa lleva su tiempo ya que
surgen errores en el código o dudas acerca de cómo se programa algo que quieres
hacer, por lo que es un periodo de paciencia y entrega.
-­‐
Pruebas: Una vez terminado, se realiza el periodo de ‘tests’ para ver si funciona lo
programado anteriormente. Debe cumplir los requisitos necesarios que se
estipularon en el apartado de diseño.
-­‐
Implantación: Al comprobar que todo funciona correctamente, se procede a su
implantación para el entorno para el que se ha diseñado. En este caso, se ejecutará
para un caso real de una empresa que quiera realizar cambios o crear un nuevo
sistema con los requisitos que necesiten y ver el resultado como simulación de su
implantación real física.
-­‐
Documentación: Este proceso comienza al principio del proyecto y termina a la vez
que termina el proyecto. Es dónde se refleja toda la información del proyecto. Es lo
más importante ya que abarca todas y cada una de las partes de este proyecto.
Para ver esta planificación gráficamente hemos realizado el siguiente diagrama de Gantt:
Figura 44. Diagrama de Gantt.
130
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Figura 45. Tareas
Figura 46. Resumen tareas.
131
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Figura 47. Diagrama de Gantt II.
132
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
Anexo B. Estudio económico.
Este proyecto requiere un equipo de trabajo en el cual cada persona se dedica a una parte
específica:
-­‐
Jefe de proyecto: Es el encargado de supervisar a las demás partes del equipo para
comprobar que están realizando correctamente su trabajo.
-­‐
Analista: Será la persona que estudie el ámbito en el que se está trabajando para
intentar llegar a la mejor solución posible. Como el abanico de posibilidades es
muy amplio, intentará llegar a la mejor solución.
-­‐
Diseñador: Una vez tenga toda la información recopilada en el estudio teórico,
procederá a diseñar la aplicación práctica relacionada con tal información.
-­‐
Programador: Siguiendo las instrucciones dadas por el diseñador de la aplicación,
el programador procederá a llevar ese diseño a cabo mediante la programación de
la aplicación.
-­‐
Tester: Es la persona que se encargará de ir probando todas y cada unas de las
instrucciones que se van programando.
TARIFAS DEL PERSONAL JEFE DE PROYECTO 50 €/h
ANALISTA 40 €/h
DISEÑADOR 35 €/h
PROGRAMADOR 35 €/h
TESTER 20 €/h
Tabla 20. Tarifas del personal.
133
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
En cuanto al personal ya tenemos los costes establecidos que suponen, pero
también hay que tener en cuenta todos los elementos necesarios para poder realizar el
proyecto. Al no ser de un proyecto a gran escala, no se necesitarán demasiados elementos.
Sabiendo que el proyecto en total ha llevado 20 meses tenemos: [EMPR2014]
TARIFAS ESTACIÓN DE TRABAJO 1000 €
CONEXIÓN ADSL 20 €/mes = 400 €
ELECTRICIDAD 10 €/mes = 200 €
TOTAL 1600 €
Tabla 21. Tarifas de servicios.
Relacionando estos costes con la planificación del proyecto previamente explicada,
es cómo llegamos a obtener los costes finales del proyecto. Primero vamos a establecer una
tabla en la que se recojan las horas totales que trabaja cada participante del equipo. Para
ello hay que saber que, aunque la etapa dure esos meses, no se está trabajando las 24 horas
del día y que para que finalicen las etapas, cada integrante del equipo debe terminar su
parte de trabajo. Así es que llegamos a la siguiente conclusión reflejada en la tabla
mostrada a continuación. Mencionar solamente
que las siglas escritas en la tabla
corresponden a jefe de proyecto, analista, diseñador, programador y tester siguiendo el
orden de izquierda a derecha.
134
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INFORMÁTICA
JP A D P T 50€ * 10h
40€ * 50h
0
0
0
y análisis 50€ * 1h
40€ * 100h
35€ * 1h
35€ * 1h
0
Diseño 50€ * 2h
40€ * 5h
35€ * 30h
35€ * 5h
0
Programación 50€ * 2h
40€ * 5h
35€ * 5h
35€ * 70h
20€ * 2h
Pruebas 50€ * 1h
40€ * 1h
35€ * 1h
35€ * 1h
20€ * 10h
Implantación 50€ * 1h
40€ * 1h
35€ * 1h
35€ * 1h
20€ * 1h
Total 850€
6480€
1330€
2730€
260€
Estudio teórico Planificación Tabla 22. Tabla de costes.
COSTES TOTALES
EQUIPO
SERVICIOS
TOTAL
11650€
1600€
13250€
Tabla 23. Costes totales.
Teniendo en cuenta los impuestos que se imponen, considerando el IVA del 21%,
nos quedaría un presupuesto total de 16032,5€.
135
Descargar