Diseño de un sistema de gestión de una operación de desarrollo de software, usando métodos ágiles y modelos de calidad



Documentos relacionados
Un entorno de aprendizaje activo de ingeniería de software basado en la integración Universidad-Industria

Calidad de Software - CMM

Qué es el Modelo CMMI?

CMMI (Capability Maturity Model Integrated)

Programa de Desarrollo Profesional en Mejora del Proceso de Software

Desarrollo de un ciclo de mejora Construcción de un método de diagnóstico

Proceso: AI2 Adquirir y mantener software aplicativo

CAPITULO I: PLANTEAMIENTO DEL PROBLEMA

FÁBRICA DE SOFTWARE. Presentado por: Ing. Juan José Montero Román Gerente de Fábrica de Software USMP

SÍNTESIS Y PERSPECTIVAS

Proyecto Tutelkán Tutelkán - Descripción General del Proyecto

Estándar CMMI. Disciplinas del CMMI. Modelo continuo y modelo por niveles.

DIRECCION DE PROYECTOS II

Elementos requeridos para crearlos (ejemplo: el compilador)

Sede y localidad Licenciatura en Sistemas

E a v l a ua u c a i c ón ó n de d l e Pr P oc o e c s e o s o de d Ing n e g n e i n er e ía a de d e So S f o twa w r a e

Modelos de Ciclo de Vida de Desarrollo de Software en el Contexto de la Industria Colombiana de Software

CAPÍTULO 4. FORMA DE EVALUACIÓN CMM. 4.1 Evolución de los métodos de valoración del SEI

Exsis Software & Soluciones S.A.S

DIRECCION DE INVESTIGACIÓN (DI/11/12) INFORMACIÓN PARA LA APLICACIÓN

Programa de Desarrollo Profesional en Mejora del Proceso de Software

Testing ágil en las Empresas de Software del. Cluster TIC Villa María

Definición de un Proceso de Implantación de Sistemas

PROGRAMAS ACADÉMICOS CARRERAS ONLINE ADMINISTRACIÓN PÚBLICA

NUESTRO TRABAJO MISIÓN VISIÓN. Gracias a que nos identificamos con nuestros. clientes, podemos reconocer, entender y satisfacer rápidamente

Maestría en Dirección Estratégica en Ingeniería de Software

Maestría en Proyectos de Arquitectura y Urbanismo

SW-CMM (CMM for Software)

SISTEMAS Y MANUALES DE LA CALIDAD

Los procesos de software. Un proceso de software se define como un:

Seminario de Especialización Profesional y Seminario de Elaboración de Trabajo de investigación

CAPITULO VI PLAN DE IMPLEMENTACIÓN DEL SISTEMA DE PRESUPUESTOS DE COSTOS DE TIEMPOS ESTÁNDARES DE CONFECCIÓN DE PRENDAS DE VESTIR DE TEJIDO DE PUNTO.

MAESTRÍA EN INGENIERÍA DE COMPUTACIÓN Y SISTEMAS CON MENCIÓN EN GESTIÓN DE TECNOLOGÍAS DE LA INFORMACIÓN

Modificación y parametrización del modulo de Solicitudes (Request) en el ERP/CRM Compiere.

Programa de Desarrollo Gerencial. Programas Ejecutivos

ITBA - UPM MAGISTER EN INGENIERIA DEL SOFTWARE ANTEPROYECTO DE TESIS

Plan de Estudios. Diploma de Especialización en Seguridad Informática

ISO 9000 Escuela de Ingeniería de Sistemas y Computación Desarrol o de Software II Agosto Diciembre 2007

Hoja Informativa ISO 9001 Comprendiendo los cambios

CAPÍTULO 1. INTRODUCCIÓN

Experiencias de la Televisión Digital Interactiva en Colombia - ARTICA

10 PRÁCTICAS BASALES DE LA GESTIÓN DE PROYECTOS INFORMÁTICOS EN CUBA

COMPILACION BIBLIOGRAFICA PMBOK, OPM3 JHON FREDY GIRALDO. Docente: Carlos Hernán Gomez Asignatura: Auditoria de Sistemas

Unidad 1. Fundamentos en Gestión de Riesgos

CURSO COORDINADOR INNOVADOR

TECNÓLOGO EN INFORMÁTICA PLAN DE ESTUDIOS

Administración por Procesos contra Funciones

Finanzas. Magíster. Administración de Empresas

Presentación del Curso Virtual GESTIÓN DE TALENTO HUMANO

.. / / Firma del Director Apellido y Nombre Fecha

Universidad Ricardo Palma Facultad de Ingeniería

Método WATCH UNEFA NUCLEO ZULIA SIM 6B 2010

ESCUELA DE POSTGRADO DE LA UNIVERSIDAD PRIVADA DE TACNA. Programa de Maestría en Informática PLAN DE ESTUDIOS MAESTRÍA EN INFORMÁTICA

VICERRECTORÍA DE ADMINISTRACIÓN Y ASUNTOS ECONÓMICOS DIRECCIÓN DE DESARROLLO DE PERSONAS. Estructura de Cargos y Competencias Institucionales

SW-CMM Capability Maturity Model for Software

GESTIÓN Y DIRECCIÓN ESTRATÉGICA DE PROYECTOS. Docente Irina Jurado Paz

UN RECORRIDO POR LA FAMILIA ISO

CAPÍTULO 2. MODELOS Y ESTÁNDARES DE CALIDAD DE SOFTWARE

EXPERIENCIAS EN LA IMPLANTACIÓN DE UN SISTEMA DE GESTIÓN DE LA CALIDAD PARA EL PROCESO DE PRODUCCIÓN DE SOFTWARE

Portafolio de Servicios.

CAPITULO I MARCO CONCEPTUAL 1.1 PLANTEAMIENTO DEL PROBLEMA

PLAN INTEGRADO DE FORMACIÓN Y DESARROLLO DE PROFESORES UNIVERSITARIOS

Introducción a la Gerencia de Proyectos. Resumen. Introducción.

DISEÑO CURRICULAR EN COLOMBIA. EL CASO DE LAS MATEMÁTICAS

CAPÍTULO 1 PLANTEAMIENTO DEL PROBLEMA

Describir una metodología sistemática de análisis de los procesos organizacionales y cómo estos pueden ser apoyados por las TI.

Capacidades Requeridas en un Help Desk Manager

CAPITULO I. Introducción. En la actualidad, las empresas están tomando un papel activo en cuanto al uso de sistemas y

Implementación de Procesos Business Process Management BPM Services Oriented Architecture SOA

Diseño e implementación de una Oficina de Proyectos

Dirección General de Educación Superior Tecnológica

Tecnologías y servicios para la Administración Pública del S.XXI

Méndez, Arturo Corona Ferreira Fecha de elaboración: 28 mayo de 2010 Fecha de última actualización:

CMM - Capability Maturity Model. Estructura de CMM... Componentes de CMM. Estructura de CMM

Metodologías Ágiles Desde una Perspectiva de Project Management. Fernando Contreras Velásquez Project Management & Engineering Services.

Máster en Política y. Gestión Universitaria. Programa de Posgrado en Política y. Gestión Universitaria. Universidad de Barcelona

Plan de Estudios Maestría en Marketing

Estudios de Economía y Empresa Trabajo Final de Grado Plan de marketing

Máster Oficial Universitario en Habilidades Directivas, Coaching y Factor Humano en la Empresa

Mapa de procesos de la Universidad

PRODUCTIVIDAD DE PROYECTOS DE DESARROLLO DE SOFTWARE: FACTORES DETERMINANTES E INDICADORES

PERFIL PROFESIONAL DE LA CARRERA

Copyright, e-strategia Consulting Group, S.A. de C.V. o subsidiarias, Monterrey, México. Todos los Derechos Reservados.

Ingeniería de Software

Master en Gestion de la Calidad

Una estructura conceptual para medir la efectividad de la administración

CURSO DE GESTIÓN DE PROYECTOS PMI ORIENTADO A OBTENER LA CERTIFICACIÓN PMP

CURSO DE GESTIÓN DE PROYECTOS PMI ORIENTADO A OBTENER LA CERTIFICACIÓN PMP

14. Ingeniería de software. Ing. Alejandro Adorjan

CURSOS IN-HOUSE PARA FORTALECER HABILIDADES DE GESTIÓN Y MEJORAR LA PRODUCTIVIDAD

I INTRODUCCIÓN. 1.1 Objetivos

Software de Simulación aplicado a entornos de e-learning

A.N.E.P. Consejo de Educación Técnico Profesional Educación Media Tecnológica. Orientación: INFORMÁTICA ASIGNATURA PROYECTO

DIRECCIÓN DE PROYECTOS

Dirección Estratégica de Tecnologías de la Información

BPM: Articulando Estrategia, Procesos y Tecnología

GUIA SOBRE LOS REQUISITOS DE LA DOCUMENTACION DE ISO 9000:2000

Acuerdo Marco Vinculación con el Mundo del Trabajo en el Tercer Ciclo de la EGB

Transcripción:

WICC 2012 472 Diseño de un sistema de gestión de una operación de desarrollo de software, usando métodos ágiles y modelos de calidad Mg. Natalia Andriano Lic. Miguel Insaurralde Ing. Marcela Garay Moyano Ing. Mabel Sosa Esp. Alvaro Ruiz de Mendarozqueta Laboratorio de Investigación y Desarrollo en Ingeniería y Calidad de Software http://www.institucional.frc.utn.edu.ar/sistemas/lidicalso/ Departamento de Ing. en Sistemas de Información Universidad Tecnológica Nacional Maestro M. López esq. Cruz Roja Argentina (X5016ZAA) Ciudad Universitaria, Córdoba, Argentina. Tel. +54 (351) 468-6385 nandriano@sistemas.frc.utn.edu.ar; {mainsaurralde; marcelagaraym; mabelalesosa; aruizdemendarozqueta}@gmail.com RESUMEN Para las organizaciones en las que el desarrollo de software es un factor clave y necesitan dar respuesta a una demanda cada vez más exigente en términos de costos, plazos, prestaciones y calidad, el "sistema de gestión para una operación ágil de software con modelos de calidad" plantea un enfoque centrado en la generación de valor desde concepto a producto con un estilo colaborativo que permita alinear todas las funciones intervinientes (RR.HH., comercial, etc.). A diferencia de otros sistemas de gestión más tradicionales basados en división por áreas, que carecen de un enfoque integrado y están más orientados a políticas y procesos a ser instanciados, este sistema de gestión propone partir desde una visión compartida, cuyos principios y valores fundamentales abarquen a toda la organización y den sentido a la estructura generando un mayor compromiso, participación e involucramiento de sus integrantes. Se vale para ello del pensamiento sistémico y su perspectiva holística, integrando métodos ágiles y principios Lean con modelos de calidad (CMMI, ISO) que en su conjunto permitan tener equipos competitivos altamente enfocados y que favorezcan la evolución y adaptación permanente de la organización en búsqueda de la excelencia. Palabras clave: ágil, Lean, Scrum, marco de trabajo organizacional, pensamiento sistémico, ISO, CMMI. CONTEXTO Desde el año 2007 el Laboratorio de Investigación y Desarrollo en Ingeniería y Calidad del Software (LIDICALSO) de la Universidad Tecnológica Nacional Facultad Regional Córdoba se ha enfocado en la investigación de la aplicación de modelos, procesos y normas relacionados con mejorar la calidad del desarrollo del software (LIDICALSO: 2007) (LIDICALSO: 2008) (LIDICALSO: 2010) (LIDICALSO: 2011). En este caso, el proyecto tiene como objetivo principal la investigación y desarrollo de un diseño de un sistema de gestión de una operación de desarrollo de software, usando métodos ágiles y modelos de calidad. Específicamente la idea es realizar una implementación de un modelo generado que permita integrar a las prácticas identificadas de una norma/estándar, los procesos de gestión y los procesos de desarrollo de software y la forma en que éstos son implementados en una organización, en términos de una definición de proceso de desarrollo de software. Dentro del laboratorio un total de 20 investigadores actualmente están participando en el mismo, entre los que se encuentran profesionales, docentes y estudiantes. Actualmente se está trabajando en las tres últimas etapas. 1. INTRODUCCION

WICC 2012 473 Cada organización que desarrolla software tiene definido un proceso de desarrollo, basado generalmente en alguna metodología estándar de la industria, como por ejemplo metodologías ágiles (Agile Manifesto: 2001); como así también en modelos y estándares orientados a la gestión de calidad como CMMI (CMMI: 2008) o las normas ISO (ISO9001:2008). Esto implica que las organizaciones definen sus procesos de desarrollo en pos de cumplir con la aplicación de estas normas, modelos y estándares, pudiendo utilizar para ello las herramientas previamente explicadas. En algunos casos, la implementación a rajatabla de las recomendaciones del modelo, trajo como consecuencia implementaciones excesivamente burocráticas de las prácticas recomendadas por los mencionados modelos. A su vez, en la última década han surgido nuevas técnicas y procesos bajo el paraguas conceptual de métodos ágiles, con el objetivo de evitar el problema antes mencionado, hacer más efectivo el desarrollo de software y optimizar las relaciones interpersonales que se ponen en juego en los proyectos de construcción de software. Tratar a los procesos de software sin la debida contextualización y sin abordar la complejidad inherente de los proyectos de software, acarrea muchos de los problemas que hacen fracasar a las recomendaciones de los modelos de calidad. Es por esto que proponemos el diseño y el desarrollo de la arquitectura de un sistema de gestión para una operación de proyectos de software, que conjugue a las modalidades más comunes del negocio, a los modelos de calidad más usados y a los procesos, técnicas y herramientas de desarrollo de software más avanzados. Todo esto en el contexto que permita contemplar todos los aspectos que hacen a la participación de las personas en dichos proyectos, como ser entrenamiento, carrera, motivación, responsabilidad social, liderazgo, desarrollo, innovación, creatividad, etc.; como así también, a las funciones necesarias para el funcionamiento de la organización como las administrativas y financieras. Por ello es menester considerar el enfoque sistémico (Senge: 1992) y las relaciones causa efecto existentes entre los elementos (Weinberg: 1993) para que el diseño permita orientarse a las relaciones sistémicas para poder administrarlas. Con respecto a los modelos de calidad, especialmente el CMMI (CMMI: 2011), podemos destacar su propósito de proveer una guía para la mejora de los procesos organizacionales y la habilidad para administrar el desarrollo, adquisición y mantenimiento de productos y servicios. CMMI (CMMI: 2011) coloca prácticas probadas en una estructura que ayuda a las organizaciones a evaluar su nivel de madurez o la capacidad de sus áreas de proceso, a establecer prioridades de mejora y a implementar esas mejoras. Además incluye al entrenamiento del personal como una de sus áreas de proceso colocándolo como un factor decisivo en la mejora de la calidad de procesos y productos. Su propósito es desarrollar las habilidades y conocimientos de las personas para que puedan realizar sus roles de una forma eficaz y eficiente (CMMI: 2011). De esta manera vemos una clara relación con el énfasis que las prácticas ágiles hacen en las relaciones interpersonales y las habilidades de los participantes y la búsqueda de la eficiencia (Agile Manifesto: 2001) Si bien el manifiesto de los métodos ágiles (Agile Manifesto: 2001) puede haberse visto como una contraposición a los que adherían a los modelos de calidad como CMMI, la discusión de la integración de aquello que aparecía como disjunto, surgió rápidamente (Beck, 2003); dando lugar además a la participación y discusión de un histórico referente en la ingeniería del software como es Barry Boehm (Boehm, 2003). Esta integración ha hecho que el CMMI adoptara recomendaciones explícitas sobre el uso de métodos ágiles. Entre las distintas disciplinas ágiles ha surgido una que adopta el paradigma Lean muy conocido en la industria de la manufactura (Poppendick: 2003). Si entendemos que el principio subyacente en la

WICC 2012 474 mejora de los procesos de desarrollo de software, principio que usa el CMMI (CMMI: 2011), es el que dice que la calidad de los procesos de desarrollo de software influye en la calidad de los productos de software (Humphrey:1989), entonces podemos ver que el enfoque Lean para los procesos de desarrollo de software, es un paradigma de gestión que además de cumplir el principio básico mencionado enfatizando la eficiencia del proceso, énfasis que entendemos que el CMMI incluye, y que reclama el manifiesto ágil (Agile Manifesto: 2001). Los problemas que surgen del hecho de plantear un proceso para hacer ingeniería de software y las características, habilidades y comportamiento de las personas que ejecutan las prácticas no son el resultado de los intentos de aplicación de métodos ágiles ni patrimonio de los modelos de calidad. Son el resultado de hacer ingeniería de software y son conocidos desde hace mucho tiempo como puede verse en dos autores absolutamente clásicos que abordan el tema: Brooks y Weinberg, (Brooks: 1995), (Weinberg: 1998). Es por ello menester contemplar estos enfoque en el diseño de un sistema de gestión que pueda evitar a la mayoría de los problemas típicos. Los temas a abordar están profusamente desarrollados de manera individual, parte de esto fue mencionado en el PID: Implementación de un modelo de validación de procesos de desarrollo de software oportunamente aprobado con el código: EIUTNCO981 (Szyrko et al: 2009) (Szyrko et al: 2010) Es por ello que existe variada bibliografía sobre procesos de desarrollo de software, sobre modelos de calidad, sobre gestión de organizaciones y sobre métodos, herramientas y técnicas de desarrollo de software actualizados. 2. LINEAS DE INVESTIGACION y DESARROLLO Como se mencionó, este proyecto está relacionado de manera individual con el proyecto realizado anteriormente (Szyrko et al: 2009) y (Andriano et al: 2011). Es por lo tanto, que toma como base el conocimiento adquirido por los mismos en áreas tales como: modelos, procesos, CMMI (CMMI: 2008) e, ISO (ISO9001: 2008), metodologías ágiles, SCRUM (SCRUM). La figura 1 muestra a continuación la línea de investigación. Figura 1: Resumen de la línea de investigación propuesta

WICC 2012 475 Figura 2: Etapas y resultados esperados de la investigación La figura 2 presenta las etapas planteadas que se detallan seguidamente: 1. Estudio exploratorio de las herramientas, técnicas y métodos denominados ágiles para el desarrollo de software y su referencia en los modelos de calidad, con el fin de conocer el estado del arte. 2. Análisis de qué elementos conforman una gestión de operaciones de desarrollo de software, tanto en los modelos que producen softwareproducto como aquellos modelos organizacionales para las denominadas software factory o combinados. 3. Desarrollo del mapa de problemas existentes en organizaciones y sus posibles causas con los elementos del modelo de gestión. 4. Análisis de cómo se integran los métodos ágiles para la construcción de software con los modelos organizacionales de gestión de las operaciones de software. 5. Análisis de la factibilidad de usar prácticas y métodos ágiles como Lean o Kanban (Patton: 2009), por ejemplo, para optimizar los procesos de gestión organizacionales en la gestión del talento incluyendo el entrenamiento y educación. 6. Diseño y validación cuantitativa propiamente dicho del modelo de gestión integrado. 7. Ejecución de un proyecto piloto para implementar el modelo de gestión. 3. RESULTADOS OBTENIDOS y OBJETIVOS Hasta el momento contamos con los materiales generados en los proyectos que están relacionados como: Implementación de un modelo de validación de procesos de desarrollo de software; Implementación de modelos de madurez en empresas locales y en menor medida (Szyrko et at: 2009): Implementación de un sistema generador de e-learning para desarrollo de SW (Andriano et at: 2010) y Implementación de metodologías ágiles mediante herramientas automáticas de definición de procesos (Andriano et at: 2011) Hemos podido recabar información sobre evaluaciones de calidad realizadas en empresas locales usando CMMI e ISO, de esta manera hemos podido obtener información de primera mano sobre prácticas de gestión del desarrollo de software y la optimización de los procesos de desarrollo

WICC 2012 476 utilizados. En los proyectos antes mencionados se incluyeron conocimientos generados de la implementación de métodos ágiles de desarrollo de software que alimentarán a este proyecto. Los integrantes del proyecto cuentan a su vez con experiencias combinadas en: administración y control de proyectos, gestión gerencial en operaciones de desarrollo de software, gestión de calidad, uso de métodos ágiles tales como: SCRUM, XP, TDD, PP, Lean para desarrollo, etc. En esas experiencias previas se han desarrollado marcos de trabajo que servirán como entradas a este proyecto. 4. FORMACION DE RECURSOS HUMANOS A nivel académico, la transferencia de los resultados del programa es realizada a través del desarrollo inicial de investigadores relacionados a la temática y el dictado de seminarios y conferencias, introduciendo a alumnos y docentes en los temas relacionados a la implementación de modelos de calidad en las organizaciones y la validación de los mismos. En particular, actualmente están participando del programa 6 alumnos de la Maestría en Ingeniería de Sistemas de Información de la UTN-FRC (6 tesistas), 3 alumnos becarios de la carrera de Ingeniería de Información de la misma Facultad y 1 práctica profesional supervisada. A esto se le suma la contribución de 3 investigadores categorizados a través de la participación en este programa. Finalmente, el proyecto cuenta con dos personas representantes de la Industria del software que se integran así a las actividades de investigación y docencia Universitaria. Además, los resultados obtenidos hasta el momento han permitido actualizar las currículas de materias de grado y postgrado en la carrera de Ingeniería y Maestría de Sistemas de Información de la UTN-FRC, respectivamente.

WICC 2012 477 5. REFERENCIAS (AgileManifesto: 2001) (Andriano et al: 2010) (Andriano et al: 2011) Agile Manifesto 2001, Ward Cunningham http://agilemanifesto.org/ Andriano, Natalia; Rubio, Diego; Szyrko, Pablo; Silclir, Mauricio. Un entorno de aprendizaje activo de ingeniería de software basado en la integración Universidad-Industria". WICC 2010. Andriano, Natalia; Sosa, Mabel; Belleze, Marcela. Implementación de metodologías ágiles mediante herramientas automáticas de definición de procesos. WICC2011 (Beck, 2003) Agility through Discipline: A Debate; Kent Beck, Barry Boehm; Computer June 2003 (Boehm, 2003) Barry Boehm, Richard Turner; Balancing Agility and Discipline: A Guide for the Perplexed; Addison-Welesy, 2003 (Brooks, 1995) The Mythical Man-Month; Fred Brooks; Addison Wesley (CMMI:2008) (CMMI:2011) Software Engineering Institute (SEI). Capability Maturity Model Integration Version 1.1 (CMMI-SE/SW/IPPD/SS, V1.1). CMU/SEI-2002-TR-011 - ESC-TR-2002-011. Pittsburgh, Pennsylvania, USA. CMMI Product Team. Marzo 2002. CMMI Product Team; 2011; Capability Maturity Model Integration Version 1.3 (CMMI-SE/SW/IPPD/SS, V1.3); Software Engineering Institute - Carnegie Mellon University; Pittsburgh, USA. (Humphrey:1989) Watts S. Humphrey; Managing the software Process; MA: Addison-Wesley, 1989. (ISO9001:2008) International Organization for Standarization. ISO9001: 2008 Sistemas de gestión de la calidad - Requisitos. ICS 01.040.03. ISO copyright office. En línea. 2008. (LIDICALSO) (LIDICALSO: 2007) (LIDICALSO:2010) (LIDICASO:2008) (LIDICASO:2011) (Patton: 2009) Laboratorio de Investigación y Desarrollo en Ingeniería y Calidad del Software. http://www.institucional.frc.utn.edu.ar/sistemas/lidicalso/ Proyecto de Investigación: Desarrollo y transferencia de conocimientos teóricos y prácticos para la implementación del modelo CMMI en empresas de software.(código: EIPRCO779) Proyecto de Investigación: Sistema generador de e-learnings de procesos de desarrollo de software mediante simulaciones interactivas. (Código: UTN1168) Proyecto de Investigación: Implementación de un modelo de validación para la definición y mantenimiento de procesos de desarrollo de software. (Código: EIUTNCO981) Proyecto de Investigación: Implementación de metodologías ágiles mediante herramientas automáticas de definición de procesos (Código: UTN1408) Jeff Patton. Kanban development oversimplified (Poppendick: 2003) Mary Poppendick, Tom Poppendick; Lean Software Development; Addison-Wesley, 2003 (SCRUM) (Senge, 1992) (Szyrko et al:2009) (Szyrko: 2010) (Weinberg, 1993) (Weinberg, 1998) http://www.scrumalliance.org/ La Quinta Disciplina; Peter Senge; Granica Szyrko, Pablo; Silclir, Mauricio; García Favre, Gonzalo; Rubio, Diego; Cohen, Diego; Angeloni, Romina. Un modelo de validación automático para la definición y mantenimiento de procesos de desarrollo de software XI Workshop de Investigadores en Ciencias de la Computación (WICC). San Juan - Argentina. Mayo 2009. http://www.wicc2009.com.ar/ Pablo Szyrko, Diego Rubio. Definición de metamodelo para la validación de procesos de software organizacionales basados en modelos estándares".wicc 2010. Quality Software management: Volume 1 Systems Thinking; Gerald Weinberg Dorset House The Psychology of Computer Programming; Gerald Weinberg; Dorset House