Otros

Como La Arquitectura De Software Que Aprende

12.10.2016

?Como la Arquitectura de Software Aprende

Christine Miyachi, el Principio de los Sistemas de Ingeniero y Arquitecto,Xerox Corporation

http://home.comcast.net/

Introduccion

«Todos los modelos estan equivocados, algunos son utiles» — generalmente se atribuye a que el estadistico de George Cuadro

«Todos los edificios son predicciones, y todos los edificios estan mal»

— Stewart Brand «de Como los Edificios Aprender » video

Pero tal vez algunos de los edificios son utiles. Y si reemplazamos la palabra edificios con software, llegamos a la deduccion de que todo el software es malo, pero que de algun software es util.

En el campo de software de diseno y arquitectura de software, las analogias se hacen a menudo para la construccion de la arquitectura. Y estas analogias son a menudo criticado [1]. Sin embargo, la construccion de la arquitectura ha sido en la practica durante muchos cientos de anos, donde la arquitectura de software solo ha sido de alrededor de menos de cincuenta y solo recientemente reconocido por algunos como disciplina. Arquitectos de Software rara vez se vuelve y mira a su trabajo y como ha evolucionado a lo largo del tiempo. (Una excepcion a esto es Grady Booch.’s trabajar en la creacion de la «Manual de Arquitectura de Software» [2]) Stewart Brand, dice en su libro «de Como los Edificios Aprender «[3], que esto es muy cierto tambien con la construccion de los arquitectos. Construyen grandes fachadas pretende destacan como monumentos y casi nunca volver y estudiar como su trabajo ha cambiado a lo largo del tiempo. Y como la Marca muestra en su libro, edificios cambiar radicalmente a lo largo del tiempo.

los arquitectos de Software no funcionan, como la construccion de los arquitectos. Don’t diseno de blue prints y, a continuacion, de la mano de ellos fuera a los constructores. Que suelen trabajar con un equipo interdisciplinario de los desarrolladores de software y gente de negocios. Interpretar los requisitos de los sistemas funcionales. A menudo escribir codigo. En el pasado, que a menudo tienen que ver con sus sistemas de trabajo en el campo y se haga responsable por el trabajo de reparacion y correccion de errores. En la actualidad, gran parte de la correccion de errores y cambios solicitados por los clientes son delegadas a off-shore equipos dejando a los disenadores originales de la libertad para trabajar en nuevos proyectos, pero incapaz de aprender como su original arquitectura de los cambios a lo largo del tiempo y que se podria hacer para hacerlo mejor.

a la hora de estudiar arquitectura del edificio, de tres cosas salen a la superficie:

  1. los disenadores de Software se puede aprender mucho de los disenadores de edificios
  2. los disenadores de Software y disenadores de edificios cometer los mismos errores
  3. los disenadores del Edificio puede aprender mucho de los disenadores de software

En este articulo vamos a examinar los tres oportunidades de aprendizaje para abrir un camino para mejorar los edificios y mejor software.

la Definicion de la Arquitectura

la Arquitectura de Software tiene varias definiciones. El estandar de arquitectura de software — IEEE 1471-2000 dice:

la arquitectura de Software es la organizacion fundamental de un sistema encarnada en sus componentes, sus relaciones entre si y con el entorno, y los principios que gobiernan su diseno y evolucion.

En «Una Taxonomia de la Descomposicion de las Estrategias Basadas en Estructuras, Comportamientos y Metas» [4]. Koopman describe la arquitectura como un contenido estructuras. comportamientos. y objetivos junto con una variedad de estrategias de descomposicion.

En relacion a los edificios, la arquitectura se define como [5] :

La planificacion, el diseno y la construccion de la forma, el espacio y el ambiente que reflejan funcional, tecnica, social, ambiental, y de las consideraciones esteticas. Se requiere de la creatividad de la manipulacion y la coordinacion de materiales, la tecnologia, la luz y la sombra. La arquitectura abarca tambien los aspectos pragmaticos de la realizacion de edificios y estructuras, incluyendo la programacion, estimacion de costos y administracion de la construccion. Como parte de la documentacion producida por los arquitectos, normalmente, dibujos, planos y especificaciones tecnicas, arquitectura define la estructura y/o comportamiento de un edificio o de cualquier otro tipo de sistema que va a ser o ha sido construido.

El Proceso de Desarrollo de Software

El proceso de desarrollo de software que comenzo como un edificio de proceso de desarrollo. Este fue apodado «El Metodo de Cascada,»:

Como La Arquitectura De Software Que Aprende

la Figura 1 — La Cascada de Proceso

En esta metodologia, todos los analisis de requisitos, el diseno y la arquitectura se hacen frente. Como con la construccion de la arquitectura, los planos se definen al principio del proceso. Pero como Stewart Brand, senala en su libro «de Como los Edificios Aprender», ?que pasa con los edificios y de software a lo largo del tiempo es que ocurre un cambio significativo. Los disenadores de Software se han dado cuenta de esto y han estado trabajando con diversos procesos del software como Scrum o Programacion Extrema inspirado por la «El Manifiesto Agil»[6]. En estos procesos el cambio se abrazaron. Marca tambien los puntos de los proyectos en los que los edificios estan hechos con el requisito para ser modificable por los propietarios. En ambos de estos procesos, el cambio se realiza de forma incremental y un sistema de trabajo/edificio se produce. Este enfoque de desarrollo de software se llama iterativo:

Como La Arquitectura De Software Que Aprende

la Figura 2 — El Proceso Iterativo

En este proceso, analisis de requisitos, el diseno y la arquitectura que se realiza en cada iteracion. Un sistema final se completa despues de varios ciclos.

Flujo

«Flujo, flujo continuo, continuo cambio, en continua transformacion»

-Rina Swentzel, Peublo de la India el historiador de la arquitectura

«la Respuesta ante el cambio sobre seguimiento de un plan — centrarse en la respuesta rapida a los cambios y desarrollo continuo. [6]

-El Manifiesto Agil

Cuando los seres humanos arquitecto algo, esta disenado a menudo no se adaptan. Despues de todo, si la arquitectura es correcta, podra satisfacer las necesidades de todos, ahora y en el futuro. Esto servira como un monumento, y una obra de arte, y cumplir con todos los requisitos funcionales.

por Desgracia, con los edificios y con el software a menudo no es el caso. Los edificios, como Stewart Brand, senala en su libro de Como los Edificios Aprender se hacen a menudo como obras de arte y, a veces, don’t siquiera considerar la funcion. De Software, aunque suele ser disenado con la funcionalidad en mente, no toma en cuenta consideraciones futuras.

Como un ejemplo, la Marca puntos para el MIT Media Lab.

Como La Arquitectura De Software Que Aprende

la Figura 3 — MIT Media Lab

Esto ha compartido un atrio y compartido entradas, pero las personas estan completamente aisladas entre si. Por otra parte, el edificio tenia un monton de problemas cuando se abrio por primera vez. Hubo un terrible hedor en los pasillos, y los pomos de las puertas se cayo, entre otras cosas. Este edificio fue un imponente monumento en el campus, pero de acuerdo a la Marca, hizo poco sirven sus habitantes (Como un ex alumno del MIT, yo no sabia nada de estos problemas y el laboratorio de medios de comunicacion fue siempre considerado como un venerado edificio en el campus. Nunca le hable a los habitantes). En el tiempo, el laboratorio de medios de comunicacion era fijo y un nuevo espacio fue anadido que fue significativamente diferente.

Como La Arquitectura De Software Que Aprende

la Figura 4 — de La nueva ala del MIT Media Lab

En este edificio, los espacios abiertos, el edificio fue abierto a la luz del sol y de los espacios compartidos.

En el software, una vez creado un interfaz para permitir a un usuario para configurar los cambios en la seguridad. Sin embargo a lo largo del tiempo, que los usuarios querian configurar mas que los elementos de seguridad, por lo que la interfaz ha cambiado para permitir a los usuarios configurar otros aspectos del sistema. El nombre de la interfaz todavia estaba «Configurar la Seguridad» y esto puede ser un poco confuso para el usuario, debido a que la funcion habia cambiado. Sin embargo, la interfaz y su funcionalidad subyacente tuvo que cambiar con el tiempo.

En 1896, Louis Sullivan, Chicago, alta subida disenador, escribio «la Forma siempre sigue a la funcion». Sin embargo, los arquitectos rara vez se puede anticipar su funcion tanto en edificios y software. Marca dice que «la Funcion de las reformas forma, perpetuamente.» [7] En el diseno de software, cambio continuo se ha convertido en el estandar para la mayoria de uso de software Agil o proceso Iterativo. Tres de los principios de desarrollo Agil se centran en el cambio:

  • la satisfaccion del Cliente mediante la entrega rapida de software util
  • la Bienvenida a los requisitos cambiantes, incluso tarde en desarrollo
  • de Trabajo de software es entregado con frecuencia (semanas en lugar de meses)

Los ingenieros detras del Manifiesto Agil di cuenta de que mucho del software que esta siendo desarrollado no satisfacer las necesidades del cliente. Un estudio del departamento de defensa de los proyectos mostraron muchas de las funcionalidades implementadas se utiliza rara vez o nunca:

Como La Arquitectura De Software Que Aprende

la Figura 5 — Requisitos que no’t satisfacer las necesidades del usuario

la Marca tambien se noto que los edificios fueron construidos para mirar impresionante y que muchos de los elementos no fueron pensados a traves de la funcionalidad. Los arquitectos miro el edificio desde el exterior, en primer lugar, y considera que los habitantes demasiado tarde o nunca. Para rectificar esto, el Agil creadores abogo por llevar en el usuario de forma temprana en el proceso de desarrollo. Mediante la entrega de los cambios incrementales para el usuario, el usuario puede ver si el software satisface sus necesidades. Incluso pueden cambiar los requisitos durante este tiempo. El Agil creadores sentido este cambio deberia ser aceptada en lugar de tratar de congelar los requisitos. Los requisitos cambian despues de que todos son parte del mundo de los negocios y si no colaboraba, el software sera mas util y por lo tanto mas exito.

Las mejores edificios, la Marca lo dice en su libro, son los edificios que se podria cambiar a lo largo del tiempo. Winston Churchill dijo: «Nosotros damos forma a nuestros edificios, y despues nuestros edificios nos dan forma a nosotros.»[9] Pero de la Marca, a continuacion, dice que este proceso continua: «Primero le damos forma a nuestros edificios, entonces ellos nos dan forma a nosotros, entonces nosotros de la forma, de nuevo, ad infinitum». Trabajando en un proceso Agil es la misma. Entregamos una funcion de software, el usuario trata de el, y los cambios, hemos de renovacion y entregar de nuevo. En algun punto tenemos que ofrecer esa funcionalidad, pero paulatinamente los cambios hasta que se satisface la necesidad del cliente, que de hecho puede cambiar a lo largo de este proceso.

Construccion para el Cambio

a Pesar del Manifiesto Agil llamada para la mejora continua, en la practica, una vez que una funcion es entregado se considera «hecho». Debido a la funcionalidad que se debe entregar es el foco principal de un equipo Agil, que hace el disenador / arquitecto considerar como el software tendra que cambiar en el futuro? El o ella tiene tiempo para eso? Lo que sobre de mantenimiento en el futuro?

la Marca explica en su libro que los edificios son rara vez construido para el mantenimiento. Los edificios de la caries si no se cuida. El Software, tambien se han arquitectonico caries o se convierten en codigo espagueti, si no se limpian de vez en cuando. Cuando un edificio se desintegra, la Marca dice que puede ser reprocesado o derribado. El Software tambien puede ser reescrito desde cero o reprocesados. En grandes proyectos de software, a pesar de software’s maleabilidad, los gerentes a menudo son reticentes a aniquilar a todo un modulo de software y reescribirlo. Del mismo modo, algunos de los edificios son dificiles de limpiar por completo, sobre todo si estan en una zona muy concurrida.

Descuidar el mantenimiento de los edificios o capacidad de mantenimiento de software tiene enormes costos. La marca dice que si los disenadores del edificio acaba de pasar el 5% del diseno de los edificios en los problemas de mantenimiento, ahorro de costes que se puede conseguir. Teoricamente en el software, si el mantenimiento fue considerado en la arquitectura, los problemas de mantenimiento podria ser tambien reducido.

Pero una de las practicas comunes cuando se hace de desarrollo Agil es: no trabajo sobre los futuros requisitos. La idea es trabajar sobre la funcionalidad requerida ahora y si los requisitos futuros necesidad de una re arquitectura, los arquitectos deben tener el coraje y la fortaleza para hacerlo. Esto es mas facil de decir que de hacer en un medio nublado con horarios apretados y la presion del mercado. El diseno de software con el futuro cambio en la mente que esta sucediendo menos y menos en la industria de procesos Agiles ser mas amplia.

Un equilibrio en el software seria ver que areas de cambiar rapidamente y diseno de una arquitectura que puede manejar grandes cambios en esa parte del sistema. En grandes sistemas de software, esto puede ser en las areas donde una nueva entrada es requerido o una nueva salida se requiere. Suele estar en torno a las interfaces. A veces los cambios en la infraestructura con tecnologia de actualizaciones. Por ejemplo, en el area de las redes de los programas, el diseno se podria hacer para manejar los cambios de nuevos protocolos. En los edificios que dice que se produce el cambio del mas lento al mas rapido con los siguientes conceptos: el Sitio, la estructura, la piel, los servicios, el plan de espacio, y otras cosas. Cambios en el sitio el mas lento y esas cosas en el interior del edificio de los cambios de la forma mas rapida. En el software, esto corresponde a la ubicacion del software en el sistema mas grande, la estructura de los modulos de software, interfaces, cual es el servicio que ofrece el software, el diseno de las interfaces, y los datos que fluyen dentro y fuera de el modulo de software. Todas estas areas se pueden cambiar, pero los disenadores pueden centrarse en las areas de mas rapido el cambio para tener un impacto sobre la creacion de un sistema de adaptarse a los cambios.

La Fachada: Un Edificio / Software de Comparacion

los patrones de Diseno en arquitectura de software definir particular estructura y el comportamiento comunmente utilizados. Un patron como es La Fachada. El fachada patron es un software de diseno de ingenieria patron comunmente usado en la programacion orientada a Objetos. El nombre es, por analogia, a la arquitectura de la fachada.

Una fachada es un objeto que proporciona una interfaz simplificada para un cuerpo mas grande de codigo, tales como una biblioteca de clase. Una fachada:

  • hacer que el codigo que utiliza la biblioteca mas legible, por la misma razon;
  • reducir las dependencias de codigo externo sobre el funcionamiento interno de una biblioteca, ya que la mayoria de codigo utiliza la fachada, lo que permite una mayor flexibilidad en el desarrollo del sistema; [8]

los Edificios tienen fachadas y aunque la fachada no cambia, la construccion en el interior cambia drasticamente. Un ejemplo es el de Boston Athenaeum. Estas dos imagenes muestran el frente de la construccion en 1896 y, a continuacion, en los tiempos modernos. El exterior del edificio es practicamente igual. La fachada se convierte en amo a lo largo del tiempo y es un punto seguro. El edificio se conserva como inmutable a pesar de los enormes cambios que estan ocurriendo en el interior del edificio. De manera similar, en el software de la fachada protege al usuario de la subyacente churn de la aplicacion.

Como La Arquitectura De Software Que Aprende
Como La Arquitectura De Software Que Aprende

la Figura 6 — El Boston Athenaeum

Conclusion

Marca dice que «los Edificios de vivir en el tiempo. En el tiempo de aprender.» senala que los edificios cambian drasticamente con la moda. Diseno de Software y procesos tambien seguir ciertas tendencias. La cascada fue muy popular en los primeros dias de desarrollo de software Agil y proceso son la tendencia comun hoy en dia. Pero, ?estamos de construccion de software que puede cambiar con el tiempo? Los disenadores del edificio puede aprender de tecnicas Agiles. Marca los puntos de edificios que se realizan como una concha, en donde los ocupantes son presentados y permitio a los hongos de los interiores a sus necesidades. Los desarrolladores de Software pueden aprender acerca de como los edificios cambiar con el tiempo que el software debe ser disenado para el cambio y para la funcionalidad especifica. Ambas disciplinas pueden aprender que hacer algun trabajo por adelantado en la mantenibilidad y extensibilidad pagara grandes dividendos en el futuro de la construccion o producto.

Referencias

Relacionadas con la Arquitectura de Software de Articulos

Descripcion del articulo: arquitectura de software Como la arquitectura de Software y diseno de software podria ser comparada con la arquitectura del edificio de la arquitectura de software desarrollo de software, ingenieria de software

Fuente: Como la Arquitectura de Software Aprende

Також ви можете прочитати