1 Calidad en Software: Proceso de Ingeniería de Software Dr. Cuauhtémoc Lemus Olalde Centro de Investigación en Matemáticas A. C. (CIMAT) Febrero, 2003 Calidad en Software: Proceso de Ingeniería de Software Dr. Cuauhtémoc Lemus Olalde Centro de Investigación en Matemáticas A. C. (CIMAT) Febrero, 2003 Universidad Tecnológica del Norte de Guanajuato Cuarta Expo Informática Universidad Tecnológica del Norte de Guanajuato Cuarta Expo Informática
2 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoftCalidad Conjunto de cualidades (etimología similar) de una persona ó cosa –Lo que hace que una persona o cosa sea lo que es –Propiedad, carácter –Atributo, don, virtud, modalidad Superioridad, excelencia de alguna cosa ImportanciaCalificación –Calidad de vida –Calidad de la educación –Calidad del servicio Educación de los hijos
3 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Que se esta haciendo en Calidad del Software? Adopción de modelos y estándares –CMM –SPICE –ISO 9001, etc. Mejoramiento de procesos de software a través de técnicas y métodos estadísticos –PSP (Personal Software Process) –TSP (Team Software Process) –Seis Sigma Software Desarrollo de Software (Calidad del Producto) –Arquitectura de Software –Líneas de Productos
4 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Perspectiva General La Ingeniería de Software es una disciplina que estudia metodologías y enfoques de desarrollo de sistemas a gran escala. Integrar a IS metodologías de organización y administración para formar una ambiente de IS basada en procesos.
5 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoftHistoria En sus inicios IS se enfocó a aspectos técnicos: –metodologías de programación, –lenguajes de programación, –modelos de desarrollo de software –herramientas En la industria el rol importante paso de los programadores a líderes de proyecto y administradores empresariales
6 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoftHistoria Los programadores requieren de tecnologías de programación. Los administradores y requieren de metodologías y estrategias. Los líderes de proyecto requieren de metodologías de calidad (aseguramiento de la calidad) Aspectos actuales de IS: –Metodología e Infraestructura de Desarrollo –Organización –Administración
7 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoftHistoria Las actuales metodologías de IS son inadecuadas. Se requiere de un proceso de Ingeniería de Software. Un proceso de IS incluye: –Prácticas empíricas de Desarrollo (Métodos, Modelos, Enfoques, Etapas) –Modelo Abstracto de las actividades de desarrollo. –Metodologías de Ingeniería para el desarrollo, organización y administración de sistemas a gran escala.
8 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Modelos de Procesos de IS CMM (Capability Maturity Model) ISO 9001 BOOTSTRAP ISO/IEC 15504 (SPICE – Software Process Improvemente ?) Modelo vs. Ciclo de Vida –El modelo consiste de fases o etapas y esta orientado al desarrollo de software, y el modelo consiste de procesos cubriendo todas las practicas en un proyecto de software (organización, administración y desarrollo)
9 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Modelos de Procesos de IS Esfuerzos de investigación (Humprey 95, Kugler & Rementeria 95, Pfleeger 98) indican un cambio de enfoque: –En lugar de controlar la calidad en el producto final de software, se optimizará el proceso del cual se produce el software. Actualmente el desarrollo de aplicaciones de software son proyectos de software (un solo sistema), pero el proceso podría definirse, estabilizarse, reutilizarse y estandarizarse.
10 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Definición IS (1969) Ingeniería de Software –Establecimiento y uso de principios de ingeniería para obtener software económico que es confiable y funciona eficientemente (Naur & Randell 69) Características –Complejidad y diversidad –Dificultad en establecer y estabilizar los requerimientos –Software es cambiante (maleable) –Abstracción e intangibilidad de los productos de software –Requisito de variar conocimiento del dominio del problema –Diseño no-determinístico y con soluciones múltiples –Uso de varios lenguajes y polimorfismo en la implementación –Dependencia en las interacciones entre software, hardware y el usuario
11 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Definición IS (1991) Ingeniería de Software es la ciencia y arte de especificar, diseñar, implementar y evolucionar, en forma económica, a tiempo y elegante, programas, documentación, y procedimientos operativos para que las computadores puedan ser útiles (McDermid 91) IS-69: es un método para el desarrollo de software IS-91: una ciencia y arte de programación.
12 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Definición (1998) Ingeniería de Software es una disciplina que adopta enfoques tales como –Metodologías –Procesos –Herramientas –Estándares –Métodos de Organización –Métodos de Administración –Sistemas de aseguramiento de calidad Para desarrollar software a gran escala con una alta productividad, bajo costo, calidad controlada, y agendas de desarrollo mensurables.
13 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Comparando Definiciones de IS Def.NaturalezaSignificadoObjetivoAtributos1969 Un método Principios genéricos de IS Software Económico Económico Confiable Confiable Eficiente Eficiente 1991 Ciencia y arte Ciclo de vida: Especificación Especificación Diseño Diseño Implementación Implementación Evolución Evolución Programas y documentos Económico Económico Oportuno Oportuno Elegante Elegante 1998 Una disciplina de Ingeniería Enfoques:Metodologías Procesos Procesos Herramientas Herramientas Estándares Estándares Organización Organización Administración Administración Calidad Calidad Software a gran escala Productividad Productividad Calidad Calidad Costo Costo Tiempo Tiempo
14 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Productos de Software vs. Productos Físicos La revolución industrial se oriento a la producción en masa a través de maquinaria y procesos estándares y componentes (Marshall 38) El desarrollo de sistemas de software es una revolución que transforma el procesamiento de información y partes de un producto físico en software.
15 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Metodologías de Programación PrincipiosAbstracción Esconder Información Descomposición Funcional (50s) ModularizaciónReutilización Programación Estructurada (70s) Abstract Data Types (74) Lenguajes Orientados a Objetos (80s) Component Base Programming (COTS – Components of the Shelf)
16 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Modelos de Desarrollo de Software El modelo intenta proveer un conjunto de guías para el diseño e implementación del sistema. –Modelo de Cascada (Royce 70) –Prototipos (Curtis y colegas 87) –Espiral (Boehm 88) –V (GMOD 92) –Evolucionario (Lehman 85, Gilb 88, Gustavsson 89) –Incremental (Mills y colegas 80)
17 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Automatización de IS Aplicación de inteligencia artificial y técnicas de basadas en el conocimiento. Categorías de Herramientas: –CASE (Computer Aided Software Engineering) –Unified Modeling Language Facilitan la automatización de las etapas de diseño y generación de código. Problemas Principales –Adquisición y especificación de requerimientos –Representación del conocimiento de una aplicación –Pruebas de corrección de una implementación
18 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Clasificación de Herramientas de IS CategoríaSubcategoríaComentarios Análisis de Sistemas Análisis de requerimientos, adquisición, especificación, prototipos, modelación, generación de interfases, etc. Desarrollo de Software Análisis y Especificación de Requerimientos Análisis de Requerimientos, Representación del conocimiento de un dominio, especificación, etc. Programación Compiladores, Debuggers, generadores de código, sistemas de reutilización, ambientes de programación, etc. Prueba Modular, Integración, sistema, aceptación, prototipos, objetos, interfase, etc. Mantenimiento Reverse Engineering, Re-ingeniería, librería de reutilización, análisis estático y dinámico, etc. CASE UML, ClearCase, Analystsw Toolkit, Automate+, BachmanSet, Excelerator, IEW, LBMS, Maestro, Oracle CASE, Select, System Architect, Top CASE, Unis SCCS, Yourdon ADT, Rational, etc.
19 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Enfoques de IS EnfoqueDescripciónTécnicaOrganizaciónAdministraciónProgramación D. Funcional P. Estructurada OOPCBPHLL Modelos de DesarrolloCascadaEspiralPrototiposHML Automatizar IS CASEUMLHLL Métodos Formales CSPSDLZ Clean Room HLL Procesos de IS CMMTrilliumBOOTSTRAP ISO/IEC 15504 HHH
20 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoftComentarios Las áreas de organización y administración no han recibido mucha atención en cada uno de los enfoques. Los procesos de IS consideran infraestructuras –Sistemáticas –Organizacionales –Administrativas El software es cada vez más complejo, de gran tamaño, y de mejor calidad
21 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft El Proceso de IS Un proceso se describe como un conjunto de actividades que transforman una entrada para crear una salida. El proceso de IS transforma requerimientos parea crear un producto de software. Proceso de Software –Método de Administración de Software ( Gilb 88, Humphrey 89) –Enfoque de aseguramiento de calidad (Evans & Marciniak 87, ISO 91) –Técnicas de desarrollo de software (Curtis 87, Fayad 97)
22 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft El Proceso de IS Nueva disciplina de Proceso de Ingeniería de Software –Desarrollo de CMM –ISO 9000 Proceso de IS –Fundamentos –Modelo –Establecimiento –Evaluación –Mejoramiento –Estandarización … de procesos de software
23 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Definición de Proceso de IS Conjunto de prácticas secuenciales que son funcionalmente coherentes y reutilizables en la organización, implementación y administración de la ingeniería de software.
24 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Historia Proceso de IS Ingeniería de Software & Ciencia de la Administración –60s:Ingeniería de Procesos y principios de administración en Ciencia de la Administración (Simon 60, Schein 61, Ellis & FRed 62, Juran 62, Anthony 65, Richardson 66, Hall 67) –70s & 80s: Establecimiento de Ciencia de la Administración de acuerdo a la tabla de de Fundamentos Administrativos. Administrativos
25 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Historia Proceso de IS Conformidad de la calidad a los requisitos y a las especificaciones (Crosby 79, Juran 80, Deming 82) –Círculo de Deming (Plan-Do-Check-Act PDCA) propuesto en Ciencia de la Administración: Modelación y Análisis de Procesos de Software. Proyecto ISO TC176 para desarrollar un estándar internacional de sistemas de calidad (ISO 9000 91,93,94) aplicable ingeniería e implementado en IS (IS0 9001 89,94)
26 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Historia Proceso de IS 70s: Crisis de Software (Naur & Randell 69, Baker 72, Brooks 75, Hoare 75) 80s: Proceso de Software se reconoce como un arma de la Ingeniería de Software (Basili 80, Aron 83, Agresti 86, Evans 87, Boehm 81,86,87, Gilb 88, Humphrey 87, 88, 89) Desarrollo del Modelo CMM (Humphrey 87, Paulk 93) 80s: Otros Modelos: –IEEE Software Engineering Standard (IEEE 83) –British Standard BS 5750 (BSI 87)
27 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Métodos y Procesos de IS Actuales TickIT ISO 9001 (1) CMM (2) BOOTSTRAP ISO/IEC 12207 ISO/IEC TR 15504 (SPICE) (3) BSITrillium
28 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Taxonomía y Dominios en los Modelos Actuales NivelCMMBootstrapSPICE ISO 9001 SEPRMSistemaCMMBootstrapSPICE SEPRM Sub- sistema - Areas de Proceso [3] - Sub-sistemas [3] Categorí a Niveles [5] Categorías [9] Categorías(PCs)[5]- Categorías {12] Proceso Areas Prácticas (KPAs) [18] Procesos [32] Procesos (PRs) [35] Tópicos Principales de Areas (MTAs) [20] Procesos [51] Práctica Prácticas (KPs) [150] Atributos de Calidad (QSAs) [201] Prácticas Base (BPs) [201] Aspectos de Admon. (MIs) [177] Actividades de Procesos (BPAs) [444]
29 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Modelo de Calidad ISO 9126 CaracterísticaAtributoFuncionalidad Conveniente, exactitud, interoperabilidad, seguridad Confiabilidad Maduro, tolerancia a fallas, recuperabilidad Utilidad Fácil de entender, aprender, operar Eficiencia Comportamiento en el tiempo, Comportamiento de los recursos Fácil de Mantener Fácil de analizar, modificar, probar; estabilidad Portabilidad Fácil de adaptarse, instalarse, adecuarse, reemplazarse.
30 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Modelo Genérico del Desarrollo de Software Clientes Procesos de Desarrollo Procesos de Administración Desarrolladores Administradores Proceso de Organización
31 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Implementación del Modelo Genérico Proceso de Organización Modelo de Referencia Proceso Derivado del Modelo de Referencia Proceso de Administración Proceso de Desarrollo Proyecto 1 Proceso Derivado del Modelo de Referencia Proceso de Administración Proceso de Desarrollo Proyecto n … organización proceso
32 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoftIngSoft@CIMAT Proyecto ProCIS (Promoviendo Calidad en la Industria del Software) – –Cultura de Calidad: Universidades e Industria (PSP, TSP) – –Investigación Arquitecturas de Software (Líneas de Productos) Proceso de IS (CMMi, SPICE, PSP, TSP, Seis-Sigma Software) – –Maestría en Ingeniería de Software (MIS)
33 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoftLiteratura Yingxu Wang, Software Engineering Processes: Principles and Applications, Boca Raton, CRC Press 2000. Paulk, M. C., y colegas, “CMM Versus SPICE Architectures”, Software Process Newsletters, Spring 1994, pp. 7-11. Paulk, M. C., “How ISO 9001 Compares with the CMM”, IEEE Software, January 1995, pp. 74-83. Jarvinen, J., “On Comparing Process Assessment Results: BOOTSTRAP and CMM”, Software Quality Management, pp. 247-262, 1994. Kugler, H. J., y colegas, “From the Software Process to Software Quality: BOOTSTRAP and ISO 9000”, Proceedings of the First Asia-Pacific Software Engineering Conference, Tokyo, Japan, IEEE Computer Society Press, pp. 174-182.1994. Kitson, D. H., “” Relating the SPICE Framework and SEI Approach to Software Process Assessment” Proceedings of International Conference on Software Quality Management (SQM’96), MEP Press, London 1996, pp. 37- 49. Hoare, C. A. R., Communicating Sequential Processes, Prentice-Hall International, Englewood Cliffs, NJ., 1985. Milner, R., Communicating and Concurrency, Prentice-Hall, Englewood Cliffs, NJ., 1989. Humphrey, W. S., A Discipline for Software Engineering, SEI Series in Software Engineering, Addison-Wesley, Reading, MA., 1995. Pressman, R. S., Software Engineering: A Practitioner’s Approach (3 rd ed.), MacGraw-Hill International Editions, New York 1992. Fondo Mixto de Fomento a la Investigación Científica y Tecnológica CONACYT-Gobierno del Estado de Guanajuato Programa para el desarrollo de la Industria de Software http://www.conacyt.mx/fondos/guanajuato/guanajuato2002-01.html http://www.conacyt.mx/fondos/guanajuato/guanajuato2002-01.html
34 Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoft Introducción Perspectiva Ingeniería de Software (IS) Proceso de IS IngSoftPreguntas? Dr. Cuauhtémoc Lemus Olalde [email protected] www.cimat.mx/ingsoft Febrero, 2003 Dr. Cuauhtémoc Lemus Olalde [email protected] www.cimat.mx/ingsoft Febrero, 2003