jueves, 31 de mayo de 2012


La necesidad del manejo de la arquitectura de un sistema de software nace con
los sistemas de mediana o gran envergadura, que se proponen como solución para un
problema determinado.  En la medida que los sistemas de software crecen en
complejidad, bien sea por número de requerimientos o por el impacto de los mismos,
se hace necesario establecer medios para el manejo de esta complejidad (Hofmeister et
al., 1996).  En general, la técnica es descomponer el sistema en piezas que agrupan
aspectos específicos del mismo, producto de un proceso de abstracción (Bass et al.,
1998) y que al organizarse de cierta manera constituyen la base de la solución de un
problema en particular.  
De aquí que la mayoría de los autores (Bass et al., 1998; Kazman et al., 1998;
Hofmeister et al., 1995; Lane, 1990; Buschman et al., 1996; Booch et al., 1999;
Abowd, 1995) coinciden en que una arquitectura de software define la estructura del
sistema.  Esta estructura se constituye de componentes -módulos o piezas de código-
que nacen de la noción de abstracción, cumpliendo funciones específicas, e
interactuando entre sí con un comportamiento definido (Bass et al., 1998; Hayes-Roth,
1995; Hofmeister et al., 2000; Buschman et al., 1996; Booch et al., 1999; Abowd, 95).
Los componentes se organizan de acuerdo a ciertos criterios, que representan
decisiones de diseño.  En este sentido, hay autores que plantean que la arquitectura
de software incluye  justificaciones  referentes a la organización y el tipo de
componentes, garantizando que la configuración resultante satisface los
requerimientos del sistema (Boehm et al., 1995). 7
De esta manera, la arquitectura de software puede ser vista como la estructura
del sistema en función de la definición de los componentes y sus interacciones (Bass et
al., 1998).  La práctica ha demostrado que resulta importante extender el concepto
considerando los requerimientos y restricciones del sistema (Boehm et al., 1995; Lane,
1990), junto a un  argumento  que justifique que la estructura definida satisface los
requerimientos, dándole un sentido más amplio a la definición del término.
La arquitectura de software puede considerarse entonces como el “puente” entre
los  requerimientos  del sistema y la implementación (Hofmeister et al., 2000).  Las
actividades que culminan en la definición de la arquitectura pueden ubicarse en las
fases tempranas del ciclo de desarrollo del sistema: luego del análisis de los
requerimientos y el análisis de riesgos, y justo antes del diseño detallado.  Desde esta
perspectiva, la arquitectura constituye un  artefacto  de la actividad de diseño
(Hofmeister et al., 2000), que servirá de medio de comunicación entre los miembros del
equipo de desarrollo, los clientes y usuarios finales, dado que contempla los aspectos
que interesan a cada uno (Kazman et al., 2001).  Además, pasa a ser la base del diseño
del sistema a desarrollar, razón por la cual en la literatura la arquitectura es
considerada como plan de diseño del sistema (Hofmeister et al., 2000), debido a que es
usada como guía para el resto de las tareas del desarrollo.
De igual manera, serán de particular importancia las propiedades no funcionales
del sistema de software, pues influyen notoriamente en la calidad del mismo. Estas
propiedades tienen un gran impacto en el desarrollo y mantenimiento del sistema, su
operabilidad y el uso que éste haga de los recursos (Buschman et al., 1996).  Entre las
propiedades no funcionales más importantes se encuentran: modificabilidad,
eficiencia, mantenibilidad, interoperabilidad, confiabilidad, reusabilidad y facilidad de
ejecución de pruebas (Kazman et al., 2001).  Bass et al. (1998) proponen que el
término “requerimiento no funcional” es disfuncional, debido a que implica que tal
requerimiento no existe, o que es una especie de requerimiento que puede ser
especificado independientemente del comportamiento del sistema. En este sentido,
Bass indica que debe hacerse referencia a atributos de calidad, en lugar de
propiedades no funcionales.
Puede observarse que al hablar de arquitectura de software, se hace alusión a la
especificación de la estructura del sistema, entendida como la organización de
componentes y relaciones entre ellos; los requerimientos que debe satisfacer el sistema
y las restricciones a las que está sujeto, así como las propiedades no funcionales del
sistema y su impacto sobre la calidad del mismo; las reglas y decisiones de diseño que
gobiernan esta estructura y los argumentos que justifican las decisiones tomadas.
Habiendo aclarado el alcance que puede tomar el término arquitectura de
software, resulta de gran interés introducir formalmente otros términos que resultan
pilares fundamentales dentro del contexto de arquitectura, dado que en torno a ellos
gira gran parte del estudio que hasta el momento se ha realizado sobre el tema.  Tal es
el caso de los componentes, los conectores y las relaciones.






referencia --------> http://www.slideshare.net/jpbthames/diseo-arquitectnico-9443843

viernes, 18 de mayo de 2012


METODO SCRUM y DIAGRAMA DE SECUENCIA
Concepto
Desarrollo de la visión y alcances del producto.
Se determina el grupo de trabajo.

Especulación
Se parte de la visión del producto.
Se realizan hipótesis (especulaciones acerca de lo que se
entiende se desea producir).
Se contrastan con la realidad.
Este proceso se realiza en cada iteración del desarrollo
Exploración
Desarrollo de las funcionalidades.
Genera un incremento del producto.
Revisión
Se verifica el cumplimiento de la visión y los objetivos por parte del -sub- producto generado.
Cierre
Entrega pactada de un -sub- producto: listo, revisado y
probado.

roles segun la pequeña anetdota........


Los roles desarrolladores (cerdos)
*Equipo de trabajo.
*Propietario del producto.
*Scrum master o facilitador.
Los roles interesados (gallinas)
*Usuarios.
*Stakeholders.
*Administrativos.

scrum master o facilitador
Se reúne a diario y al final de cada sprint con el grupo de trabajo para evaluar su       desempeño y necesidades.
Adapta las practicas de desarrollo a la empresa............--->  http://www.taringa.net/posts/apuntes-y-monografias/1079954/Metodo-Scrum-en-Administracion-de-proyectos-de-Software.html

DIAGRAMA SECUENCIAL

Los diagramas de secuencia pueden utilizarse para una gran variedad de propósitos y con diferentes niveles de detalle sobre el programa. Las ocasiones más frecuentes en las que se crea un diagrama de secuencia son las siguientes:
  • Si tiene un diagrama de casos de uso en el que se resumen los usuarios del sistema y sus objetivos, puede dibujar diagramas de secuencia para describir el modo en que los principales componentes del sistema interactúan para lograr el objetivo de cada caso de uso. Para obtener más información, vea Diagramas de casos de uso de UML: Instrucciones.
  • Si ha identificado los mensajes que llegan a una interfaz de un componente, puede crear diagramas de secuencia en los que se describa cómo interactúan los elementos internos del componente para lograr el resultado necesario para cada mensaje entrante. Para obtener más información, vea Diagramas de componentes de UML: Instrucciones.
El uso de diagramas de secuencia tiene algunas ventajas:
  • Puede verse con facilidad cómo se distribuyen las tareas entre los componentes.
  • Pueden identificarse los modelos de interacción que dificultan la actualización de software.


-----------------------> http://msdn.microsoft.com/es-es/library/dd409377.aspx