EL DESARROLLO DEL SOFTWARE (43639)

Anuncio
EL DESARROLLO DEL
SOFTWARE
TAPIA HERNANDEZ ARELI
EL DESARROLLO DEL SOFTWARE
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 propósito se debe tener en cuenta las siguientes cuestiones:
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 el retraso se presenta en tres
aspectos:

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.

Retraso invisible. Sistemas nuevos que los usuarios saben que necesitan, pero que no los han
solicitado, ya que están en espera que se concluyan proyectos del retraso visible.

Retraso desconocido. Son sistemas que es necesario desarrollar pero que los usuarios ni
siquiera saben que requieren todavía
Confiabilidad.
Una vez que se ha terminado un sistema llega el tiempo de probarlo y corregir los errores detectados.
Típicamente el período de prueba representa un 50% del tiempo de desarrollo del sistema.
Mantenibilidad.
La mantenibilidad se puede resumir en dos aspectos:
1) La corrección 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.
Transportabilidad. Al desarrollar los sistemas debe pensarse en su operación en varias
plataformas.
Seguridad. Dado que la información que se maneja en los sistemas de cómputo actuales es vital
para las organizaciones
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ículo para hacer una
entrega de un producto. Como producto hace entrega de la potencia informática del hardware informático.
El software transforma datos personales (p. Ej.: transacciones financieras de una persona) para que los
datos sean más útiles en un contexto local; gestiona información comercial para mejorar 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.
La mayoría del software se desarrollaba y era utilizado por la misma persona u organización. Debido a que
la movilidad en el trabajo era baja, los ejecutivos estaban seguros de que esa persona estaría allí cuando
se encontrara algún error.
La segunda era de la evolución de los sistemas de computadoras tomo lo que era la multiprogramación y
los sistemas multiusuarios introdujeron nuevos conceptos de interacción hombre-máquina.
La tercera era en la evolución de los sistemas de computadoras era basado en el sistema distribuido,
múltiples computadoras, cada una ejecutando funciones concurrentemente y comunicándose con alguna
otra, incremento notablemente la complejidad de los sistemas informáticos.
La cuarta era de la evolución de sistemas informáticos se aleja de las computadoras individuales y de los
programas de computadoras, dirigiéndose al impacto colectivo de las computadoras y del software.
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
1.3 CARACTERISITICAS DEL SOFTWARE



El software se desarrolla, no se fabrica en un sentido clásico.
El software no se estropea.
La mayoría del software se construye a medida, en vez de ensamblar componentes Existentes.
1.3.1 Aplicaciones del software
 Software de sistemas.
 Software de tiempo real.
 Software de gestión.
 Entre otros.
1.4 LA METODOLOGÍA.
Un buen diseño es la clave de una ingeniería de software efectiva, ya que un sistema de software bien
diseñado es fácil de aplicar y mantener, además de ser comprensible y confiable. En contraste un sistema
mal diseñado, aunque funcione, son caros de mantener, difíciles de probar y poco confiables, por
consiguiente la etapa de diseño es la parte más importante del proceso de desarrollo del software.
Una vez dada la definición de requerimientos se debe utilizar para desarrollar el diseño del sistema de
software que satisfaga dichos requisitos. Para tal propósito 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
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íprocamente
4) 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.
1.4.1 Descomposición funcional descendente
Esta metodología utiliza la característica humana fundamental para la solución de problemas "la
abstracción". 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 exclusivamente lenguaje natural.
1.5 DEFINCION DE UNA METODOLOGIA DE ANÁLISIS Y DISEÑO ORIENTADA A OBJETOS
1.5.1 Enfoque
El diseño Orientado a objetos (DOO, ODD por sus siglas en ingles), al igual que otras metodologías de
diseño orientadas a la información, crea una representación del campo del problema del mundo real y la
hace corresponder con el ámbito de la solución, que es el software. A diferencia de otros métodos el DOO
produce un diseño que interconecta objetos de datos y operaciones de procesamiento en una forma que
modularía la información y el procesamiento.
La naturaleza única del DOO queda reflejada en su capacidad de construir sobre tres pilares conceptuales
importantes del diseño de software:
 Abstracción


Ocultamiento de la información
Modularidad
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 propósitos. A diferencia, una base de datos Orientada a objetos almacena
objetos, es decir, los datos se almacenan junto con los métodos que procesan dichos datos (objetos).
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 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 todos los objetos quedan entonces encapsulados. En general, los datos son activos más 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 y diseño
estructurado, aunque van más 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 de sistemas
de mayor calidad, que satisfacen los requerimientos y conteniendo menor número de errores.
 La herencia permite la definición de módulos básicos, los cuales posteriormente pueden ser
extendidos, sin alterar su operación básica., ni la de sus clientes, lo que produce sistemas más
flexibles, más fácilmente extendibles y de mantenimiento menos costoso.
 La convención de pase de mensajes para la comunicación entre objetos lleva a que la descripción
de la interfaz entre módulos y sistemas externos sea más fácil. También facilita la descripción y la
construcción de interfaces gráficas de usuario y sistemas distribuidos.
El encapsulamiento representa la mayor promesa como técnica para 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 de especificaciones
correctas, éstos se emplean dentro de los desarrollos convencionales, pero cuando se combinan
con métodos orientados a objetos ofrecen ventajas adicionales.
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.
b) Desventajas.



La producción de módulos reutilizables produce en realidad un aumento en el costo del proyecto,
en la mayoría de los casos no se esta dispuesto a pagar ese costo, estos costos solo se pueden
justificar en ahorros futuros, además siempre existe la tentación de realizar lo más pronto posible
el trabajo entre manos.
Al contar con bibliotecas, se deben encontrar formas de recorrerlas en todo su volumen y
complejidad. Además resolver el problema de cómo informar al desarrollador que una cierta
biblioteca contiene precisamente el objeto que necesita para un caso concreto.
No existen protocolos para el control de cambios y de versiones para sistemas de objetos
complejos con múltiples interconexiones.
1.6 TENDENCIA
1.6.1 Una revolución industrial en el software
Las técnicas orientadas a objetos permiten que el software se construya a partir de objetos de
comportamiento específico. Los propios objetos se pueden construir a partir de otros, que a su vez pueden
estar formados por otros objetos. El análisis de sistemas en el mundo orientado a objetos se realiza al
estudiar los objetos en un ambiente, así como los eventos que interactúan con dichos objetos. El diseño
del software se realiza al volver a utilizar clases de objetos ya existentes y en caso necesario construir
nuevas clases. A través de la historia de la ingeniería, parece surgir un principio: la gran ingeniería es la
ingeniería sencilla. Las ideas que se tornan muy rebuscadas inflexibles y problemáticas tienden a ser
reemplazadas por otras más nuevas y claras desde el punto de vista conceptual y con sencillez estética.
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
1.6.2 El paradigma de la integración
La revolución industrial del software ganara fuerza cuando se difundan las técnicas orientadas a objetos y
se disponga de grandes bibliotecas de clases de objetos. Las bibliotecas se enlazaran con depósitos CASE
de modo que las nuevas clases se puedan ensamblar rápidamente a partir de las ya existentes. La mayoría
de las herramientas del software se modificaran para utilizar el paradigma orientado a objetos.
1.7 LA VERDADERA INGENIERIA DEL SOFTWARE
La fábrica 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 administración 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 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 está diseñado y codificado con técnicas manuales, cada programa
es una pieza artesanal única.
Fase 2 : Herramientas poderosas y métodos de ingeniería
I-CASE representa la llegada de las herramientas poderosas en la construcción del software.
Fase 3 : Producción en masa
Cuando se empezaban a utilizar las herramientas I-CASE cada programa se desarrollaba en forma
individual.
Fase 4 : Producción con robots
Al madurar el diseño orientado a objetos, se crean clases de una complejidad cada vez mayor.
1.9 EL FUTURO DEL SOFTWARE
El software actual es relativamente trivial. Para que las computadoras sean los socios sinérgicos de los
humanos, necesitan un software complejo. Es probable que el software de la complejidad 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 imposible construir sistemas de 50 millones
de líneas de código. Nuestro futuro requiere software en que los sistemas de 50 millones de líneas de
código sean comunes. En este aspecto son esenciales las técnicas orientadas a objetos, con encapsulado,
polimorfismo, desarrollo con base en dispositivos, automatización del diseño y generadores de código.
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 para encontrar 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écnicas estructuradas.
Las técnicas orientadas a objetos se piensan a veces en términos de lo que puede hacerse con 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 que utilizar las técnicas más
poderosas, lo que por lo general quiere decir usar una herramienta CASE para el análisis y el diseño con
un generador integrado de código y tal vez un motor de inferencias.
Documentos relacionados
Descargar