16
La evolución del Software Durante los primeros años de la era de la computadora, el software se contemplaba como un añadido. La programación de computadoras era un "arte de andar por casa" para el que existían pocos métodos sistemáticos. El desarrollo del software se realizaba virtualmente sin ninguna planificación, hasta que los planes comenzaron a descalabrarse y los costes a correr. Los programadores trataban de hacer las cosas bien, y con un esfuerzo heroico, a menudo salían con éxito. El software se diseñaba a medida para cada aplicación y tenia una distribución relativamente pequeña. La mayoría del software se desarrollaba y era utilizado por la misma persona u organización. La misma persona lo escribía, lo ejecutaba y, si fallaba, lo depuraba. Debido a este entorno personalizado del software, el diseño era un proceso implícito, realizado en la mente de alguien y, la documentación normalmente no existía. La segunda era en la evolución de los sistemas de computadora se extienden desde la mitad de la década de los sesenta hasta finales de los setenta. La multiprogramación y los sistemas multiusuario introdujeron nuevos conceptos de interacción hombre - maquina. Las técnicas interactivas abrieron un nuevo mundo de aplicaciones y nuevos niveles de sofisticación del hardware y del software. Los sistemas de tiempo real podían recoger, analizar y transformar datos de múltiples fuentes, controlando así los procesos y produciendo salidas en milisegundos en lugar de minutos. Los avances en los dispositivos de almacenamiento en línea condujeron a la primera generación de sistemas de gestión de bases de datos.

Resumen Unidad 2. Sistemas de Informacion

  • Upload
    arcima

  • View
    216

  • Download
    2

Embed Size (px)

DESCRIPTION

Sistemas de Informacion

Citation preview

Introduccin

La evolucin del Software

Durante los primeros aos de la era de la computadora, el software se contemplaba como un aadido. La programacin de computadoras era un "arte de andar por casa" para el que existan pocos mtodos sistemticos. El desarrollo del software se realizaba virtualmente sin ninguna planificacin, hasta que los planes comenzaron a descalabrarse y los costes a correr. Los programadores trataban de hacer las cosas bien, y con un esfuerzo heroico, a menudo salan con xito. El software se diseaba a medida para cada aplicacin y tenia una distribucin relativamente pequea.

La mayora del software se desarrollaba y era utilizado por la misma persona u organizacin. La misma persona lo escriba, lo ejecutaba y, si fallaba, lo depuraba. Debido a este entorno personalizado del software, el diseo era un proceso implcito, realizado en la mente de alguien y, la documentacin normalmente no exista.

La segunda era en la evolucin de los sistemas de computadora se extienden desde la mitad de la dcada de los sesenta hasta finales de los setenta. La multiprogramacin y los sistemas multiusuario introdujeron nuevos conceptos de interaccin hombre - maquina. Las tcnicas interactivas abrieron un nuevo mundo de aplicaciones y nuevos niveles de sofisticacin del hardware y del software. Los sistemas de tiempo real podan recoger, analizar y transformar datos de mltiples fuentes, controlando as los procesos y produciendo salidas en milisegundos en lugar de minutos. Los avances en los dispositivos de almacenamiento en lnea condujeron a la primera generacin de sistemas de gestin de bases de datos.

La segunda era se caracterizo tambin por el establecimiento del software como producto y la llegada de las "casas del software". Los patronos de la industria, del gobierno y de la universidad se aprestaban a "desarrollar el mejor paquete de software" y ganar as mucho dinero.

La tercera era en la evolucin de los sistemas de computadora comenz a mediados de los aos setenta y contino ms all de una dcada. El sistema distribuido, mltiples computadoras, cada una ejecutando funciones concurrentes y comunicndose con alguna otra, increment notablemente la complejidad de los sistemas informticos. Las redes de rea local y de rea global, las comunicaciones digitales de alto ancho de banda y la creciente demanda de acceso "instantneo" a los datos, supusieron una fuerte presin sobre los desarrolladores del software.

La conclusin de la tercera era se caracterizo por la llegada y amplio uso de los microprocesadores. El microprocesador ha producido un extenso grupo de productos inteligentes, desde automviles hasta hornos microondas, desde robots industriales a equipos de diagnsticos de suero sanguneo.

La cuarta era de la evolucin de los sistemas informticos se aleja de las computadoras individuales y de los programas de computadoras, dirigindose al impacto colectivo de las computadoras y del software. Potentes maquinas personales controladas por sistemas operativos sofisticados, en redes globales y locales, acompaadas por aplicaciones de software avanzadas se han convertido en la norma.

La industria del software ya es la cuna de la economa del mundo. Las tcnicas de la cuarta generacin para el desarrollo del software estn cambiando en la forma en que la comunidad del software construye programas informticos. Las tecnologas orientadas a objetos estn desplazando rpidamente los enfoques de desarrollo de software ms convencionales en muchas reas de aplicaciones.

Sin embargo, un conjunto de problemas relacionados con el software ha persistido a travs de la evolucin de los sistemas basados en computadora, y estos problemas continan aumentando.

1. los avances del software continan dejando atrs nuestra habilidad de construir software para alcanzar el potencial del hardware.

2. Nuestra habilidad de construir nuevos programas no pueden ir al mismo ritmo de la demanda de nuevos programas, ni podemos construir programas lo suficientemente rpido como para cumplir las necesidades del mercado y de los negocios.

3. El uso extenso de computadoras ha hecho de la sociedad cada vez ms dependiente de la operacin fiable del software. Cuando el software falla, pueden ocurrir daos econmicos enormes y ocasionar sufrimiento humano.

4. Luchamos por construir software informtico que tengan fiabilidad y alta calidad.

5. Nuestra habilidad de soportar y mejorar los programas existentes se ve amenazada por diseos pobres y recursos inadecuados.

En respuesta a estos problemas, las practicas de la Ingeniera del Software se estn adoptando en toda la industria.

Que es la Ingeniera del Software ?

La Ingeniera del software es una disciplina o rea de la Informtica o Ciencias de la Computacin, que ofrece mtodos y tcnicas para desarrollar y mantener software de calidad que resuelven problemas de todo tipo. Hoy da es cada vez mas frecuente la consideracin de la Ingeniera del Software como una nueva rea de la Ingeniera, y el Ingeniero del Software comienza a ser una profesin implantada en el mundo laboral internacional, con derechos, deberes y responsabilidades que cumplir, junto a una, ya, reconocida consideracin social en el mundo empresarial y, por suerte, para esas personas con brillante futuro.

La ingeniera del software trata con reas muy diversas de la Informtica y de las Ciencias de la Computacin, tales como construccin de compiladores, sistemas operativos o desarrollos de Intranet/Internet, abordando todas las fases del ciclo de vida del desarrollo de cualquier tipo de sistemas de informacin y aplicables a una infinidad de reas tales como: negocios, investigacin cientfica, medicina, produccin, logstica, banca, control de trafico, meteorologa, el mundo del derecho, la red de redes Internet, redes Intranet y Extranet, etc.

Definicin del termino Ingeniera del Software

El termino Ingeniera se define en el Diccionario de la Real Academia Espaola de la Lengua como: "1. Conjunto de conocimientos y tcnicas que permiten aplicar el saber cientfico a la utilizacin de la materia y de las fuentes de energa. 2. Profesin y ejercicio del Ingeniero" y el termino Ingeniero se define como: persona que profesa o ejerce la Ingeniera. De igual modo la Real Academia de Ciencias Exactas, Fsicas y Naturales de Espaa define el termino Ingeniera como: " Un conjunto de conocimientos y tcnicas cuya aplicacin permite la utilizacin racional de los materiales y de los recursos naturales, mediante invenciones, construcciones u otras realizaciones provechosas para el hombre".

Evidentemente, si la Ingeniera del Software es una nueva Ingeniera, parece lgico que rena las propiedades citadas en las definiciones anteriores. Sin embargo ni el DRAE(Diccionario de la Real Academia Espaola de la Lengua), ni la Real Academia Espaola de Ciencias han incluido todava el termino en sus ultimas ediciones; en consecuencia vamos a recurrir para su definicin mas precisa a algunos de los autores mas acreditados que comenzaron en su momento a utilizar el termino o bien en las definiciones dadas por organismos internacionales profesionales de prestigio tales como IEEE o ACM, de los cuales se han seleccionado las siguientes definiciones de Ingeniera del Software.

Definicin 1:

Ingeniera del Software es el estudio de los principios y metodologas para desarrollo y mantenimiento de sistemas de software [Zelkovits, 1978].

Definicin 2:

Ingeniera del Software es la aplicacin practica del conocimiento cientfico en el diseo y construccin de programas de computadora y la documentacin necesaria requerida para desarrollar, operar(funcionar) y mantenerlos [Bohem, 1976].

Definicin 3:

Ingeniera del 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].

Definicin 4:

La aplicacin de un enfoque sistemtico, disciplinado y cuantificable al desarrollo, operacin(funcionamiento) y mantenimiento del software; es decir, la aplicacin de Ingeniera al software [IEEE, 1993].Una perspectiva industrial

En los primeros das de la informtica, los sistemas basados en computadora se desarrollaban usando tcnicas de gestin orientadas a hardware. Los gestores del proyecto se centraban en el hardware, debido a que era el factor principal del presupuesto en el desarrollo del sistema. Para controlar los costes del hardware, los gestores instituyeron controles formales y estndares tcnicos. Exigan un anlisis y diseo completo antes de que algo se construyera. Median el proceso para determinar donde podan hacerse mejoras. Dicho sencillamente, aplicaban los controles, los mtodos y las herramientas que reconocemos como Ingeniera del Hardware. Desgraciadamente, el software no era normalmente mas que un aadido.

En los primeros das, la programacin se vea como un arte. Existan pocos mtodos formales y pocas personas los usaban.

Hoy, la distribucin de costes en el desarrollo de sistemas informticos ha cambiado drsticamente. El software, en lugar del hardware, es normalmente el elemento principal del coste.

En las dcadas pasadas los ejecutivos y muchos aprendices tcnicos se haban hechos las siguientes preguntas:

1. Por qu lleva tanto tiempo terminar los programas?

2. Por qu es tan elevado el coste?

3. Por qu no podemos encontrar todos los errores antes de entregar el software a nuestros clientes?

4. Por qu nos resulta difcil constatar el progreso conforme se desarrolla el software?

Estas y otras muchas cuestiones son una manifestacin del carcter del software y de la forma en que se desarrolla, un problema que ha llevado a la adopcin de la Ingeniera del Software como practica.

Competitividad del Software

Durante muchos aos, los desarrolladores de software empleados por grandes y pequeas compaas eran los nicos en este campo. Como todos los programas se construan de forma personalizada, los desarrolladores de este software domestico dictaban los costes, planificacin y calidad. Hoy, todo esto ha cambiado.

El software ahora es una empresa extremadamente competitiva. El software que se construa internamente ahora se puede adquirir en tiendas. Muchas empresas que en su momento pagaban legiones de programadores para crear aplicaciones especializadas ahora ofrecen a un tercero mucho del trabajo del software.

El Software

La descripcin de software en un libro de texto podra tomar la forma siguiente: el software es (1) instrucciones que cuando se ejecutan proporcionan la funcin y el rendimiento deseados, (2) estructuras de datos que permiten a los programas manipular adecuadamente la informacin, y (3) documentos que describen la operacin y el uso de programas.

Caractersticas del Software

Para poder comprender lo que es el software (y consecuentemente la Ingeniera del Software), es importante examinar las caractersticas del software que lo diferencian de otras cosas que los hombres pueden construir.

El software es un elemento del sistema que es lgico, en lugar de fsico. Por lo tanto el software tiene unas caractersticas considerablemente distintas a las del hardware:

1. El software se desarrolla, no se fabrica en un sentido clsico. Aunque existen similitudes entre el desarrollo del software y la construccin del hardware, ambas actividades son fundamentalmente diferentes. En ambas actividades la buena calidad se adquiere mediante un buen diseo, pero la fase de construccin del hardware puede introducir problemas de calidad que no existen (o son fcilmente corregibles) en el software. Ambas actividades dependen de las personas, pero la relacin entre las personas dedicadas y el trabajo realizado es completamente diferente para el software. Ambas actividades requieren de la construccin de un producto, pero los mtodos son diferentes.

Los costes del software se encuentran en la ingeniera. Esto significa que los proyectos de software no se pueden gestionar como si fueran proyectos de fabricacin.

2. El software no se estropea. El software no es susceptible a los males del entorno que hacen que el hardware se estropee. Otro aspecto de ese deterioro ilustra la diferencia entre el hardware y el software. Cuando un componente se estropea, se sustituye por una pieza de repuesto. No hay pieza de repuesto para el software. Cada fallo en el software indica un error en el diseo o en el proceso mediante el que se tradujo el diseo a cdigo maquina ejecutable. Por tanto, el mantenimiento del software tiene una complejidad considerablemente mayor que la del mantenimiento del hardware.

3. La mayora del software se construye a medida, en vez de ensamblar componentes existentes. No existen catlogos de componentes de software. Se puede comprar software ya desarrollado, pero solo como una unidad completa, no como componentes que pueden reensamblarse en nuevos programas.

Capas de la Ingeniera del Software

La Ingeniera del software es un tecnologa multicapa. Cualquier enfoque de ingeniera (incluida ingeniera del software) debe apoyarse sobre un compromiso de organizacin de calidad.

PROCESO: El fundamento de la ingeniera del software es la capa de proceso. El proceso de la ingeniera del software es la unin que mantiene juntas las capas de tecnologa y que permite un desarrollo racional y oportuno de la ingeniera del software. El proceso define un marco de trabajo para un conjunto de reas clave de proceso (ACPs) que se deben establecer para la entrega efectiva de la tecnologa de la ingeniera del software. Las reas claves del proceso forman la base del control de gestin de proyectos del software y establecen el contexto en el que se aplican los mtodos tcnicos, se obtienen productos del trabajo (modelos, documentos, datos, informes, formularios, etc.), se establecen hitos, se asegura la calidad y el cambio se gestiona adecuadamente.

MTODOS: Los mtodos de la ingeniera del 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. Los mtodos de la ingeniera del software dependen de un conjunto de principios bsicos que gobiernan cada rea de la tecnologa e incluyen actividades de modelado y otras tcnicas descriptivas.

HERRAMIENTAS: Las herramientas de la Ingeniera del software proporcionan un enfoque automtico o semi-automtico para el proceso y para los mtodos. Cuando se integran herramientas para que la informacin creada por una herramienta la pueda utilizar otra, se establece un sistema de soporte para el desarrollo del software llamado ingeniera del software asistida por computadora (CASE).

Calidad en el Software

Dentro del contexto de Ingeniera de Software, se tomar la definicin de calidad en el software propuesta por la organizacin internacional de estndares (ISO/IEC DEC 9126): La totalidad de caractersticas de un producto de software que tienen como habilidad, satisfacer necesidades explcitas o implcitas. Otra definicin bastante completa de calidad en el software es la que se presenta ms adelante [35]: Se puede decir que el software tiene calidad si cumple o excede las expectativas del usuario en cuanto a:

1. Funcionalidad (que sirva un propsito),

2. Ejecucin (que sea prctico),

3. Confiabilidad (que haga lo que debe),

4. Disponibilidad (que funcione bajo cualquier circunstancia) y

5. Apoyo, a un costo menor o igual al que el usuario est dispuesto a pagar.

Resumiendo podemos decir, que la calidad de software se refiere a: Los factores de un producto de software que contribuyen a la satisfaccin completa y total de las necesidades de un usuario u organizacin.

Factores de calidad y productividad

Se definen cinco factores importantes que inciden en la productividad del software:

Factores humanos: El tamao y la experiencia de la organizacin de desarrollo.

Factores del problema: La complejidad del problema que se debe resolver y el nmero de cambios en las restricciones o los requisitos del diseo.

Factores del proceso: Tcnicas del anlisis y diseo qu se utilizan, lenguajes y herramientas CASE y tcnicas de revisin.

Factores del producto: Fiabilidad y rendimiento del sistema basado en computadora.

Factores del recurso: Disponibilidad de herramientas CASE, y recursos (hardware y software).

Factores que influyen sobre la calidad y productividad

El objetivo primordial de la ingeniera del software es producir un sistema, aplicacin o producto de alta calidad. Para lograr este objetivo, los ingenieros de software deben aplicar mtodos efectivos junto con herramientas modernas dentro del contexto de un proceso maduro de desarrollo del software. Adems, un buen ingeniero del software (y buenos gestores de la ingeniera del software) deben medir si la alta calidad se va a llevar a cabo.

La calidad de un sistema, aplicacin o producto es tan bueno como los requisitos que describen el problema, el diseo que modela la solucin, el cdigo que conduce a un programa ejecutable y las pruebas que ejercitan el software para detectar errores. Un buen ingeniero del software utiliza mediciones que evalan la calidad del anlisis y los modelos de diseo, el cdigo fuente y los casos de prueba que se han creado al aplicar la ingeniera del software.

En las dos dcadas pasadas, se definieron un juego de factores de calidad como los primeros pasos hacia el desarrollo de la calidad del software.

Estos factores evalan el software desde tres puntos de vista distintos:

Operacin del producto (utilizndolo).

Revisin del producto (cambindolo).

Transicin del producto (modificndolo para que funcione en un entorno diferente)

Los atributos que proporcionan una indicacin de la calidad del software siguen siendo los mismos.

Medida de la calidad: Aunque hay muchas medidas de la calidad de software, la correccin, facilidad de mantenimiento integral y facilidad de uso proporcionan indicadores tiles para el equipo del proyecto.

Correccin: Un programa debe operar correctamente o proporcionar poco valor a sus usuarios. La correccin es el grado en el que el software lleva a cabo su funcin requerida.

Facilidad de mantenimiento: El mantenimiento del software cuenta con ms esfuerzo que cualquier otra actividad de ingeniera del software. La facilidad de mantenimiento es la facilidad con la que se puede corregir un programa si se encuentra un error, se puede adaptar si su entorno cambia, o mejorar si el cliente desea un cambio de requisitos.

No hay forma de medir directamente la facilidad de mantenimiento

Integridad: En esta poca de intrusos informticos y de virus, la integridad del software ha llegado a tener mucha importancia. Este atributo mide la habilidad de un sistema para resistir ataques (tanto accidentales como intencionados) contra su seguridad. El ataque se puede realizar en cualquiera de los tres componentes del software: programas, datos y documentos.

Para medir la integridad, se tienen que definir dos atributos adicionales: amenaza y seguridad.

Amenaza es la probabilidad de que ocurra un ataque de cualquier tipo.

La seguridad es la probabilidad de que se pueda repeler el ataque.

Facilidad de uso: Si un programa no es amigable con el usuario, frecuentemente est abocado al fracaso, incluso aunque las funciones que realice sean valiosas. La facilidad de uso es un intento de cuantificar lo amigable que puede ser con el usuario y se puede medir en funcin de cuatro caractersticas:

Habilidad intelectual y/o fsica requerida para aprender el sistema.

El tiempo requerido para llegar a ser moderadamente eficiente en el uso del sistema.

Aumento neto en productividad.

Valoracin subjetiva (a veces obtenida mediante un cuestionario) de la disposicin de los usuarios hacia el sistemaTendencias actuales en la ingeniera de software

La ingeniera de software es una disciplina joven y an est en desarrollo. Las direcciones en que la ingeniera de software se est desarrollando incluyen:

Aspectos

Los aspectos ayudan a los ingenieros de software a lidiar con los atributos de calidad al proporcionar herramientas para aadir o quitar cdigo repetitivo de muchas reas en el cdigo fuente. Los aspectos describen cmo todos los objetos o funciones deben comportarse en circunstancias particulares. Por ejemplo, los aspectos puede agregar control de depuracin, registro o bloqueo en todos los objetos de un tipo particular. Los investigadores actualmente estn trabajando para comprender cmo utilizar aspectos para disear el cdigo de propsito general. Conceptos relacionados incluyen programacin generativa y plantillas.

gil

El desarrollo gil de software gua a los proyectos de desarrollo de software que evolucionan rpidamente con cambiantes expectativas y mercados competitivos. Los proponentes de este mtodo creen que procesos pesados, dirigidos por documentos (como TickIT, CMM e ISO 9000) estn desapareciendo en importancia.[cita requerida] Algunas personas creen que las empresas y agencias exportan muchos de los puestos de trabajo que pueden ser guiados por procesos pesados.[cita requerida] Conceptos relacionados incluyen la programacin extrema, scrum y lean software development.

Experimental

La ingeniera de software experimental es una rama de la ingeniera de software interesada en la elaboracin de experimentos sobre el software, en la recoleccin de datos de los experimentos y en la elaboracin de leyes y teoras desde estos datos. Los proponentes de este mtodo defienden que la naturaleza del software es tal que podemos hacer avanzar el conocimiento en software a travs de slo experimentos.[cita requerida]

Model-driven

El diseo manejado por modelos desarrolla modelos textuales y grficos como artefactos primarios de diseo. Hay disponibles herramientas de desarrollo que usan transformacin de modelo y generacin de cdigo para generar fragmentos de cdigo bien organizado que sirven como base para producir aplicaciones completas.

Lneas de productos de software

Las lneas de produccin de software es una forma sistemtica para producir familias de sistemas de software, en lugar de crear una sucesin de productos completamente individuales. Este mtodo destaca una extensiva, sistemtica, reutilizacin de cdigo formal, para intentar industrializar el proceso de desarrollo de software.

El futuro de la Conferencia de ingeniera de Software (FOSE),5 celebrada en ICSE 2000, documenta el estado del arte de SE en 2000 y lista muchos problemas a resolver en la prxima dcada. El FOSE sigue la pista de las conferencias ICSE 20006 y el ICSE 20077 y tambin ayudar a identificar el estado del arte en ingeniera de software.