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.
· 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
· 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.
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