18

Click here to load reader

Desarrollo Del Software

Embed Size (px)

Citation preview

Page 1: Desarrollo Del Software

CAPITULO I

EL DESARROLLO DEL SOFTWARE

Page 2: Desarrollo Del Software

2

Análisis y Diseño Orientadoa Objetos

Instituto Tecnológicode la Laguna

Paola Romero Guillén

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 lasnecesidades del usuario final, para lograr este propósito se debe tener en cuenta las siguientescuestiones:

! Productividad.! Confiabilidad.! Mantenibilidad.! Otros

• Productividad.

Hoy en día la productividad es un problema serio en el desarrollo de sistemas,básicamente se plantean dos aspectos importantes:

! El retraso en los nuevos sistemas que se necesita desarrollar.! El tiempo necesario para la construcción de un sistema nuevo.

En la mayor parte de las organizaciones existe un retraso de varios años de trabajo, enespera 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 yfinanciado, sin embargo, los proyectos no se han iniciado porque no existen los recursosadecuados, hablamos de; analistas, programadores, etc.

b) Retraso invisible. Sistemas nuevos que los usuarios saben que necesitan, pero que nolos han solicitado, ya que están en espera que se concluyan proyectos del retraso visible.Estadísticamente se ha visto que este problema es 5 veces mayor que el del retrasovisible.

c) Retraso desconocido. Son sistemas que es necesario desarrollar pero que los usuarios nisiquiera saben que requieren todavía, y que serán identificados en cuanto se terminealguno de los sistemas del retraso visible o del invisible.

• El tiempo necesario para la construcción de un sistema nuevo.

El problema del retraso es grave, un proyecto típico se retrasa un año y excede en un100% el presupuesto, lo que representa que cuando el sistema este listo, habrán cambiadotanto las condiciones que los requerimientos originales ya no serán relevantes. Esto traetambién como consecuencia la cancelación de proyectos antes que éstos se concluyan.Estadísticamente un 25% de los proyectos en organizaciones grandes jamás se concluyen,algunas de las razones pueden ser las siguientes:

a) Problemas técnicosb) Problemas administrativos.c) Personal sin experiencia.d) Falta de tiempo para poder llevar a cabo un buen trabajo de análisis y diseño.e) Falta de participación de la administración y de los usuarios.

Muchas organizaciones están buscando la manera de reducir su retraso en lasaplicaciones y disminuir el tiempo requerido para desarrollar un nuevo sistema, entre las técnicasmas comúnmente utilizadas están las siguientes:

Page 3: Desarrollo Del Software

3

Análisis y Diseño Orientadoa Objetos

Instituto Tecnológicode la Laguna

Paola Romero Guillén

! La contratación de mas programadores y analistas.! Contratar programadores y analistas más 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 programación y plataformas más amigables y eficientes.! Buscar alternativas para atacar el problema del mantenimiento.! Buscar disciplinas de ingeniería de software, esto es, técnicas de análisis y diseño

estructurado, técnicas de análisis y diseño orientado a objetos, métricas de software,técnicas de prueba de programas y control de calidad del software.

! Herramientas automatizadas para el desarrollo de sistemas, tales como herramientasCASE.

Por último es necesario enfatizar la labor de análisis, ya que si esta etapa no se lleva acabo con el debido esmero, lo mas seguro es que no se consiga un software de alta calidad ymantenible, por no haber sabido con anticipación y detalle lo que se quería que hiciera el software.Así que, a pesar de las opiniones de algunos administradores y usuarios, en el sentido de que elperíodo de análisis es una etapa de charla y descanso mientras se prepara para la verdadera labordel proyecto (la implementación), el hecho es que esta etapa debe llevarse a cabo de maneracuidadosa 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 erroresdetectados. Típicamente el período de prueba representa un 50% del tiempo de desarrollo delsistema, en este tiempo de prueba, se piensa que la productividad es nula, esto pudiera seraceptable si el resultado fueran sistemas altamente confiables y mantenibles, la realidad en losúltimos años es justo lo contrario; los sistemas producidos están llenos de errores y son casiimposibles de modificar, se puede hablar cuantitativamente de entre 3 a 5 errores por cada 100instrucciones de programa (según Jones, 1986), estos errores van desde errores ridículos hastaerrores que hacen tronar el programa y que puede representar la perdida de vidas humanas.También 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 deltrabajo que se realiza en la mayoría de las organizaciones de desarrollo de sistemas esta asociadocon la revisión, modificación, conversión, mejoramiento o corrección de errores en algún programade computadora que alguien escribió algún período de tiempo atrás. La Secretaría de la Defensade los Estados Unidos informó que el costo promedio de desarrollar programas de computadoraera de 75 dólares por instrucción de computadora y el costo de mantenimiento llegaba hasta los4,000 dólares por instrucción.

La mantenibilidad se puede resumir en dos aspectos:

1) La corrección de errores sobre la marcha2) 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 alas salidas que se le solicitan.

Page 4: Desarrollo Del Software

4

Análisis y Diseño Orientadoa Objetos

Instituto Tecnológicode la Laguna

Paola Romero Guillén

! Transportabilidad. Al desarrollar los sistemas debe pensarse en su operación envarias plataformas.

! Seguridad. Dado que la información que se maneja en los sistemas de cómputoactuales es vital para las organizaciones; en algunos casos confidencial, y en otroscon características de restricción de acceso, la seguridad se ha convertido en unasunto de vital importancia para la mayoría de los proyectos de desarrollo desistemas. Los sistemas en la actualidad deben evitar el acceso no autorizado,además de la actualización y la eliminación de datos delicados.

El software de computadora se ha convertido en el alma mater. Es la maquina queconduce a la toma de decisiones comerciales. Sirve como base de investigación científica modernay de resolución de problemas de ingeniería.

1.2 LA EVOLUCION DEL SOFTWARE

Hoy en día el software tiene un doble papel. Es un producto y al mismo tiempo el vehículopara hacer una entrega de un producto. Como producto hace entrega de la potencia informática delhardware informático. Como vehículo utilizado para hacer entrega del producto, el software actúacomo la base de control de la computadora (sistemas operativos), la comunicación de lainformación (redes), y la creación y control de otros programas (herramientas de software yentornos).

El software transforma datos personales (p. Ej.: transacciones financieras de una persona)para que los datos sean mas útiles en un contexto local; gestiona información comercial paramejorar la competitividad, proporciona el acceso a redes de información por todo el mundo(Internet) y también proporciona el medio de adquirir información en todas sus formas.

Durante los primeros años de la era de computadora, el software se contemplaba como unañadido. El desarrollo del software se realizaba virtualmente sin ninguna planificación.

La mayoría del software se desarrollaba y era utilizado por la misma persona uorganización. Debido a que la movilidad en el trabajo era baja, los ejecutivos estaban seguros deque esa persona estaría allí cuando se encontrara algún error. Debido a este entornopersonalizado del software, el diseño era un proceso implícito, realizado en la mente de alguien, yla documentación normalmente no existía.

La segunda era de la evolución de los sistemas de computadoras tomo lo que era lamultiprogramación y los sistemas multiusuarios introdujeron nuevos conceptos de interacciónhombre-maquina. Abrieron nuevas aplicaciones y nuevos niveles de sofisticación del hardware ysoftware. También la segunda era se caracterizo por el establecimiento del software comoproducto. El software ya desarrollaba para tener una amplia distribución en un mercadomultidisciplinar. Los programas se distribuían para computadoras grandes y paraminicomputadoras, a cientos y miles de usuarios.

La tercera era en la evolución de los sistemas de computadoras era basado en el sistemadistribuido, múltiples computadoras, cada una ejecutando funciones concurrentemente ycomunicándose con alguna otra, incremento notablemente la complejidad de los sistemasinformáticos. La tercera era se caracterizo por la llegada y amplio uso de los microprocesadores.

La cuarta era de la evolución de sistemas informáticos se aleja de las computadorasindividuales y de los programas de computadoras, dirigiéndose al impacto colectivo de lascomputadoras y del software. Las arquitecturas informáticas están cambiando de entornoscentralizados de grandes computadoras a entornos descentralizados cliente/servidor.

Page 5: Desarrollo Del Software

5

Análisis y Diseño Orientadoa Objetos

Instituto Tecnológicode la Laguna

Paola Romero Guillén

EVOLUCION DEL SOFTWARE

Los primeros años

♦ Orientación por lotes (batch)♦ Distribución limitada♦ Software a medida

La segunda era

♦ Multiusuario♦ Tiempo real♦ Bases de datos♦ Producto del software

La tercera era

♦ Sistemas distribuidos♦ Incorporación de <<inteligencia>>♦ Hardware de bajo costo♦ Impacto en el consumo

La cuarta era

♦ Sistemas personales potentes♦ Tecnologías orientadas a objetos♦ Sistemas expertos♦ Redes neuronales artificiales♦ Computación en paralelo♦ Redes de computadoras

Durante los últimos 25 años en la historia del desarrollo de software, se pueden observarcambios dramáticos en la forma de usar y programar una computadora. La tendencia para laindustria del software es la tecnología de Objetos y la interfase gráfica, como se puede apreciar enla siguiente figura.

Lenguaje deprogramación

Terminal decaracteres

CODASYL

COBOL

3270/VT100

ComputadoraPersonal

RDBMS/SQL

C, Pascal

Interactivo

InterfaseGráfica deUsuarioODBMS

C++, Smalltalk

Manejo/eventosModo

Modelo de datos

Interfase de usuario

’70 ‘80 ‘90

Figura # 1 Evolución del software

Page 6: Desarrollo Del Software

6

Análisis y Diseño Orientadoa Objetos

Instituto Tecnológicode la Laguna

Paola Romero Guillén

1.3 CARACTERISITICAS DEL SOFTWARE

• El software se desarrolla, no se fabrica en un sentido clásico.Aunque existen varias similitudes entre el desarrollo del software y la construcción delhardware ambas actividades son fundamentalmente diferentes. En ambas actividades labuena calidad se adquiere mediante un buen diseño.

• El software no se estropea.El software no es susceptible a los males del entorno que hacen que el hardware seestropee. Cuando un componente de hardware se estropea, se sustituye por una pieza derepuesto. No hay piezas de repuesto para el software, cada fallo en el software indica unerror en el diseño o en el proceso mediante el que se tradujo el diseño a código maquinaejecutable.

• La mayoría del software se construye a medida, en vez de ensamblar componentesexistentes.Se puede comprar software ya desarrollado, pero solo como una unidad completa, nocomo 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, sedenomina de tiempo real.

♦ Software de gestión.El procesamiento de información comercial constituye la mayor de las áreas deaplicación del software.

♦ Software de ingeniería y científico.Esta caracterizado por los algoritmos de manejo de números.

♦ Software residente en memoria.Reside en memoria de solo lectura y se utiliza para controlar productos y sistemas delos mercados industriales y de consumo.

♦ Software de computadoras personales.Tiene miles de aplicaciones.

♦ Software de inteligencia artificial.Hace uso de los algoritmos no numéricos para resolver problemas complejos para losque no son adecuados los cálculos o el análisis directo.

1.4 LA METODOLOGÍA.

Un buen diseño es la clave de una ingeniería de software efectiva, ya que un sistema desoftware bien diseñado es fácil de aplicar y mantener, además de ser comprensible y confiable. Encontraste un sistema mal diseñado, aunque funcione, son caros de mantener, difíciles de probar ypoco confiables, por consiguiente la etapa de diseño es la parte más importante del proceso dedesarrollo del software.

Page 7: Desarrollo Del Software

7

Análisis y Diseño Orientadoa Objetos

Instituto Tecnológicode la Laguna

Paola Romero Guillén

En un principio el diseño del software era un proceso informal, donde, dado un conjunto derequerimientos en lenguaje natural, se planteaba el diseño, tal vez en forma de organigrama,entonces, se empezaba la codificación y se modificaba el diseño a medida que se aplicaba elsistema, al final el sistema difería tanto de las especificaciones iniciales que el documento deldiseño original resultaba una descripción totalmente diferente a la del sistema final.

Ahora se ha reconocido que una especificación precisa (aunque no necesariamente formal)es una parte esencial del proceso de diseño y que el diseño del software es una actividad repetitivade múltiples etapas que no puede ser representada en una sola notación, por consiguiente, se handesarrollado varias notaciones de diseño más apropiadas que los simples organigramas.

Una vez dada la definición de requerimientos se debe utilizar para desarrollar el diseño delsistema de software que satisfaga dichos requisitos. Para tal propósito se pueden plantear lassiguientes etapas:

1) Establecer los subsistemas que componen el sistema general.2) Cada subsistema debe dividirse en componentes individuales y debe establecerse la

especificación de los subsistemas definiendo la operación de sus componentes.3) Cada componente se puede seguir dividiendo en subcomponentes que actúen

recíprocamente4) A continuación cada componente debe ser especificado como una jerarquía de

subcomponentes.5) En algún momento de este proceso de refinamiento hay que especificar con detalle los

algoritmos utilizados en cada componente.

Además es necesario definir:

1) Mecanismos de comunicación entre procesos.2) Las estructuras de archivos.3) Las estructuras de datos utilizadas en los programas.4) Casos de prueba, para comprobar la operación de los sistemas y subsistemas.

La Conceptualización de un buen diseño esta en función de la aplicación y los requisitosdel proyecto en particular, un buen diseño puede ser:

• Uno que permita producir una codificación muy eficiente.• Un diseño mínimo donde la aplicación sea lo mas compacto posible.• Un diseño de muy fácil mantenimiento.

El último criterio es el mas utilizado, ya que permite minimizar el costo de los cambios delsistema, lo que implica que el diseño debe ser comprensible y que las modificaciones deben tenerun efecto local, lo cual se logra si el diseño del software es muy coherente y poco acoplado. Estosignifica que cualquier unidad de programa se puede remplazar por una unidad equivalente conpoco o ningún cambio en las otras unidades del sistema. Lo anterior es importante a la hora derefinar los diseños, el tener unidades poco acopladas significa que el diseñador posee la opción decambiar de opinión sobre el diseño de una unidad sin que haya efectos secundarios en el resto delsistema.

El diseño efectivo del software tiene mejores resultados si se emplea una metodologíaconsistente de diseño. Existe en el mercado una gran cantidad de metodologías de diseño que seutilizan en diferentes aplicaciones, en esencia las mas utilizadas se pueden resumir en lassiguientes áreas:

1) Diseño funcional descendente. En esta metodología el sistema se diseña desde unpunto de vista funcional, empezando con una vista de alto nivel y refinándola de

Page 8: Desarrollo Del Software

8

Análisis y Diseño Orientadoa Objetos

Instituto Tecnológicode la Laguna

Paola Romero Guillén

manera progresiva hasta llegar a un diseño mas detallado. Esta metodología estarepresentada por el Diseño Estructurado (Yourdon 1979)

2) Diseño orientado a objetos. En esta metodología el sistema se ve mas como unacolección 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 dediseño se basa en el ocultamiento de información, propuesta por primera vez porParnas (1972).

1.4.1 Descomposición funcional descendente.

Esta metodología utiliza la característica humana fundamental para la solución deproblemas "la abstracción".

El diseño descendente se basa en la noción de que la estructura del problema debedeterminar la estructura de la solución del software.

A medida que se progresa en el diseño cada componente se refina en sus propiasoperaciones fundamentales, continuando el proceso hasta que se llega a un diseño de bajo nivel.

La formulación y descripción de un diseño de software incluye varias etapas:1) Estudio y comprensión del problema.2) Identificación de las características generales de por lo menos una solución.3) Construcción 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 solución.5) Describir cada abstracción utilizada en la solución mediante un lenguaje de

descripción, aunque en las primeras etapas del diseño se utiliza exclusivamentelenguaje natural.

Después de haber formulado y descrito una solución inicial de alto nivel, el proceso desolución de problema debe repetirse para cada abstracción utilizada, el proceso continúa hasta quese tenga una especificación de bajo nivel para cada abstracción definida para el problema. Es muyimportante que la representación de cada etapa del diseño sea clara y concisa.

En esta metodología los modelos conceptuales utilizados para el análisis difieren de lo quese emplean para el diseño. La programación tiene también un tercer punto de vista.

Análisis Diseño ProgramaciónDiagramas de relación entreentes.

Diagramas de flujo de datos. COBOL

Descomposición funcional. Tablas de Estructura. PASCALDiagramas de dependenciaentre los procesos.

Diagramas de acción. C

En las metodologías tradicionales, los analistas, los diseñadores y los programadorestienen distintos modelos conceptuales. Al pasar de un modelo a otro, en ocasiones se pierdeinformación y aparecen las incomprensiones. La transición consume tiempo y a veces reduce lacalidad del producto final.

Los métodos de la ingeniería del software indican como construir técnicamente el software.Los métodos abarcan una gran gama de tareas que incluyen:

♦ Análisis de requisitos♦ Diseño♦ Construcción de programas♦ Pruebas

Page 9: Desarrollo Del Software

9

Análisis y Diseño Orientadoa Objetos

Instituto Tecnológicode la Laguna

Paola Romero Guillén

♦ Mantenimiento

Los métodos de la ingeniería del software dependen de un conjunto de principios básicosque gobiernan cada área de la tecnología e incluyen actividades y otras técnicas descriptivas.

1.5 DEFINCION DE UNA METODOLOGIA DE ANÁLISIS Y DISEÑO ORIENTADA A OBJETOS

1.5.1 Enfoque:

Al principio de la década de los 90's las posibilidades de software están retrasadasrespecto a las del hardware en un mínimo de dos generaciones de procesadores, y la distanciacontinua aumentando. Existe un acuerdo general en que las herramientas, técnicas yabstracciones del software convencional se convierten rápidamente en inadecuadas mientras quelos sistemas de software son cada vez mayores y su complejidad se ve aumentada. Estepanorama presenta un gran dilema a los desarrolladores de software comercial y empresarial y, nose diga, a la educación propiamente dicha.

No obstante, crece el consenso de que un nuevo paradigma de orientación a objeto puedeayudar a controlar la complejidad y convertir el creciente entorno de sistemas en aplicaciones masútiles y excitantes. En la presente década, las aplicaciones necesitaran satisfacer exigencias massofisticadas, utilizar arquitecturas y estructuras de datos más complejas y que puedan serconseguidas por una amplia base de usuarios, que crece con el tiempo. Todos estos factoresllevan a la necesidad de un aumento en la capacidad de los desarrolladores de software paraconstruir, ampliar y mantener sistemas grandes y complejos. Mas aun el hecho de la disponibilidadpara una base mayor de usuarios requiere que el software sea más flexible y fácil de utilizar.

El diseño Orientado a objetos (DOO, ODD por sus siglas en ingles), al igual que otrasmetodologías de diseño orientadas a la información, crea una representación del campo delproblema del mundo real y la hace corresponder con el ámbito de la solución, que es el software. Adiferencia de otros métodos el DOO produce un diseño que interconecta objetos de datos yoperaciones de procesamiento en una forma que modulariza la información y el procesamiento.

La naturaleza única del DOO queda reflejada en su capacidad de construir sobre trespilares conceptuales importantes del diseño de software:

• Abstracción• Ocultamiento de la información• Modularidad

Todos los métodos de diseño intentan desarrollar software con esas tres característicasfundamentales, pero solo el DOO proporciona un mecanismo que permite al diseñador conseguirlas tres sin complejidad ni necesidad de compromisos.

Según Wiener y Sincovec en su libro: "Software Engenneering with Modula-2 and Ada”,resumen la metodología DOO de la siguiente forma:

"Ya no es necesario que el diseñador del sistema haga corresponder el ámbito delproblema con estructuras de datos y de control predefinidas que se encuentren en el lenguaje deimplementación. En cambio, el diseñador puede crear sus propios tipos abstractos de datos yabstracciones funcionales y hacer corresponder el campo del mundo real con esas abstraccionescreadas por el propio programador. Esta correspondencia será la mayoría de las veces mucho masnatural, ya que el rango de tipos abstractos de datos que puede inventar el diseñador esvirtualmente ilimitado. Mas aun, el diseño de software se desliga de los detalles de representaciónde los objetos de datos que se usan en el sistema.

Page 10: Desarrollo Del Software

10

Análisis y Diseño Orientadoa Objetos

Instituto Tecnológicode la Laguna

Paola Romero Guillén

Así, se pueden cambiar muchas veces esos detalles de presentación, sin que ello afecte alsistema de software global."

Directamente en el campo de las bases de datos, una base de datos tradicional soloalmacena datos, sin procesarlos, de modo que resulten independientes de los procesamientos. Losdatos son accesibles a diferentes usuarios, con diversos propósitos. A diferencia, una base dedatos Orientada a objetos almacena objetos, es decir, los datos se almacenan junto con losmétodos que procesan dichos datos (objetos).

Después del uso constante de las bases de datos tradicionales, surge la necesidad deasociar ciertos procedimientos con los datos y activarlos cuando se tiene acceso a estos. Esosprocedimientos se utilizaron para controlar la integridad de los datos o su seguridad. A veces secalculaba un valor a partir de atributos diferentes a los almacenados, procedimiento conocidocomo: colocación de inteligencia en la base de datos. La técnica de las bases de datos inteligentesfueron útiles para controlar la integridad en un ambiente cliente-servidor, puesto que nunca sé teniala 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 setiene acceso a dato alguno si no es a través de los métodos almacenados en la base de datos.Estos métodos están listos para entrar en acción al momento en que reciben una solicitud (evento).Los datos de todo los objetos quedan entonces encapsulados. En general, los datos son activosmas que pasivos.

1.5.2 Ventajas y desventajas de la Tecnología Orientada a Objetos.

a) Ventajas.

Las ventajas tienen en general el mismo carácter que las ofrecidas por la programación ydiseño estructurado, aunque van mas allá en algunas direcciones, algunas de ellas son:

• Los objetos bien diseñados pueden constituir la base para el ensamble de otros sistemas,empleando la reutilización de componentes, lo que redunda en mayor productividad.

• La reutilización de clases, probadas en proyectos anteriores, conducen a la creación desistemas de mayor calidad, que satisfacen los requerimientos y conteniendo menor número deerrores.

• La herencia permite la definición de módulos básicos, los cuales posteriormente pueden serextendidos, sin alterar su operación básica., ni la de sus clientes, lo que produce sistemas masflexibles, mas fácilmente extendibles y de mantenimiento menos costoso.

• La convención de pase de mensajes para la comunicación entre objetos lleva a que ladescripción de la interfaz entre módulos y sistemas externos sea mas fácil. También facilita ladescripción y la construcción de interfaces gráficas de usuario y sistemas distribuidos.

• La división de los sistemas sobre la base de tipos de objetos encapsulados ayuda a laresolución de los problemas asociados con la escalabilidad, lo que evita que el esfuerzoaumente de manera exponencial con el tamaño y la complejidad del proyecto, como sucedecon los sistemas convencionales.

• La división del trabajo en un proyecto tiene una base natural, lo que hace más sencillo elanálisis y diseño usando la división en el dominio de objetos, que corresponde a una visiónorientada a la solución de sus contrapartes del mundo real, lo que es mas natural que unadescomposición funcional por refinamiento progresivo, por lo que los sistemas orientados aobjetos deberán admitir de mejor manera el cambio de pequeña a gran escala.

• El encapsulamiento de información ayuda a la construcción de sistemas más seguros.• La aproximación del diseño centrado en datos, propia del análisis orientado a objetos, al incluir

también los procesos, se captura de mejor forma la semántica del modelo, lo que resulta degran importancia en los sistemas comerciales, y en particular en los sistemas de base dedatos.

Page 11: Desarrollo Del Software

11

Análisis y Diseño Orientadoa Objetos

Instituto Tecnológicode la Laguna

Paola Romero Guillén

• La orientación a objetos es una herramienta para manejar la complejidad.• La evolución de un sistema y los problemas de mantenimiento se reducen debido a la partición

resultante del encapsulamiento y de las interfaces uniformes entre objetos.• Potencialmente, los sistemas orientados a objetos son capaces de capturar del significado de

una aplicación; su semántica, ya que están diseñados para el modelado de sistemas, puedenemplearse para el modelado de escenarios y facilitar cambios significativos.

Los intentos por hacer frente al problema de la calidad del software provienen deinnovaciones en los lenguajes de programación y de diversos métodos estructurados para eldesarrollo de sistemas. Si se tiene en cuenta que en costo de un sistema el 80% representa elcosto del software, y que aunque se empleen programadores calificados no son capaces deproducir código flexible y correcto, es indicio que algo anda mal. Los métodos estructurados, loslenguajes de cuarta generación, las herramientas CASE, las técnicas de prototipos, los sistemasde base de datos y los generadores de código son tentativas para resolver el problema

• Los usuarios de los métodos estructurados han resultado perjudicados tanto en laproductividad como en la calidad del producto final.

• Los lenguajes de cuarta generación (4GL) pueden incrementar la productividad hastamas o menos un 20% pero es probable que esto ocurra a expensas del rendimiento yposiblemente degrade la productividad, debido principalmente, al carácter restrictivo delos lenguajes de muy alto nivel y la necesidad de pasar el código a lenguajes detercera generación ((3GL) y viceversa.

El impulso de los métodos estructurados, obedece en buena parte al hecho de que muchossistemas realizados usando estos métodos no estaban concluidos, no se empleaban o habían sidodistribuidos con errores importantes. Las estadísticas muestran que un gran número de sistemasse encuentran en estas situaciones.

En un mundo cambiante, los sistemas de software deben de ser adaptables, y esprecisamente hacia este aspecto al que apunta la capacidad de los sistemas orientados a objetosde ser extensibles y modulares. El encapsulamiento representa la mayor promesa como técnicapara hacer que los sistemas sean flexibles a los cambios en su realización

• La elaboración de prototipos es una herramienta importante para la obtención deespecificaciones correctas, éstos se emplean dentro de los desarrollos convencionales,pero cuando se combinan con métodos orientados a objetos ofrecen ventajasadicionales.

• Los generadores de código dificultan los arreglos de emergencia, la idea de lasherramientas CASE que generan código y garantizan la documentación adecuada,congruente con todo el desarrollo, hace que todos los cambios sean realizados de unamanera sistemática. Si se requiere un arreglo de emergencia, tal vez no habrá tiempode realizar el proceso de compilación que representa la modificación de los diagramasde flujo de datos, el modelo entidad - relación y la documentación. Por consiguiente, amedida que avanza el tiempo, las especificaciones se apartan de las líneas de código ylos cambios se hacen cada vez más difíciles. Se puede pensar que el camino correctoes hacer todo el proceso, pero en la realidad, el sistema no puede permanecer pormucho tiempo inoperante. Los sistemas orientados a objetos abordan este problemahaciendo más fácil localizar los arreglos de emergencia.

• El uso de las herramientas CASE trae otro problema asociado al que se enfrentan losjefes de proyectos muy grandes en los que se emplean éstas. Las herramientas CASEcon generación de código requieren que la mayor parte del esfuerzo requieren que lamayor parte de esfuerzo se invierta en las etapas de análisis y diseño de laarquitectura, lo que deja poco tiempo para la corrección de los errores que surgencuando se prueba el código. Algunos jefes de proyecto optan por abandonar estasherramientas debido a este factor. Una herramienta CASE orientada a objetos que

Page 12: Desarrollo Del Software

12

Análisis y Diseño Orientadoa Objetos

Instituto Tecnológicode la Laguna

Paola Romero Guillén

genere código, adolece del mismo problema, pero la modularidad forzosa queproporciona el encapsulamiento hace que los módulos se puedan probarindependientemente, ofreciendo la posibilidad de hacer una evaluación confiable delcosto de los arreglos de última hora.

Además

• El acceso a los módulos implementados en un estilo orientado a objetos se lograúnicamente vía su interfaz, el programador solo requiere conocer su interfaz,equivalente a una especificación de la función del módulo.

• En los sistemas orientados a objetos el tratamiento de excepciones se hace massencillo.

• La naturaleza simultáneamente "abierta" y "cerrada" de los sistemas orientados aobjetos da soporte a la facilidad de mantenimiento, la reutilización y la verificación

b) Desventajas.

Cuando se estudian los beneficios de una nueva tecnología es conveniente ser cautelosos.Los métodos orientados a objetos no es la panacea y es necesario delimitar aquellos aspectos enlos cuales los beneficios que se prometían no sean han conseguido, así como identificar aquellosbeneficios que solo se han obtenido en determinadas circunstancias.

• La producción de módulos reutilizables produce en realidad un aumento en el costo delproyecto, en la mayoría de los casos no se esta dispuesto a pagar ese costo, estoscostos solo se pueden justificar en ahorros futuros, además siempre existe la tentaciónde realizar lo más pronto posible el trabajo entre manos.

• Existe carencia de bibliotecas de objetos disponibles comercialmente. El éxito de loscomponentes reutilizables desarrollados comercialmente depende de la disposición delos patrocinadores del proyecto al tener en cuenta el costo adicional de sus desarrollosy de estén dispuestos a recobrar sus inversiones en un período de tiempo largo.

• Al contar con bibliotecas, se deben encontrar formas de recorrerlas en todo su volumeny complejidad. Además resolver el problema de cómo informar al desarrollador que unacierta biblioteca contiene precisamente el objeto que necesita para un caso concreto.

• La administración de grandes bibliotecas de componentes para la programaciónorientada 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 laadopción generalizada de las técnicas orientadas a objetos, se puede comprometer lareutilización de un objeto si se corrige un error de forma incorrecta.

• No existen protocolos para el control de cambios y de versiones para sistemas deobjetos complejos con múltiples interconexiones.

• La mayoría de los lenguajes de programación orientados a objetos no tienen soportepara el manejo de objetos persistentes, con lo que la administración de datos y deobjetos no tiene un buen apoyo por parte de la programación orientada a objetos.

• La eficiencia de los lenguajes de programación orientados a objetos con sucaracterísticas de enlazado dinámico y la recolección de basura no es muy buena,sobre todo para aquellas aplicaciones en tiempo real en donde la eficiencia es crucial.

• La reutilización requiere de gran creatividad, exige que los desarrolladores conozcan lafuncionalidad de diferentes dominios de la funcionalidad de las aplicacionesconstruidas por módulos. Nunca será posible crear un conjunto de reglas, paraautomatizar el proceso.

• Para que la reutilización sea factible, es necesario llegar a un compromiso entrereutilización y semántica, ya que entre mas se dice acerca de algo, más se relacionaese algo con su contexto. En ciertas aplicaciones como las interfaces gráficas de

Page 13: Desarrollo Del Software

13

Análisis y Diseño Orientadoa Objetos

Instituto Tecnológicode la Laguna

Paola Romero Guillén

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 dedepurarlo, rastreando el paso de mensajes de un objeto a otro, lo que puede resultarde gran dificultad, lo que representa un defecto grave en los sistemas orientados aobjetos.

• Se ha dicho que puede cambiar un módulo, y las demás partes del sistema no se venafectadas, sin embargo si el cambio realizado en el módulo es profundo, laaseveración anterior deja de ser cierta.

• En la programación estructurada se crearon bibliotecas de funciones, que eran difícilesde utilizar por el hecho de tener que recordar largas listas de parámetros. Será ese eljuicio de las futuras generaciones acerca de las bibliotecas de objetos.

• La inversión necesaria para la adopción de la tecnología de objetos, en hardware,software, métodos, entrenamiento del personal, educación tanto de los desarrolladorescomo de la gerencia, y los costos adicionales en el desarrollo de componentesreutilizables y la administración de bibliotecas.

• Cambios organizacionales y culturales consecuencia de la adopción de las tecnologíaorientada a objetos. Por ejemplo, a un programador actualmente se le paga por lacantidad de código escrito (corrigiendo la escala según el lenguaje con que se trabaje),ahora con la reutilización de código, el criterio debe modificarse.

• Las grandes inversiones en tecnología de objetos pueden verse paralizadas por unpunto de vista más sensato, consistente en que, eventualmente se verá sucedida poruna metáfora todavía más potente. Afortunadamente, parece que estos desarrolloscontendrán en su seno, en lugar de eliminarla, la metáfora orientada a objetos, porconsiguiente, las inversiones realizadas ahora deberán estar seguras frente a loscambios tecnológicos.

1.6 TENDENCIA

1.6.1 Una revolución industrial en el software

Una de las preocupaciones actuales más urgentes de la industria de la computación es lade crear software y sistemas corporativos mas pronto y de mas bajo costo. Para hacer un buen usodel poder cada vez mayor de las computadoras, necesitamos un software de mayor complejidad.Aparte de más complejo también es necesario que dicho software sea más confiable.

Las técnicas orientadas a objetos permiten que el software se construya a partir de objetosde comportamiento especifico. Los propios objetos se pueden construir a partir de otros, que a suvez pueden estar formados por otros objetos. El análisis de sistemas en el mundo orientado aobjetos se realiza al estudiar los objetos en un ambiente, así como los eventos que interactúan condichos objetos. El diseño del software se realiza al volver a utilizar clases de objetos ya existentes yen caso necesario construir nuevas clases. A través de la historia de la ingeniería, parece surgir unprincipio: la gran ingeniería es la ingeniería sencilla. Las ideas que se tornan muy rebuscadasinflexibles y problemáticas tienden a ser reemplazadas por otras mas nuevas y claras desde elpunto de vista conceptual y con sencillez estética.

El termino revolución industrial en el software se ha utilizado para describir el paso haciauna era en la que el software será compilado a partir de componentes de objetos reutilizables, conlo que se crearía una enorme biblioteca de componentes. Debemos de pasar de una era depaquetes monolíticos de software donde un vendedor construye todo un paquete hasta una era enla que el software sea ensamblado a partir de componentes y paquetes de muchos proveedores.Serán cajas negras donde no podremos mirar el interior.

Page 14: Desarrollo Del Software

14

Análisis y Diseño Orientadoa Objetos

Instituto Tecnológicode la Laguna

Paola Romero Guillén

Tan solo las técnicas orientadas a objetos no nos pueden proporcionar la magnitud delcambio necesario. Se deben conjuntar con otras tecnologías de software. Las técnicas orientadasa objetos han existido durante dos décadas, pero las primeras de ellas se preocupaban mas por lacodificación en lenguajes como Smalltalk y C++. Entre tanto con base en las herramientas Case,los generadores de código se han desarrollado con base en el deposito, el motor de interferencia ylas técnicas de inteligencia artificial. Las técnicas orientadas a objetos son muy poderosas cuandose combinan con otras tecnologías.

La tecnología Killer para el desarrollo de software:

♦ CASE e I-CASE♦ Programación visual♦ Generadores de códigos♦ Depósitos y coordinadores de depósitos♦ Metodologías basadas en depósitos♦ Ingeniería de la información♦ Bases de datos orientadas a objetos♦ Lenguajes no por procedimientos♦ Motores de interferencias♦ Tecnología cliente-despachador♦ Bibliotecas de clases que maximicen la reutilización♦ Análisis y diseño orientado a objetos

La programación orientada a objetos ha mejorado de manera esencial la creación delsoftware, pero por si misma no implica el mejoramiento masivo necesario para la industria de lacomputación. Las técnicas orientadas a objetos deben combinarse con todos los aspectosdisponibles de la automatización del software.

Las técnicas orientadas a objetos modificaran:

♦ Toda la industria del software♦ La forma en que se venden los programas de aplicación♦ La forma de uso de las computadoras♦ La forma de uso de las redes♦ La forma de analizar los sistemas♦ La forma de diseñar sistemas♦ La forma de utilizar las herramientas CASE♦ La forma de planear las empresas♦ El trabajo de todos los profesionales de los sistemas de información

1.6.2 El paradigma de la integración

La revolución industrial del software ganara fuerza cuando se difundan las técnicasorientadas a objetos y se disponga de grandes bibliotecas de clases de objetos. Las bibliotecas seenlazaran con depósitos CASE de modo que las nuevas clases se puedan ensamblar rápidamentea partir de las ya existentes. La mayoría de las herramientas del software se modificaran parautilizar el paradigma orientado a objetos.

El software orientado a objetos permitirá que los objetos independientes se puedanejecutar en forma simultanea, en procesadores independientes. El diseño orientado a objetos conherramientas CASE y generadores de código es la clave para la construcción de poderosasmaquinas paralelas. En tanto llega el momento de esta revolución veremos la difusión de lascomputadoras paralelas: maquinas con varios procesadores. Una estación de trabajo tendrá varioschips procesadores. Un despachador LAN (red de área local) utilizara el procesamiento paralelo.

Page 15: Desarrollo Del Software

15

Análisis y Diseño Orientadoa Objetos

Instituto Tecnológicode la Laguna

Paola Romero Guillén

Las computadoras de gabinete y las supercomputadoras se convertirán con el tiempo en maquinasaltamente paralelas.

1.7 LA VERDADERA INGENIERIA DEL SOFTWARE

El estado actual de la mayor parte de la ingeniería de software esta algo atrasado conrespecto a las demás áreas de la ingeniería. La mayoría de los productos de hardware tienengarantía, pero la mayoría de los productos de software llevan una renuncia a la garantía. Elsoftware se vende no cuando esta libre de errores sino cuando estos aparecen con una frecuenciabastante baja. Las técnicas OO ligadas a las herramientas CASE con un generador de códigos yun deposito (también orientado a objetos) constituyen el mejor camino conocido para construir unaverdadera ingeniería de software.

1.7.1 Una fábrica de software

Una fábrica de software es muy distinta a un inventor. La fábrica requiere el trabajo enequipo y la disciplina. Todos los diseñadores de software deben compartir herramientas I-CASEcomunes, con un deposito común. La fábrica de software necesita maximizar la reutilización.Maneja una biblioteca de clase reutilizables. La fábrica de software se esfuerza porque sus clasesreutilizables sean de lo más estable posible, de modo que los errores sean raros y se minimicen loscostos de mantenimiento.

La fábrica de software debe aumentar en forma continua la funcionalidad de las clases queutiliza (construir objetos a partir de objetos componentes). El software debe construirse en formaindependiente del ambiente (sistema operativo, la administración de la LAN, el manejo de la basede datos, la interfaz con el usuario, etc.). Debe poder ligarse con varios ambientes mediantesolicitudes y respuestas estándares de clases.

1.8 EVOLUCION DE LA PRODUCCION DEL SOFTWARE

Fase 1 : La industria artesanal

La mayoría del software de la actualidad esta diseñado y codificado con técnicasmanuales, cada programa es una pieza artesanal única, un poco como la hechura de ropa en lostelares antes de la revolución industrial o la fabricación de armas por armeros individuales en elsiglo XVIII.

Fase 2 : Herramientas poderosas y métodos de ingeniería

I-CASE representa la llegada de las herramientas poderosas en la construcción delsoftware. Los diseños se sintetizan con la ayuda de una computadora y se genera un código, sinerrores de codificación, a partir de los diseños. Las herramientas refuerzan el uso de las técnicasestructuradas y aplican verificaciones rigurosas al diseño, lo que conlleva una necesaria disciplinadel tipo de la ingeniería al caso de la construcción del software.

Fase 3 : Producción en masa

Cuando se empezaban a utilizar las herramientas I-CASE cada programa se desarrollabaen forma individual. Mas tarde se popularizaron los depósitos con clases reutilizables yevolucionaron las bibliotecas de estas clases. Las aplicaciones se construyen al ensamblar losbloques de construcción ya existentes.

Page 16: Desarrollo Del Software

16

Análisis y Diseño Orientadoa Objetos

Instituto Tecnológicode la Laguna

Paola Romero Guillén

Fase 4 : Producción con robots

Al madurar el diseño orientado a objetos, se crean clases de una complejidad cada vezmayor. Se construyen enormes bibliotecas de clases reutilizables. Las herramientas ayudan aldiseñador a especificar las necesidades y así seleccionar y ensamblar de manera automática lasclases y métodos que cumplan con los requisitos. El conjunto de herramientas desarrolla undialogo con el diseñador, permitiéndoles modificar el diseño, seleccionar parámetros y elegiropciones.

1.9 EL FUTURO DEL SOFTWARE

El software actual es relativamente trivial. Para que las computadoras sean los sociossinérgicos de los humanos, necesitan un software complejo. Es probable que el software de lacomplejidad necesaria no se pueda construir solo mediante las técnicas estructurales tradicionales.A mediados de los 80´s las autoridades de las técnicas estructurales afirmaban que era imposibleconstruir sistemas de 50 millones de líneas de código. Nuestro futuro requiere software en que lossistemas de 50 millones de líneas de código sean comunes. En este aspecto son esenciales lastécnicas orientadas a objetos, con encapsulado, polimorfismo, desarrollo con base en dispositivos,automatización del diseño y generadores de código.

Los futuros diseñadores de software tendrán CD-ROM con bibliotecas de aplicaciones yobjetos, diseñados para su reutilización. Estas bibliotecas aparecerán en formato I-CASE, de modoque su diseño aparezca en la pantalla, sea modificado y ligado con otros componentes del sistema.

1.9.1 Concluyendo:

De manera general, las técnicas orientadas a objetos, en la mayoría de las aplicaciones,brindan beneficios, aunque algunos de los problemas requieren de una buena investigación paraencontrar la manera de resolverlos, esta técnica es promisoria y ante el aumento de la complejidad,la necesidad de desarrollos rápidos y cada vez mas seguros, es superior a las técnicasestructuradas.

Las técnicas orientadas a objetos se piensan a veces en términos de lo que puede hacersecon los lenguajes de programación orientada a objetos, este es un punto de vista muy restringido,en realidad se puede trabajar inclusive utilizando lenguajes procedurales, sin embargo hay queutilizar las técnicas más poderosas, lo que por lo general quiere decir usar una herramienta CASEpara el análisis y el diseño con un generador integrado de código 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 características que hay que tomar en cuenta para tener un desarrollo bienestructurado.

Existen varios conceptos que son importantes tomarlos en cuenta para poder llevar acabo nuestrosobjetivos.

Se debe tener en cuenta las siguientes cuestiones:

• Productividad.• Confiabilidad.• Mantenibilidad.

Page 17: Desarrollo Del Software

17

Análisis y Diseño Orientadoa Objetos

Instituto Tecnológicode la Laguna

Paola Romero Guillén

• Productividad.

Hoy en día la productividad es un problema serio en el desarrollo de sistemas,básicamente se plantean dos aspectos importantes:

1) El retraso en los nuevos sistemas que se necesita desarrollar.2) El tiempo necesario para la construcción de un sistema nuevo.

• Confiabilidad.

Una vez que se ha terminado un sistema llega el tiempo de probarlo y corregir los erroresdetectados. Típicamente el período de prueba representa un 50% del tiempo de desarrollo delsistema, en este tiempo de prueba, se piensa que la productividad es nula, esto pudiera seraceptable si el resultado fueran sistemas altamente confiables y mantenibles, la realidad en losúltimos años es justo lo contrario; los sistemas producidos están llenos de errores y son casiimposibles de modificar.

• Mantenibilidad.

El mantenimiento del software es un aspecto primordial, entre el 50 y 80 por ciento deltrabajo que se realiza en la mayoría de las organizaciones de desarrollo de sistemas esta asociadocon la revisión, modificación, conversión, mejoramiento o corrección de errores en algún programade computadora que alguien escribió algún período de tiempo atrás.

EVOLUCION DEL SOFTWARE

Los primeros años

♦ Orientación por lotes (batch)♦ Distribución limitada♦ Software a medida

La segunda era

♦ Multiusuario♦ Tiempo real♦ Bases de datos♦ Producto del software

La tercera era

♦ Sistemas distribuidos♦ Incorporación de <<inteligencia>>♦ Hardware de bajo costo♦ Impacto en el consumo

La cuarta era

♦ Sistemas personales potentes♦ Tecnologías orientadas a objetos♦ Sistemas expertos♦ Redes neuronales artificiales

Page 18: Desarrollo Del Software

18

Análisis y Diseño Orientadoa Objetos

Instituto Tecnológicode la Laguna

Paola Romero Guillén

♦ Computación en paralelo♦ Redes de computadoras

APLICACIONES DEL SOFTWARE

• Software de sistemas• Software de tiempo real• Software de gestión• Software de ingeniería y científico• Software de computadoras personales

LA METODOLOGIA

Al principio de la década de los 90's las posibilidades de software están retrasadasrespecto a las del hardware en un mínimo de dos generaciones de procesadores, y la distanciacontinua aumentando. Existe un acuerdo general en que las herramientas, técnicas yabstracciones del software convencional se convierte rápidamente en inadecuadas mientras quelos sistemas de software son cada vez mayores y su complejidad aumentada. Este panoramapresenta un gran dilema a los desarrolladores de software comercial y empresarial y, no se diga, ala educación propiamente dicha.

UNA REVOLUCION INDUSTRIAL EN EL SOFTWARE

Una de las preocupaciones actuales más urgentes de la industria de la computación es lade crear software y sistemas corporativos mas pronto y de mas bajo costo. El termino revoluciónindustrial en el software se ha utilizado para describir el paso hacia una era en la que el softwareserá compilado a partir de componentes de objetos reutilizables, con lo que se crearía una enormebiblioteca de componentes.

EL FUTURO DEL SOFTWARE

El software actual es relativamente trivial. Para que las computadoras sean los sociossinérgicos 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 EVALUACIÓN

1. ¿Cuál cree que sea el verdadero desarrollo del Software?2. ¿Para que es necesario la utilización de las etapas del software?3. ¿Cuáles son las técnicas que comúnmente se utilizan para disminuir los retrasos en las

aplicaciones?.4. Mencione los aspectos a considerar en el desarrollo de software.5. De una breve explicación de la evolución del software.6. ¿Qué es la metodología?7. Explique la revolución industrial del software.8. ¿En qué consiste una fábrica de software?9. ¿Qué es para usted el futuro del software?10. ¿Cómo puede aplicar el futuro del software?