Вы находитесь на странице: 1из 18

CAPITULO I EL DESARROLLO DEL SOFTWARE

Instituto Tecnolgico de la Laguna

Anlisis y Diseo Orientado a Objetos

1. EL DESARROLLO DEL SOFTWARE 1.1 OBJETIVO EN EL DESARROLLO DEL SOFTWARE. El objetivo que se persigue es el desarrollar un software til y de alta calidad, que cubra las necesidades del usuario final, para lograr este propsito se debe tener en cuenta las siguientes cuestiones: ! ! ! ! Productividad. Confiabilidad. Mantenibilidad. Otros Productividad.

Hoy en da la productividad es un problema serio en el desarrollo de sistemas, bsicamente se plantean dos aspectos importantes: ! ! El retraso en los nuevos sistemas que se necesita desarrollar. El tiempo necesario para la construccin de un sistema nuevo.

En la mayor parte de las organizaciones existe un retraso de varios aos de trabajo, en espera que se lleve a cabo, el retraso se presenta en tres aspectos: El retraso en los nuevos sistemas que se necesita desarrollar.

a) Retraso visible. Sistemas nuevos que los usuarios han pedido, se han autorizado y financiado, sin embargo, los proyectos no se han iniciado porque no existen los recursos adecuados, hablamos de; analistas, programadores, etc. b) Retraso invisible. Sistemas nuevos que los usuarios saben que necesitan, pero que no los han solicitado, ya que estn en espera que se concluyan proyectos del retraso visible. Estadsticamente se ha visto que este problema es 5 veces mayor que el del retraso visible. c) Retraso desconocido. Son sistemas que es necesario desarrollar pero que los usuarios ni siquiera saben que requieren todava, y que sern identificados en cuanto se termine alguno de los sistemas del retraso visible o del invisible. El tiempo necesario para la construccin de un sistema nuevo.

El problema del retraso es grave, un proyecto tpico se retrasa un ao y excede en un 100% el presupuesto, lo que representa que cuando el sistema este listo, habrn cambiado tanto las condiciones que los requerimientos originales ya no sern relevantes. Esto trae tambin como consecuencia la cancelacin de proyectos antes que stos se concluyan. Estadsticamente un 25% de los proyectos en organizaciones grandes jams se concluyen, algunas de las razones pueden ser las siguientes: a) b) c) d) e) Problemas tcnicos Problemas administrativos. Personal sin experiencia. Falta de tiempo para poder llevar a cabo un buen trabajo de anlisis y diseo. Falta de participacin de la administracin y de los usuarios.

Muchas organizaciones estn buscando la manera de reducir su retraso en las aplicaciones y disminuir el tiempo requerido para desarrollar un nuevo sistema, entre las tcnicas mas comnmente utilizadas estn las siguientes:
Paola Romero Guilln

Instituto Tecnolgico de la Laguna

Anlisis y Diseo Orientado a Objetos

! ! ! ! ! ! !

La contratacin de mas programadores y analistas. Contratar programadores y analistas ms talentosos y darles mejores condiciones de trabajo. Permitir a los usuarios el desarrollo de sus propios sistemas, claro esta, en la medida que esto sea posible. Utilizar mejores lenguajes de programacin y plataformas ms amigables y eficientes. Buscar alternativas para atacar el problema del mantenimiento. Buscar disciplinas de ingeniera de software, esto es, tcnicas de anlisis y diseo estructurado, tcnicas de anlisis y diseo orientado a objetos, mtricas de software, tcnicas de prueba de programas y control de calidad del software. Herramientas automatizadas para el desarrollo de sistemas, tales como herramientas CASE.

Por ltimo es necesario enfatizar la labor de anlisis, ya que si esta etapa no se lleva a cabo con el debido esmero, lo mas seguro es que no se consiga un software de alta calidad y mantenible, por no haber sabido con anticipacin y detalle lo que se quera que hiciera el software. As que, a pesar de las opiniones de algunos administradores y usuarios, en el sentido de que el perodo de anlisis es una etapa de charla y descanso mientras se prepara para la verdadera labor del proyecto (la implementacin), el hecho es que esta etapa debe llevarse a cabo de manera cuidadosa y rigurosa, sin perder de vista la productividad y eficiencia. Confiabilidad.

Una vez que se ha terminado un sistema llega el tiempo de probarlo y corregir los errores detectados. Tpicamente el perodo de prueba representa un 50% del tiempo de desarrollo del sistema, en este tiempo de prueba, se piensa que la productividad es nula, esto pudiera ser aceptable si el resultado fueran sistemas altamente confiables y mantenibles, la realidad en los ltimos aos es justo lo contrario; los sistemas producidos estn llenos de errores y son casi imposibles de modificar, se puede hablar cuantitativamente de entre 3 a 5 errores por cada 100 instrucciones de programa (segn Jones, 1986), estos errores van desde errores ridculos hasta errores que hacen tronar el programa y que puede representar la perdida de vidas humanas. Tambin hay que tener en cuenta errores que nunca son detectados, pero que existen. Mantenibilidad.

El mantenimiento del software es un aspecto primordial, entre el 50 y 80 por ciento del trabajo que se realiza en la mayora de las organizaciones de desarrollo de sistemas esta asociado con la revisin, modificacin, conversin, mejoramiento o correccin de errores en algn programa de computadora que alguien escribi algn perodo de tiempo atrs. La Secretara de la Defensa de los Estados Unidos inform que el costo promedio de desarrollar programas de computadora era de 75 dlares por instruccin de computadora y el costo de mantenimiento llegaba hasta los 4,000 dlares por instruccin. La mantenibilidad se puede resumir en dos aspectos: 1) La correccin de errores sobre la marcha 2) Modificaciones para: a) Reflejar cambios en el hardware. b) Acelerar ciertos aspectos operacionales. c) Reflejar cambios en los requerimientos del usuario final. Otros aspectos a considerar en el desarrollo de software. ! Eficiencia. El sistema debe tener un tiempo de respuesta adecuado en cuanto a las salidas que se le solicitan.

Paola Romero Guilln

Instituto Tecnolgico de la Laguna

Anlisis y Diseo Orientado a Objetos

! !

Transportabilidad. Al desarrollar los sistemas debe pensarse en su operacin en varias plataformas. Seguridad. Dado que la informacin que se maneja en los sistemas de cmputo actuales es vital para las organizaciones; en algunos casos confidencial, y en otros con caractersticas de restriccin de acceso, la seguridad se ha convertido en un asunto de vital importancia para la mayora de los proyectos de desarrollo de sistemas. Los sistemas en la actualidad deben evitar el acceso no autorizado, adems de la actualizacin y la eliminacin de datos delicados.

El software de computadora se ha convertido en el alma mater. Es la maquina que conduce a la toma de decisiones comerciales. Sirve como base de investigacin cientfica moderna y de resolucin de problemas de ingeniera.

1.2 LA EVOLUCION DEL SOFTWARE Hoy en da el software tiene un doble papel. Es un producto y al mismo tiempo el vehculo para hacer una entrega de un producto. Como producto hace entrega de la potencia informtica del hardware informtico. Como vehculo utilizado para hacer entrega del producto, el software acta como la base de control de la computadora (sistemas operativos), la comunicacin de la informacin (redes), y la creacin y control de otros programas (herramientas de software y entornos). El software transforma datos personales (p. Ej.: transacciones financieras de una persona) para que los datos sean mas tiles en un contexto local; gestiona informacin comercial para mejorar la competitividad, proporciona el acceso a redes de informacin por todo el mundo (Internet) y tambin proporciona el medio de adquirir informacin en todas sus formas. Durante los primeros aos de la era de computadora, el software se contemplaba como un aadido. El desarrollo del software se realizaba virtualmente sin ninguna planificacin. La mayora del software se desarrollaba y era utilizado por la misma persona u organizacin. Debido a que la movilidad en el trabajo era baja, los ejecutivos estaban seguros de que esa persona estara all cuando se encontrara algn error. 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 de la evolucin de los sistemas de computadoras tomo lo que era la multiprogramacin y los sistemas multiusuarios introdujeron nuevos conceptos de interaccin hombre-maquina. Abrieron nuevas aplicaciones y nuevos niveles de sofisticacin del hardware y software. Tambin la segunda era se caracterizo por el establecimiento del software como producto. El software ya desarrollaba para tener una amplia distribucin en un mercado multidisciplinar. Los programas se distribuan para computadoras grandes y para minicomputadoras, a cientos y miles de usuarios. La tercera era en la evolucin de los sistemas de computadoras era basado en el sistema distribuido, mltiples computadoras, cada una ejecutando funciones concurrentemente y comunicndose con alguna otra, incremento notablemente la complejidad de los sistemas informticos. La tercera era se caracterizo por la llegada y amplio uso de los microprocesadores. La cuarta era de la evolucin de sistemas informticos se aleja de las computadoras individuales y de los programas de computadoras, dirigindose al impacto colectivo de las computadoras y del software. Las arquitecturas informticas estn cambiando de entornos centralizados de grandes computadoras a entornos descentralizados cliente/servidor.

Paola Romero Guilln

Instituto Tecnolgico de la Laguna

Anlisis y Diseo Orientado a Objetos

EVOLUCION DEL SOFTWARE Los primeros aos Orientacin por lotes (batch) Distribucin limitada Software a medida

La segunda era Multiusuario Tiempo real Bases de datos Producto del software

La tercera era Sistemas distribuidos Incorporacin de <<inteligencia>> Hardware de bajo costo Impacto en el consumo

La cuarta era Sistemas personales potentes Tecnologas orientadas a objetos Sistemas expertos Redes neuronales artificiales Computacin en paralelo Redes de computadoras

Durante los ltimos 25 aos en la historia del desarrollo de software, se pueden observar cambios dramticos en la forma de usar y programar una computadora. La tendencia para la industria del software es la tecnologa de Objetos y la interfase grfica, como se puede apreciar en la siguiente figura. Interfase de usuario Modelo de datos Lenguaje de programacin Modo Terminal de caracteres CODASYL Computadora Personal RDBMS/SQL Interfase Grfica de Usuario ODBMS

COBOL 3270/VT100 70

C, Pascal Interactivo 80

C++, Smalltalk Manejo/eventos 90

Figura # 1 Evolucin del software

Paola Romero Guilln

Instituto Tecnolgico de la Laguna

Anlisis y Diseo Orientado a Objetos

1.3 CARACTERISITICAS DEL SOFTWARE El software se desarrolla, no se fabrica en un sentido clsico. Aunque existen varias 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. El software no se estropea. El software no es susceptible a los males del entorno que hacen que el hardware se estropee. Cuando un componente de hardware se estropea, se sustituye por una pieza de repuesto. No hay piezas 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. La mayora del software se construye a medida, en vez de ensamblar componentes existentes. Se puede comprar software ya desarrollado, pero solo como una unidad completa, no como componentes que pueden reensamblarse en nuevos programas.

1.3.1 Aplicaciones del software Software de sistemas. Es un conjunto de programas que han sido escritos para servir a otros programas. Software de tiempo real. El software que mide /analiza /controla sucesos del mundo real conforme ocurren, se denomina de tiempo real. Software de gestin. El procesamiento de informacin comercial constituye la mayor de las reas de aplicacin del software. Software de ingeniera y cientfico. Esta caracterizado por los algoritmos de manejo de nmeros. Software residente en memoria. Reside en memoria de solo lectura y se utiliza para controlar productos y sistemas de los mercados industriales y de consumo. Software de computadoras personales. Tiene miles de aplicaciones. Software de inteligencia artificial. Hace uso de los algoritmos no numricos para resolver problemas complejos para los que no son adecuados los clculos o el anlisis directo.

1.4 LA METODOLOGA. Un buen diseo es la clave de una ingeniera de software efectiva, ya que un sistema de software bien diseado es fcil de aplicar y mantener, adems de ser comprensible y confiable. En contraste un sistema mal diseado, aunque funcione, son caros de mantener, difciles de probar y poco confiables, por consiguiente la etapa de diseo es la parte ms importante del proceso de desarrollo del software.
Paola Romero Guilln 6

Instituto Tecnolgico de la Laguna

Anlisis y Diseo Orientado a Objetos

En un principio el diseo del software era un proceso informal, donde, dado un conjunto de requerimientos en lenguaje natural, se planteaba el diseo, tal vez en forma de organigrama, entonces, se empezaba la codificacin y se modificaba el diseo a medida que se aplicaba el sistema, al final el sistema difera tanto de las especificaciones iniciales que el documento del diseo original resultaba una descripcin totalmente diferente a la del sistema final. Ahora se ha reconocido que una especificacin precisa (aunque no necesariamente formal) es una parte esencial del proceso de diseo y que el diseo del software es una actividad repetitiva de mltiples etapas que no puede ser representada en una sola notacin, por consiguiente, se han desarrollado varias notaciones de diseo ms apropiadas que los simples organigramas. Una vez dada la definicin de requerimientos se debe utilizar para desarrollar el diseo del sistema de software que satisfaga dichos requisitos. Para tal propsito se pueden plantear las siguientes etapas: 1) Establecer los subsistemas que componen el sistema general. 2) Cada subsistema debe dividirse en componentes individuales y debe establecerse la especificacin de los subsistemas definiendo la operacin de sus componentes. 3) Cada componente se puede seguir dividiendo en subcomponentes que acten recprocamente 4) A continuacin cada componente debe ser especificado como una jerarqua de subcomponentes. 5) En algn momento de este proceso de refinamiento hay que especificar con detalle los algoritmos utilizados en cada componente. Adems es necesario definir: 1) 2) 3) 4) Mecanismos de comunicacin entre procesos. Las estructuras de archivos. Las estructuras de datos utilizadas en los programas. Casos de prueba, para comprobar la operacin de los sistemas y subsistemas.

La Conceptualizacin de un buen diseo esta en funcin de la aplicacin y los requisitos del proyecto en particular, un buen diseo puede ser: Uno que permita producir una codificacin muy eficiente. Un diseo mnimo donde la aplicacin sea lo mas compacto posible. Un diseo de muy fcil mantenimiento.

El ltimo criterio es el mas utilizado, ya que permite minimizar el costo de los cambios del sistema, lo que implica que el diseo debe ser comprensible y que las modificaciones deben tener un efecto local, lo cual se logra si el diseo del software es muy coherente y poco acoplado. Esto significa que cualquier unidad de programa se puede remplazar por una unidad equivalente con poco o ningn cambio en las otras unidades del sistema. Lo anterior es importante a la hora de refinar los diseos, el tener unidades poco acopladas significa que el diseador posee la opcin de cambiar de opinin sobre el diseo de una unidad sin que haya efectos secundarios en el resto del sistema. El diseo efectivo del software tiene mejores resultados si se emplea una metodologa consistente de diseo. Existe en el mercado una gran cantidad de metodologas de diseo que se utilizan en diferentes aplicaciones, en esencia las mas utilizadas se pueden resumir en las siguientes reas: 1) Diseo funcional descendente. En esta metodologa el sistema se disea desde un punto de vista funcional, empezando con una vista de alto nivel y refinndola de
Paola Romero Guilln 7

Instituto Tecnolgico de la Laguna

Anlisis y Diseo Orientado a Objetos

manera progresiva hasta llegar a un diseo mas detallado. Esta metodologa esta representada por el Diseo Estructurado (Yourdon 1979) 2) Diseo orientado a objetos. En esta metodologa el sistema se ve mas como una coleccin de objetos que como funciones que pasan mensajes de un objeto a otro, donde cada objeto cuenta con un conjunto de operaciones asociadas. Este tipo de diseo se basa en el ocultamiento de informacin, propuesta por primera vez por Parnas (1972).

1.4.1

Descomposicin funcional descendente.

Esta metodologa utiliza la caracterstica humana fundamental para la solucin de problemas "la abstraccin". El diseo descendente se basa en la nocin de que la estructura del problema debe determinar la estructura de la solucin del software. A medida que se progresa en el diseo cada componente se refina en sus propias operaciones fundamentales, continuando el proceso hasta que se llega a un diseo de bajo nivel. La formulacin y descripcin de un diseo de software incluye varias etapas: 1) Estudio y comprensin del problema. 2) Identificacin de las caractersticas generales de por lo menos una solucin. 3) Construccin de un diagrama de flujo de datos que muestre las transformaciones generales de los datos del sistema. 4) Utilizando el diagrama de flujo de datos, construir un diagrama de estructura que muestre las unidades del programa relacionadas con la solucin. 5) Describir cada abstraccin utilizada en la solucin mediante un lenguaje de descripcin, aunque en las primeras etapas del diseo se utiliza exclusivamente lenguaje natural. Despus de haber formulado y descrito una solucin inicial de alto nivel, el proceso de solucin de problema debe repetirse para cada abstraccin utilizada, el proceso contina hasta que se tenga una especificacin de bajo nivel para cada abstraccin definida para el problema. Es muy importante que la representacin de cada etapa del diseo sea clara y concisa. En esta metodologa los modelos conceptuales utilizados para el anlisis difieren de lo que se emplean para el diseo. La programacin tiene tambin un tercer punto de vista. Anlisis Diagramas de relacin entre entes. Descomposicin funcional. Diagramas de dependencia entre los procesos. Diseo Diagramas de flujo de datos. Tablas de Estructura. Diagramas de accin. Programacin COBOL PASCAL C

En las metodologas tradicionales, los analistas, los diseadores y los programadores tienen distintos modelos conceptuales. Al pasar de un modelo a otro, en ocasiones se pierde informacin y aparecen las incomprensiones. La transicin consume tiempo y a veces reduce la calidad del producto final. Los mtodos de la ingeniera del software indican como construir tcnicamente el software. Los mtodos abarcan una gran gama de tareas que incluyen: Anlisis de requisitos Diseo Construccin de programas Pruebas
8

Paola Romero Guilln

Instituto Tecnolgico de la Laguna

Anlisis y Diseo Orientado a Objetos

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 y otras tcnicas descriptivas.

1.5 DEFINCION DE UNA METODOLOGIA DE ANLISIS Y DISEO ORIENTADA A OBJETOS 1.5.1 Enfoque: Al principio de la dcada de los 90's las posibilidades de software estn retrasadas respecto a las del hardware en un mnimo de dos generaciones de procesadores, y la distancia continua aumentando. Existe un acuerdo general en que las herramientas, tcnicas y abstracciones del software convencional se convierten rpidamente en inadecuadas mientras que los sistemas de software son cada vez mayores y su complejidad se ve aumentada. Este panorama presenta un gran dilema a los desarrolladores de software comercial y empresarial y, no se diga, a la educacin propiamente dicha. No obstante, crece el consenso de que un nuevo paradigma de orientacin a objeto puede ayudar a controlar la complejidad y convertir el creciente entorno de sistemas en aplicaciones mas tiles y excitantes. En la presente dcada, las aplicaciones necesitaran satisfacer exigencias mas sofisticadas, utilizar arquitecturas y estructuras de datos ms complejas y que puedan ser conseguidas por una amplia base de usuarios, que crece con el tiempo. Todos estos factores llevan a la necesidad de un aumento en la capacidad de los desarrolladores de software para construir, ampliar y mantener sistemas grandes y complejos. Mas aun el hecho de la disponibilidad para una base mayor de usuarios requiere que el software sea ms flexible y fcil de utilizar. El diseo Orientado a objetos (DOO, ODD por sus siglas en ingles), al igual que otras metodologas de diseo orientadas a la informacin, crea una representacin del campo del problema del mundo real y la hace corresponder con el mbito de la solucin, que es el software. A diferencia de otros mtodos el DOO produce un diseo que interconecta objetos de datos y operaciones de procesamiento en una forma que modulariza la informacin y el procesamiento. La naturaleza nica del DOO queda reflejada en su capacidad de construir sobre tres pilares conceptuales importantes del diseo de software: Abstraccin Ocultamiento de la informacin Modularidad

Todos los mtodos de diseo intentan desarrollar software con esas tres caractersticas fundamentales, pero solo el DOO proporciona un mecanismo que permite al diseador conseguir las tres sin complejidad ni necesidad de compromisos. Segn Wiener y Sincovec en su libro: "Software Engenneering with Modula-2 and Ada, resumen la metodologa DOO de la siguiente forma: "Ya no es necesario que el diseador del sistema haga corresponder el mbito del problema con estructuras de datos y de control predefinidas que se encuentren en el lenguaje de implementacin. En cambio, el diseador puede crear sus propios tipos abstractos de datos y abstracciones funcionales y hacer corresponder el campo del mundo real con esas abstracciones creadas por el propio programador. Esta correspondencia ser la mayora de las veces mucho mas natural, ya que el rango de tipos abstractos de datos que puede inventar el diseador es virtualmente ilimitado. Mas aun, el diseo de software se desliga de los detalles de representacin de los objetos de datos que se usan en el sistema.
Paola Romero Guilln

Instituto Tecnolgico de la Laguna

Anlisis y Diseo Orientado a Objetos

As, se pueden cambiar muchas veces esos detalles de presentacin, sin que ello afecte al sistema de software global." Directamente en el campo de las bases de datos, una base de datos tradicional solo almacena datos, sin procesarlos, de modo que resulten independientes de los procesamientos. Los datos son accesibles a diferentes usuarios, con diversos propsitos. A diferencia, una base de datos Orientada a objetos almacena objetos, es decir, los datos se almacenan junto con los mtodos que procesan dichos datos (objetos). Despus del uso constante de las bases de datos tradicionales, surge la necesidad de asociar ciertos procedimientos con los datos y activarlos cuando se tiene acceso a estos. Esos procedimientos se utilizaron para controlar la integridad de los datos o su seguridad. A veces se calculaba un valor a partir de atributos diferentes a los almacenados, procedimiento conocido como: colocacin de inteligencia en la base de datos. La tcnica de las bases de datos inteligentes fueron tiles para controlar la integridad en un ambiente cliente-servidor, puesto que nunca s tenia la certeza de la identidad del cliente que tenia acceso al servidor de una base de datos. En la base de datos original a objetos (BDOO, OODB , por sus siglas en ingles), no se tiene acceso a dato alguno si no es a travs de los mtodos almacenados en la base de datos. Estos mtodos estn listos para entrar en accin al momento en que reciben una solicitud (evento). Los datos de todo los objetos quedan entonces encapsulados. En general, los datos son activos mas que pasivos.

1.5.2 Ventajas y desventajas de la Tecnologa Orientada a Objetos. a) Ventajas. Las ventajas tienen en general el mismo carcter que las ofrecidas por la programacin y diseo estructurado, aunque van mas all en algunas direcciones, algunas de ellas son: Los objetos bien diseados pueden constituir la base para el ensamble de otros sistemas, empleando la reutilizacin de componentes, lo que redunda en mayor productividad. La reutilizacin de clases, probadas en proyectos anteriores, conducen a la creacin de sistemas de mayor calidad, que satisfacen los requerimientos y conteniendo menor nmero de errores. La herencia permite la definicin de mdulos bsicos, los cuales posteriormente pueden ser extendidos, sin alterar su operacin bsica., ni la de sus clientes, lo que produce sistemas mas flexibles, mas fcilmente extendibles y de mantenimiento menos costoso. La convencin de pase de mensajes para la comunicacin entre objetos lleva a que la descripcin de la interfaz entre mdulos y sistemas externos sea mas fcil. Tambin facilita la descripcin y la construccin de interfaces grficas de usuario y sistemas distribuidos. La divisin de los sistemas sobre la base de tipos de objetos encapsulados ayuda a la resolucin de los problemas asociados con la escalabilidad, lo que evita que el esfuerzo aumente de manera exponencial con el tamao y la complejidad del proyecto, como sucede con los sistemas convencionales. La divisin del trabajo en un proyecto tiene una base natural, lo que hace ms sencillo el anlisis y diseo usando la divisin en el dominio de objetos, que corresponde a una visin orientada a la solucin de sus contrapartes del mundo real, lo que es mas natural que una descomposicin funcional por refinamiento progresivo, por lo que los sistemas orientados a objetos debern admitir de mejor manera el cambio de pequea a gran escala. El encapsulamiento de informacin ayuda a la construccin de sistemas ms seguros. La aproximacin del diseo centrado en datos, propia del anlisis orientado a objetos, al incluir tambin los procesos, se captura de mejor forma la semntica del modelo, lo que resulta de gran importancia en los sistemas comerciales, y en particular en los sistemas de base de datos.
10

Paola Romero Guilln

Instituto Tecnolgico de la Laguna

Anlisis y Diseo Orientado a Objetos

La orientacin a objetos es una herramienta para manejar la complejidad. La evolucin de un sistema y los problemas de mantenimiento se reducen debido a la particin resultante del encapsulamiento y de las interfaces uniformes entre objetos. Potencialmente, los sistemas orientados a objetos son capaces de capturar del significado de una aplicacin; su semntica, ya que estn diseados para el modelado de sistemas, pueden emplearse para el modelado de escenarios y facilitar cambios significativos.

Los intentos por hacer frente al problema de la calidad del software provienen de innovaciones en los lenguajes de programacin y de diversos mtodos estructurados para el desarrollo de sistemas. Si se tiene en cuenta que en costo de un sistema el 80% representa el costo del software, y que aunque se empleen programadores calificados no son capaces de producir cdigo flexible y correcto, es indicio que algo anda mal. Los mtodos estructurados, los lenguajes de cuarta generacin, las herramientas CASE, las tcnicas de prototipos, los sistemas de base de datos y los generadores de cdigo son tentativas para resolver el problema Los usuarios de los mtodos estructurados han resultado perjudicados tanto en la productividad como en la calidad del producto final. Los lenguajes de cuarta generacin (4GL) pueden incrementar la productividad hasta mas o menos un 20% pero es probable que esto ocurra a expensas del rendimiento y posiblemente degrade la productividad, debido principalmente, al carcter restrictivo de los lenguajes de muy alto nivel y la necesidad de pasar el cdigo a lenguajes de tercera generacin ((3GL) y viceversa.

El impulso de los mtodos estructurados, obedece en buena parte al hecho de que muchos sistemas realizados usando estos mtodos no estaban concluidos, no se empleaban o haban sido distribuidos con errores importantes. Las estadsticas muestran que un gran nmero de sistemas se encuentran en estas situaciones. En un mundo cambiante, los sistemas de software deben de ser adaptables, y es precisamente hacia este aspecto al que apunta la capacidad de los sistemas orientados a objetos de ser extensibles y modulares. El encapsulamiento representa la mayor promesa como tcnica para hacer que los sistemas sean flexibles a los cambios en su realizacin

La elaboracin de prototipos es una herramienta importante para la obtencin de especificaciones correctas, stos se emplean dentro de los desarrollos convencionales, pero cuando se combinan con mtodos orientados a objetos ofrecen ventajas adicionales. Los generadores de cdigo dificultan los arreglos de emergencia, la idea de las herramientas CASE que generan cdigo y garantizan la documentacin adecuada, congruente con todo el desarrollo, hace que todos los cambios sean realizados de una manera sistemtica. Si se requiere un arreglo de emergencia, tal vez no habr tiempo de realizar el proceso de compilacin que representa la modificacin de los diagramas de flujo de datos, el modelo entidad - relacin y la documentacin. Por consiguiente, a medida que avanza el tiempo, las especificaciones se apartan de las lneas de cdigo y los cambios se hacen cada vez ms difciles. Se puede pensar que el camino correcto es hacer todo el proceso, pero en la realidad, el sistema no puede permanecer por mucho tiempo inoperante. Los sistemas orientados a objetos abordan este problema haciendo ms fcil localizar los arreglos de emergencia. El uso de las herramientas CASE trae otro problema asociado al que se enfrentan los jefes de proyectos muy grandes en los que se emplean stas. Las herramientas CASE con generacin de cdigo requieren que la mayor parte del esfuerzo requieren que la mayor parte de esfuerzo se invierta en las etapas de anlisis y diseo de la arquitectura, lo que deja poco tiempo para la correccin de los errores que surgen cuando se prueba el cdigo. Algunos jefes de proyecto optan por abandonar estas herramientas debido a este factor. Una herramienta CASE orientada a objetos que
11

Paola Romero Guilln

Instituto Tecnolgico de la Laguna

Anlisis y Diseo Orientado a Objetos

genere cdigo, adolece del mismo problema, pero la modularidad forzosa que proporciona el encapsulamiento hace que los mdulos se puedan probar independientemente, ofreciendo la posibilidad de hacer una evaluacin confiable del costo de los arreglos de ltima hora. Adems El acceso a los mdulos implementados en un estilo orientado a objetos se logra nicamente va su interfaz, el programador solo requiere conocer su interfaz, equivalente a una especificacin de la funcin del mdulo. En los sistemas orientados a objetos el tratamiento de excepciones se hace mas sencillo. La naturaleza simultneamente "abierta" y "cerrada" de los sistemas orientados a objetos da soporte a la facilidad de mantenimiento, la reutilizacin y la verificacin

b) Desventajas. Cuando se estudian los beneficios de una nueva tecnologa es conveniente ser cautelosos. Los mtodos orientados a objetos no es la panacea y es necesario delimitar aquellos aspectos en los cuales los beneficios que se prometan no sean han conseguido, as como identificar aquellos beneficios que solo se han obtenido en determinadas circunstancias. La produccin de mdulos reutilizables produce en realidad un aumento en el costo del proyecto, en la mayora de los casos no se esta dispuesto a pagar ese costo, estos costos solo se pueden justificar en ahorros futuros, adems siempre existe la tentacin de realizar lo ms pronto posible el trabajo entre manos. Existe carencia de bibliotecas de objetos disponibles comercialmente. El xito de los componentes reutilizables desarrollados comercialmente depende de la disposicin de los patrocinadores del proyecto al tener en cuenta el costo adicional de sus desarrollos y de estn dispuestos a recobrar sus inversiones en un perodo de tiempo largo. Al contar con bibliotecas, se deben encontrar formas de recorrerlas en todo su volumen y complejidad. Adems resolver el problema de cmo informar al desarrollador que una cierta biblioteca contiene precisamente el objeto que necesita para un caso concreto. La administracin de grandes bibliotecas de componentes para la programacin orientada a objetos sigue siendo un problema sin resolver en su mayor parte. Con referencia a los arreglos de urgencia, es un asunto grave que va en contra de la adopcin generalizada de las tcnicas orientadas a objetos, se puede comprometer la reutilizacin de un objeto si se corrige un error de forma incorrecta. No existen protocolos para el control de cambios y de versiones para sistemas de objetos complejos con mltiples interconexiones. La mayora de los lenguajes de programacin orientados a objetos no tienen soporte para el manejo de objetos persistentes, con lo que la administracin de datos y de objetos no tiene un buen apoyo por parte de la programacin orientada a objetos. La eficiencia de los lenguajes de programacin orientados a objetos con su caractersticas de enlazado dinmico y la recoleccin de basura no es muy buena, sobre todo para aquellas aplicaciones en tiempo real en donde la eficiencia es crucial. La reutilizacin requiere de gran creatividad, exige que los desarrolladores conozcan la funcionalidad de diferentes dominios de la funcionalidad de las aplicaciones construidas por mdulos. Nunca ser posible crear un conjunto de reglas, para automatizar el proceso. Para que la reutilizacin sea factible, es necesario llegar a un compromiso entre reutilizacin y semntica, ya que entre mas se dice acerca de algo, ms se relaciona ese algo con su contexto. En ciertas aplicaciones como las interfaces grficas de

Paola Romero Guilln

12

Instituto Tecnolgico de la Laguna

Anlisis y Diseo Orientado a Objetos

usuario, en la que los objetos en si son en su mayor parte, artefactos computacionales, su contexto esta muy delimitado y el problema se presenta con menor intensidad. Frecuentemente es necesario seguir el comportamiento de un sistema, con objeto de depurarlo, rastreando el paso de mensajes de un objeto a otro, lo que puede resultar de gran dificultad, lo que representa un defecto grave en los sistemas orientados a objetos. Se ha dicho que puede cambiar un mdulo, y las dems partes del sistema no se ven afectadas, sin embargo si el cambio realizado en el mdulo es profundo, la aseveracin anterior deja de ser cierta. En la programacin estructurada se crearon bibliotecas de funciones, que eran difciles de utilizar por el hecho de tener que recordar largas listas de parmetros. Ser ese el juicio de las futuras generaciones acerca de las bibliotecas de objetos. La inversin necesaria para la adopcin de la tecnologa de objetos, en hardware, software, mtodos, entrenamiento del personal, educacin tanto de los desarrolladores como de la gerencia, y los costos adicionales en el desarrollo de componentes reutilizables y la administracin de bibliotecas. Cambios organizacionales y culturales consecuencia de la adopcin de las tecnologa orientada a objetos. Por ejemplo, a un programador actualmente se le paga por la cantidad de cdigo escrito (corrigiendo la escala segn el lenguaje con que se trabaje), ahora con la reutilizacin de cdigo, el criterio debe modificarse. Las grandes inversiones en tecnologa de objetos pueden verse paralizadas por un punto de vista ms sensato, consistente en que, eventualmente se ver sucedida por una metfora todava ms potente. Afortunadamente, parece que estos desarrollos contendrn en su seno, en lugar de eliminarla, la metfora orientada a objetos, por consiguiente, las inversiones realizadas ahora debern estar seguras frente a los cambios tecnolgicos.

1.6 TENDENCIA 1.6.1 Una revolucin industrial en el software Una de las preocupaciones actuales ms urgentes de la industria de la computacin es la de crear software y sistemas corporativos mas pronto y de mas bajo costo. Para hacer un buen uso del poder cada vez mayor de las computadoras, necesitamos un software de mayor complejidad. Aparte de ms complejo tambin es necesario que dicho software sea ms confiable. Las tcnicas orientadas a objetos permiten que el software se construya a partir de objetos de comportamiento especifico. Los propios objetos se pueden construir a partir de otros, que a su vez pueden estar formados por otros objetos. El anlisis de sistemas en el mundo orientado a objetos se realiza al estudiar los objetos en un ambiente, as como los eventos que interactan con dichos objetos. El diseo del software se realiza al volver a utilizar clases de objetos ya existentes y en caso necesario construir nuevas clases. A travs de la historia de la ingeniera, parece surgir un principio: la gran ingeniera es la ingeniera sencilla. Las ideas que se tornan muy rebuscadas inflexibles y problemticas tienden a ser reemplazadas por otras mas nuevas y claras desde el punto de vista conceptual y con sencillez esttica. El termino revolucin industrial en el software se ha utilizado para describir el paso hacia una era en la que el software ser compilado a partir de componentes de objetos reutilizables, con lo que se creara una enorme biblioteca de componentes. Debemos de pasar de una era de paquetes monolticos de software donde un vendedor construye todo un paquete hasta una era en la que el software sea ensamblado a partir de componentes y paquetes de muchos proveedores. Sern cajas negras donde no podremos mirar el interior.

Paola Romero Guilln

13

Instituto Tecnolgico de la Laguna

Anlisis y Diseo Orientado a Objetos

Tan solo las tcnicas orientadas a objetos no nos pueden proporcionar la magnitud del cambio necesario. Se deben conjuntar con otras tecnologas de software. Las tcnicas orientadas a objetos han existido durante dos dcadas, pero las primeras de ellas se preocupaban mas por la codificacin en lenguajes como Smalltalk y C++. Entre tanto con base en las herramientas Case, los generadores de cdigo se han desarrollado con base en el deposito, el motor de interferencia y las tcnicas de inteligencia artificial. Las tcnicas orientadas a objetos son muy poderosas cuando se combinan con otras tecnologas. La tecnologa Killer para el desarrollo de software: CASE e I-CASE Programacin visual Generadores de cdigos Depsitos y coordinadores de depsitos Metodologas basadas en depsitos Ingeniera de la informacin Bases de datos orientadas a objetos Lenguajes no por procedimientos Motores de interferencias Tecnologa cliente-despachador Bibliotecas de clases que maximicen la reutilizacin Anlisis y diseo orientado a objetos

La programacin orientada a objetos ha mejorado de manera esencial la creacin del software, pero por si misma no implica el mejoramiento masivo necesario para la industria de la computacin. Las tcnicas orientadas a objetos deben combinarse con todos los aspectos disponibles de la automatizacin del software. Las tcnicas orientadas a objetos modificaran: Toda la industria del software La forma en que se venden los programas de aplicacin La forma de uso de las computadoras La forma de uso de las redes La forma de analizar los sistemas La forma de disear sistemas La forma de utilizar las herramientas CASE La forma de planear las empresas El trabajo de todos los profesionales de los sistemas de informacin

1.6.2 El paradigma de la integracin La revolucin industrial del software ganara fuerza cuando se difundan las tcnicas orientadas a objetos y se disponga de grandes bibliotecas de clases de objetos. Las bibliotecas se enlazaran con depsitos CASE de modo que las nuevas clases se puedan ensamblar rpidamente a partir de las ya existentes. La mayora de las herramientas del software se modificaran para utilizar el paradigma orientado a objetos. El software orientado a objetos permitir que los objetos independientes se puedan ejecutar en forma simultanea, en procesadores independientes. El diseo orientado a objetos con herramientas CASE y generadores de cdigo es la clave para la construccin de poderosas maquinas paralelas. En tanto llega el momento de esta revolucin veremos la difusin de las computadoras paralelas: maquinas con varios procesadores. Una estacin de trabajo tendr varios chips procesadores. Un despachador LAN (red de rea local) utilizara el procesamiento paralelo.
Paola Romero Guilln

14

Instituto Tecnolgico de la Laguna

Anlisis y Diseo Orientado a Objetos

Las computadoras de gabinete y las supercomputadoras se convertirn con el tiempo en maquinas altamente paralelas.

1.7 LA VERDADERA INGENIERIA DEL SOFTWARE El estado actual de la mayor parte de la ingeniera de software esta algo atrasado con respecto a las dems reas de la ingeniera. La mayora de los productos de hardware tienen garanta, pero la mayora de los productos de software llevan una renuncia a la garanta. El software se vende no cuando esta libre de errores sino cuando estos aparecen con una frecuencia bastante baja. Las tcnicas OO ligadas a las herramientas CASE con un generador de cdigos y un deposito (tambin orientado a objetos) constituyen el mejor camino conocido para construir una verdadera ingeniera de software.

1.7.1 Una fbrica de software Una fbrica de software es muy distinta a un inventor. La fbrica requiere el trabajo en equipo y la disciplina. Todos los diseadores de software deben compartir herramientas I-CASE comunes, con un deposito comn. La fbrica de software necesita maximizar la reutilizacin. Maneja una biblioteca de clase reutilizables. La fbrica de software se esfuerza porque sus clases reutilizables sean de lo ms estable posible, de modo que los errores sean raros y se minimicen los costos de mantenimiento. La fbrica de software debe aumentar en forma continua la funcionalidad de las clases que utiliza (construir objetos a partir de objetos componentes). El software debe construirse en forma independiente del ambiente (sistema operativo, la administracin de la LAN, el manejo de la base de datos, la interfaz con el usuario, etc.). Debe poder ligarse con varios ambientes mediante solicitudes y respuestas estndares de clases.

1.8 EVOLUCION DE LA PRODUCCION DEL SOFTWARE Fase 1 : La industria artesanal La mayora del software de la actualidad esta diseado y codificado con tcnicas manuales, cada programa es una pieza artesanal nica, un poco como la hechura de ropa en los telares antes de la revolucin industrial o la fabricacin de armas por armeros individuales en el siglo XVIII. Fase 2 : Herramientas poderosas y mtodos de ingeniera I-CASE representa la llegada de las herramientas poderosas en la construccin del software. Los diseos se sintetizan con la ayuda de una computadora y se genera un cdigo, sin errores de codificacin, a partir de los diseos. Las herramientas refuerzan el uso de las tcnicas estructuradas y aplican verificaciones rigurosas al diseo, lo que conlleva una necesaria disciplina del tipo de la ingeniera al caso de la construccin del software. Fase 3 : Produccin en masa Cuando se empezaban a utilizar las herramientas I-CASE cada programa se desarrollaba en forma individual. Mas tarde se popularizaron los depsitos con clases reutilizables y evolucionaron las bibliotecas de estas clases. Las aplicaciones se construyen al ensamblar los bloques de construccin ya existentes.

Paola Romero Guilln

15

Instituto Tecnolgico de la Laguna

Anlisis y Diseo Orientado a Objetos

Fase 4 : Produccin con robots Al madurar el diseo orientado a objetos, se crean clases de una complejidad cada vez mayor. Se construyen enormes bibliotecas de clases reutilizables. Las herramientas ayudan al diseador a especificar las necesidades y as seleccionar y ensamblar de manera automtica las clases y mtodos que cumplan con los requisitos. El conjunto de herramientas desarrolla un dialogo con el diseador, permitindoles modificar el diseo, seleccionar parmetros y elegir opciones.

1.9 EL FUTURO DEL SOFTWARE El software actual es relativamente trivial. Para que las computadoras sean los socios sinrgicos de los humanos, necesitan un software complejo. Es probable que el software de la complejidad necesaria no se pueda construir solo mediante las tcnicas estructurales tradicionales. A mediados de los 80s las autoridades de las tcnicas estructurales afirmaban que era imposible construir sistemas de 50 millones de lneas de cdigo. Nuestro futuro requiere software en que los sistemas de 50 millones de lneas de cdigo sean comunes. En este aspecto son esenciales las tcnicas orientadas a objetos, con encapsulado, polimorfismo, desarrollo con base en dispositivos, automatizacin del diseo y generadores de cdigo. Los futuros diseadores de software tendrn CD-ROM con bibliotecas de aplicaciones y objetos, diseados para su reutilizacin. Estas bibliotecas aparecern en formato I-CASE, de modo que su diseo aparezca en la pantalla, sea modificado y ligado con otros componentes del sistema.

1.9.1 Concluyendo: De manera general, las tcnicas orientadas a objetos, en la mayora de las aplicaciones, brindan beneficios, aunque algunos de los problemas requieren de una buena investigacin para encontrar la manera de resolverlos, esta tcnica es promisoria y ante el aumento de la complejidad, la necesidad de desarrollos rpidos y cada vez mas seguros, es superior a las tcnicas estructuradas. Las tcnicas orientadas a objetos se piensan a veces en trminos de lo que puede hacerse con los lenguajes de programacin orientada a objetos, este es un punto de vista muy restringido, en realidad se puede trabajar inclusive utilizando lenguajes procedurales, sin embargo hay que utilizar las tcnicas ms poderosas, lo que por lo general quiere decir usar una herramienta CASE para el anlisis y el diseo con un generador integrado de cdigo y tal vez un motor de inferencias.

1.10 RESUMEN En el estudio de este capitulo puede darse cuenta de lo que implica un desarrollo de software as como sus diferentes caractersticas que hay que tomar en cuenta para tener un desarrollo bien estructurado. Existen varios conceptos que son importantes tomarlos en cuenta para poder llevar acabo nuestros objetivos. Se debe tener en cuenta las siguientes cuestiones: Productividad. Confiabilidad. Mantenibilidad.
16

Paola Romero Guilln

Instituto Tecnolgico de la Laguna

Anlisis y Diseo Orientado a Objetos

Productividad.

Hoy en da la productividad es un problema serio en el desarrollo de sistemas, bsicamente se plantean dos aspectos importantes: 1) El retraso en los nuevos sistemas que se necesita desarrollar. 2) El tiempo necesario para la construccin de un sistema nuevo. Confiabilidad.

Una vez que se ha terminado un sistema llega el tiempo de probarlo y corregir los errores detectados. Tpicamente el perodo de prueba representa un 50% del tiempo de desarrollo del sistema, en este tiempo de prueba, se piensa que la productividad es nula, esto pudiera ser aceptable si el resultado fueran sistemas altamente confiables y mantenibles, la realidad en los ltimos aos es justo lo contrario; los sistemas producidos estn llenos de errores y son casi imposibles de modificar.

Mantenibilidad.

El mantenimiento del software es un aspecto primordial, entre el 50 y 80 por ciento del trabajo que se realiza en la mayora de las organizaciones de desarrollo de sistemas esta asociado con la revisin, modificacin, conversin, mejoramiento o correccin de errores en algn programa de computadora que alguien escribi algn perodo de tiempo atrs.

EVOLUCION DEL SOFTWARE Los primeros aos Orientacin por lotes (batch) Distribucin limitada Software a medida

La segunda era Multiusuario Tiempo real Bases de datos Producto del software

La tercera era Sistemas distribuidos Incorporacin de <<inteligencia>> Hardware de bajo costo Impacto en el consumo

La cuarta era Sistemas personales potentes Tecnologas orientadas a objetos Sistemas expertos Redes neuronales artificiales
17

Paola Romero Guilln

Instituto Tecnolgico de la Laguna

Anlisis y Diseo Orientado a Objetos

Computacin en paralelo Redes de computadoras

APLICACIONES DEL SOFTWARE Software de sistemas Software de tiempo real Software de gestin Software de ingeniera y cientfico Software de computadoras personales

LA METODOLOGIA Al principio de la dcada de los 90's las posibilidades de software estn retrasadas respecto a las del hardware en un mnimo de dos generaciones de procesadores, y la distancia continua aumentando. Existe un acuerdo general en que las herramientas, tcnicas y abstracciones del software convencional se convierte rpidamente en inadecuadas mientras que los sistemas de software son cada vez mayores y su complejidad aumentada. Este panorama presenta un gran dilema a los desarrolladores de software comercial y empresarial y, no se diga, a la educacin propiamente dicha. UNA REVOLUCION INDUSTRIAL EN EL SOFTWARE Una de las preocupaciones actuales ms urgentes de la industria de la computacin es la de crear software y sistemas corporativos mas pronto y de mas bajo costo. El termino revolucin industrial en el software se ha utilizado para describir el paso hacia una era en la que el software ser compilado a partir de componentes de objetos reutilizables, con lo que se creara una enorme biblioteca de componentes.

EL FUTURO DEL SOFTWARE El software actual es relativamente trivial. Para que las computadoras sean los socios sinrgicos de los humanos, necesitan un software complejo. De esta manera se proporciona una visibilidad general del contenido de este capitulo, describiendo en forma detallada parte de los conceptos utilizados en el desarrollo del mismo.

1.11 CUESTIONARIO DE EVALUACIN 1. Cul cree que sea el verdadero desarrollo del Software? 2. Para que es necesario la utilizacin de las etapas del software? 3. Cules son las tcnicas que comnmente se utilizan para disminuir los retrasos en las aplicaciones?. 4. Mencione los aspectos a considerar en el desarrollo de software. 5. De una breve explicacin de la evolucin del software. 6. Qu es la metodologa? 7. Explique la revolucin industrial del software. 8. En qu consiste una fbrica de software? 9. Qu es para usted el futuro del software? 10. Cmo puede aplicar el futuro del software?

Paola Romero Guilln

18