¿Qué debería proponer para una organización biblioteca de código reutilizable?

StackOverflow https://stackoverflow.com/questions/392587

  •  23-08-2019
  •  | 
  •  

Pregunta

Mi organización ha comenzado lentamente reutilización a un modelo de negocio orientado al producto menos y más modelo de negocio orientado contrato durante el último año o dos. Durante el año pasado, me moví en el nuevo negocio de contratación para ayudar a apagar los incendios y llenar las órdenes. Si bien el año en su conjunto era rentable (y por lo tanto, por lo menos una medida, el éxito, tuvimos un par de proyectos que realmente DINGED nuestros números para el año posterior alrededor de junio.

Yo estaba hablando con mi gerente antes de las vacaciones de Navidad, y mencionó que, aunque no le gusta el término "post-mortem" (no tengo ni idea de lo que está mal con el término, ninguna gente de negocios o gerentes por ahí sabe?), que quería mantener una reunión en algún momento a mediados de enero, donde todo el grupo contrato revisaría el año y tratar de averiguar lo que salió bien, lo que salió mal, y las iniciativas que podemos llevar a cabo para tratar de mejorar la rentabilidad.

Por diversas razones (voy a entrar en más detalles, si es solicitado), creo que una cosa nuestro equipo, y de hecho la organización en su conjunto, se beneficiarían de alguna forma de código compartido organizada. Las mismas cosas se hacen una y otra vez por diferentes personas y que terminan siendo hecho (y rotas) de diferentes maneras. Me gustaría establecer al menos un repositorio donde la gente puede agarrar código que realiza una tarea determinada e incluir (o, de manera realista, copiar / pegar) que el código en sus propios proyectos.

¿Qué debería proponer como un repositorio fuente común viable para un equipo de al menos 10-12 desarrolladores a tiempo completo, además de en cualquier lugar de 5-50 (muy) a los desarrolladores a tiempo parcial que se prestan temporalmente al grupo de contrato para el trabajo especializado?

La respuesta requiere alguna información cultural para cualquier oportunidad de una respuesta razonable, así que va a proporcionar aquí, junto con algunos de mis pensamientos sobre el tema:

  1. Los desarrolladores no se ve obligado a utilizar este repositorio. La barrera a entrada debe ser tan bajo como sea posible para fomentar la participación, o lo hará ser ignorado. Lamentablemente, esto significa que cualquier cosa que requiere una cliente de software adicional para ser instala y ejecuta probablemente fallará. implementación de ClickOnce tan más cerca que podemos conseguir, y eso es muy dudoso.
  2. Somos una tienda de Microsoft con aversión al riesgo. que puede ser capaz de vender soluciones de código abierto, pero que van a ser mirado con recelo. Todos los desarrolladores tienen VSS, el director corporativo ha declarado que VSTS no es viable en el futuro. Si no es demasiado difícil de una instalación y la licencia es liberal, todavía podía tratar de un servidor ninja VSTS en el laboratorio.
  3. Algunos de mis colegas desarrolladores se preocupan por la calidad de grabación, software fiable, algunos no lo hacen. Me gustaría para proteger cualquier código compartido escrito por los que se preocupan de los que no lo hacen. prácticas de gestión de configuración común (como el checkout de código mientras se está trabajando) son completamente ignoradas por al menos una quinta parte de mis colegas en el equipo de contrato.
  4. Lo mejor en procesos de escritura de seguir ellos. Yo más o menos tiene que tener algún tipo de proceso escrito para ser capaz de vender esto a mi manager. Creo que tendrá que ser ligero, flexible, y aplicadas por las herramientas para ser remotamente relevante porque mi manager es la única persona que lo lea.
  5. No asuma las mejores prácticas. Me gustaría mucho incluir cosas como el código obligatoria revisa para hacer cumplir el uso de herramientas de análisis estático (FxCop, StyleCop) en código común. Esto plantea la barra, sin embargo, ya que tales prácticas se llevan a cabo actualmente de una manera consistente.

Yo estaré encantado de proporcionar cualquier información adicional solicitada. :)

EDIT: (Responsing a las preguntas)

Tal vez la contratación no es el término correcto. Somos dueños de nuestros propios absolutamente activos de código. Una parte importante del modelo de negocio en el papel (aunque no, yy, en la práctica) es que somos dueños de los proyectos de código / os escribimos, y podemos volverlos a vender a otros clientes. Nuestros proyectos suelen tomar la forma de añadir alguna funcionalidad especial a uno de los muchos productos de software existentes de la compañía.

¿Fue útil?

Solución

A partir de los sonidos de la misma tiene una oportunidad durante la "post-mortem" para presentar algunas soluciones. Me gustaría crear una presentación sobre sus ideas y presentarlas en esta reunión. Antes de que yo recomendaría que configure algunas soluciones y demostrar que durante su presentación. Algunas cosas que hacer -

  1. Evangelizar programación basada en el componente (A buena lectura es de programación de componentes .NET - Jubal Lowy ). Abogado del DRY (Do not Repeat Yourself) principio de la codificación.

  2. Configurar una ubicación central en común que repositorio de todos sus reutilizables bibliotecas de código. Esto debería tener la implementación de referencia de la biblioteca de código reutilizable.

  3. Que sea fácil para la gente a usar sus bibliotecas de código, proporcionando plantillas de proyectos para escenarios comunes con las librerías de código ya horneados. De esta manera sus colegas tendrán una plantilla consistente para trabajar. Puede aprovechar las capacidades de la plantilla de proyecto VS.NET a esto - echa un vistazo a los siguientes enlaces VSX Sistema de proyectos (VS.Net 2008) , Código artículo del proyecto sobre la creación de plantillas de proyecto

  4. Utilice una herramienta de automatización de construcción como MSBuild (que está incluido en VS2005 y hacia arriba) para copiar sólo los componentes necesarios para un proyecto en particular. Hacer esta parte de la configuración de su acumulación en el IDE (VS.NET 2005 y hasta tienen maneras ingeniosas para establecer pre-y post-compilación compilar las tareas utilizando MSBuild)

  5. Sé que hay una resistencia de soluciones de código abierto, pero aun así, recomendaría configurar y utilizar un sistema de automatización continua como CruiseControl.NET para que pueda aprovechar para compilar y probar sus proyectos de forma regular desde un repositorio central donde la biblioteca de código reutilizable es mantenido. De esta manera cualquier cambio en la biblioteca de código se puede comprobar rápidamente para asegurarse de que no se rompe nada, sino que también ayuda a resaltar problemas de versiones con los diversos proyectos.

Si se puede configurar esto en una máquina y mostrarla durante su post-mortem como parte de las medidas que pueden adoptarse para mejorar, usted debe conseguir mejor compra ya que están mostrando algo ya de trabajo que se pueden ampliar fácilmente .

Espero que esto ayude y lo mejor de las suertes con su evangelismo :-)

Me encontré con este conjunto de marcos llamado recientemente la Chuck Norris Marcos - Están disponibles en NuGet a < a href = "http://nuget.org/packages/chucknorris" rel = "nofollow noreferrer"> http://nuget.org/packages/chucknorris . Definitivamente, usted debe comprobar a cabo, ya que tienen algunas plantillas agradable para sus proyectos ASP.NET. También definitivamente la comprobación Nuget .

Otros consejos

organizar por tema, requieren pruebas de unidad (función de nivel) para el registro de entrada / aceptación en la biblioteca; añadir un wiki para explicar qué / por qué y para la búsqueda

Una pregunta: ¿Usted dice que esto es un grupo de consultoría. ¿Qué activos de código tiene usted? Yo creo que la mayor parte de los esfuerzos de codificación de sus equipos sería propiedad de sus clientes como parte de su contrato de trabajo a sueldo. Si va a hacer esto necesita estar absolutamente seguro de que sus contratos le otorgan derechos al trabajo de sus empleados.

la reutilización de código

Maven ha resuelto en la comunidad de Java -. usted debe ir a ver hacia fuera

Tengo un desarrollador de .NET que se ideó algo similar para nuestro uso interno para ensamblados .NET. Porque no hay ninguna comunidad .NET Internet comparables, esta herramienta solo acceder a un repositorio interno en nuestra red corporativa. De lo contrario va a funcionar bien tanto la forma Maven hace.

Maven realmente podría ser utilizado para gestionar ensamblados .NET directamente (lo usamos con nuestra .swf Flex y módulos de código SWC) es sólo popular .NET tendrían que superar mediante una herramienta de Java y probablemente tendría que escribir una plugin de Maven para conducir msbuild.

En primer lugar para la organización del código de verificación Microsoft Framework Directrices de diseño a cabo en http: //msdn.microsoft.com/en-us/library/ms229042.aspx y luego crear una central de control fuente de ubicación para el nuevo marco que el va a crear. Configurar algunos espacios de nombres por defecto, asambleas de separación más limpia y asegurarse que todos se una acumulación diaria.

Sólo un punto adicional, ya que hemos "código compartido" en mi tienda así.

Nos dimos cuenta de que esto es en gran medida un tema envases :
Cualquiera que sea el código del teléfono están produciendo o herramienta que está utilizando, lo que debe tener es un común herramienta de construcción capaz de paquete sus fuentes en un "componente de entrega", con todo lo que utiliza para de hecho ejecutar el código, sino también la documentación (comprimido), y la fuente (comprimido).

El principal interés en tener una "unidad de volumen de suministro" tal es tener como menor archivos para desplegar posible , con el fin de facilitar la descarga de esas unidades .

El proceso de construcción muy bien puede ser administrado por cualquier otro (/ Nant hormiga) herramienta que desee o Maven.

Cuando algún equipo de auditoría desea examinar todos nuestros proyectos, que acabamos de desplegar en su puesto los mismos paquetes que desplegamos en una máquina de producción, salvo que se sin comprimir los archivos de origen y hacer su trabajo.

Desde nuestros archivos de origen también incluye aquellos ficheros son necesarios para compilar ellos (como por ejemplo eclipse de archivos ), incluso pueden volver -compile esos proyectos en su entorno de desarrollo).


De esa manera:

  1. Los desarrolladores no se verá obligado a utilizar este repositorio. La barrera de entrada debe ser lo más bajo posible para fomentar la participación, o será ignorado : es simplemente una secuencia de comandos para ejecutar para obtener el "módulo de suministro" con todo lo que necesitan (un repositorio Maven puede ser utilizado para que también)

  2. Somos una tienda de Microsoft con aversión al riesgo : se puede utilizar cualquier repositorio que desea

  3. Algunos de mis colegas desarrolladores se preocupan por calidad de la escritura, software fiable, algunos no : esto no tiene nada que ver con la calidad del código escrito en estos módulos de paquetes

  4. Lo mejor en procesos de escritura de seguirlas : el único proceso involucrado en esto es el proceso de envasado, y puede ser bastante automatizado

  5. No asuma las mejores prácticas . No está obligado a aplicar cualquier tipo de análisis de código estático antes de empaquetar los archivos ejecutables y de fuente

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top