La ingeniería de software asistida por computadora ( CASE ) es un dominio de herramientas de software utilizadas para diseñar e implementar aplicaciones. Las herramientas CASE son similares a las herramientas de diseño asistido por computadora (CAD) utilizadas para diseñar productos de hardware y están parcialmente inspiradas en ellas. Las herramientas CASE están destinadas a ayudar a desarrollar software de alta calidad, libre de defectos y mantenible. [1] El software CASE a menudo se asociaba con métodos para el desarrollo de sistemas de información junto con herramientas automatizadas que podían usarse en el proceso de desarrollo de software . [2]
Historia
El proyecto ISDOS (Sistema de Diseño y Optimización de Sistemas de Información), iniciado en 1968 en la Universidad de Michigan , despertó un gran interés en todo el concepto de utilizar sistemas informáticos para ayudar a los analistas en el difícil proceso de analizar requisitos y desarrollar sistemas. Varios artículos de Daniel Teichroew despertaron el interés de toda una generación de entusiastas por el potencial del desarrollo de sistemas automatizados. Su herramienta PSL/PSA (lenguaje de enunciado de problemas/analizador de enunciado de problemas) era una herramienta CASE, aunque anterior al término. [3]
Otro aspecto importante surgió como una extensión lógica del diccionario de datos de una base de datos . Al ampliar el rango de metadatos almacenados, los atributos de una aplicación podrían almacenarse dentro de un diccionario y usarse en tiempo de ejecución. Este "diccionario activo" se convirtió en el precursor de la capacidad de ingeniería basada en modelos más moderna . Sin embargo, el diccionario activo no proporcionaba una representación gráfica de ninguno de los metadatos. Fue la vinculación del concepto de un diccionario que almacena los metadatos de los analistas, tal como se deriva del uso de un conjunto integrado de técnicas, junto con la representación gráfica de dichos datos lo que dio origen a las versiones anteriores de CASE. [4]
El siguiente competidor en el mercado fue Excelerator de Index Technology en Cambridge, Massachusetts. Mientras que DesignAid funcionaba con microcomputadoras en red Ngen de Convergent Technologies y más tarde de Burroughs, Index lanzó Excelerator en la plataforma IBM PC/AT . Si bien en el momento del lanzamiento y durante varios años la plataforma IBM no admitía redes ni una base de datos centralizada como las máquinas de Convergent Technologies o Burroughs, el atractivo de IBM era fuerte y Excelerator cobró importancia. Pisándole los talones a Excelerator aparecieron una serie de ofertas de empresas como Knowledgeware (James Martin, Fran Tarkenton y Don Addington), CA Gen de Texas Instruments y el conjunto de herramientas FOUNDATION de Andersen Consulting (DESIGN/1, INSTALL/1, FCP). [5]
Las herramientas CASE alcanzaron su máximo auge a principios de los años 1990. [6] Según la revista PC Magazine de enero de 1990, más de 100 empresas ofrecían casi 200 herramientas CASE diferentes. [5] En ese momento , IBM había propuesto AD/Cycle, que era una alianza de proveedores de software centrada en el repositorio de software de IBM que utilizaba IBM DB2 en mainframe y OS/2 :
Las herramientas de desarrollo de aplicaciones pueden proceder de varias fuentes: de IBM, de proveedores y de los propios clientes. IBM ha establecido relaciones con Bachman Information Systems, Index Technology Corporation y Knowledgeware , en virtud de las cuales productos seleccionados de estos proveedores se comercializarán a través de un programa de marketing complementario de IBM para proporcionar ofertas que ayudarán a lograr una cobertura completa del ciclo de vida . [7]
Con la decadencia del mainframe, AD/Cycle y las herramientas Big CASE desaparecieron, abriendo el mercado para las herramientas CASE más populares de la actualidad. Muchos de los líderes del mercado CASE de principios de los años 90 terminaron siendo adquiridos por Computer Associates , incluidos IEW, IEF, ADW, Cayenne y Learmonth & Burchett Management Systems (LBMS). La otra tendencia que llevó a la evolución de las herramientas CASE fue el auge de los métodos y herramientas orientados a objetos. La mayoría de los diversos proveedores de herramientas agregaron algún soporte para métodos y herramientas orientados a objetos. Además, surgieron nuevos productos que se diseñaron desde abajo hacia arriba para respaldar el enfoque orientado a objetos. Andersen desarrolló su proyecto Eagle como una alternativa a Foundation. Varios de los líderes de pensamiento en desarrollo orientado a objetos desarrollaron cada uno su propia metodología y conjunto de herramientas CASE: Jacobson, Rumbaugh, Booch , etc. Finalmente, estos diversos conjuntos de herramientas y métodos se consolidaron a través de estándares liderados por Object Management Group (OMG). El lenguaje de modelado unificado (UML) de OMG es actualmente ampliamente aceptado como el estándar de la industria para el modelado orientado a objetos. [ cita requerida ]
Software CASE
Herramientas
Las herramientas CASE respaldan tareas específicas en el ciclo de vida del desarrollo de software. Se pueden dividir en las siguientes categorías:
Modelado de negocios y análisis: herramientas de modelado gráfico, por ejemplo, modelado E/R, modelado de objetos, etc.
Desarrollo: Fases de diseño y construcción del ciclo de vida. Entornos de depuración. Ej. IISE LKO.
Gestión de configuración: controle el registro de entrada y salida de objetos y archivos del repositorio. Por ejemplo, SCCS , IISE.
Métricas y medición: analizar el código para determinar su complejidad, modularidad (por ejemplo, no hay "referencias"), rendimiento, etc.
Gestión de proyectos: gestionar planes de proyectos, asignaciones de tareas y programación.
Otra forma común de distinguir las herramientas CASE es la distinción entre mayúsculas y minúsculas. Las herramientas CASE mayúsculas respaldan el modelado empresarial y analítico. Admiten lenguajes diagramáticos tradicionales como diagramas ER , diagramas de flujo de datos , diagramas de estructura , árboles de decisión , tablas de decisión , etc. Las herramientas CASE minúsculas respaldan las actividades de desarrollo, como el diseño físico, la depuración, la construcción, las pruebas, la integración de componentes, el mantenimiento y la ingeniería inversa. Todas las demás actividades abarcan todo el ciclo de vida y se aplican por igual a las mayúsculas y minúsculas CASE. [8]
Bancos de trabajo
Los bancos de trabajo integran dos o más herramientas CASE y dan soporte a actividades específicas de procesos de software. De esta manera, logran:
Una interfaz homogénea y consistente (integración de presentaciones)
Integración perfecta de herramientas y cadenas de herramientas (integración de control y datos)
Un ejemplo de banco de trabajo es el entorno de programación Visual Basic de Microsoft . Incorpora varias herramientas de desarrollo: un generador de GUI, un editor de código inteligente, un depurador, etc. La mayoría de los productos CASE comerciales tendían a ser bancos de trabajo que integraban a la perfección dos o más herramientas. Los bancos de trabajo también se pueden clasificar de la misma manera que las herramientas; como centrados en el análisis, el desarrollo, la verificación, etc., así como centrados en mayúsculas, minúsculas o procesos como la gestión de la configuración que abarcan el ciclo de vida completo.
Entornos
Un entorno es una colección de herramientas CASE o bancos de trabajo que intentan dar soporte al proceso completo del software. Esto contrasta con las herramientas que se centran en una tarea específica o una parte específica del ciclo de vida. Fuggetta clasifica los entornos CASE de la siguiente manera: [9]
Kits de herramientas: colecciones de herramientas acopladas de forma flexible. Por lo general, se basan en bancos de trabajo de sistemas operativos como Unix Programmer's Workbench o el conjunto VMS VAX. Por lo general, realizan la integración mediante canalización o algún otro mecanismo básico para compartir datos y pasar el control. La ventaja de la integración sencilla es también una de las desventajas. El simple paso de parámetros a través de tecnologías como la ejecución de scripts de shell no puede proporcionar el tipo de integración sofisticada que puede proporcionar una base de datos de repositorio común.
Cuarta generación: estos entornos también se conocen como 4GL (entornos de lenguaje de cuarta generación) debido a que los primeros entornos se diseñaron en torno a lenguajes específicos, como Visual Basic. Fueron los primeros entornos que proporcionaron una integración profunda de múltiples herramientas. Por lo general, estos entornos se centraban en tipos específicos de aplicaciones. Por ejemplo, aplicaciones basadas en la interfaz de usuario que realizaban transacciones atómicas estándar en una base de datos relacional. Algunos ejemplos son Informix 4GL y Focus.
Centrados en el lenguaje: entornos basados en un único lenguaje, a menudo orientado a objetos, como el entorno Symbolics Lisp Genera o VisualWorks Smalltalk de Parcplace. En estos entornos, todos los recursos del sistema operativo eran objetos en el lenguaje orientado a objetos. Esto proporciona potentes oportunidades gráficas y de depuración, pero el código desarrollado se limita principalmente al lenguaje específico. Por esta razón, estos entornos eran en su mayoría un nicho dentro de CASE. Su uso era principalmente para proyectos de I+D y creación de prototipos. Una idea central común para estos entornos era la interfaz de usuario modelo-vista-controlador que facilitaba mantener múltiples presentaciones del mismo diseño coherentes con el modelo subyacente. La arquitectura MVC fue adoptada por los otros tipos de entornos CASE, así como por muchas de las aplicaciones que se crearon con ellos.
Integrados: estos entornos son un ejemplo de lo que la mayoría de los profesionales de TI suelen pensar primero cuando piensan en CASE. Entornos como AD/Cycle de IBM, FOUNDATION de Andersen Consulting, el sistema ICL CADES y DEC Cohesion. Estos entornos intentan cubrir el ciclo de vida completo desde el análisis hasta el mantenimiento y proporcionan un repositorio de base de datos integrado para almacenar todos los artefactos del proceso de software. El repositorio de software integrado era la característica definitoria de este tipo de herramientas. Proporcionaban múltiples modelos de diseño diferentes, así como soporte para código en lenguajes heterogéneos. Uno de los principales objetivos de este tipo de entornos era la "ingeniería de ida y vuelta": poder realizar cambios en el nivel de diseño y que estos se reflejaran automáticamente en el código y viceversa. Estos entornos también se asociaban normalmente con una metodología particular para el desarrollo de software. Por ejemplo, la suite FOUNDATION CASE de Andersen estaba estrechamente vinculada a la metodología Andersen Method/1.
Centrado en el proceso: este es el tipo de integración más ambicioso. Estos entornos intentan no solo especificar formalmente los objetos de análisis y diseño del proceso de software, sino también el proceso en sí mismo y utilizar ese proceso formal para controlar y guiar los proyectos de software. Algunos ejemplos son East, Enterprise II, Process Wise, Process Weaver y Arcadia. Estos entornos estaban, por definición, vinculados a alguna metodología, ya que el proceso de software en sí mismo es parte del entorno y puede controlar muchos aspectos de la invocación de herramientas.
En la práctica, la distinción entre workbenchs y entornos era flexible. Visual Basic, por ejemplo, era un workbench de programación, pero muchos también lo consideraban un entorno 4GL. Las características que diferenciaban a los workbenchs de los entornos eran la integración profunda a través de un repositorio compartido o lenguaje común y algún tipo de metodología (entornos integrados y centrados en procesos) o especificidad de dominio (4GL). [9]
Principales factores de riesgo de CASE
Algunos de los factores de riesgo más importantes para las organizaciones que adoptan la tecnología CASE incluyen:
Normalización inadecuada: las organizaciones suelen tener que adaptar y adoptar metodologías y herramientas a sus requisitos específicos. Para ello, puede ser necesario un esfuerzo considerable para integrar tanto tecnologías como métodos divergentes. Por ejemplo, antes de la adopción del estándar UML, las convenciones de diagramas y los métodos para diseñar modelos orientados a objetos eran muy diferentes entre los seguidores de Jacobsen, Booch y Rumbaugh.
Expectativas poco realistas: los promotores de la tecnología CASE (en especial los vendedores que comercializan conjuntos de herramientas costosos) suelen generar expectativas exageradas de que el nuevo enfoque será una panacea que resolverá todos los problemas. En realidad, ninguna tecnología de este tipo puede lograrlo y, si las organizaciones abordan la tecnología CASE con expectativas poco realistas, inevitablemente se sentirán decepcionadas.
Capacitación inadecuada: como sucede con cualquier tecnología nueva, CASE requiere tiempo para capacitar a las personas en el uso de las herramientas y familiarizarse con ellas. Los proyectos CASE pueden fracasar si no se les da a los profesionales el tiempo adecuado para la capacitación o si el primer proyecto que se intenta con la nueva tecnología es en sí mismo de gran importancia para la misión y está plagado de riesgos.
Control de procesos inadecuado: CASE ofrece nuevas e importantes capacidades para utilizar nuevos tipos de herramientas de formas innovadoras. Sin la guía y los controles de procesos adecuados, estas nuevas capacidades también pueden causar nuevos problemas importantes. [10]
^ Kuhn, DL (1989). "Selección y uso eficaz de una herramienta de ingeniería de software asistida por ordenador". Simposio anual de informática de Westinghouse; 6-7 de noviembre de 1989; Pittsburgh, PA (EE. UU.); Proyecto DOE.
^ P. Loucopoulos y V. Karakostas (1995). Ingeniería de requisitos del sistema: software de calidad que funcionará de manera eficaz.
^ Teichroew, Daniel; Hershey, Ernest Allen (1976). "PSL/PSA, una técnica asistida por computadora para la documentación estructurada y el análisis de sistemas de procesamiento de información". Actas ICSE '76 Actas de la 2.ª Conferencia Internacional sobre Ingeniería de Software . IEEE Computer Society Press.
^ Coronel, Carlos; Morris, Steven (4 de febrero de 2014). Sistemas de bases de datos: diseño, implementación y gestión. Cengage Learning. pp. 695–700. ISBN978-1285196145. Recuperado el 25 de noviembre de 2014 .
^ ab Inc, Ziff Davis (30 de enero de 1990). Revista PC. Ziff Davis, Inc.{{cite book}}: |last=tiene nombre genérico ( ayuda )
^ Yourdon, Ed (23 de julio de 2001). "¿Pueden crecer los proyectos XP?". Computerworld . Consultado el 25 de noviembre de 2014 .
^ "Estrategia y arquitectura AD/Cycle", IBM Systems Journal, vol. 29, n.º 2, 1990; pág. 172.
^ Ingeniería de software: herramientas, principios y técnicas por Sangeeta Sabharwal, Umesh Publications
^ ab Alfonso Fuggetta (diciembre de 1993). "Una clasificación de la tecnología CASE". Computer . 26 (12): 25–38. doi :10.1109/2.247645. S2CID 954775 . Consultado el 14 de marzo de 2009 .
^ Ingeniería de software asistida por computadora Archivado el 20 de enero de 2012 en Wayback Machine . En: FFIEC IT Examination Handbook InfoBase . Consultado el 3 de marzo de 2012.