04-IngSoftware[2015]

3
4-Ingeniería de Software Ing. Carlos Ernesto García, M.Sc 4.1-Introducción. El término Ingeniería de Software se refiere a un concepto muy discutido y polémico en la actualidad. La polémica gira fundamentalmente en torno a si la actividad de desarrollar software es en realidad un área de la Ingeniería. Para algunos lo es y para otros no lo es. Poco a poco son más quienes creen que si no lo es, debe serlo. Pero independientemente de la polémica, lo cierto es que en la Unidad Informática se elabora mucho software, ya que éste en un componente fundamental de todo sistema informático; y también es cierto que para que el software sea de alta calidad, es conveniente desarrollarlo con principios, técnicas y herramientas de Ingeniería. Para llegar a una definición apropiada de Ingeniería de Software se partirá de la definición de Ingeniería que se adoptó en el capítulo previo, y de una definición de software que se desarrolla a continuación. Ingeniería. En el capítulo anterior se definió la Ingeniería como un conjunto coherente de técnicas y conceptos derivados del conocimiento científico, aplicables a la construcción de sistemas específicos para beneficio humano. En la Ingeniería Civil se construyen puentes, carreteras y edificios; en la Ingeniería Industrial se construyen plantas y procesos industriales; y en la Ingeniería Informática se construyen sistemas informáticos. Software. El término software se deriva un tanto accidentalmente del término hardware. Al principio del desarrollo de las computadoras, la gente se refería a los componentes físicos tangibles de una computadora como tubos de vacío, relays, resistencias y alambrado, con el término hardware. Casi enseguida se comenzó a usar en la industria de las computadoras el término software para referirse a todo lo que no era hardware, especialmente a los programas que se necesitaban para que las computadoras pudieran realizar las tareas que estaban supuestas a hacer. Para 1960, el uso del término ya estaba bastante generalizado. 1 El diccionario American Heritage define el término software como “Los programas, rutinas y lenguajes simbólicos que controlan el funcionamiento del hardware de una computadora, y dirigen su operación”. Según Pressman, “el software es (1) un conjunto de instrucciones (programas de computadora) que cuando se ejecutan proporcionan la función y el rendimiento deseados, (2) estructuras de datos que permiten a los programas manejar adecuadamente la información, y (3) documentos que describen la operación y el uso de los programas”. 2 Para el propósito de este capítulo, el software es un sistema destinado a lograr un objetivo específico de al menos mediana complejidad 3 a través de una computadora digital, consiste en: a. Un conjunto de instrucciones relacionadas entre sí, destinadas a dirigir y controlar las operaciones de los componentes de una computadora digital. a. Un conjunto de estructuras de datos destinadas a almacenar los datos requeridos por las instrucciones. b. Una documentación destinada a dirigir la instalación del conjunto de instrucciones y estructuras de datos, su utilización, su actualización y su mantenimiento. El objetivo específico de un software no está necesariamente relacionado a un propósito informático. Mas bien, puede estar relacionado con cualquier clase de propósito. Por ejemplo, un propósito de entretenimiento como son los juegos; didáctico como las enciclopedias; de control de procesos como el usado en lanzamiento de satélites o en guía de misiles balísticos; o de apoyo operativo como los procesadores de palabras, las hojas electrónicas, los editores de texto, los compiladores y los sistemas operativos. El conjunto de instrucciones puede estar especificado en lenguaje de máquina ejecutable o en cualquier lenguaje simbólico fuente que sea transformable a lenguaje ejecutable mediante un compilador o intérprete existente. Normalmente las instrucciones están registradas en un medio magnético, un medio óptico o en firmware. Exactamente lo mismo es aplicable a las estructuras de datos en cuanto a la forma de especificarlas y registrarlas. 1 Petrocelli &Charter; Encyclopedia of Computer Science; New York, 1976. Pág.1285. 2 Pressman, Roger P.; Ingeniería de Software: Un Enfoque Práctico; McGraw-Hill, 4a. edición, Madrid, 1998. Pág. 7. 3 50 puntos funcionales como mínimo.

description

ingenieria sde software

Transcript of 04-IngSoftware[2015]

Page 1: 04-IngSoftware[2015]

4-Ingeniería de SoftwareIng. Carlos Ernesto García, M.Sc

4.1-Introducción.El término Ingeniería de Software se refiere a un concepto muy discutido y polémico en la actualidad. Lapolémica gira fundamentalmente en torno a si la actividad de desarrollar software es en realidad un área dela Ingeniería. Para algunos lo es y para otros no lo es. Poco a poco son más quienes creen que si no lo es,debe serlo. Pero independientemente de la polémica, lo cierto es que en la Unidad Informática se elaboramucho software, ya que éste en un componente fundamental de todo sistema informático; y también escierto que para que el software sea de alta calidad, es conveniente desarrollarlo con principios, técnicas yherramientas de Ingeniería.

Para llegar a una definición apropiada de Ingeniería de Software se partirá de la definición de Ingenieríaque se adoptó en el capítulo previo, y de una definición de software que se desarrolla a continuación.

Ingeniería.En el capítulo anterior se definió la Ingeniería como un conjunto coherente de técnicas y conceptosderivados del conocimiento científico, aplicables a la construcción de sistemas específicos para beneficiohumano. En la Ingeniería Civil se construyen puentes, carreteras y edificios; en la Ingeniería Industrial seconstruyen plantas y procesos industriales; y en la Ingeniería Informática se construyen sistemasinformáticos.

Software.El término software se deriva un tanto accidentalmente del término hardware. Al principio del desarrollo delas computadoras, la gente se refería a los componentes físicos tangibles de una computadora como tubosde vacío, relays, resistencias y alambrado, con el término hardware. Casi enseguida se comenzó a usar enla industria de las computadoras el término software para referirse a todo lo que no era hardware,especialmente a los programas que se necesitaban para que las computadoras pudieran realizar las tareasque estaban supuestas a hacer. Para 1960, el uso del término ya estaba bastante generalizado.1

El diccionario American Heritage define el término software como “Los programas, rutinas y lenguajessimbólicos que controlan el funcionamiento del hardware de una computadora, y dirigen su operación”.

Según Pressman, “el software es (1) un conjunto de instrucciones (programas de computadora) que cuando seejecutan proporcionan la función y el rendimiento deseados, (2) estructuras de datos que permiten a losprogramas manejar adecuadamente la información, y (3) documentos que describen la operación y el uso de losprogramas”.2

Para el propósito de este capítulo, el software es un sistema destinado a lograr un objetivo específico de almenos mediana complejidad3 a través de una computadora digital, consiste en:

a. Un conjunto de instrucciones relacionadas entre sí, destinadas a dirigir y controlar las operaciones de loscomponentes de una computadora digital.

a. Un conjunto de estructuras de datos destinadas a almacenar los datos requeridos por las instrucciones.

b. Una documentación destinada a dirigir la instalación del conjunto de instrucciones y estructuras de datos,su utilización, su actualización y su mantenimiento.

El objetivo específico de un software no está necesariamente relacionado a un propósito informático. Mas bien,puede estar relacionado con cualquier clase de propósito. Por ejemplo, un propósito de entretenimiento comoson los juegos; didáctico como las enciclopedias; de control de procesos como el usado en lanzamiento desatélites o en guía de misiles balísticos; o de apoyo operativo como los procesadores de palabras, las hojaselectrónicas, los editores de texto, los compiladores y los sistemas operativos.

El conjunto de instrucciones puede estar especificado en lenguaje de máquina ejecutable o en cualquier lenguajesimbólico fuente que sea transformable a lenguaje ejecutable mediante un compilador o intérprete existente.Normalmente las instrucciones están registradas en un medio magnético, un medio óptico o en firmware.Exactamente lo mismo es aplicable a las estructuras de datos en cuanto a la forma de especificarlas yregistrarlas.

1Petrocelli &Charter; Encyclopedia of Computer Science; New York, 1976. Pág.1285.2 Pressman, Roger P.; Ingeniería de Software: Un Enfoque Práctico; McGraw-Hill, 4a. edición, Madrid, 1998. Pág. 7.3 50 puntos funcionales como mínimo.

Page 2: 04-IngSoftware[2015]

La documentación se concretiza normalmente en tres documentos: un Instructivo de Instalación, un Manual deOperación y un Manual Técnico. El primer documento está orientado a facilitar al usuario la instalación delsoftware en una computadora; mientras que el segundo está destinado a facilitar al usuario la utilización yoperación del software. El propósito del Manual Técnico es facilitar a los ingenieros de software las futurasoperaciones de mantenimiento que pueda requerir el software después de su exitosa instalación. Ladocumentación puede estar registrada en un medio magnético, óptico o en papel.

Los componentes de la computadora digital dirigidos y controlados por el software pueden ser de hardware, desoftware o de ambos. Entre los componentes de hardware se encuentran: los CPU, el BIOS, los dispositivos deentrada/salida, las unidades de disco duro y la memoria principal. Entre los componentes de software están: elsistema operativo, las utilerías, los drivers y los compiladores.

Algunas características del software que contrastan con las del hardware son las siguientes: a) El software sedesarrolla, no se manufactura; b) El software es un sistema intangible; c) El software no se desgasta, pero sí sedeteriora; d) El software tiende a construirse a la medida en vez de a partir de componentes.

Ingeniería de Software.Para Pressman, reconocido autor a nivel mundial en esta disciplina, Ingeniería de Software ”es una disciplina oárea de la Informática o Ciencias de la Computación, que ofrece métodos y técnicas para desarrollar y mantenersoftware de calidad que resuelve problemas de todo tipo”. 4

Para Zelkovitz, Ingeniería de Software “es el estudio de los principios y metodologías para el desarrollo ymantenimiento de sistemas de software”.5

Bohem define Ingeniería de Software como “la aplicación práctica del conocimiento científico en el diseño yconstrucción de programas de computadora y la documentación asociada requerida para desarrollarlos,operarlos y mantenerlos”.6

Según Bauer, la Ingeniería de Software“trata sobre el establecimiento de losprincipios y métodos de la Ingeniería afin de obtener software de modo rentableque sea fiable y trabaje en máquinasreales”.7

Para la IEEE, Ingeniería de Software es“1) La aplicación de un enfoquesistemático, disciplinado y cuantificableal desarrollo, operación y mantenimientodel software; es decir, la aplicación de laIngeniería al software. 2) El estudio deenfoques como en 1)”.8

Para los propósitos de este tema, seilustra en la Figura 4.1 lo que seentenderá por Ingeniería de Software.

Objetivo. Construir software de altacalidad, de forma sistemática ydisciplinada; calidad que debe versereflejada en términos de oportunidad, efectividad, confiabilidad y eficiencia; y en la facilidad de operación ymantenimiento.

Características. La Ingeniería de Software es un sistema abierto, estocástico, dinámico y predominantementeabstracto, artificial, temporal y adaptable.

Frontera. La frontera de la Ingeniería de Software es de naturaleza virtual. Dentro de ella están comprendidoslos elementos necesarios para desarrollar software de alta calidad: los conceptos, métodos, técnicas,

4 Ibid. Pág. xxi.5 Zelkovitz, M. V., Shaw A.C., Gannon, J. D.; Principles of Software Engineering and Design; Prentice-Hall; Englewoods Clif, 1979.6 Bohem, B. W.; Software Engineering; IEEE Transactions on Computers, C-25, Núm. 12, diciembre 1976. Pág. 1226-1241.7 Baher, F. L.; Software Engineering; Information Processing; 71, North Holland Publishing Co., Amsterdam, 1972.8 IEEE; Standards Collection: Software Engineering; IEEE Standard 610.12-1990, IEEE, 1993.

2

Figura 4.1. La Ingeniería de Software.

Necesidad de software

(Perfil del software)

Software de alta calidad

Control

Frontera

Medioambiente: Stakeholders: usuarios, clientes, inversionistas etc. Mercado, sistemas informáticos, otros software, etc.

Conceptos, métodos, técnicas, herramientas y

procedimientos .

Biblioteca de Software .

Ingenieros, A/Ps .

Equipo .

Page 3: 04-IngSoftware[2015]

herramientas, procesos, modelos y procedimientos propios de la Ingeniería de Software; las bibliotecas desoftware; el equipo necesario para producir desarrollar el software; y los ingenieros de software, analistas yprogramadores.

Entradas. Lo que impulsa el desarrollo de un producto de software, como sucede en cualquier otra rama de laIngeniería, es una necesidad humana insatisfecha o una oportunidad de mejorar una determinada condición.Esta necesidad u oportunidad es la entrada al sistema y puede ser expresada inicialmente de manera verbal opor escrito. Cuando es verbal, el ingeniero de software deberá expresarla por escrito.

La entrada es pues, una descripción precisa de las propiedades deseadas del software a desarrollar, desde elpunto de vista del cliente, con sus propias palabras y frases. El lenguaje del cliente suele ser bastante vago, sin eluso de términos técnicos informáticos y de computación. La descripción puede ocupar tan solo media página ocientos de páginas. Al documento resultante se le denomina perfil del software.

Salidas. Las salidas están directamente relacionadas con el objetivo ya expresado de la Ingeniería de Software:software de alta calidad, confiable y económico; con sus correspondientes manuales.

Medioambiente. Son elementos relevantes en el medioambiente de la Ingeniería de Software todo lo quecomprende a los denominados stakeholders, es decir, las personas e instituciones que tienen algún interésdirecto en el software o en su desarrollo; como los usuarios, los clientes, los inversionistas, los ingenieros desoftware y los ingenieros de requerimientos. También suelen ser elementos del medioambiente: el mercado,sistemas informáticos con los que el software debe interactuar, las computadoras con sus equipos periféricos enlas que el software operará y otros software existentes con los que el software a crear se interrelaciona de algunamanera.

Elementos. Entre los principales elementos transformadores de las entradas en salidas en la Ingeniería deSoftware están:

a. Técnicas. Todos los conceptos, métodos, herramientas, procesos y procedimientos derivados de laIngeniería y de la Ciencia, aplicables a la sistematización del proceso de desarrollo de software.

a. Bibliotecas de software. Módulos y componentes de software destinados a facilitar el proceso dedesarrollo de software. Se hallan dentro de éstos, por ejemplo: compiladores; clases, objetos, rutinas ycomponentes reusables; herramientas para planificación y diagramación; procesadores de palabra; yherramientas CASE.

b. Recurso humano. Gerentes de proyecto, ingenieros de software, ingenieros de requerimientos,analistas y programadores, entre otros, que aportan la parte intelectual, las competencias y las habilidadeshumanas necesarias al proceso de producción de software.

c. Equipo. Todas las computadoras y sus componentes periféricos necesarios para el proceso dedesarrollo del software.

Control. La función de control en la Ingeniería de Software es de extrema importancia. Es en esta área dondemás se cuestiona el uso del término Ingeniería al referirse al proceso de desarrollo de software. Como en todosistema, a través de la función de control se debe monitorear, en un subproceso retroalimentativo, característicasrelevantes del software que se desea mantener bajo control, sobre todo las relativas a calidad y confiabilidad; yse debe ejecutar las acciones correctivas que sean necesarias cuando se detectan desviaciones significativas.Todas las operaciones de prueba que se realizan durante el proceso son actividades comprendidas en la funciónde control.

Ingeniero de Software.Adaptando un poco el enunciado del Comité Coordinador de la Ingeniería de Software9, el Ingeniero de Softwaredebe tener proeficiencia para analizar, diseñar, construir, verificar, validar, documentar, implementar y mantenersistemas de software; usando técnicas y métodos apropiados para asegurar la calidad en todas estasactividades. Debe entender y utilizar métodos, procesos, métricas y herramientas adecuadas durante eldesarrollo de software. Debe poseer las habilidades necesarias para comunicarse y para trabajar en equipo, talcomo se requiere en un ambiente típico de desarrollo de software.

9 IEEE Computer Society and ACM Software Engineering Coordinating Committee; Accreditation Criteria for Software Engineering (revised 9/25/98); http://www.swebok.org

3