tema1

18
1. INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE 1.1 Objetivos Los objetivos de este capítulo son los siguientes: Introducir el concepto de Ingeniería en general, así como otros conceptos relacionados, que son imprescindibles para entender que el software se de- sarrolla bajo un enfoque de ingeniería determinado. Ofrecer un enfoque de ingeniería integrado con otras disciplinas. Establecer un marco de referencia de la Ingeniería del Software y la Inge- niería del Software Orientado a Objetos respecto de la Ingeniería de Siste- mas de Información. Presentar la Ingeniería del Software como el marco tecnológico y técnico de la Ingeniería del Software Orientado a Objetos. Estudiar el concepto de software y aspectos relacionados. Estos objetivos se resumen en uno más general que rige no sólo este capítulo sino el libro completo: formar al alumno que va a ser ingeniero o ingeniero técnico en informática en el diseño, desarrollo y culminación de proyectos informáticos de sistemas software, especialmente bajo el enfoque de la orientación a objetos. Ingeniería del Software 1

Upload: samuel-baldiviezo

Post on 19-Nov-2015

214 views

Category:

Documents


0 download

DESCRIPTION

ing de software

TRANSCRIPT

  • 1

    1. INTRODUCCIN A LA INGENIERA

    DEL SOFTWARE 1.1 Objetivos Los objetivos de este captulo son los siguientes:

    Introducir el concepto de Ingeniera en general, as como otros conceptos relacionados, que son imprescindibles para entender que el software se de- sarrolla bajo un enfoque de ingeniera determinado.

    Ofrecer un enfoque de ingeniera integrado con otras disciplinas.

    Establecer un marco de referencia de la Ingeniera del Software y la Inge- niera del Software Orientado a Objetos respecto de la Ingeniera de Siste- mas de Informacin.

    Presentar la Ingeniera del Software como el marco tecnolgico y tcnico de la Ingeniera del Software Orientado a Objetos.

    Estudiar el concepto de software y aspectos relacionados.

    Estos objetivos se resumen en uno ms general que rige no slo este captulo sino el libro completo: formar al alumno que va a ser ingeniero o ingeniero tcnico en informtica en el diseo, desarrollo y culminacin de proyectos informticos de sistemas software, especialmente bajo el enfoque de la orientacin a objetos. Ingeniera del Software

    1

  • 1.2 INGENIERA DEL SOFTWARE

    1.2 Introduccin Es interesante detenerse en la reflexin sobre un concepto o trmino que es parte fundamental del tema del libro: la Ingeniera. Qu es la Ingeniera? Desde el punto de vista filolgico, el Diccionario de la Lengua Espaola dice que la Ingeniera es el Conjunto de conocimientos y tcnicas que permiten aplicar el saber cientfico a la utilizacin de la materia y de las fuentes de energa || Profesin o ejercicio del ingeniero. Desde el punto de vista tradicional, se trata de una disciplina tcnica que pretende resolver problemas tcnicos mediante la aplicacin del conocimiento cientfico consolidado, a travs de la utilizacin de conocimientos y mtodos tcni- cos formales, para transformar los recursos naturales en productos directamente utilizables por la sociedad.

    Y desde un punto de vista ms moderno, la Ingeniera es un conjunto organi- zado de disciplinas tcnico-cientficas que actan de funciones de transformacin entre el Universo del Discurso Cientfico (UoDC) y el Dominio de Soluciones Tcnico-Operativas (DSTO). Los operadores de estas funciones son los recursos humanos, los mtodos tcnicos formales, las normas tcnicas y legales, las tcnicas y las tecnologas aceptadas como estndares por organismos internacionales o na- cionales con autoridad reconocida. Los operandos son: (a) cada uno de los Espa- cios de Problema (EP) que conforman el Dominio del Ambito (DA) de cada disci- plina (estructuras de comunicacin viaria terrestre, navegacin naval, transporte areo, electricidad, electrnica, etc.); (b) los criterios especficos de cada DA; (c) los conocimientos particulares de cada EP; (d) los objetivos marcados en cada Es- pacio de Solucin Tcnica (EST); y (e) los recursos primarios y secundarios para trasformar o aplicar en la transformacin. Tanto el proceso de transformacin como el resultado final deben tener la fiabilidad, calidad, eficacia y eficiencia estableci- das previamente por normas y recomendaciones de organismos internacionales.

    Tomando la ltima definicin de Ingeniera, para la Ingeniera del Software hay que replantearse la delimitacin ms especfica de las particiones del Universo del Discurso Cientfico y del Dominio de Soluciones Tcnico-Operativas. Tambin se deben establecer claramente los operadores y los operandos de la funcin de transformacin del Software. Pero tambin se puede analizar el concepto de Inge- niera del Software, aplicando las definiciones anteriores con la intencin de encon- trar una definicin especfica que sea consistente y completa. Para ello, se va a plantear una serie de preguntas principales que tambin se intentar resolver en la medida de lo posible:

    1. Qu es el Software? No es ni materia, ni recurso natural ni energa.

    2. Cul es el conocimiento cientfico que sustenta el Software? Qu conjun- to coherente de teoras y modelos explica el comportamiento del Softwa-

    Samuel Baldiviezo

  • TEMA-01 3

    re, de forma similar al cuerpo terico que explica el comportamiento de los fenmenos hidrodinmicos?

    3. Cules son los mtodos tcnicos formales y las tcnicas empleadas en el mbito del Software? Forman todos un conjunto coherente y completo al igual de en otras disciplinas de ingeniera?

    4. Cules son los problemas tcnicos planteados con el Software? Son to- dos los problemas de tipo tcnico o hay consideraciones que escapan al anlisis objetivo?

    5. Cul es el proceso de la disciplina y a qu metas pretende llegar? Se trata de un proceso nico o hay un amplio espectro de procesos reconocidos? Estn claras las metas? Son divergentes o convergentes?

    6. Qu productos finales se pretende ofrecer con respecto al Software? Qu naturaleza tienen esos productos? Se pueden ofrecer independientemente de los productos de otras disciplinas de ingeniera?

    Las respuestas a estas preguntas constituyen el contenido de este captulo, donde se pretende situar la Ingeniera del Software en un marco ms general y, adems, introducir la aplicacin de esta disciplina a un paradigma especfico, el Paradigma de la Orientacin a Objetos.

    1.3 La Ingeniera como disciplina Actualmente se tiende a la aplicacin de puntos de vista globales respecto del estu- dio de disciplinas relativamente cercanas. En esa direccin, cada vez se trabaja ms en la integracin de sistemas en las organizaciones y entre organizaciones. Por ello, en el ltimo cuarto del siglo XX se ha revisado el concepto de Ingeniera, abando- nando el planteamiento clsico establecido en el siglo XIX, cuando lleg a su ma- durez.

    Con estas consideraciones, es necesario decir explcitamente que la Ingeniera del Software es una disciplina de ingeniera ms, con sus particularidades, como su corta historia (apenas 40 a 50 aos) y su poca madurez en la confeccin de un cuerpo de conocimientos y metodologas nico. Pero a pesar de estas diferencias, la Ingeniera del Software debe aplicar el mismo nivel de rigor, calidad y mtodo que cualquiera de sus hermanas mayores. Tambin es necesario revisar el marco de referencia respecto del desarrollo de sistemas informticos, o ms concretamente sistemas software, y de la aplicacin de los mismos en distintos mbitos y domi- nios de informacin.

    Samuel Baldiviezo

    Samuel Baldiviezo

    Samuel Baldiviezo

  • Tabla 1.1. Definiciones bsicas

    4 INGENIERA DEL SOFTWARE

    Como este libro no pretende ser un estudio exhaustivo de la Ingeniera y sus distintas disciplinas, solamente se expresarn las definiciones imprescindibles para que se pueda entender los conceptos generales agrupados en tres categoras: defini- ciones bsicas, aspectos metodolgicos y aspectos operativos. En la Tabla 1.1 se enuncian las definiciones bsicas relacionadas con la ingeniera en general. El pro- psito es presentar un marco de referencia general donde situar las coordenadas exactas de la Ingeniera del Software.

    En la Tabla 1.2 se enuncian las definiciones relacionadas con los aspectos me- todolgicos de la ingeniera en general.

    En la Tabla 1.3 se enuncian las definiciones relacionadas con los aspectos ope- rativos de la ingeniera en general.

    Cdigo Trmino Definicin D.1.1 Ingeniera La ingeniera es una disciplina del conocimiento humano

    que busca y aplica soluciones tcnicas y tecnolgicas a problemas reales, a partir de conocimientos y planteamien- tos cientficos

    D.1.2 Enfoque de ingeniera El enfoque de ingeniera se basa en la aplicacin rigurosa y metdica de tcnicas y tecnologas suficientemente proba- das dentro de un mbito terico y prctico para obtener un resultado de calidad

    D.1.3 Propsito de la ingeniera El propsito de la ingeniera es la de resolver problemas reales de tipo tcnico y tecnolgico de la manera ms eficaz (alcanzando los objetivos marcados) y eficiente (con el me- nor coste posible)

    D.1.4 Proceso de ingeniera Es la forma unitaria en que se desarrolla el enfoque de ingeniera. El conjunto de procesos de ingeniera constitu- yen el desarrollo global del enfoque de ingeniera

    D.1.5 Proyecto de ingeniera Es la unidad de accin de la ingeniera

  • Tabla 1.2. Aspectos metodolgicos

    TEMA-01 5

    Cdigo Trmino Definicin D.1.6 Metodologas Son los sistemas estructurados y organizados de principios, reglas y

    prcticas que se aplican a ramas del conocimiento especficas. D.1.7 Mtodos Es el conjunto de principios, reglas y prcticas que suministran la

    forma de construir tcnicamente (el cmo) el software. Los mtodos estn implicados en las categoras de actividades del desarrollo del software siguientes: Planificacin y estimacin de proyectos; Anlisis de los requerimientos del sistema y del software; Diseo de estructu- ras de datos, arquitectura de programas y procedimientos algortmi- cos; Generacin de cdigo; Pruebas y comprobaciones; e Implanta- cin y mantenimiento.

    D.1.8 Tcnicas Mientras que la ciencia se dedica primordialmente al saber, la tcnica es el arte de hacer. Entonces, la tcnica es la aplicacin de un conjunto de procedimientos derivados del saber cientfico o artstico, y de los recursos necesarios para poder producir resultados. La caracterizacin de una buena tcnica se basa en los siguientes aspectos fundamenta- les: Utilidad: los resultados obtenidos corresponden a determinados objetivos establecidos previamente antes de la aplicacin de la tcnica. Habilidad: los procedimientos y recursos se usan con pericia o habilidad en casos semejantes. Reproducibilidad: bajo las mismas condiciones y con los mismos elementos iniciales, los resultados obtenidos deben ser siempre los mismos. Perdurabilidad: el conocimiento del proceso de aplicacin de los procedi- mientos y recursos se puede guardar para recuperarlo en otro momento fu- turo. Transmisibilidad: el conocimiento del proceso de aplicacin de los procedi- mientos y recursos se puede ensear y aprender. Eficiencia: los resultados se obtienen con el menor coste de recursos y en el tiempo ms corto.

    D.1.9 Procedimientos Es el conjunto de facilidades que integran mtodos y herramientas en unidades metodolgicas operativas. Entre otras cosas, estas unidades definen las secuencias de aplicacin de los mtodos; describen y establecen los resultados de la culminacin de cada etapa de aplica- cin de los mtodos, denominadas entregas (documentos, informes, diagramas, etc.); definen los controles para asegurar la calidad y gestionar los cambios; y establecen las directrices que ayudan a los gestores del software en la evaluacin del progreso en el desarrollo.

    D.1.10 Herramientas Es el conjunto de los elementos que, mediante la estructuracin, clasificacin y automatizacin de determinados procedimientos de ingeniera y diseo, facilitan el trabajo del ingeniero al descargarle de tareas rutinarias, repetitivas o extremadamente exhaustivas, y le per- miten centrarse en aspectos cualitativos o fundamentales. Suministran en resumen un soporte automtico o semiautomtico a los mtodos.

    Samuel Baldiviezo

    Samuel Baldiviezo

    Samuel Baldiviezo

    Samuel Baldiviezo

    Samuel Baldiviezo

  • Tabla 1.3. Aspectos operativos

    1.6 INGENIERA DEL SOFTWARE

    1.4 La Tecnologa Informtica Actualmente est prcticamente asumido que se debe establecer un marco de refe- rencia terico y normativo que sustente la existencia de disciplinas como la Inge- niera del Software. Este marco se denomina Ingeniera de Sistemas de Informa- cin y aporta un enfoque de ingeniera en el desarrollo, implantacin, manteni- miento, adquisicin y distribucin de los sistemas de informacin en general. A continuacin se describe la arquitectura o estructura de dicho marco.

    Cdigo Trmino Definicin D.1.11 Confiabilidad de un

    sistema Es el grado de cumplimiento satisfactorio de las caractersticas siguientes: Correccin de su diseo. El diseo est realizado segn unos requisitos expresa-dos en consonancia con las necesidades de los usuarios y para resolver el problema planteado. Correcta correspondencia entre el diseo y su aplicacin: la construccin resultante debe reflejar fielmente el diseo previo. Fiabilidad de sus componentes: la tasa de fiabilidad de sus componentes debe ser la mayor posible de forma que la tasa de fiabilidad conjunta sea de un nivel parecido. Regida por el tiempo que tardan los componentes en desgas- tarse: la calidad de los componentes debe ser tal que alargue en lo posible la vida til del sistema.

    D.1.12 Obsolescencia funcional

    Es la situacin que se da cuando algunos o la totalidad de los sistemas informticos estn operando por debajo del mnimo nivel de fiabilidad exigible. Con lo cual, los resultados obtenidos tam- bin pueden estar por debajo del nivel de confianza establecido.

    D.1.13 Obsolescencia operativa

    Es la situacin que se da cuando uno o varios cambios en la forma de funcionamiento de determinados sistemas de informacin o de estructuras organizativas de la organizacin puede motivar, o la implantacin de un sistema informtico si no lo haba anterior- mente, o la sustitucin del que haba anteriormente.

    D.1.14 Obsolescencia tcnica

    Es la situacin que se da cuando algunos o la totalidad de los sistemas informticos que mantienen los sistemas de informacin operativos han llegado a su nivel mximo de evolucin. Y no pueden responder eficientemente a las nuevas exigencias.

    Samuel Baldiviezo

  • TEMA-01 7

    1.4.1 La estructura de las disciplinas La Ingeniera de Sistemas de Informacin (ISI) es la aplicacin del enfoque de ingeniera al estudio, diseo, desarrollo, implantacin, explotacin y gestin de sistemas de informacin en una organizacin. La Ingeniera de Sistemas de Infor- macin (ISI) se desglosa en varias disciplinas: la Ingeniera de las Tecnologas de la Informacin y la Comunicacin (ITIC) y la Ingeniera de la Informacin (IIF). A su vez, la ITIC se desglosa, entre otras, en la Ingeniera de las Tecnologas de la Comunicacin (ITC) y la Ingeniera de Sistemas Informticos (ISIF) (Figura 1.1). En la Tabla 1.4 se definen estas disciplinas.

    Ingeniera de Sistemas de Informacin

    Ingeniera de las Tecnologas de la Informacin y la Comunicacin

    Ingeniera de Tecnologas de la Comunicacin

    Ingeniera de la Informacin

    Ingeniera de Sistemas Informticos

    Figura 1.1. El marco de referencia de Ingeniera

    El proceso de la ISI empieza con el examen del dominio entero del negocio o del producto para asegurarse de que se puede establecer el contexto de negocio o tecnolgico apropiado (Figura 1.2). Esto se denomina vista global. La vista global se refina para enfocarse totalmente en un dominio de inters especfico, denomina- do vista del dominio. Dentro de un dominio especfico, se analiza la necesidad de elementos del sistema (informacin, software, hardware, profesionales, etc.). El resultado de este anlisis se denomina vista del elemento. Finalmente se inicia el anlisis, diseo y construccin del elemento del sistema deseado. Este contexto particular del elemento se denomina vista detallada. Las actividades tcnicas com- prendidas en la vista detallada se realizan por la disciplina de ingeniera correspon- diente.

    Samuel Baldiviezo

  • Tabla 1.4. Disciplinas de la Ingeniera de Sistemas de Informacin

    1.8 INGENIERA DEL SOFTWARE

    Dominio de negocio o producto

    Elemento del sistema

    Vista del elemento

    Elemento del sistema Elemento del sistema

    Vista detallada Ing. Hardware

    Vista detallada Ing. Software

    Figura 1.2. Estructura del dominio de Negocio

    Cdigo Trmino Definicin D.1.15 Ingeniera de las

    Tecnologas de la Informacin y la Comunicacin

    Es el conjunto de ingenieras cuyo propsito es el desarrollo y la aplicacin de las distintas tecnologas de informacin y comunica- cin relacionadas con los sistemas de informacin.

    D.1.16 Ingeniera de la Informacin

    Es la definicin de arquitecturas que permiten a las empresas em- plear la informacin y las tecnologas asociadas eficazmente a los problemas de su dominio de negocio o producto.

    D.1.17 Ingeniera del Producto

    Es la disciplina que traduce las necesidades del cliente, partiendo de un conjunto de capacidades definidas, en un producto operativo.

    D.1.18 Ingeniera de las Tecnologas de Informacin

    Es la disciplina que tiene como meta la definicin de arquitecturas que permitan a las empresas emplear la informacin y las tecnolog- as asociadas eficazmente. En consecuencia, trabaja en la creacin de un plan global para implementar dichas arquitecturas.

    D.1.19 Ingeniera de los Sistemas Inform- ticos

    Es la ingeniera que se desenvuelve en el mbito exclusivo de las tecnologas de informacin y los sistemas que incorporan dichas tecnologas.

    D.1.20 Ingeniera del Software (como proceso de mode- lado)

    Es una subdisciplina de la Ingeniera de Sistemas de Informacin. Es un proceso de modelado para definir los procesos que satisfagan las necesidades de la vista global, del elemento o detallada; para representar el comportamiento de los procesos y los supuestos en los que se basa el comportamiento, para definir explcitamente las entradas exgenas y endgenas de informacin al modelo, y repre- sentar todas las uniones que permitan al ingeniero entender mejor la visin correspondiente.

  • TEMA-01 9

    1.4.2 Construccin de Modelos La Ingeniera de Sistemas de Informacin es un proceso de modelado para:

    Definir los procesos que satisfagan las necesidades de la visin global, del elemento o detallada.

    Representar el comportamiento de los procesos y los supuestos en los que se basa el comportamiento.

    Definir explcitamente las entradas exgenas y endgenas de informacin al modelo.

    Representar todas las uniones que permitan al ingeniero entender mejor la visin.

    Un modelo es una abstraccin de la realidad o de un sistema real tomando los elementos ms representativos con un propsito determinado. Por lo tanto, de un mismo sistema puede haber ms de un modelo, porque, segn el propsito del mismo, los elementos representativos pueden ser distintos. Los elementos a consi- derar en la construccin de modelos son: supuestos, simplificaciones, limitaciones o restricciones y preferencias. Se describen a continuacin.

    Los supuestos son elementos para la construccin de modelos que reducen el nmero de permutaciones y variaciones posibles, permitiendo al modelo reflejar el problema de manera razonable. Las simplificaciones son elementos para la cons- truccin de modelos que permiten crear el modelo a tiempo.

    Las limitaciones o restricciones son elementos para la construccin de mode- los que ayudan a delimitar el problema. Y las preferencias son elementos para la construccin de modelos que indican la arquitectura preferida para toda la informa- cin, funciones y tecnologa; conflictos con otros factores restrictivos. Es recomen- dable tenerlas en cuenta para obtener un resultado aceptado, adems de correcto. 1.4.3 La Ingeniera de las Tecnologas de la Informacin La Ingeniera de las Tecnologas de la Informacin (ITI) tiene como meta la defini- cin de arquitecturas que permitan a las empresas emplear la informacin y las tecnologas asociadas eficazmente. Esta disciplina trabaja para crear un plan global para implementar las arquitecturas.

    Principalmente, se centra en el anlisis y diseo de tres arquitecturas diferen- tes dentro del contexto de objetivos y metas del negocio:

  • 1.10 INGENIERA DEL SOFTWARE

    Arquitectura de datos: proporciona una estructura para las necesidades de informacin de un negocio o de una funcin de negocio.

    Arquitectura de aplicacin: comprende aquellos elementos de un sistema que transforman objetos dentro de la arquitectura de datos por algn prop- sito del negocio.

    Infraestructura de la tecnologa: proporciona el fundamento de las arqui- tecturas de datos y de aplicaciones. Comprende el hardware y el software empleados para dar soporte a las aplicaciones y a los datos.

    Para modelar las arquitecturas del sistema se define una jerarqua de activida- des de ITI de la forma siguiente:

    Vista global: planificacin de la estrategia de informacin (PEI). Define los objetos de datos visibles a nivel de empresa, sus relaciones y cmo fluyen entre los dominios del negocio

    Vista del dominio: anlisis del rea de negocio (AAN). Identifica en detalle la in-formacin y los requisitos de las funciones de reas de negocio selec- cionadas

    Vista del elemento: diseo del sistema de negocio (DSN). Se modelan los requisitos bsicos de un sistema de informacin especfico y se traducen en las tres arquitecturas

    Vista detallada: construccin e integracin (C&I). Se concentra en los detalles de implementacin que son los siguientes:

    Arquitectura de datos: bases de datos y estructuras internas de datos.

    Arquitectura de aplicaciones: construccin de aplicaciones o conjun- tos de programas.

    Integracin de componentes para formar un nuevo sistema de infor- macin.

    Insercin del sistema de informacin en el contexto del rea de ne- gocio.

    1.4.4 La Ingeniera del Producto La Ingeniera del Producto (IP) tiene como meta la traduccin de las necesidades del cliente, de un conjunto de capacidades definidas, en un producto operativo. Por lo tanto, trabaja para crear un plan global para implementar una arquitectura y una

  • TEMA-01 11

    infraestructura. La arquitectura del sistema est compuesta por: software, hardware, datos (bases de datos), y recursos humanos.

    La infraestructura de soporte proporciona la tecnologa requerida para unir los componentes, y la informacin que se emplea para dar soporte a los componentes. Para modelar la arquitectura del sistema se define una jerarqua de actividades en esta disciplina:

    Vista global: anlisis del sistema: Se obtienen del cliente los requisitos ge- nerales del producto (necesidades de informacin y control, funcionalidad y comportamiento del producto, rendimiento general del producto, diseo, restricciones de la interfaz y otras necesidades especiales. Asignacin de la funcionalidad y comportamiento a los componentes de la arquitectura.

    Vista del dominio: ingeniera de componentes: Conjunto de actividades concurrentes que se dirigen separadamente a cada uno de los componentes: Ingeniera del Software, Ingeniera del Hardware, Ingeniera de Bases Da- tos, Ingeniera de Recursos Humanos.

    Vista del elemento: modelo de anlisis y diseo o actividades de la ingenie- ra aplicada.

    Vista detallada: construccin e integracin. Se concentra en los detalles de implementacin: Generacin de cdigo, pruebas y actividades de soporte.

    1.4.5 Planificacin de la estrategia de la informacin (PEI) Los objetivos generales de la Planificacin de la Estrategia de la Informacin (PEI) son los siguientes:

    Definir los objetivos y metas del negocio que sean estratgicos.

    Aislar los factores de xito crticos que permitan al negocio alcanzar esos objetivos y metas.

    Analizar el impacto de la tecnologa y la automatizacin en las metas y ob- jetivos.

    Analizar la informacin existente para determinar su papel en la consecu- cin de la metas y objetivos.

    La PEI crea un modelo de datos a nivel de negocio, es decir, define los objetos de datos clave y las relaciones entre ellos y con otras reas de negocio de la forma siguiente:

  • 1.12 INGENIERA DEL SOFTWARE

    Un objetivo es una declaracin general de direccin (estratgico).

    Las metas definen un curso de accin cuantitativo (tcticas).

    Los factores crticos de xito (FCE) pueden estar unidos a un objetivo o una meta.

    Las actividades de la PEI son las siguientes:

    Modelado de la empresa aplicando una visin en tres dimensiones de un negocio:

    Dimensin 1: Estructura de la organizacin y de las funciones en las reas de negocio. Dimensin 2: Descomposicin de la funcin de negocio para aislar los procesos componen- tes. Dimensin 3: Relacin de los objetivos, metas y FCE con la organizacin y sus funciones.

    Creacin de un modelo de datos a nivel de negocio.

    Modelado de datos al nivel de negocio: se concentra en los objetos de da- tos necesarios para alcanzar las funciones de negocio: productores y con- sumidores de informacin, sucesos, puestos de la organizacin, lugares, es- tructuras de informacin, etc.

    Anlisis del rea de negocio: Establece un marco detallado para construir una empresa basada en la informacin (visin de dominio). Se emplean va- rios modelos de trabajo distintos como los siguientes:

    Modelos de datos.

    Modelos de flujo de proceso.

    Diagramas de descomposicin de procesos.

    Matrices de referencias cruzadas.

    1.5 La Ingeniera del Software Las sucesivas crisis del software han conformado una situacin de crisis permanen- te que nicamente podr ser superada si se toma definitivamente un enfoque de ingeniera riguroso como el expuesto en secciones anteriores- para la construccin de sistemas y productos basados en el software.

    En este sentido, la Ingeniera del Software se ha marcado, como uno de los ob- jetivos principales, la simplificacin del desarrollo del software. De todos es cono- cido que resulta sumamente difcil desarrollar software con un grado de calidad y fiabilidad parecido al del hardware. Una de las posibles causas consiste en que el

  • TEMA-01 13

    software es intangible y se maneja en un medio invisible. Tambin resulta cada vez ms complejo porque intenta abarcar sistemas o problemas cada vez ms comple- jos. Por otra parte, es infinitamente maleable. Un cambio mnimo en una parte de un mdulo software puede significar el cambio radical de la estructura y / o el comportamiento del mismo. Finalmente, el software es el reflejo de un mundo di- nmico que cambia con rapidez y resulta difcil aprehenderlo conceptualmente.

    En esta seccin se dan unas definiciones bsicas de esta disciplina y del soft- ware y algunos conceptos asociados. 1.5.1 Definicin del concepto de software En principio se define el concepto de software y despus algunas categoras del mismo. As, e l software es el conjunto de las categoras de elementos siguientes:

    Programas de ordenador asociados con alguna aplicacin o producto, junto con toda la informacin necesaria para instalar, usar, desarrollar y mantener estos programas.

    Instrucciones de ordenador que, cuando se ejecutan, proporcionan la fun- cin y el comportamiento deseado.

    Estructuras de datos que facilitan a los programas manipular adecuada- mente la informacin.

    Documentos que describen la operacin y el uso de los programas y las es- tructuras de datos manipuladas por los mismos.

    Se puede categorizar el software exigiendo una serie de caractersticas para que sea til en el marco de la Ingeniera del Software. As, el software debe ser confiable y de calidad. El software confiable es el software que cumple las caracte- rsticas siguientes:

    Debe estar ajustado a las especificaciones establecidas previamente.

    No debe producir resultados incorrectos.

    No debe permitir su corrupcin.

    Debe reaccionar de manera til y significativa en situaciones inesperadas.

    Slo debe fallar por completo cuando sea imposible seguir avanzando. La tasa de confiabilidad del software se puede obtener por medio de las acti-

    vidades siguientes:

  • 1.14 INGENIERA DEL SOFTWARE

    Comprensin del ambiente en el que opera el software.

    Especificacin de la funcin del sistema en su ambiente.

    Aplicacin en el diseo de todas las partes de la especificacin.

    Aplicacin de la correccin en el diseo.

    Transformacin correcta de todas y cada una de las partes del diseo a un sistema de programacin.

    Elaboracin de documentacin exacta.

    Mantenimiento de la confiabilidad a lo largo de toda la vida til del siste- ma.

    Y finalmente, el software de calidad es el software que tiene los atributos si- guientes:

    Es mantenible: est escrito y documentado de forma que los cambios pue- dan ser realizados sin costes adicionales.

    Es fiable: ha de funcionar segn las expectativas de los clientes y no debe- ra fallar ms de lo indicado en las especificaciones; es eficiente: aprovecha al mximo los recursos hardware y de otro tipo del sistema que lo soporta y alcanza los objetivos establecidos.

    Es amigable: tiene una apropiada interfaz de usuario que facilita la utiliza- cin del sistema o producto y en donde intervienen tanto elementos de vi- sualizacin e intervencin, como elementos de ayuda y asistencia.

    Es parcialmente sustituible: la sustitucin parcial de determinados elemen- tos por otros con la misma interfaz no debe alterar el comportamiento ge- neral al menos en sentido negativo.

    Es parcialmente reutilizable: determinados elementos deben poderse apli- car en nuevos desarrollos manteniendo como mnimo el mismo nivel de funcionalidad de cada uno de dichos elementos.

    Es controlable y auditable: est escrito y documentado de forma que se pueda registrar los cambios sucesivos y se pueda registrar fiablemente su comporta-miento para inspeccin posterior.

    Es seguro: se ha diseado para que cumpla al mximo las premisas de ase- gurar la integridad, la confidencialidad y la disponibilidad.

    Este es el criterio objetivo de software de calidad. Sin embargo, la calidad tambin puede tomar matices subjetivos en funcin del tipo de actor que se rela-

  • TEMA-01 15

    cione con el software, puesto que pueden llegar a tener intereses distintos. El pro- motor o contratante, que es quien lanza la iniciativa de desarrollo y asume los cos- tes del mismo, quiere tener el mejor producto a menor coste y en el menor tiempo o, al menos, dentro del presupuesto aceptado y en la fecha comprometida. El usua- rio, que es quien realmente va a utilizar el sistema software, desea una herramienta que le ayude en su trabajo, que no le obligue a modificar sus hbitos e, incluso, que no pueda sustituirle en el puesto de trabajo.

    Por la otra parte, los tcnicos de mantenimiento, los operadores y tcnicos de explotacin, los analistas y programadores, etc. quieren tener un sistema que fun- cione y que no d problemas, facilitando su mantenimiento y la incorporacin no traumtica de nuevas aplicaciones.

    Como se puede ver, las expectativas de todos ellos no confluyen en un punto comn. As, debe aplicarse especialmente la capacidad profesional del ingeniero y sus habilidades de gestin y relacin para encontrar puntos de convergencia entre las metas conflictivas de todos estos actores. 1.5.2 Caracterizacin de la disciplina La tarea de un Ingeniero del Software consiste en producir un sistema o producto software dentro de las limitaciones de costo, utilizando el conocimiento y las teor- as de la ciencia sobre las que se basa el sistema o producto, y aplicando mtodos, herramientas y procedimientos, que facilitan al gestor el control del proceso del desarrollo del software. Y adems, estos elementos suministran las bases para cons- truir software de alta calidad de forma razonablemente productiva.

    Dentro del conocimiento y las teoras de la ciencia sobre las que se basa el sis- tema o producto, se debe tener claro el concepto fundamental de paradigma. El paradigma es en general una forma distinta de ver las cosas. En la Ingeniera del Software, es un enfoque de ingeniera cuyas tcnicas y tecnologas corresponden a una filosofa y a un mbito particular en la representacin de sistemas y de sus soluciones tecnolgicas. Los paradigmas ms importantes, centrados en el producto final, son el Paradigma de la Programacin Estructurada, el Paradigma de la Programacin Lgica, el Paradigma de la Programacin Funcional y el Paradig- ma de la Programacin Orientada a Objetos. Este ltimo es que se desarrolla en este libro con respecto a la construccin de sistemas software.

    Independientemente del paradigma, pero dentro del marco formal de la Inge- niera, se puede finalmente definir el concepto de la disciplina Ingeniera del Soft- ware vista como un enfoque de ingeniera especfico:

  • 1.16 INGENIERA DEL SOFTWARE

    La Ingeniera del Software es el establecimiento y uso de principios de ingenie- ra robustos, orientados a obtener software econmico que sea fiable y funcione de manera eficiente sobre mquinas reales, mediante la aplicacin de los ele- mentos y actividades siguientes: mtodos; planificacin y estimacin de pro- yectos; anlisis de los requisitos del sistema y del software; diseo de estructu- ras de datos; arquitectura de programas y procedimientos algortmicos; codifi- cacin; pruebas; instalacin y mantenimiento; herramientas; y procedimientos. Las definiciones de la Tabla 1.1 se pueden aplicar perfectamente a esta disci-

    plina siguiendo el mismo punto de vista del enfoque de ingeniera. As, el propsito de la Ingeniera del Software es la de resolver problemas reales de tipo informtico de la manera ms eficiente. Este propsito de alcanza por medio de los procesos o formas unitarias en que se desarrolla el enfoque de Ingeniera del Software, siendo la unidad de accin el proyecto de ingeniera informtica. Este ltimo concepto se puede definir de la forma siguiente:

    El proyecto de ingeniera informtica es el conjunto de actividades coordinadas cronolgicamente para alcanzar un subconjunto de objetivos a partir de la defi- nicin de un subconjunto de necesidades, todo ello en-marcado dentro de un Plan Estratgico de Sistemas de Informacin. En el aspecto cronolgico, un proyecto tiene un inicio, una fecha inicial, y un final, la fecha de finalizacin; pero tambin tiene unos hitos temporales intermedios para la distribucin de las actividades. En el aspecto econmico, un proyecto necesita de unos recur- sos, tanto para su puesta en marcha, como para su continuacin y culminacin. Adems, el proyecto debe ofrecer determinados resultados que justifiquen el coste de los recursos empleados. En el aspecto organizativo, un proyecto parte de una planificacin previa y necesita de una gestin que adecue las activida- des a la planificacin y que controle las desviaciones. Se puede apreciar que se ha utilizado el trmino proyecto de ingeniera in-

    formtica en lugar de proyecto de Ingeniera del Software. La justificacin es que cualquier proyecto en que se desarrolle software necesita del concurso del hardware necesario para dicho desarrollo, aunque solamente se considere su adqui- sicin e instalacin. Con lo cual una parte del proyecto es software y el resto es hardware. 1.5.3 Principios de la Ingeniera del Software Hay cinco principios fundamentales en la enseanza, el aprendizaje y la aplicacin de la Ingeniera del Software que todo profesional relacionado directamente con esta disciplina debe tener en cuenta. En la Tabla 1.5 se enuncias estos principios.

  • Tabla 1.5. Principios de la Ingeniera del Software

    TEMA-01 17

    1.6 Fuentes El libro de Roger S. Pressman (Pressman, 2014) es uno de las obras clsicas en el enfoque moderno de la Ingeniera del Software en general, aunque su estructura expositiva es un poco discutible para quien se introduce por primera vez en esta disciplina. Los conceptos de proceso y producto, a pesar de tener una seccin dedi- cada, no acaban de estar claros. Por otra parte, es uno de los primeros en la intro- duccin formal de nuevas formas de aplicacin de la disciplina en mbitos como los sistemas Web. Su enfoque no es fundamentalmente prctico, por lo que se debe apoyar en otros libros si se pretende disear un proyecto informtico.

    En el libro de Piattini y otros (Piattini et al., 2013) se desarrollan conceptos mucho ms concretos para su aplicacin inmediata en el desarrollo de proyectos informticos.

    Principio Definicin Principio I. Experiencia prctica

    La comprensin de la complejidad slo puede obtenerse trabajando con un sistema complejo; esto es, un sistema que no puede comprender por completo una sola persona, aun-que sea un profesional.

    Principio II. Resolucin de problemas

    No hay soluciones correctas o incorrectas, sino slo soluciones que son mejores o peores con relacin a un criterio establecido.

    Principio III. Recursos limi- tados

    El sistema ideal se construye con recursos ilimitados y tiempo infinito. Pero la realidad es muy distinta y determina que los recursos son limitados y escasos. Adems, a pesar de tener suficientes recursos, el problema original puede cam- biar con rapidez durante el desarrollo, con el riesgo de entregar un sistema final que resuelve el problema equivocado u obsoleto. Por lo tanto, la conciencia de la escasez de recursos motiva un enfoque de ingeniera basado en componentes, reutilizacin de software, diseo y cdigo.

    Principio IV. Interdiscipli- nariedad

    La ingeniera del software es una disciplina donde convergen necesariamente otras disciplinas: ingeniera elctrica, ingeniera del hardware, ciencia de la computacin, administracin de empresas, diseo grfico, diseo industrial, etc. El problema a resolver debe atacarse desde varias perspectivas y terminologas.

    Principio V. Comunicacin

    Deben establecerse los canales de comunicacin necesarios entre los participan- tes en proyectos de ingeniera y con su entorno. Hay que comunicar alternati- vas, articular soluciones, negociar compromisos y revisar y criticar el trabajo de los dems. Se debe incluir necesariamente a los clientes y usuarios como fuen- tes y destinatarios de determinados flujos de informacin.

  • 1.18 INGENIERA DEL SOFTWARE

    La sexta edicin de la obra de Sommerville (Sommerville, 2012) recoge la evolucin de la disciplina, como por ejemplo, la reutilizacin del software basada en patrones, el desarrollo basado en componentes, el estudio integral de los siste- mas crticos, la presentacin de ejemplos de programas en Java y los modelos de objetos en UML.

    El enfoque especfico de la Ingeniera del Software Orientado a Objetos se tra- ta en las obras (Bruegge et al., 2002) y (Harmon, 1993). Esto se trata con mayor detalle en los captulos siguientes.

    1.7 Bibliografa Bruegge B., Dutoit A.H. Ingeniera de Software Orientado a Objetos. Prentice Hall

    Pearson educacin, Mxico, 2002. Harmon P., Hall C. Intelligent Software Systems Development. An IS Managers

    Guide. John Wiley, New York-USA, 1993. Piattini M., Calvo-Manzano J., Cervera J., Fernndez L. Anlisis y Diseo Detalla-

    do de Aplicaciones Informticas de Gestin .RA-MA, Madrid, 1993. Pressman R.S. Ingeniera del Software. Un enfoque prctico (5 ed.) Mc Graw-Hill;

    New York , 2001. Sommerville I. Ingeniera de software. 6 edicin. PrenticeHall Pearson educa-

    cin, Mxico, 2002. Yourdon E., Whitehead K., Thomann J., Oppel K., Nevermann P. Mainstream

    Objects: An Analysis and Design Approach for Business. Prentice-Hall, Up- per Saddle River, NJ (USA), 1995.