viernes, 11 de noviembre de 2011

Organización: Introducción a la organización de una empresa de software

La organización en una empresa de software[1]


En esta sección se analizan algunos de los aspectos de una organización que afectan a la forma de sistemas de software llegado a ser. Esta es un área grande, que tiene trabajos de investigación (Allen 1997a, 1997b;. Allen et al 1998) y libros enteros (Weinberg, 1991; Brooks 1975) dedicado a ella, por lo que sólo mencionaré algunos de los factores más relevantes aquí.
El desarrollo de software es, en muchos aspectos, una disciplina social. La organización puede influir significativamente en cómo se diseña un producto y cómo se estructuran los equipos. Las cosas pueden ponerse difíciles cuando sus conflictos con enfoque de desarrollo de las estructuras de la organización imponen. Cambio de la estructura de la organización es a menudo la mejor, lo más difícil, fijar. Incluso si el cambio de la organización es imposible, el verdadero peligro está en no reconocer estas influencias y en centrarse únicamente en las tareas de programación inmediata.

La organización tiene una influencia desde la perspectiva de la estructura de espacio de trabajo y de control de versiones, porque la estructura de la organización limita la comunicación. La organización afecta a la comunicación por la distancia entre las personas y equipos. La distancia es una medida de lo difícil que es para los equipos y los miembros del equipo de interactuar. Puede ser por la distancia física, pero no siempre. Estructura de la organización reparte las responsabilidades, que también pueden hacer la comunicación más si las responsabilidades no están divididas de manera consistente con las necesidades de la aplicación.
La organización puede ser más sutil en su influencia sobre la arquitectura y la forma de trabajar. La naturaleza de la organización y su cultura limitan la dinámica del equipo, la arquitectura, los objetivos del proceso de desarrollo, y cómo se manejan los problemas.
La distancia es aproximadamente la siguiente:
·         Ubicación física. Los equipos que no están físicamente cerca puede tener un menor ancho de banda de comunicación.
·         La dinámica de la cultura y el equipo. Una cultura adecuada puede dar lugar a equipos que están separadas físicamente con muy buena comunicación y también puede dar lugar a la gente en la misma habitación que la comunicación muy pobre.
·         Estructuras organizativas que determinan las vías de comunicación. Este es un aspecto de la cultura ya la comunicación no tiene por qué seguir las estructuras corporativas, pero si se trata de una ética en su organización, usted haría bien en tener las vías de comunicación de arquitectura sigue las fronteras de la organización.
¡Tienes que ser consciente de los efectos de la distancia de la organización, y le invitamos a ser un agente de cambio para mejorar la visión a largo plazo, sino que simplemente la construcción de las estructuras de trabajo para que sean robustas frente a estas cuestiones de organización va a generar una ganar a lo grande.
Algunas influencias de la organización incluyen otros
·         Conjuntos de habilidades de las personas
·         Distancia, que abarca muchas cosas, como la distancia física
·         Valores y la cultura
·         Ubicación del personal y otros recursos
·         Equipo de la estabilidad
·         Tipo de empresa: la empresa de consultoría en comparación producto de la empresa frente a la empresa de productos específicos de los clientes con los cambios

La estructura de una organización puede tener un gran impacto en cómo el software se construye y por lo tanto en las necesidades de coordinación. Las fuerzas de la organización pueden tener un impacto muy fuerte en la arquitectura del producto y pueden controlar aspectos del proceso tales como cuándo y cómo se crean versiones, probado, y así sucesivamente. Está más allá del alcance de este libro que le diga cómo para que coincida con el proceso de producción y la arquitectura para adaptarse y aprovechar la estructura de la organización. Se describen brevemente algunas de las cuestiones de modo que usted pueda entender mejor.
Aunque muchos dicen que un entorno de desarrollo ideal tiene desarrolladores que están cerca unos de otros y que se comunican con eficacia, muchas organizaciones tienen recursos reales que se encuentran geográficamente distribuidos, y hay que ayudarlos a trabajar bien juntos. Una forma es distribuir las responsabilidades para que los grupos a distancia puedan tener interfaces muy bien definidos entre ellos y pocas dependencias. También es necesaria la estructura del sistema de control de versiones para que la gente en todos los lugares se pueda ver todo el código fácilmente.
Algunas influencias de la organización en la arquitectura que son particularmente relevantes son los siguientes.


Estructura del módulo (Bass et al. 1998). Los módulos deben ser desarrollados por personas que pueden trabajar bien juntos, y aspectos como la geografía o la experiencia de la tecnología pueden determinar que ciertos componentes deben ser desarrolladas por ciertos grupos. Hay una interacción con la arquitectura del producto aquí, puede que tenga que tomar la decisión de asignar un componente a un grupo con la experiencia técnica más adecuada, por ejemplo, o un grupo con menos habilidades técnicas, sino en una mejor posición para interactuar (por todos los medios apropiados, esto no es un argumento a favor de la proximidad geográfica) con los grupos que interactúan con el producto del trabajo.


Política de integración: ¿Con qué frecuencia todos los componentes de un sistema se integran a menudo en función de la política de la organización.


Gestión  de espacio de trabajo: ¿Cómo configurar el entorno de desarrollo local y la forma en que su espacio de trabajo se relaciona con los demás.


Control e identificación de versiones: ¿Cómo utilizar las herramientas de control de código fuente y otros medios para coordinar los cambios con los demás, publicar los cambios, y se reproducen los ambientes, como por ejemplo cuando se necesita para corregir un error en una versión anterior. Esto incluye cuestiones tales como la ramificación y etiquetado, que a menudo causa una gran consternación.


Coordinación: ¿Cómo se trabaja en conjunto con otros equipos y desarrolladores.


Identificación y Auditoría: ¿Cómo sabes lo que has construido?.


[1] Software Configuration Management Patterns: Effective Teamwork, Practical Integration por Stephen P. Berczuk, Brad Appleton

0 comentarios:

Publicar un comentario

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Best Hostgator Coupon Code