Está en la página 1de 8

INSTITUTO TECNOLOGICO DE TLAHUAC INTRODUCCIN A LA INGENIERA DEL SOFTWARE Definicin De Ingeniera Del Software Ingeniera de software es la aplicacin de un enfoque

sistemtico, disciplinado y cuantificable al desarrollo, operacin y mantenimiento de software, y el estudio de estos enfoques, es decir, la aplicacin de la ingeniera al software. Es la aplicacin de la ingeniera al software, ya que integra matemticas, ciencias de la computacin y prcticas cuyos orgenes se encuentran en la ingeniera. Se pueden citar otras definiciones enunciadas por prestigiosos autores: Ingeniera de software es el estudio de los principios y metodologas para el desarrollo y mantenimiento de sistemas software (Zelkovitz, 1978) Ingeniera de software es la aplicacin prctica del conocimiento cientfico al diseo y construccin de programas de computadora y a la documentacin asociada requerida para desarrollar, operar y mantenerlos. Se conoce tambin como desarrollo de software o produccin de software (Bohem, 1976). Ingeniera de software trata del establecimiento de los principios y mtodos de la ingeniera a fin de obtener software de modo rentable, que sea fiable y trabaje en mquinas reales (Bauer, 1972).

Historia La Ingeniera del Software, trmino utilizado por primera vez por Fritz Bauer en la primera conferencia sobre desarrollo de software patrocinada por el Comit de Ciencia de la OTAN celebrada en Garmisch, Alemania, en octubre de 1968, puede definirse segn Alan Davis como la aplicacin inteligente de principios probados, tcnicas, lenguajes y herramientas para la creacin y mantenimiento, dentro de un coste razonable, de software que satisfaga las necesidades de los usuarios. El trmino ingeniera del software empez a usarse a finales de la dcada de los sesenta, para expresar el rea de conocimiento que se estaba desarrollando en torno a las problemticas que ofreca el software en ese momento. En esa poca, el crecimiento espectacular de la demanda de sistemas de computacin cada vez ms y ms complejos, asociado a la inmadurez del propio sector informtico (totalmente ligado al electrnico) y a la falta de mtodos y recursos, provoc lo que se llam la crisis del software (en palabras de Edsger Dijkstra) entre los aos 1965 y 1985. Durante esa poca muchos proyectos importantes superaban con creces los presupuestos y fechas estimados, algunos de ellos eran tan crticos (sistemas de control de aeropuertos, equipos para medicina, entre otros) que sus implicaciones iban ms all de las prdidas millonarias que causaban. La crisis del software pas, no tanto por la mejora en la gestin de los proyectos, sino en parte porque no es razonable estar en crisis ms de veinte aos, y en parte porque se estaban haciendo progresos en los procesos de diseo y metodologas.

Ing. en Sistemas Computacionales

Ing. Romualdo Jonatan Quintero Hernndez

INSTITUTO TECNOLOGICO DE TLAHUAC As pues, desde 1985 hasta el presente, han ido apareciendo herramientas, metodologas y tecnologas que se presentaban como la solucin definitiva al problema de la planificacin, previsin de costes y aseguramiento de la calidad en el desarrollo de software. Entre las que se encuentran la programacin estructurada, la programacin orientada a objetos, a los aspectos, las herramientas CASE, el lenguaje de programacin ADA, la documentacin, los estndares, CORBA, los servicios web y el lenguaje UML (entre otros) fueron todos anunciados en su momento como la solucin a los problemas de la ingeniera del software, la llamada bala de plata (por silver bullet). Y lo que es ms, cada ao surgen nuevas ideas e iniciativas encaminadas a ello. En combinacin con las herramientas, tambin se han hecho esfuerzos por incorporar los mtodos formales al desarrollo de software, argumentando que si se probaba formalmente que los desarrollos hacan lo que se les requera, la industria del software sera tan predecible como lo son otras ramas de la ingeniera. Caractersticas Del Software 1. El software se desarrolla o construye; no se manufactura en el sentido clsico. A pesar de que existen similitudes entre el desarrollo del software y la manufactura del hardware, las dos actividades serian diferentes en lo fundamental. En ambas la alta calidad se alcanza por medio del buen diseo, la fase de manufactura del hardware puede incluir problemas de calidad existentes en el software. 2. El software no se desgasta. El software es inmune a los males ambientales que desgasten el hardware. Por lo tanto la curva de tasas de fallas para el software debera tener la forma de la curva idealizada. Los defectos sin descubrir causan tasas de fallas altas en las primeras etapas de vida de un programa. Sin embargo, los errores se corrigen y la curva se aplana: el software no se desgasta, pero si se deteriora. 3. A pesar de que la industria tiene una tendencia hacia la construccin por componentes, la mayora del software aun se construye a la medida. Un componente de software se debe disear e implementar de forma que puede utilizarse en muchos programas diferentes. Los componentes reutilizables modernos encapsulan tanto los datos como el proceso se aplican a estos, lo que permite al ingeniero de software crear nuevas aplicaciones nuevas a partir de partes reutilizables. Mitos Del Software Los mitos del software-creencias acerca del software y de los procesos empleados para construirlo- se pueden rastrear hasta los primeros das de la computacin. Los mitos tienen ciertos atributos que los convierten en insidiosos.

Ing. en Sistemas Computacionales

Ing. Romualdo Jonatan Quintero Hernndez

INSTITUTO TECNOLOGICO DE TLAHUAC Mitos de la administracin Los gestores con responsabilidad sobre el software, como los gestores en la mayora de las disciplinas, estn normalmente bajo la presin de cumplir las propuestas, hacer que no se retrase el proyecto y mejorar la calidad. Un gestor de software se agarra frecuentemente a un mito del software. Mito: Si se falla en la planificacin, se puede aadir mas programadores y adelantar el tiempo perdido. Mitos del cliente En muchos casos, el cliente cree en los mitos que existen sobre el software, debido a que los gestores y desarrolladores de software hacen muy poco para corregir la mala informacin. Los mitos conducen a que el cliente se cree una falsa expectativa y, finalmente, quede insatisfecho con el desarrollador del software. Mito: Si los requisitos del proyecto cambian continuamente, los cambios pueden acomodarse fcilmente, ya que el software es flexible. Mitos de los desarrolladores Los mitos en los que aun creen muchos desarrolladores se han ido fomentando durante 50 aos de cultura informtica. Durante los primeros das del desarrollo del software, la programacin se vea como un arte. Las viejas formas y actitudes tardan en morir. Mito: Una vez que escribimos el programa y hacemos que funcione, nuestro trabajo ha terminado. Capas De La Ingeniera Del Software Pressman caracteriza la Ingeniera de Software como una tecnologa multicapa

Dichas capas se describen a continuacin: Cualquier disciplina de ingeniera (incluida la ingeniera del software) debe descansar sobre un esfuerzo de organizacin de calidad. La gestin total de la calidad y las filosofas similares fomentan una cultura continua de mejoras de procesos que conduce al desarrollo de enfoques cada vez ms robustos para la ingeniera del software.

Ing. en Sistemas Computacionales

Ing. Romualdo Jonatan Quintero Hernndez

INSTITUTO TECNOLOGICO DE TLAHUAC El fundamento de la ingeniera de software es la capa proceso. El proceso define un marco de trabajo para un conjunto de reas clave, las cuales forman la base del control de gestin de proyectos de software y establecen el contexto en el cual: se aplican los mtodos tcnicos, se producen resultados de trabajo, se establecen hitos, se asegura la calidad y el cambio se gestiona adecuadamente. Los mtodos de la ingeniera de software indican cmo construir tcnicamente el software. Los mtodos abarcan una gran gama de tareas que incluyen anlisis de requisitos, diseo, construccin de programas, pruebas y mantenimiento. Estos mtodos dependen de un conjunto de principios bsicos que gobiernan cada rea de la tecnologa e incluyen actividades de modelado y otras tcnicas descriptivas. Las herramientas de la ingeniera del software proporcionan un soporte automtico o semiautomtico para el proceso y los mtodos, a estas herramientas se les llama herramientas CASE(Computer-Aided Software Engineering). Independientemente de la complejidad del sistema y de su rea de aplicacin la ingeniera de software puede considerarse una tecnologa multicapa, donde la primera capa enfatiza que los cimientos de la ingeniera de software estn orientados hacia la calidad (Pressman). Un proceso de software es el conjunto de actividades, mtodos, prcticas y tecnologas aplicables a todos los proyectos de software. Un proceso bsico (tambin conocido como ciclo de vida bsico) est conformado por el anlisis, diseo, codificacin, pruebas y mantenimiento. Los mtodos, o modelos, de la ingeniera de software indican como realizar los pasos necesarios del ciclo de vida (cada uno con un enfoque distinto). As pues, est el modelo de Construccin de Prototipos, el modelo de Desarrollo Rpido de Aplicaciones, el de Procesos Evolutivos - que se divide en el modelo incremental, en espiral, de ensamblaje de componentes y de desarrollo concurrente - el modelo de Mtodos Formales, y por ltimo las Tcnicas de Cuarta Generacin (Pressman). Las herramientas ayudan a organizar tareas de trabajo, controlar y supervisar los progresos y administrar la calidad tcnica. Su objetivo principal es proporcionar un soporte automtico o semiautomtico, para los procesos y para los mtodos. El Proceso Del Software Se define como proceso al conjunto ordenado de pasos a seguir para llegar a la solucin de un problema u obtencin de un producto, en este caso particular, para lograr un producto software que resuelva un problema especfico. El proceso de creacin de software puede llegar a ser muy complejo, dependiendo de su porte, caractersticas y criticidad del mismo. Por ejemplo la creacin de un sistema operativo es una tarea que requiere proyecto, gestin, numerosos recursos y todo un equipo disciplinado de trabajo. En el otro extremo, si se trata de un sencillo programa (por ejemplo, la resolucin de una ecuacin de segundo orden), ste puede ser realizado por un solo programador (incluso aficionado) fcilmente. Es as que normalmente se dividen en tres categoras segn su tamao

Ing. en Sistemas Computacionales

Ing. Romualdo Jonatan Quintero Hernndez

INSTITUTO TECNOLOGICO DE TLAHUAC (lneas de cdigo) o costo: de pequeo, mediano y gran porte. Existen varias metodologas para estimarlo, una de las ms populares es el sistema COCOMO que provee mtodos y un software (programa) que calcula y provee una aproximacin de todos los costos de produccin en un proyecto software (relacin horas/hombre, costo monetario, cantidad de lneas fuente de acuerdo a lenguaje usado, etc.). Considerando los de gran porte, es necesario realizar complejas tareas, tanto tcnicas como de gerencia, una fuerte gestin y anlisis diversos (entre otras cosas), la complejidad de ello ha llevado a que desarrolle una ingeniera especfica para tratar su estudio y realizacin: es conocida como Ingeniera de Software. En tanto que en los de mediano porte, pequeos equipos de trabajo (incluso un avezado analistaprogramador solitario) pueden realizar la tarea. Aunque, siempre en casos de mediano y gran porte (y a veces tambin en algunos de pequeo porte, segn su complejidad), se deben seguir ciertas etapas que son necesarias para la construccin del software. Tales etapas, si bien deben existir, son flexibles en su forma de aplicacin, de acuerdo a la metodologa o proceso de desarrollo escogido y utilizado por el equipo de desarrollo o por el analista-programador solitario (si fuere el caso). Los procesos de desarrollo de software poseen reglas preestablecidas, y deben ser aplicados en la creacin del software de mediano y gran porte, ya que en caso contrario lo ms seguro es que el proyecto o no logre concluir o termine sin cumplir los objetivos previstos, y con variedad de fallos inaceptables (fracasan, en pocas palabras). Entre tales procesos los hay giles o livianos (ejemplo XP), pesados y lentos (ejemplo RUP), y variantes intermedias. Normalmente se aplican de acuerdo al tipo y porte del software a desarrollar, a criterio del lder (si lo hay) del equipo de desarrollo. Algunos de esos procesos son Programacin Extrema (en ingls eXtreme Programming o XP), Proceso Unificado de Rational (en ingls Rational Unified Process o RUP), Feature Driven Development (FDD), etc. El proceso de desarrollo puede involucrar numerosas y variadas tareas, desde lo administrativo, pasando por lo tcnico y hasta la gestin y el gerenciamiento. Pero, casi rigurosamente, siempre se cumplen ciertas etapas mnimas; las que se pueden resumir como sigue: Captura, elicitacin, especificacin y anlisis de requisitos (ERS) Diseo Codificacin Pruebas (unitarias y de integracin) Instalacin y paso a produccin Mantenimiento

Modelos de proceso o ciclo de vida Modelo cascada Modelos evolutivos Modelo iterativo incremental Modelo espiral Modelo espiral Win & Win

Ing. en Sistemas Computacionales

Ing. Romualdo Jonatan Quintero Hernndez

INSTITUTO TECNOLOGICO DE TLAHUAC Software De Alta Calidad La calidad del software se mide a travs de algunos factores que se pueden dividir en externos e internos. Los externos son los que ve el usuario final del software, como son la eficiencia, la correccin, la facilidad de uso, etc., indispensables en cualquier solucin. Los factores internos de calidad son aquellos que vienen dados por la estructura misma del cdigo, y slo los ve el ingeniero de software. Entre otros, se pueden mencionar la documentacin, la claridad del cdigo, la modularidad, etc. Pero, considerando los grandes problemas y costos asociados con el mantenimiento, se puede afirmar que el principal factor de calidad interna de un programa es la facilidad que ste tiene para evolucionar, lo cual est fuertemente relacionado con su arquitectura interna. A esta caracterstica del software se le denomina extensibilidad. Los cambios en el software se pueden clasificar en tres grupos: 1. Correcciones al programa: estas modificaciones son causadas por errores en el desarrollo, tanto a nivel de diseo como de implementacin. 2. Cambios en los requerimientos del usuario: a medida que la organizacin para la cual fue escrito el software evoluciona, las necesidades de los usuarios hacia los sistemas informticos de apoyo van cambiando, y eso se debe reflejar en las posibilidades que ofrecen las aplicaciones. 3. Evolucin del mundo del problema: estas modificaciones responden a cambios en los elementos del mundo que participan en el problema, en sus relaciones, en las reglas de validez, etc. Son cambios muy frecuentes, con serias repercusiones sobre la estructura del software. La misma vida til de un programa est relacionada con su estructura y su extensibilidad. Si se define la entropa del software como el nivel de desorden interno que ste tiene, y se acepta que todo mantenimiento tiende a aumentarlo, en la figura se ilustra cmo la vida til de un programa est limitada por un umbral de entropa por encima del cual no es rentable seguir manteniendo el software, y que ste se alcanza ms o menos cerca en el tiempo dependiendo de la entropa inicial.

Vida til del software en funcin de la estructura inicial

Ing. en Sistemas Computacionales

Ing. Romualdo Jonatan Quintero Hernndez

INSTITUTO TECNOLOGICO DE TLAHUAC Por todas estas razones, las metodologas de diseo de software no se deben contentar con garantizar correccin o eficiencia en su producto, sino que, adems de esto, deben generar un programa con una arquitectura interna que garantice una fcil evolucin. Factores de Calidad y Productividad Proceso del software personal (PSP) Cada desarrollador usa distintos procesos para construir un software, estos pueden ser no eficientes o exitosos o tambin pueden cambiar a diario, pero existe un proceso. WATTS HUMPHREY dice que para cambiar un proceso inefectivo se tiene que pasar por cuatro fases y estas requieren capacitacin e instrumentacin. PSP resalto la medida personal al profesional de la planeacin, tambin hace responsables al profesional de la planeacin del proyecto y la calidad de todos los productos. Existen 5 actividades de marco de trabajo que son: 1. Planeacin: Aqu se selecciona los requisitos y se desarrolla el tamao y la estimacin de los recursos. Estas mediciones se anotan en las plantillas y al final se identifican las tareas de desarrollo y se crea un programa del proyecto. 2. Diseo de alto nivel: Se analizan los factores externos y se construyen prototipos cuando hay incertidumbre. 3. Revisin del diseo de alto nivel: Se aplican los mtodos de verificacin a los errores que se descubrieran en el diseo. 4. Desarrollo: Se refina y revisa el diseo y se verifica el cdigo y se compila, adems todas las mediciones se guardan para los resultados de trabajo. 5. Anlisis de resultados: Aqu se determina la efectividad del proceso, analizando todos los datos que se tienen. El PSP destaca que cada ingeniero tiene la necesidad de identificar los errores y de entender la importancia y los tipos de errores que suelen cometerse. Factores de calidad y productividad La calidad del software desarrollado, as como la productividad del programador son factores de difcil, pero no imposible, medida. Existen una serie de factores que inuyen en la calidad y productividad, que son los siguientes y que ayudan a realizar dicha medida: La capacidad individual.- En este fctor intervienen la competencia del individuo y su familiaridad con el rea de la aplicacin.

Ing. en Sistemas Computacionales

Ing. Romualdo Jonatan Quintero Hernndez

INSTITUTO TECNOLOGICO DE TLAHUAC La comunicacin entre los miembros del equipo.- Es un factor importante, ya que el traba jo en la mayor parte de las ocasiones no es individual y debe integrarse con el que ha sido desarrollado por otros miembros del equipo. La complejidad del producto.- Este factor depende del tipo de aplicacin a desarrollar y es de difcil estimacin, ya que muchas veces hasta la fase de desarrollo no es posible comprender en toda su perspectiva las complicaciones que conlleva su realizacin. Utilizacin de una notacin adecuada.- Este factor es de gran importancia para facilitar la comunicacin entre las partes involucradas (incluido el usuario). Empleo de mtodos sistemticos.- Es importante que se empleen tcnicas que sean de amplio consenso y bien conocidas por los integrantes del equipo de desarrollo de la aplicacin. Tambin es fundamental que estas tcnicas se empleen de manera sistemtica sobre todas las aplicaciones de caractersticas semejantes con objeto de facilitar el anlisis de coste y tiempo, y tambin para poder observar la trayectoria profesional de los miembros del equipo. Conocer el tiempo disponible.- Este factor esta vinculado a otros anteriores, ya que es bsico conocer el tiempo que puede aportar cada miembro del equipo y en que plazos, sobre todo en funcin de las tareas a realizar y de la mejor o peor productividad de determinados miembros en cada una de ellas. Existencia de facilidades y recursos externos.- Este factor, es determinante en la medida en que se conozcan productos o herramientas (automticas o no) que faciliten las labores de desarrollo e integracin de la aplicacin. En mayor medida cuando se conocen aplicaciones parecidas de fcil trasportabilidad y modicacin que puedan servir de base a la que hay que realizar. Como en el resto de las actividades industriales, en el desarrollo de software, tambin es importante realizar una buena planicacin del trabajo y una buena asignacin de recursos a los distintos miembros del equipo. Una mala planicacin termina con una mala aplicacin o una aplicacin terminada a destiempo (disgusto del peticionario), lo cual supone un fracaso. Varios fracasos consecutivos de este mismo estilo suponen la ruina para la mayor parte de las empresas del sector, debido a la competencia existente.

Ing. en Sistemas Computacionales

Ing. Romualdo Jonatan Quintero Hernndez