50
1 Fundamentos de desarrollo de sistemas INSTITUTO TECNOLÓGICO DE ACAPULCO Profesor. Daniel Solís Chávez Integrantes del Equipo: Ana Alexis Vargas Beltrán No. De control 09320776 Basilio Isaac Moctezuma Saucedo No. De control 09320746 Luis Antonio Huerta Silva No. de control 09320741 Manuel Pérez Nava No. De control 09320787 Horario: Lunes a Viernes de 11:00-12:00 pm. Acapulco Gro. A 17 de Mayo del 2012 INGENIERIA EN SISTEMAS COMPUTACIONALES

94368577 unidad-iii-y-iv

Embed Size (px)

DESCRIPTION

nvvjgbhjgh

Citation preview

Page 1: 94368577 unidad-iii-y-iv

1

Fundamentos de desarrollo de sistemas

INSTITUTO TECNOLÓGICO

DE ACAPULCO

Profesor. Daniel Solís Chávez

Integrantes del Equipo:

Ana Alexis Vargas Beltrán

No. De control 09320776

Basilio Isaac Moctezuma Saucedo

No. De control 09320746

Luis Antonio Huerta Silva

No. de control 09320741

Manuel Pérez Nava

No. De control 09320787

Horario: Lunes a Viernes de 11:00-12:00 pm.

Acapulco Gro. A 17 de Mayo del 2012

INGENIERIA EN SISTEMAS

COMPUTACIONALES

Page 2: 94368577 unidad-iii-y-iv

2

ÍNDICE DE CONTENIDO

UNIDAD III PARADIGMAS DE LA INGENIERIA DE SOFTWARE ........................ 3

3.1 EL ENFOQUE ESTRUCTURADO .................................................................... 4

3.1.1 DIAGRAMAS DE FLUJOS DE DATOS. .............................................. 5

3.1.2 DICCIONARIOS DE DATOS. ............................................................ 13

3.1.3 DISEÑO DE MÓDULOS .................................................................... 18

3.1.4 DESCOMPOSICIÓN EN PROCESOS .............................................. 21

3.2 EL ENFOQUE ORIENTADO A OBJETOS ...................................................... 23

3.2.1 ANÁLISIS. .......................................................................................... 27

3.2.2 DISEÑO. ............................................................................................ 30

UNIDAD IV MODELOS DEL PROCESO DE SOFTWARE................................... 34

4.1 MODELO DE CASCADA ................................................................................. 35

4.2 MODELO DE ESPIRAL ................................................................................... 40

4.3 MODELO INCREMENTAL .............................................................................. 42

4.4 PROCESO DE DESARROLLO UNIFICADO .................................................. 45

4.5 PROCESO SOFTWARE PERSONAL ............................................................. 47

BIBLIOGRAFÍA .................................................................................................... 50

Page 3: 94368577 unidad-iii-y-iv

3

UNIDAD III

PARADIGMAS DE LA INGENIERÍA DE SOFTWARE

La ingeniería de software está compuesta por una serie de pasos de

abarcan los métodos, las herramientas y los procedimientos, estos pasos se

denominan frecuentemente paradigmas de la ingeniería de software. La elección

de un paradigma para la ingeniería de software se lleva a cabo de acuerdo con la

naturaleza del proyecto y de la aplicación, los métodos, herramientas a usar, los

controles y entregas requeridos.

En un nivel técnico, la ingeniería del software empieza con una serie de tareas

de modelado que llevan a una especificación completa de los requisitos y a una

representación del diseño general del software a construir.

El modelo de análisis, realmente un conjunto de modelos, es la primera

representación técnica de un sistema. Con los años se han propuesto muchos

métodos para el modelado del análisis. Sin embargo, ahora dos tendencias

dominan el panorama del modelado del análisis. El primero, análisis estructurado,

es un método de modelado clásico. El otro enfoque, análisis orientado a objetos.

El análisis estructurado es una actividad de construcción de modelos. Mediante

una notación que satisfaga los principios de análisis operacional, creamos

modelos que representan el contenido y flujo de la información (datos y control);

partimos el sistema funcionalmente, y según los distintos comportamientos

establecemos la esencia de lo que se debe construir. El análisis estructurado no

es un método sencillo aplicado siempre de la misma forma por todos los que lo

usan.

Un paradigma de programación es un modelo básico de diseño y desarrollo

de programas, que permite producir programas con una directriz específica, tales

como: estructura modular, fuerte cohesión, alta rentabilidad, etc.

Page 4: 94368577 unidad-iii-y-iv

4

Existen tres categorías de paradigmas de programación:

a) Los que soportan técnicas de programación de bajo nivel (ejemplo: copia de

ficheros frente estructuras de datos compartidos)

b) Los que soportan métodos de diseño de algoritmos (ejemplo: divide y

vencerás, programación dinámica, etc.)

c) Los que soportan soluciones de programación de alto nivel, como los

descritos en el punto anterior

Los paradigmas relacionados con la programación de alto nivel se agrupan en tres

categorías de acuerdo con la solución que aportan para resolver el problema:

a) Solución procedimental u operacional. Describe etapa a etapa el modo de

construir la solución. Es decir señala la forma de obtener la solución.

b) Solución demostrativa. Es una variante de la procedimental. Especifica la

solución describiendo ejemplos y permitiendo que el sistema generalice la

solución de estos ejemplos para otros casos. Aunque es fundamentalmente

procedimental, el hecho de producir resultados muy diferentes a ésta, hace

que sea tratada como una categoría separada.

c) Solución declarativa. Señala las características que debe tener la solución,

sin describir cómo procesarla. Es decir señala qué se desea obtener pero

no cómo obtenerlo.

3.1 EL ENFOQUE ESTRUCTURADO

La primera aparición del enfoque de análisis estructurado fue como

complemento de otro tema importante - el «diseño estructurado»-. Los

investigadores, necesitaban una notación gráfica para representar los datos y los

procesos que los transforman. Esos procesos quedarían finalmente establecidos

en una arquitectura de diseño.

Page 5: 94368577 unidad-iii-y-iv

5

En el Enfoque Estructurado se usan los DFD (Diagrama de Flujo de Datos)

como principal herramienta para entender al sistema antes de plasmarlo a código

fuente. DFD es un diagrama en el q participan procesos (métodos), flujo de datos

(argumentos) y archivos (base de datos).

Hay de diferentes niveles dependiendo la complejidad del sistema q analiza. Otra

desventaja es que una porción de código en lenguaje estructurado es difícil que

pueda servir en otros proyectos.

3.1.1 DIAGRAMAS DE FLUJOS DE DATOS.

A medida que la información se mueve a través del software, es modificada por

una serie de transformaciones.

El diagrama de flujo de datos (DFD) es una técnica que representa el flujo de la

información y las transformaciones que se aplican a los datos al moverse desde la

entrada hasta la salida. En la Figura 3.1 se muestra la forma básica de un

diagrama de flujo de datos. El DFD es también conocido como grafo de flujo de

datos o como diagrama de burbujas.

Page 6: 94368577 unidad-iii-y-iv

6

Figura 3.1 Refinamiento del flujo de información

Un diagrama de flujo de datos (DFD) es una representación gráfica de los

procesos que se realizan con los datos en su organización, con el uso de tan solo

cuatro símbolos, se puede crear una descripción grafica de los procesos que, con

el tiempo, contribuirán a desarrollar una sólida documentación del sistema.

Se puede usar el diagrama de flujo de datos para representar un sistema o

un software a cualquier nivel de abstracción. De hecho, los DFDs pueden ser

divididos en niveles que representen un mayor flujo de información y un mayor

detalle funcional. Por consiguiente, el DFD proporciona un mecanismo para el

modelado funcional, así como el modelado del flujo de información. Al hacer esto,

se cumple el segundo principio de análisis operacional.

Un DFD de nivel O, también denominado modelo fundamental del sistema o

modelo de contexto, representa al elemento de software completo como una sola

burbuja con datos de entrada y de salida representados por flechas de entrada y

de salida, respectivamente. Al dividir el DFD de nivel O para mostrar más detalles,

aparecen representados procesos (burbujas) y caminos de flujo de información

adicionales.

La notación básica que se usa para desarrollar un DFD no es en sí misma

suficiente para describir los requisitos del software.

En seguida mencionan las ventajas sobre las explicaciones descriptivas en

relación con la forma en que los datos se mueven a través del sistema:

Page 7: 94368577 unidad-iii-y-iv

7

1. Libertad para emprender la implementación técnica del sistema en las

primeras etapas.

2. Comprensión más profunda de la interrelación entre sistemas y

subsistemas.

3. Comunicación con los usuarios sobre el conocimiento del sistema actual

mediante diagramas de flujos de datos.

4. Análisis de un sistema propuesto para determinar si se han definido los

datos y procesos necesarios.

La ventaja más grande es la libertad conceptual para utilizar los cuatro

símbolos, los DFD’s hacen énfasis en el procesamiento o la transformación

conforme estos pasan por una variedad de procesos. En los DFD’s lógicos no hay

distinción entre procesos manuales o automatizados. Los procesos tampoco se

representan gráficamente en orden cronológico. En vez de ello, se agrupan solo si

el análisis detallado dicta que tiene sentido hacerlo. Los procesos manuales se

agrupan, y los procesos automatizados también se pueden agrupar.

3.1.1.1 Simbología

En los diagramas de flujos de datos se usan cuatro símbolos básicos para

graficar el movimiento de los datos: Un cuadrado doble, una flecha, un rectángulo

con esquinas redondeadas(o una burbuja) y un rectángulo abierto (cerrado en el

lado izquierdo y abierto en el derecho), como se muestra en la Figura 3.1 a

continuación. Con la combinación de estos cuatro símbolos se puede describir

gráficamente un sistema completo y varios subsistemas.

Page 8: 94368577 unidad-iii-y-iv

8

El cuadrado doble se usa para describir una entidad externa que puede enviar

datos al sistema o recibirlos de él. La entidad externa, o solo entidad, también se

llama origen o destino de datos, y se considera externa al sistema descrito. A cada

entidad se le asigna un nombre adecuado. Aunque interactúa con el sistema, se

considera fuera de los límites de este. La misma entidad se podría usar más de

una vez en un diagrama de flujo de datos en particular para evitar que las líneas

se crucen en el flujo de datos.

La flecha muestra el movimiento de los datos de un punto a otro, con la punta de

la flecha señalando hacia el destino de los datos. Los flujos de datos que ocurren

simultáneamente se pueden describir mediante flechas paralelas. Una flecha

también puede se debe describir con un nombre, debido a que representan los

datos de un apersona, lugar o cosa.

Rectángulo con esquinas redondeadas se usa para mostrar la presencia de un

proceso de transformación. Los procesos siempre denotan un cambio en los datos

o una transformación de estos; por lo tanto el flujo de datos que sale de un

proceso siempre se designa de forma diferente al que entra en el. Los procesos

representan trabajo que se realiza en el tema.

A un proceso se le debe de asignar un número de identificación único y

exclusivo, que indique su nivel en el diagrama. Podría haber varios flujos

de datos que entren y salgan de cada proceso. Los procesos con solo un

Page 9: 94368577 unidad-iii-y-iv

9

flujo de entrada y salida se deben examinar en busca de flujos de datos

perdidos.

El rectángulo abierto representa un almacén de datos. Estos símbolos se dibujan

con el espacio suficiente para que quepan las letras de identificación como se

muestra en la figura. En los diagramas de flujo de datos lógicos no se especifica el

tipo de almacenamiento a un lugar. En este punto el símbolo del almacén de

datos simplemente muestra un lugar de depósito para los datos que permite

examinar, agregar y recuperar datos.

3.1.1.2 Desarrollo de Diagramas de Flujos de Datos

Los diagramas de flujos de datos se pueden y deben dibujar de manera

sistemática. Primero se deben visualizar los flujos de datos desde una perspectiva

jerárquica de arriba a bajo. En seguida se describen los pasos a seguir.

Lista de actividades

Para empezar un diagrama de flujo de datos, se debe sintetizar la narrativa

del sistema de la organización en una lista con las cuatro categorías de entidad

externa, flujo de datos, procesos, y almacén de datos. Esta lista a su vez ayudara

a determinar los límites del sistema que describirá. Una vez que se haya

recopilado una lista básica de elementos de datos se empieza a dibujar el

diagrama de contexto.

Creación de diagrama de contexto

Con un enfoque jerárquico de arriba hacia abajo para diagramar el

movimiento de los datos, los diagramas van de lo general a lo específico. Aunque

el primer diagrama ayuda a entender el movimiento básico de los datos, lo general

de su naturaleza limita su utilidad. El diagrama de contexto inicial debe de mostrar

un panorama global que incluya las entradas básicas, el sistema general y las

Page 10: 94368577 unidad-iii-y-iv

10

salidas. Al proceso se le asigna el numero cero. En este diagrama se muestran

todas las entidades externas, así como los flujos de datos principales que van

desde y hacia dichas entidades. El diagrama no contiene ningún almacén de

datos. Es bastante simple la creación ya que se conocen las entidades externas y

el flujo de datos desde y hacia ellas.

Dibujo del diagrama 0 (el siguiente nivel)

Al ampliar los programas se puede lograr un mayor detalle que con los diagramas

de contexto. Las entradas y salidas especificadas en el primer diagrama

permanecen constantes en todos los diagramas que le siguen. Sin embargo, el

resto del diagrama original se amplia para incluir de tres a nueve procesos y

mostrar almacenes de datos y nuevos flujos de datos de menor nivel. Cada

diagrama ampliado debe ocupar una sola hoja de papel. Al ampliar los DFDs para

representar subprocesos, en este paso se empiezan a completar los detalles del

movimiento de los datos. El manejo de excepciones se ignora en los primero dos o

tres niveles del diagrama de flujo de datos.

Page 11: 94368577 unidad-iii-y-iv

11

El diagrama cero es la ampliación del diagrama de contexto y puede incluir

hasta nueve procesos, esto se hace porque si se agregan más procesos producirá

un diagrama difícil de entender. Por lo general, cada proceso se numero con un

entero, empezando en la esquina superior izquierda del diagrama y terminando en

la esquina inferior derecha. En el diagrama cero se incluyen los principales

almacenes de datos del sistema (que representan a los archivos maestros) y todas

las entidades externas. La figura 3.2 representa gráficamente el diagrama de

contexto y el diagrama cero.

Debido a que un diagrama de flujo de datos es bidimensional, se puede

empezar en cualquier punto del diagrama e ir hacia delante o hacia atrás. Si no

esta seguro de lo que podría incluir en cualquier punto, tome una entidad externa,

un proceso o un almacén de datos diferente y empiece a dibujar el flujo a partir de

él:

1. Empezamos con el flujo de datos de una entidad en el lado de la entrada. Se

hacen preguntas como: ¿Qué sucede con los datos que entran en el sistema?

¿Se almacenan? ¿Esta entrada es para varios procesos?

2. Trabajamos hacia atrás a partir de un flujo de datos de salida. Examinamos los

campos de salida de un documento o pantalla. Se pregunta sobre cada campo

de la salida: "¿De dónde viene?" o "¿Se calcula o almacena en un archivo?"

Examinamos el flujo de datos desde o hacia un almacén de datos. Se

pregunta: "¿Qué procesos ponen los datos en el almacén?" o "¿Qué procesos

usan los datos?" Observamos que un almacén de datos utilizado en el sistema

en el que se esta trabajando podría ser producido por un sistema diferente. Por

lo tanto, desde su punto de vista, tal vez no haya ningún flujo de datos hacia el

almacén de datos.

3. Analizamos un proceso bien definido. Vea qué entrada de datos necesita el

proceso y qué salida produce. Se hace un vínculo la entrada y la salida con los

almacenes de datos y las entidades adecuadas.

4. Tome nota de cualquier área confusa en donde no esté seguro de lo que se

debe incluir o de la entrada o la salida que se requiera. Al conocer las áreas

Page 12: 94368577 unidad-iii-y-iv

12

problemáticas podrá realizar una lista de preguntas para las entrevistas de

seguimiento con los usuarios clave.

Creación de diagramas hijos (niveles mas detallados)

Cada proceso del Diagrama cero se puede, a su vez, ampliar para crear un

diagrama hijo más detallado. El proceso del Diagrama cero a partir del cual se

realiza la ampliación se llama proceso padre, y el diagrama que se produce se

llama diagrama hijo. La regla principal para crear diagramas hijos, es el equilibrio

vertical, estipula que un diagrama hijo no puede producir salida o no puede recibir

entrada que el proceso padre no produzca o reciba también.

Por lo regular las entidades no se muestran en los diagramas hijos debajo

del diagrama cero. El flujo de datos que coincide con el flujo padre se llama flujo

de datos de interfaz y se representa con una flecha que parte de un área vacía del

diagrama hijo. Si el proceso padre tiene un flujo de datos conectado a un almacén

de datos, también el diagrama hijo podría incluir el almacén de datos. Además,

este diagrama de nivel inferior podría contener almacenes de datos que no se

muestran en el proceso padre. En un diagrama hijo se podrían incluir un flujo de

datos de nivel inferior, como una línea de error, aunque no se podría hacer lo

mismo en el proceso padre.

Los procesos se podrían ampliar o no ampliar, dependiendo de su nivel de

complejidad. Cuando no se amplia un proceso, se dice que es funcionalmente

primitivo y se llama proceso primitivo. En la figura 3.3 se ilustran niveles detallados

de un diagrama de flujos de datos hijo.

Page 13: 94368577 unidad-iii-y-iv

13

3.1.2 DICCIONARIOS DE DATOS.

El modelo de análisis acompaña representaciones de objetos de datos,

funciones y control. En cada representación los objetos de datos y/o elementos de

control juegan un papel importante. Por consiguiente, es necesario proporcionar

un enfoque organizado para representar las características de cada objeto de

datos y elemento de control. Esto se realiza con el diccionario de datos.

3

Proceso

Entrada B

Registro A

Entidad 2

El flujo de datos

coincidente

Registro

de

transacción

D1 Almacén de

Datos 1

D5 Archivo de

Transacción 1

Flujo de

datos D

Registro A

Flujo de datos

Z detallado

Registro

de

transacción

Flujo de datos D

D1 Almacén de

Datos 1

4

Proceso

3

Proceso

3

Proceso

3.1

Proceso

Entrada B

Error

En un diagrama

hijo detallado se

podrían agregar

líneas de error

En los diagramas

de nivel inferior se

podrían agregar

archivos de

transacciones

El flujo de salida

debe coincidir con

el proceso padre

El flujo de datos

del proceso padre

debe coincidir con

el diagrama hijo

Figura 3.3 Representación del diagrama de contexto y del diagrama cero

Kendall Kenneth E. & Kendall Julie E., Análisis y diseño de sistemas, Ed. Prentice Hall 6ª ed

Page 14: 94368577 unidad-iii-y-iv

14

Se ha propuesto el diccionario de datos como gramática casi formal para describir

el contenido de los objetos definidos durante el análisis estructurado. Esta

importante notación de modelado ha sido definida de la siguiente forma:

El diccionario de datos es un listado organizado de todos los elementos de

datos que son pertinentes para el sistema, con definiciones precisas y rigurosas

que permiten que el usuario y el analista del sistema tengan una misma

comprensión de las entradas, salidas, de las componentes de los almacenes y

también de los cálculos intermedios.

Actualmente, casi siempre se implementa el diccionario de datos como parte de

una «herramienta CASE de análisis y diseño estructurados». Aunque el formato

del diccionario varía entre las distintas herramientas, la mayoría contiene la

siguiente información:

Nombre: el nombre principal del elemento de datos o de control, del almacén

de datos, o de una entidad externa.

Alias: otros nombres usados para la primera entrada.

Donde se usa / como se usa: un listado de los procesos que usan el

elemento de datos o de control y cómo lo usan (por ejemplo, como entrada al

proceso, como salida del proceso, como almacén de datos, como entidad

externa).

Descripción del contenido: el contenido representado mediante una

notación.

Información adicional: otra información sobre los tipos de datos, los valores

implícitos (si se conocen), las restricciones o limitaciones, etc.

Una vez que se introducen en el diccionario de datos un nombre y sus alias,

se debe revisar la consistencia de las denominaciones. Esto mejora la

consistencia del modelo de análisis y ayuda a reducir errores.

La información de «dónde se usa/cómo se usa» se registra automáticamente a

partir de los modelos de flujo. Cuando se crea una entrada del diccionario, la

herramienta CASE inspecciona los DFD y los DFC para determinar los procesos

Page 15: 94368577 unidad-iii-y-iv

15

que usan el dato o la información de control y cómo lo usan. Aunque esto pueda

no parecer importante, realmente es una de las mayores ventajas del diccionario.

Durante el análisis, hay una corriente casi continua de cambios. Al poder tratar el

diccionario de datos como una base de datos, el analista puede hacer preguntas

basadas en «dónde se usa/cómo se usan y obtener respuestas a peticiones

similares a las anteriores.

La notación utilizada para desarrollar una descripción de contenido se indica en la

siguiente tabla:

La notación permite al ingeniero del software representar una composición de

datos en una de las tres alternativas fundamentales que pueden ser construidas

1. Como una secuencia de elementos de datos.

2. Como una selección de entre un conjunto de elementos de datos.

3. Como una agrupación repetitiva de elementos de datos. Cada entrada de

elemento de datos que aparezca como parte de una secuencia, una selección o

una repetición puede a su vez ser otro elemento de datos compuestos que

necesite un mayor refinamiento en el diccionario.

Además de proporcionar documentación y eliminar la redundancia, el diccionario

datos se podría usar para:

1. Validar la integridad y exactitud del diagrama de flujo de datos.

2. Proporcionar un punto de partida para desarrollar pantallas e informes,

3. Determinar el contenido de los datos almacenados en archivos.

4. Desarrollar la lógica para los procesos del diagrama de flujo de datos.

Page 16: 94368577 unidad-iii-y-iv

16

3.1.2.2 Creación del Diccionario de Datos

Las entradas del diccionario de datos se podrían crear después de

completar el diagrama de flujo de datos, o se podrían construir conforme se

desarrolle el diagrama de flujo de datos. El uso de notación algebraica y registros

estructurales permite desarrollar el diccionario de datos y los diagramas de flujos

de datos mediante un enfoque jerárquico de arriba a bajo.

Después de realizar varias entrevistas adicionales para descubrir los

detalles del sistema, se puede extender el diagrama de flujo de datos y se crearan

los diagramas hijos. Posteriormente se modifica el diccionario de datos para incluir

los nuevos registros estructurales y elementos recabados en las entrevistas,

observación y análisis de documentos posteriores.

Cada nivel de un diagrama de flujo de datos debe usar datos adecuados

para el nivel. El diagrama 0 debe incluir únicamente formularios, pantallas

informes y registros. Conforme se creen los diagramas hijos, el flujo de datos que

entre y salga de los procesos será cada vez mas detallado, incluyendo los

registros estructurales y los elementos.

Análisis de las entradas y salidas

Un paso importante en la creación del diccionario de datos es identificar y

categorizar el flujo de datos de entrada y salida del sistema. Campos comúnmente

incluidos:

1. Nombre descriptivo para la entrada o la salida. Si el flujo de datos esta en

un diagrama lógico, el nombre debe identificar el propósito de los datos.

2. El contacto del usuario responsable para la clarificación de detalles

adicionales, retroalimentación del diseño y aprobación final

3. Si los datos son de entrada o salida

4. El formato de flujo de datos. En la fase del diseño lógico, el formato podría

ser indeterminado.

5. Elementos que indican la secuencia de los datos en un informe o pantalla.

Page 17: 94368577 unidad-iii-y-iv

17

6. Una lista de elementos, incluyendo sus nombres, longitudes y si son base o

derivados y sus criterios de edición.

Desarrollo de almacenes de datos

Otra actividad es el desarrollo de los almacenes de datos. Esta información

se describe en estructuras de datos. Sin embargo la información podría estar

almacenada en diferentes lugares, y el almacén de datos podría ser diferente en

cada lugar. Mientras que los flujos de datos representan datos en movimiento, los

almacenes de datos representan datos en reposo.

Los almacenes de datos contienen información de una naturaleza

permanente o semipermanente.

Cuando los almacenes de datos se crean para un solo informe o pantalla nos

referimos a ellos como “vistas del usuario”, porque representan la manera en que

el usuario quiere ver la información.

Uso del diccionario de datos

El diccionario de datos ideal es automatizado, interactivo, en línea y

evolutivo. Conforme el analista de sistemas descubre cosas nuevas de los

sistemas de la organización, se agregan elementos de datos al diccionario de

datos. El diccionario de datos no es un fin en si mismo y nunca debe serlo,

siempre debe verse como una actividad paralela al análisis y diseño de sistemas.

El diccionario de datos debe vincular a varios programas de sistemas para

que cuando un elemento se actualice o elimine del diccionario de datos, ocurra lo

mismo en la base de datos. El diccionario de datos se vuelve una curiosidad

histórica sino se mantiene actualizado.

Page 18: 94368577 unidad-iii-y-iv

18

3.1.3 DISEÑO DE MÓDULOS

La arquitectura de computadora expresa la modularidad; es decir, el

software se divide en componentes nombrados y abordados por separado,

llamados frecuentemente módulos, que se integran para satisfacer los requisitos

del problema.

Se ha afirmado que “La modularidad es el único atributo del software que

permite gestionar un programa intelectualmente”. El software monolítico no puede

ser entendido fácilmente por el lector. La cantidad de rutas de control, la amplitud

de referencias, la cantidad de variables y la complejidad global hará que el

entendimiento este muy cerca de ser imposible. Para ilustrar este punto, tomemos

en consideración el siguiente argumento basado en observaciones humanas sobre

la resolución de problemas.

Pensemos que C(x) es una función que define la complejidad percibida de

un problema x, y que E(x) es una función que define el esfuerzo (oportuno) que se

requiere para resolver un problema x. para dos problemas p1 y p2, si

C(p1) > C(p2) (3.1a)

Implica que

E(p1) > E(p2) (3.1b)

En general, este resultado es por intuición obvio. Se tarda más en resolver un

problema difícil.

Mediante la experimentación humana en la resolución de problemas se ha

averiguado otra característica interesante. Esta es,

C(p1 + p2) > C(p1) + C(p2) (3.2)

La ecuación 3.2 implica que la complejidad percibida de un problema que

combina p1 y p2, es mayor que la complejidad percibida cuando se considera cada

Page 19: 94368577 unidad-iii-y-iv

19

problema por separado. Teniendo en cuenta la ecuación (3.2) y la condición

implicada por la ecuación (3.1) se establece que

E(p1 + p2) > E(p1) + E(p2) (3.3)

Es más fácil resolver un problema complejo cuando se rompe en piezas

manejables. El resultado expresado en la ecuación 3.3 implica que es importante

en lo que respecta a la modularidad y al software. Es, de hecho, un argumento

para la modularidad.

Es posible concluir de la ecuación (3.3) que si subdividimos el software

indefinidamente, el esfuerzo que se requiere para desarrollarlo sería mínimo.

Desgraciadamente, intervienen otras fuerzas, que hacen que esta conclusión sea

falsa. Como muestra la figura 3.4, el esfuerzo para desarrollar un módulo software

individual disminuye a medida que aumenta el número total de módulos. Dado el

mismo conjunto de requisitos: tener más módulos conduce a un tamaño menor de

módulo. Sin embargo, a medida que aumenta el número de módulos, también

crece el esfuerzo asociado con la integración de módulos. Estas características

conducen también a la curva total del costo o esfuerzo que se muestra en la

figura. Existe un número M de módulos que daría como resultado un costo mínimo

de desarrollo, aunque no tenemos la sofisticación necesaria para predecir M con

seguridad.

Page 20: 94368577 unidad-iii-y-iv

20

Las curvas de la Figura 3.4 proporcionan en efecto una guía útil cuando se tiene

en consideración la modularidad. La modularidad deberá aplicarse, pero teniendo

cuidado de estar próximo a M. Se deberá evitar modularizar de más o de menos.

Cuando se tiene en consideración la modularidad surge otra pregunta

importante. ¿Cómo se define un modulo con un tamaño adecuado? La respuesta

se, encuentra en los métodos utilizados para definir los módulos dentro de un

sistema. Meyer define cinco criterios que nos permitirán evaluar un método de

diseño en relación con la habilidad de definir un sistema modular efectivo:

Capacidad de descomposición modular. Si un método de diseño

proporciona un mecanismo sistemático para descomponer el problema en

subproblemas, reducirá la complejidad de todo el problema, consiguiendo de

esta manera una solución modular efectiva.

Capacidad de empleo de componentes modulares. Si un método de diseño

permite ensamblar los componentes de diseño (reusables) existentes en un

sistema nuevo, producirá una solución modular que no inventa nada ya

inventado.

Capacidad de comprensión modular. Si un módulo se puede comprender

como una unidad autónoma (sin referencias a otros módulos) será más fácil de

construir y de cambiar.

Continuidad modular. Si pequeños cambios en los requisitos del sistema

provocan cambios en los módulos individuales, en vez de cambios

generalizados en el sistema, se minimizará el impacto de los efectos

secundarios de los cambios.

Protección modular. Si dentro de un módulo se produce una condición

absurda y sus efectos se limitan a ese módulo, se minimizará el impacto de los

efectos secundarios inducidos por los errores.

Es importante destacar que un sistema se puede diseñar modularmente,

incluso aunque su implementación deba ser “monolítica”. Existen situaciones (por

ejemplo, software en tiempo real, software empotrado) en donde no es admisible

Page 21: 94368577 unidad-iii-y-iv

21

que los subprogramas introduzcan sobrecargas de memoria y de velocidad por

mínimos que sean (por ejemplo, subrutinas, procedimientos). En tales situaciones

el software podrá y deberá diseñarse con modularidad como filosofía

predominante. El código se puede desarrollar “en línea”. Aunque el código fuente

del programa puede no tener un aspecto modular a primera vista, se ha mantenido

la filosofía y el programa proporcionará los beneficios de un sistema modular.

3.1.4 DESCOMPOSICIÓN EN PROCESOS

Las fases que generalmente caracterizan al proceso del software son:

definición desarrollo y soporte, se aplican a todo software. El problema es

seleccionar el modelo de proceso apropiado para la ingeniería del software que

debe aplicar el equipo. El gestor del proyecto debe decidir que modelo de proceso

es el más adecuado para:

1. Los clientes que han solicitado el producto y la gente que realizara el

trabajo.

2. Las características del producto.

3. El entorno del proyecto en el que trabaja el equipo de software.

Cuando se selecciona un modelo de proceso, el equipo define entonces un

plan de proyecto preliminar basado en conjunto de actividades estructurales. Una

vez establecido el plan preliminar, empieza la descomposición del proceso. Es

decir, se debe crear un plan completo reflejando las tareas requeridas a las

personas para cubrir las actividades estructurales.

Un proyecto cuando es relativamente pequeño se debe realizar con un enfoque

secuencial lineal. Si hay limites de tiempo muy severos y le problema se puede

compartir, el modelo apropiado es el DRA. Si se tiene el tiempo limitado lo mas

apropiado es tomar una estrategia incremental.

Una vez que hemos elegido el modelo de proceso, la Estructura Común de

Procesos (ECP) se adapta a él. En todos los casos, la ECP (comunicación con el

Page 22: 94368577 unidad-iii-y-iv

22

cliente, planificación, análisis de riesgo, ingeniería, construcción, entrega y

evaluación del cliente) puede adaptarse al paradigma. Funcionara para modelos

lineales, para modelos iterativos e incrementales, para modelos de evolución e

incluso para modelos concurrentes o de ensamblaje de componentes. El ECP es

invariable y sirve como base para todo el trabajo de software realizado por una

organización.

Un proyecto simple requiere las siguientes tareas para la actividad de

comunicación con el cliente:

1. Desarrollar una lista de aspectos que se deben aclarar

2. Reunirse con el cliente para aclarar los aspectos de la lista

3. Desarrollar en conjunto una exposición del ámbito del proyecto

4. Revisar el alcance del proyecto con todos los implicados

5. Modificar el alcance del proyecto cuando se requiera.

Este tipo de acontecimientos pueden ocurrir en un periodo de menos de 48

horas. Representan una descomposición del problema apropiado para proyectos

pequeños relativamente sencillos.

Si se considera un proyecto más complejo que tenga un ámbito más amplio y un

mayor impacto comercial. Un proyecto como ése podría requerir las siguientes

tareas para la actividad de comunicación con el cliente:

1. Revisar la petición del cliente

2. Planificar y programar una reunión formal con el cliente

3. Realizar una investigación para definir soluciones propuestas y

enfoques existentes.

4. Prepara un plan de trabajo y una agenda para la reunión formal

5. Realizar la reunión

6. Desarrollar conjuntamente mini-especificaciones que reflejen la

información, función y características de comportamiento del

software

Page 23: 94368577 unidad-iii-y-iv

23

7. Revisar todas las mini-especificaciones para comprobar su

corrección , su consistencia la ausencia de ambigüedades

8. Ensamblar las mini-especificaciones de un documento de alcance

del proyecto

9. revisar ese documento general con todo lo que pueda afectar

10. modificar el documento de alcance del proyecto cuando se

requiera

Ambos proyectos realizan la actividad estructural que denominamos comunicación

con el cliente, pero el equipo del primer proyecto lleva a cabo la mitad de tareas de

ingeniería del software que el segundo.

3.2 EL ENFOQUE ORIENTADO A OBJETOS

El análisis orientado a objetos (AOO) y el diseño orientado a objetos (DOO)

constituyen un enfoque distinto de desarrollo de sistemas. Estas técnicas se basan

en los conceptos de la programación orientada a objetos, que han sido codificados

en UML (Lenguaje Unificado de Modelación), un lenguaje estandarizado de

modelación en el cual los objetos generados no solo incluyen código referente a

los datos sino también instrucciones acerca de las operaciones que se realizaran

sobre los datos.

EL Paradigma Orientado a Objetos es una disciplina de ingeniería de desarrollo y

modelado de software que permite construir más fácilmente sistemas complejos a

partir de componentes individuales.

Objetos + Mensajes = Programa

El proceso Orientado a Objetos se mueve a través de una espiral evolutiva que

comienza con la comunicación con el usuario. Es en esta parte donde se define el

dominio del problema y se identifican las clases básicas del problema. La

planificación y el análisis de riesgos establecen una base para el plan de proyecto

Page 24: 94368577 unidad-iii-y-iv

24

El trabajo técnico asociado con la ingeniería del software OO sigue las siguientes

tareas:

1. Identificar clases candidatas

2. Buscar clases en biblioteca

3. Extraer nuevas clases si existen

4. Desarrollar las clases sino existen

5. Añadir las nuevas clases a la biblioteca

6. Construir n-esima iteración del sistema

La ingeniería de software hace hincapié en la reutilización. Por lo tanto las clases

se buscan en una biblioteca (de clases existentes) antes de construirse

Las Características del Enfoque Orientado a Objetos son:

a) Objeto: Los datos están cuantificados en entidades discretas y

distinguibles llamadas objetos.

b) Clase: Los objetos con la misma estructura de datos (atributos) y

comportamiento (operaciones) se agrupa para formar una clase.

c) Atributo: Describen la clase o el objeto de alguna manera

d) Mensajes: Medio por el cual interactúan los objetos

e) Polimorfismo: Una misma operación puede comportarse de modos

distintos en distintas clases.

f) Herencia: Compartir atributos y operaciones entre clases tomando

como base una relación jerárquica.

Objeto

Un objeto es una unidad de código compuesto de variables y métodos

relacionados. Encapsula datos, operaciones, otros objetos, constantes y otra

información relacionada. Pueden ser: Entidades externas, ocurrencias o eventos,

papeles o roles, unidades organizacionales, lugares, estructuras.

Page 25: 94368577 unidad-iii-y-iv

25

Los Objetos tienen características y comportamientos. Mantiene sus

características en una o más "variables", e implementa su comportamiento con

"métodos". Un método es una función o subrutina asociada a un objeto. Cuando a

las características del objeto le ponemos valores decimos que el objeto tiene

estados. Las variables almacenan los estados de un objeto en un determinado

momento.

Para ser considerado como valido un objeto debe de tener las siguientes

características:

Información retenida

Servicio necesario

Atributos múltiples

Atributos comunes

Operaciones comunes

Requisitos esenciales

Clase

La clase es un modelo o prototipo que define las variables y métodos comunes a

todos los objetos de cierta clase.

Es una descripción generalizada que describe una colección de objetos con

características similares.

Todos los objetos que existen dentro de una heredan sus atributos y las

operaciones disponibles para la manipulación de los atributos.

Una superclase es una colección de clases y una instancia de una clase.

Una instancia de una clase es otra forma de llamar a un objeto. En realidad no

existe diferencia entre un objeto y una instancia. Sólo que el objeto es un término

más general, pero los objetos y las instancias son ambas representación de una

clase.

Page 26: 94368577 unidad-iii-y-iv

26

Atributo

Los Atributos están asociados a clases y objetos, ellos describen la clase y el

objeto de alguna manera. Un atributo puede tomar un valor definido por un

dominio enumerado. En la mayoría de los casos, un dominio es simplemente un

conjunto de valores específicos. En situaciones más complejas el dominio puede

ser un conjunto de clases.

Mensajes

Los mensajes son el medio a través del cual los objetos intercambian información.

Un mensaje estimula la ocurrencia de cierto comportamiento en el objeto receptor.

El comportamiento se realiza cuando se ejecuta una operación.

El medio empleado para que un objeto interactúe con otro son los mensajes. Los

mensajes son invocaciones a los métodos de los objetos.

Encapsulamiento

El encapsulamiento significa que toda la información de un objeto se encuentra

empaquetada bajo un nombre y puede reutilizarse como una especificación o

componente de un programa.

Consiste en unir en la clase las características y comportamientos, esto es, las

variables y métodos. Es tener todo esto es una sola entidad. En los lenguajes

estructurados esto era imposible. Es evidente que el encapsulamiento se logra

gracias a la abstracción y el ocultamiento.

La utilidad del encapsulamiento va por la facilidad para manejar la complejidad, ya

que tendremos a las clases como cajas negras donde sólo se conoce el

comportamiento pero no los detalles internos, y esto es conveniente porque nos

interesará será conocer qué hace la clase pero no será necesario saber cómo lo

hace.

Page 27: 94368577 unidad-iii-y-iv

27

EL Ocultamiento es la capacidad de ocultar los detalles internos del

comportamiento de una clase y exponer sólo los detalles que sean necesarios

para el resto del sistema.

El ocultamiento permite: restringir y controlar el uso de la Clase. Restringir porque

habrá cierto comportamiento privado de la Clase que no podrá ser accedido por

otras Clases. Y controlar porque daremos ciertos mecanismos para modificar el

estado de nuestra Clase y es en estos mecanismos dónde se validarán que

algunas condiciones se cumplan.

Herencia

La herencia consiste en que una clase puede heredar sus variables y métodos a

varias subclases (la clase que hereda es llamada superclase o clase padre). Esto

significa que una subclase, aparte de los atributos y métodos propios, tiene

incorporados los atributos y métodos heredados de la superclase. La herencia

reduce el trabajo de la programación usando fácilmente objetos comunes. Solo es

necesario declarar que la clase A hereda de la clase B y después proporcionar

cualquier detalle adicional. Los atributos y comportamientos de la clase B son

parte de la clase A y no requiere ninguna programación adicional.

Polimorfismo

El polimorfismo permite que un número de operaciones diferentes tengan el

mismo nombre. Esto reduce el acoplamiento entre objetos, haciendo a cada uno

más independiente.

3.2.1 ANÁLISIS.

El análisis utiliza una combinación de texto y de diagramas, para

representar los requisitos de datos, funciones y comportamientos, que es

relativamente fácil de entender y mas importante aun, sencillo para revisar su

corrección, completitud y consistencia. El ingeniero del software o analista es el

responsable de construir el modelo utilizando los requisitos definidos por el cliente.

Lo cual es importante para validar los requerimientos del software desde

Page 28: 94368577 unidad-iii-y-iv

28

diferentes puntos de vista. El análisis representa los requisitos de tres

dimensiones, por esa razón, se incrementa la probabilidad de encontrar errores,

descubrir inconsistencias y detectar omisiones.

El objetivo del análisis orientado a objetos es desarrollar una serie de

modelos que describan el software de computadora al trabajar para satisfacer un

conjunto de requisitos definidos por el cliente. El AOO, como los métodos de

análisis convencional, forma un modelo de análisis multiparte para satisfacer este

objetivo. El modelo de análisis ilustra información, funcionamiento y

comportamiento dentro del contexto de los elementos del modelo de objetos.

El análisis orientado a objetos (AOO) ha sido muy exitoso en derribar

problemas que se resisten al análisis estructurado, como las interfaces de usuario.

Los partidarios del AOO argumentan que los objetos dentro de un sistema son

más fundamentales (importantes, necesarios) para su naturaleza que las

funciones que proporciona. Las especificaciones basadas en los objetos serán

más adaptables que las especificaciones basadas en las funciones.

La popularidad de las tecnologías de objetos ha generado docenas de métodos de

A00 desde finales de los 80 y durante los 90'. Cada uno de ellos introduce un

proceso para el análisis de un producto o sistema, un conjunto de modelos que

evoluciona fuera del proceso, y una notación que posibilita al ingeniero del

software crear cada modelo de una manera consistente. Entre los más

ampliamente utilizados se encuentran:

El método de Booch. Abarca un microproceso de desarrollo» y un

«macroproceso de desarrollo». El nivel micro define un conjunto de tareas de

análisis que se reaplican en cada etapa en el macro proceso. Por esto se

mantienen un enfoque evolutivo. El microproceso de desarrollo identifica clases

y objetos y la semántica de dichas clases y objetos, define las relaciones entre

Page 29: 94368577 unidad-iii-y-iv

29

clases y objetos y realiza una serie de refinamientos para elaborar el modelo

del análisis.

El método de Rumbaugh. Rumbaugh y sus colegas desarrollaron la Técnica

de Modelado de Objetos (OMT) para el análisis, diseño del sistema y diseño a

nivel de objetos. La actividad de análisis crea tres modelos: el modelo de

objetos (una representación de objetos, clases, jerarquías y relaciones), el

modelo dinámico (una representación del comportamiento del sistema y los

objetos) y el modelo funcional (una representación a alto nivel del flujo de

información a través del sistema similar al DFD).

El método de Jacobson. También llamado OOSE (en español Ingeniería del

Software Orientada a Objetos),el método de Jacobson es una versión

simplificada de Objectory, un método patentado, también desarrollado por

Jacobson. Este método se diferencia de los otros por la importancia que da al

caso de uso una descripción o escenario que describe cómo el usuario

interactúa con el producto o sistema.

El método de Coad y Yourdon. El método de Coad y Yourdon se considera,

con frecuencia, como uno de los métodos del A00 más sencillos de aprender.

La notación del modelado es relativamente simple y las reglas para desarrollar el

modelo de análisis son evidentes.

El método de Wirfs-Brock. El método de Wirfs-Brock propone un proceso

continuo que comienza con la valoración de una especificación del cliente y

termina con el diseño. A continuación se esbozan brevemente las tareas

relacionadas con el análisis de Wirfs-Brock:

o Evaluar la especificación del cliente.

o Usar un análisis gramatical para extraer clases candidatas de la

especificación.

o Agrupar las clases en un intento de determinar superclases.

o Definir responsabilidades para cada clase.

o Asignar responsabilidades a cada clase.

Page 30: 94368577 unidad-iii-y-iv

30

o Identificar relaciones entre clases.

o Definir colaboraciones entre clases basándose en sus

responsabilidades.

o Construir representaciones jerárquicas de clases para mostrar

relaciones de herencia.

o Construir un gafo de colaboraciones para el sistema.

Aunque la terminología y etapas del proceso para cada uno de estos métodos de

AOO difieren, los procesos generales de AOO son en realidad muy similares. Para

realizar un análisis orientado a objetos, un ingeniero del software debería ejecutar

las siguientes etapas genéricas:

1. Obtener los requisitos del cliente para el sistema.

2. Identificar escenarios o casos de uso.

3. Seleccionar clases y objetos usando los requisitos básicos como guías.

4. Identificar atributos y operaciones para cada objeto del sistema.

5. Definir estructuras y jerarquías que organicen las clases.

6. Construir un modelo objeto-relación.

7. Construir un modelo objeto-comportamiento.

8. Revisar el modelo de análisis OO con relación a los casos de uso/escenarios

3.2.2 DISEÑO.

El diseño orientado a objetos transforma el modelo de análisis creado

usando análisis orientado a objetos, en un modelo de diseño que sirve como

anteproyecto para la construcción de software. El trabajo de diseñador de software

puede ser intimidante.

Gamma y sus colegas proveen un panorama razonablemente exacto del DOO

cuando declaran que:

Page 31: 94368577 unidad-iii-y-iv

31

El diseño de software orientado a objetos es difícil, y el diseño de software

reusable orientado a objetos es aun más difícil. Se deben identificar los objetos

pertinentes, clasificarlos dentro de las clases en la granularidad correcta, definir

interfaces de clases y jerarquías de herencia y establecer relaciones clave entre

ellos. El diseño debe ser específico al problema que se tiene entre manos, pero

suficientemente general para adaptarse a problemas y requerimientos futuros.

Además se deberá evitar el rediseño, o por lo menos minimizarlo.

El DOO debe describir la organización específica de los datos de los atributos y el

detalle procedural de cada operación. Estos representan datos y piezas

algorítmicas de un sistema OO y son los que contribuyen a la modularidad global.

¿Qué es? El diseño de software Orientado a objetos requiere la definición de una

arquitectura de software multicapa, la especificación de subsistemas que realizan

funciones necesarias y proveen soporte de infraestructura, una descripción de

objetos (clases), que son los bloques de construcción del sistema, y una

descripción de los mecanismos de comunicación, que permiten que los datos

Buyan entre las capas, subsistemas y objetos. El Diseño Orientado a Objetos

(DOO), cumple todos estos requisitos.

¿Quién lo hace? El DOO lo realiza un ingeniero de software.

¿Por qué es importante? Un sistema orientado a objetos utiliza las definiciones

de las clases derivadas del modelo de análisis. Algunas de estas definiciones

tendrán que ser construidas desde el principio, pero muchas otras pueden ser

reutilizadas, si se reconocen los patrones de diseño apropiados. El DOO establece

anteproyecto de diseño, que permite al ingeniero de software definir la arquitectura

OO. En forma que maximice la reutilización; de esta manera, se mejora la

velocidad del desarrollo y la calidad del producto terminado.

¿Cuáles son los pasos? El DOO se divide en dos grandes actividades: diseño

del sistema y diseño de objetos.

Page 32: 94368577 unidad-iii-y-iv

32

Diseño de sistema: crea la arquitectura del producto definiendo una serie de

capas, que cumplen funciones específicas del sistema e identifica las clases que

son encapsuladas por los subsistemas que residen en cada capa. Además, el

diseño de sistemas incorpora la especificación de tres componentes: la interfaz

usuario, la gestión de datos y los mecanismos de administración de tareas.

El diseño de objetos: se centra en los detalles internos de cada clase, definición

atributos operaciones y detalles de los mensajes.

¿Cuál es el producto obtenido? El modelo de DOO avara arquitectura de

software, descripción de la interfaz de usuario, componentes de gestión de datos

mecanismos de administración de tareas y descripciones detalladas de cada una

de las clases usadas en el sistema.

¿Cómo puedo estar seguro que lo he hecho correctamente? En cada etapa,

los elementos del modelo de diseño orientado a objetos son revisados por

claridad, corrección, integridad y consistencia con los requisitos del cliente y entre

ellos.

El concepto de una pirámide de diseño para el software convencional. Cuatro

capas de diseño: datos, arquitectura, interfaz y nivel de componentes fueron

definidas y discutidas.

Para sistemas orientados a objetos, podemos también definir una pirámide, pero

las capas son un poco diferentes.

Refiriéndose a la Figura 3.3, las cuatro capas de la pirámide de diseño OO son:

La capa subsistema. Contiene una representación de cada uno de los

subsistemas, para permitir al software conseguir sus requisitos definidos por el

cliente e implementar la infraestructura que soporte los requerimientos del

cliente.

Page 33: 94368577 unidad-iii-y-iv

33

La capa de clases y objetos. Contiene la jerarquía de clases, que permiten al

sistema ser creado usando generalizaciones y cada vez especializaciones más

acertadas. Esta capa también contiene representaciones.

La capa de mensajes. Contiene detalles de diseño, que permite a cada objeto

comunicarse con sus colaboradores. Esta capa establece interfaces externas e

internas para el sistema.

La capa de responsabilidades. Contiene estructuras de datos y diseños

algorítmicos, para todos los atributos y operaciones de cada objeto.

La pirámide de diseño se centra exclusivamente en el diseño de un

producto o sistema específico. Observe, sin embargo, que existe otra capa de

diseño, y que esta capa forma los cimientos sobre los que la pirámide se sostiene.

La capa fundamental se centra en el diseño de los objetos del dominio (llamados

patrones de diseño). Los objetos del dominio juegan un papel clave, en la

construcción de la infraestructura del sistema OO aportando soporte para las

actividades de interfaz hombre/máquina, administración (gestión) de tareas y

gestión (administración) de datos.

Los objetos del dominio se pueden usar, además, para desarrollar el diseño de la

aplicación en sí misma.

Page 34: 94368577 unidad-iii-y-iv

34

UNIDAD IV

MODELOS DE PROCESO DE SOFTWARE:

Introducción:

El proceso es el conocimiento incorporado, y puesto que el conocimiento esta

inicialmente disperso, el desarrollo de software implícito, latente e incompleto en

gran medida es un proceso social de aprendizaje. Es un dialogo en el que se

reúne el conocimiento y se incluye en el software para convertirse en software.

Proporciona una iteración entre los usuarios y los diseñadores, entre los usuarios

y las herramientas de desarrollo, y entre los diseñadores y las herramientas de

desarrollo (tecnología). Es un proceso interactivo donde la herramienta de

desarrollo se usa como medio de comunicación, con cada iteración del dialogo se

obtiene mayor conocimiento.

Desde un punto de vista técnico se puede decir que el proceso de software

es un marco de trabajo de las tareas que se requieren para construir software de

alta calidad.

Aun más importante es que la Ingeniería del Software la realizan personas

creativas, con conocimiento, que deberían trabajar dentro de un proceso del

software definido y avanzado que es apropiado para los productos que construyen

y para las demandas de su mercado.

Los estándares establecen los diferentes procesos implicados a la hora de

desarrollar y mantener un Sistema desde que surge la idea o necesidad de

desarrollar las aplicaciones hasta que éstas se retiran de explotación. Sin

embargo, ninguno impone un modelo de procesos concreto (modelo de ciclo de

vida) ni cómo realizar las diferentes actividades incluidas en cada proceso, por lo

que cada empresa deberá utilizar los métodos, técnicas y herramientas que

considere oportuno.

Page 35: 94368577 unidad-iii-y-iv

35

Por su naturaleza, los modelos son simplificaciones; por lo tanto, un modelo de

procesos del Software es una simplificación o abstracción de un proceso real.

Podemos definir un modelo de procesos del Software como una representación

abstracta de alto nivel de un proceso Software.

Cada modelo es una descripción de un proceso Software que se presenta desde

una perspectiva particular. Alternativamente, a veces se usan los términos Ciclo

de Vida y Modelo de Ciclo de Vida.

Cada modelo describe una sucesión de fases y un encadenamiento entre ellas.

Según las fases y el modo en que se produzca este encadenamiento, tenemos

diferentes modelos de proceso. Un modelo es más adecuado que otro para

desarrollar un proyecto dependiendo de un conjunto de características de éste.

Existe una gran variedad de modelos diferentes entre los que tenemos los que se

describen a continuación.

4.1 MODELO DE CASCADA

Modelo de Cascada (Bennington 1956, Modificado por Royce en 1970,

Pressman lo presenta como ciclo de vida clásico). Se denomina modelo en

cascada porque su característica principal es que no se comienza con un paso

hasta que no se ha terminado el anterior. Establece que el software debe ser

construido, rigurosamente, a través de una transformación sucesiva de

documentos, siguiendo una estrategia lineal de desarrollo. Primero saber qué se

quiere y después, cuando se conozca todo lo que se quiere, empezar a

construirlo.

También conocido como modelo lineal secuencial sugiere un enfoque

sistemático, secuencial para el desarrollo del software que comienza en un nivel

de sistemas y progresa con el análisis, diseño, codificación, pruebas y

mantenimiento.

Page 36: 94368577 unidad-iii-y-iv

36

El primer paso es conseguir un documento con la especificación completa,

exacta, no ambigua de los requisitos del sistema software que debe ser

desarrollado. Este documento inicial es transformado en un documento de

análisis, supuestamente alejado de la máquina. Después, a partir del análisis, se

obtiene otro documento, el diseño. Y por último, del diseño se obtiene el

documento final: el código. Para asegurar que no se introducen equivocaciones al

transformar un documento (modelo) en otro, se hacen pruebas, al terminar cada

uno. Las pruebas son planificadas desde el principio y se documentan como se

vayan realizando. Antes de la entrega del sistema software, se valida que

satisface los requisitos definidos en el documento inicial.

Está basado en el ciclo convencional de una ingeniería, tiene las siguientes

actividades que se muestran en la figura 4.1 del modelo de cascada:

Este enfoque metodológico que ordena rigurosamente las etapas del ciclo de vida

del Software, de forma tal que el inicio de cada etapa debe esperar a la

finalización de la inmediatamente anterior. La palabra cascada sugiere, mediante

Ingeniería y Análisis

del Sistema

Análisis de los

Requisitos

Diseño

Codificación

Prueba

Mantenimiento

Figura 4.1 Modelo de Cascada

Carolina Zibert, “Ciclos de vida de Ingeniería de Software” [En línea], Caracas Venezuela [Consulta: Abril de

2006],<carolina.terna.net/ingsw2/Datos/Cascada-ModeloV.doc>

Page 37: 94368577 unidad-iii-y-iv

37

la metáfora de la fuerza de la gravedad, el esfuerzo necesario para introducir un

cambio en las fases más avanzadas de un proyecto.

Modelo en Cascada: El más conocido, está basado en el ciclo convencional de

una ingeniería, el paradigma del ciclo de vida abarca las siguientes actividades:

- Ingeniería y Análisis del Sistema

- Análisis de los Requisitos

- Diseño

- Codificación

- Prueba

- Mantenimiento

4.1.1 Actividades

Ingeniería y Análisis del Sistema

El trabajo comienza estableciendo los requisitos de todos los elementos del

sistema y luego asignando algún subconjunto de estos requisitos al software.

Análisis de los requisitos del software

Análisis: Se analizan las necesidades de los usuarios finales del software para

determinar qué objetivos debe cubrir. De esta fase surge una memoria llamada

SRD (Documento de Especificación de Requisitos), que contiene la especificación

completa de lo que debe hacer el sistema sin entrar en detalles internos (debe

comprender el ámbito de la información del software, así como la función, el

rendimiento y las interfaces requeridas).

Page 38: 94368577 unidad-iii-y-iv

38

Diseño

Se enfoca en cuatro atributos distintos del programa: la estructura de los

datos, la arquitectura del software, el detalle procedimental y la caracterización de

la interfaz. El proceso de diseño traduce los requisitos en una representación del

software con la calidad requerida antes de que comience la codificación. Como

resultado surge el SDD (Documento de Diseño del Software), que contiene la

descripción de la estructura global del sistema y la especificación de lo que debe

hacer cada una de sus partes, así como la manera en que se combinan unas con

otras.

Codificación

Es la fase de programación. Aquí se desarrolla el código fuente, el diseño debe

traducirse en una forma legible para la maquina, haciendo uso de prototipos así

como pruebas y ensayos para corregir errores. El paso de codificación realiza esta

tarea. Si el diseño se realiza de una manera detallada la codificación puede

realizarse mecánicamente.

Prueba

Se centra en la lógica interna del software, y en las funciones externas, realizando

pruebas que aseguren que la entrada definida produce los resultados que

realmente se requieren. Se comprueba que funciona correctamente antes de ser

puesto en explotación.

Mantenimiento

El software sufrirá cambios después de que se entrega al cliente. Los cambios

ocurrirán cuando se hayan encontrado errores, esto en lugar de que el software

deba adaptarse a cambios del entorno externo (sistema operativo o dispositivos

periféricos), o debido a que el cliente requiera ampliaciones funcionales o del

rendimiento.

Page 39: 94368577 unidad-iii-y-iv

39

Desventajas

Los proyectos reales raramente siguen el flujo secuencial que propone el

modelo, siempre hay iteraciones y se crean problemas en la aplicación del

paradigma.

Normalmente, es difícil para el cliente establecer explícitamente al principio

todos los requisitos. El ciclo de vida clásico lo requiere y tiene dificultades

en acomodar posibles incertidumbres que pueden existir al comienzo de

muchos productos.

El cliente debe tener paciencia. Hasta llegar a las etapas finales del

proyecto, no estará disponible una versión operativa del programa. Un error

importante no detectado hasta que el programa este funcionando puede ser

desastroso.

Se tiene un Alto riesgo en sistemas nuevos debido a problemas en las

especificaciones y en el diseño. Bajo riesgo para desarrollos bien

comprendidos utilizando tecnología conocida

Este modelo, que se lleva a cabo de forma descendente, exige que para pasar a la

siguiente fase hay que concluir correctamente la anterior, de manera que los

posibles errores sean fácilmente detectables. Así, la salida de una fase es la

entrada de la siguiente.

La Ventajas de este método radica en su sencillez ya que sigue los pasos

intuitivos necesarios a la hora de desarrollar el software.

Se tiene todo bien organizado y no se mezclan las fases.

Es perfecto para proyectos que son rígidos.

Ideal para proyectos donde se especifiquen muy bien los requerimientos.

Ideal para proyectos en que se conozca muy bien la herramienta a utilizar.

Sumamente sencillo ya que sigue los pasos intuitivos necesarios a la hora de

desarrollar el Software.

Page 40: 94368577 unidad-iii-y-iv

40

4.2 MODELO DE ESPIRAL

Propuesto originalmente por Boehm en 1988, es un modelo de proceso de

software evolutivo ha sido desarrollado para cubrir las mejores características

tanto del ciclo de vida clásico, como de la creación de prototipos, añadiendo al

mismo tiempo un nuevo elemento: el análisis de riesgo. Proporciona el potencial

para el desarrollo rápido de versiones incrementales del software. En este modelo

el software se desarrolla en una serie de versiones incrementales. Durante las

primeras iteraciones, la versión incremental podría ser un modelo en papel o un

prototipo. En las últimas iteraciones, se producen versiones cada vez mas

completas del sistema diseñado.

El modelo representado mediante la espiral de la figura 4.2 define cuatro

actividades principales, también llamadas regiones de tareas o sectores:

1. Planificación. Durante la primera vuelta alrededor de la espiral se

definen los objetivos, las alternativas y las restricciones, se analizan e

identifican los riesgos. Si el análisis de riesgo indica que hay una

incertidumbre en los requisitos, se puede usar la creación de prototipos

en el cuadrante de ingeniería para dar asistencia tanto al encargado de

desarrollo como al cliente.

2. Análisis de riesgo. El proyecto se revisa y se toma la decisión de si se

debe continuar con un ciclo posterior de la espiral. Si se decide continuar,

se desarrollan los planes para la siguiente fase del proyecto.

3. Ingeniería. En este sector se desarrolla y se valida. Después de la

evaluación de riesgos, se elige un modelo para el desarrollo del sistema.

4. Evaluación del cliente. El cliente evalúa el trabajo de ingeniería

(cuadrante de evaluación de cliente) y sugiere modificaciones. Sobre la

base de los comentarios del cliente se produce la siguiente fase de

planificación y de análisis de riesgo. En cada bucle alrededor de la

espiral, la culminación del análisis de riesgo resulta en una decisión de

"seguir o no seguir".

Page 41: 94368577 unidad-iii-y-iv

41

Con cada iteración alrededor de la espiral (comenzando en el centro y

siguiendo hacia el exterior), se construyen sucesivas versiones del software, cada

vez más completas y, al final, el propio sistema operacional.

Un ciclo en espiral inicia con la elaboración de objetivos, como el

rendimiento y la funcionalidad. Después se enumeran formas alternativas de

alcanzar estos objetivos y las restricciones impuestas en cada una de ellas. Cada

alternativa se evalúa contra cada objetivo y se identifican las fuentes de riesgo del

proyecto. Lo siguiente es resolver los riesgos mediante actividades de recopilación

de información como la de detallar más el análisis, la construcción de prototipos y

la simulación. Ya que se evaluaron los riesgos, se lleva a cabo cierto desarrollo,

seguido de una actividad de planificación para la siguiente fase.

El paradigma del modelo en espiral para la Ingeniería de Software es

actualmente el enfoque más realista para el desarrollo de software y de sistemas a

gran escala. Utiliza un enfoque evolutivo, permitiendo al desarrollador y al cliente

entender y reaccionar a los riesgos en cada nivel. Utiliza la creación de prototipos

como un mecanismo de reducción de riesgo, pero, lo que es más importante

permite a quien lo desarrolla aplicar el enfoque de creación de prototipos en

cualquier etapa de la evolución de prototipos.

Page 42: 94368577 unidad-iii-y-iv

42

4.3 MODELO INCREMENTAL

El modelo incremental aplica secuencias lineales de forma escalonada

mientras avanza el tiempo. Corrige la necesidad de una secuencia no lineal de

pasos de desarrollo. Cada secuencia lineal produce un incremento del software.

El modelo incremental entrega el software en partes pequeñas, pero utilizables,

llamadas “incrementos”. En general, cada incremento se construye sobre aquel

que ya ha sido entregado.

Al igual que los otros métodos de modelado, el Modelo Incremental es de

naturaleza interactiva pero se diferencia de aquellos en que al final de cada

incremento se entrega un producto completamente operacional.

Page 43: 94368577 unidad-iii-y-iv

43

El Modelo Incremental es particularmente útil cuando no se cuenta con una

dotación de personal suficiente. Los primeros pasos los pueden realizar un grupo

reducido de personas y en cada incremento se añadir personal, de ser necesario.

Por otro lado los incrementos se pueden planear para gestionar riesgos técnicos.

El Modelo Incremental se puede ver aquí:

- Se evitan proyectos largos y se entrega algo de valor a los usuarios con

cierta frecuencia.

- El usuario se involucra más.

- Difícil de evaluar el coste total.

- Difícil de aplicar a los Sistemas transaccionales que tienden a ser

integrados y a operar como un todo.

- Requiere gestores experimentados.

- Los errores en los requisitos se detectan tarde.

- El resultado puede ser muy positivo.

Pipeline

La arquitectura en pipeline (basada en filtros) consiste en ir transformando un flujo

de datos en un proceso comprendido por varias fases secuenciales, siendo la

entrada de cada una la salida de la anterior.

Esta arquitectura es muy común en el desarrollo de programas para el intérprete

de comandos, ya que se pueden concatenar comandos fácilmente con tuberías

(pipe). Es una arquitectura muy natural en el paradigma de programación

funcional, ya que equivale a la composición de funciones matemáticas.

Interprete de comandos.

Parte fundamental de un Sistema Operativo que ordena la ejecución de mandatos

obtenidos del usuario por medio de una interfaz alfanumérica.

Page 44: 94368577 unidad-iii-y-iv

44

Características.

Se evitan proyectos largos y se entrega “algo de valor” a los usuarios con

cierta frecuencia.

El usuario se involucre más.

Difícil de evaluar el costo total.

Difícil de aplicar a los Sistemas transaccionales que tienden a ser

integrados y a operar como un todo.

Requiere gestores experimentados.

Los errores en los requisitos se detectan tarde.

El resultado puede ser muy positivo.

Ventajas:

Con un paradigma incremental se reduce el tiempo de desarrollo inicial, ya

que se implementa la funcionalidad parcial.

También provee un impacto ventajoso frente al cliente, que es la entrega

temprana de partes operativas del Software.

El modelo proporciona todas las ventajas del modelo en cascada

realimentado, reduciendo sus desventajas sólo al ámbito de cada

incremento.

Permite entregar al cliente un producto más rápido en comparación del

modelo de cascada.

Resulta más sencillo acomodar cambios al acotar el tamaño de los

incrementos.

Por su versatilidad requiere de una planeación cuidadosa tanto a nivel

administrativo como técnico.

Desventajas:

El modelo Incremental no es recomendable para casos de Sistemas de

tiempo real, de alto nivel de seguridad, de procesamiento distribuido, y/o de

alto índice de riesgos.

Page 45: 94368577 unidad-iii-y-iv

45

Requiere de mucha planeación, tanto administrativa como técnica.

Requiere de metas claras para conocer el estado del proyecto.

Conclusión:

Un modelo incremental lleva a pensar en un desarrollo modular, con entregas

parciales del producto de Software denominados “incrementos” del Sistema, que

son escogidos en base a prioridades predefinidas de algún modo.

El modelo permite una implementación con refinamientos sucesivos (ampliación

y/o mejora).

Con cada incremento se agrega nueva funcionalidad o se cubren nuevos

requisitos o bien se mejora la versión previamente implementada del producto de

Software.

4.4 PROCESO DE DESARROLLO UNIFICADO

El Proceso Unificado de Desarrollo de Software o simplemente Proceso

Unificado es un marco de desarrollo de Software iterativo e incremental.

El Proceso Unificado no es simplemente un proceso, sino un marco de trabajo

extensible que puede ser adaptado a organizaciones o proyectos específicos. De

la misma forma, el RUP también es un marco de trabajo extensible, por lo que

muchas veces resulta imposible decir si un refinamiento particular del proceso ha

sido derivado del Proceso Unificado o del RUP. Por dicho motivo, los dos nombres

suelen utilizarse para referirse a un mismo concepto.

El nombre Proceso Unificado se usa para describir el proceso genérico que

incluye aquellos elementos que son comunes a la mayoría de los refinamientos

existentes.

Page 46: 94368577 unidad-iii-y-iv

46

Características:

- Iterativo e Incremental

El Proceso Unificado es un marco de desarrollo iterativo e incremental compuesto

de cuatro fases denominadas Inicio, Elaboración, Construcción y Transición. Cada

una de estas fases es a su vez dividida en una serie de iteraciones (la de inicio

sólo consta de varias iteraciones en proyectos grandes). Estas iteraciones ofrecen

como resultado un incremento del producto desarrollado que añade o mejora las

funcionalidades del Sistema en desarrollo.

Cada una de estas iteraciones se divide a su vez en una serie de disciplinas que

recuerdan a las definidas en el ciclo de vida clásico o en cascada: Análisis de

requisitos, Diseño, Implementación y Prueba. Aunque todas las iteraciones suelen

incluir trabajo en casi todas las disciplinas, el grado de esfuerzo dentro de cada

una de ellas varía a lo largo del proyecto.

- Dirigido por los casos de uso

En el Proceso Unificado los casos de uso se utilizan para capturar los requisitos

funcionales y para definir los contenidos de las iteraciones. La idea es que cada

iteración tome un conjunto de casos de uso o escenarios y desarrolle todo el

camino a través de las distintas disciplinas: diseño, implementación, prueba, etc. el

proceso dirigido por casos de uso es el RUP

- Centrado en la arquitectura

El Proceso Unificado asume que no existe un modelo único que cubra todos los

aspectos del Sistema. Por dicho motivo existen múltiples modelos y vistas que

definen la arquitectura de Software de un Sistema. La analogía con la construcción

es clara, cuando construyes un edificio existen diversos planos que incluyen los

distintos servicios del mismo: electricidad, fontanería, etc.

Page 47: 94368577 unidad-iii-y-iv

47

- Enfocado en los riesgos

El Proceso Unificado requiere que el equipo del proyecto se centre en identificar

los riesgos críticos en una etapa temprana del ciclo de vida. Los resultados de

cada iteración, en especial los de la fase de Elaboración, deben ser seleccionados

en un orden que asegure que los riesgos principales son considerados primero.

4.5 PROCESO SOFTWARE PERSONAL

Es un modelo complejo con mucha terminología propia, pensado

principalmente para el desarrollo de grandes proyectos. Es un proceso que puede

adaptarse y extenderse en función de las necesidades de cada empresa. Es el

resultado de esfuerzo de las tres últimas décadas en desarrollo de software y de la

experiencia de sus creadores Ivar Jacobson, Grady Booch y James Rumbaugh.

El PSP se caracteriza porque es de uso personal y se aplica a programas

pequeños de menos de 10.000 líneas de código. Se centra en la administración

del tiempo y en la administración de la calidad a través de la eliminación temprana

de defectos. En el PSP se excluyen los siguientes temas: Trabajo en equipo,

Administración de configuraciones y Administración de requerimientos.

El PSP se orienta el conjunto de áreas clave del proceso que debe manejar un

desarrollador cuando trabaja de forma individual. Los siguientes son los niveles y

las capas que se manejan en cada uno:

Nivel 1 - Inicial:

- Seguimiento y control de proyectos

- Planeación de los proyectos

Nivel 2 - Repetible:

Page 48: 94368577 unidad-iii-y-iv

48

- Revisión entre colegas.

- Ingeniería del producto de Software.

- Manejo integrado del Software.

- Definición del proceso de Software.

- Foco del proceso de Software.

Nivel 3 - Definido:

- Control de calidad.

- Administración cuantitativa del proyecto.

Nivel 4 - Controlado:

- Administración de los cambios del proceso.

- Administración del cambio tecnológico.

- Prevención de defectos.

- El PSP tiene varias fases:

PSP0: Proceso Base.

PSP0.1: Complementos al proceso base.

PSP1 y PSP1.1: Planeación personal.

PSP2 y PSP2.1: Control de calidad personal.

PSP3: Programas más grandes.

Page 49: 94368577 unidad-iii-y-iv

49

El Proceso Personal Software, conocido por sus siglas como PSP es una

alternativa dirigida a los ingenieros de Sistemas, que les permite mejorar la forma

en la que construyen Software. Considerando aspectos como la planeación,

calidad, estimación de costos y productividad, PSP es una metodología que vale la

pena revisar cuando el ingeniero de Software está interesado en aumentar la

calidad de los productos de Software que desarrolla dentro de un contexto de

trabajo individual.

Atendiendo a la premisa de que existe una fuerte relación entre las

habilidades de los ingenieros de Software y la calidad de los productos que

desarrollan, las actividades establecidas en PSP están orientadas al conocimiento,

administración y mejora de sus habilidades al construir programas.

En PSP todas las tareas y actividades que el ingeniero de Software debe

realizar durante el proceso de desarrollo de un producto de Software, están

puntualmente definidas en un conjunto de documentos conocidos como scripts.

Los scripts son el punto medular de PSP, por lo que se hace mucho énfasis en

que deben ser seguidos en forma disciplinada, ya que de ello dependerá el éxito

de la mejora que se busca. Gran parte de las tareas y actividades definidas en los

scripts generará en su realización un conjunto de datos, fundamentalmente de

carácter estadístico. La aplicación de PSP en varios procesos de desarrollo, y el

análisis de la información estadística generada en cada uno de éstos, permitirán al

Ingeniero de Software identificar, tanto sus fortalezas como sus debilidades, y

crecer a través de un proceso de autoaprendizaje y auto-mejora.

Los scripts se organizan en cuatro niveles, identificados del 0 al 3,

atendiéndose en cada nivel un conjunto de aspectos a mejorar del Proceso de

Desarrollo de Software. Al primer nivel se le conoce como 0 o de medición

personal, al segundo como nivel 1 o de planeación personal, al tercero, como nivel

2 o de calidad personal, y al cuarto, como nivel 3 o cíclico personal. Cada uno de

estos niveles, con excepción del 3, tiene una versión que los extiende,

Page 50: 94368577 unidad-iii-y-iv

50

introduciendo tareas y actividades para un mejor manejo de los aspectos de

interés en nivel, o bien para incluir nuevos aspectos.

BIBLIOGRAFÍA

[1] Sommerville, Ian (2005), Ingeniería de software, Ed. Addison Wesley 7ª Edición.

[2] Pressman Roger S. Ingeniería del software, Ed. Mc Graw Hill, 5ª edición

REFERENCIAS WEB

[3] Nelson Medinilla Martínez, Facultad de Informática, Universidad Politécnica de Madrid,

“Análisis y selección de estrategias de desarrollo de software” [En línea], Madrid

España [Consulta: Mayo de 2006], <http://is.ls.fi.upm.es/udis/docencia/proyecto/docs/

estrategias.pdf>

[4] Carolina Zibert, “Ciclos de vida de Ingeniería de Software” [En línea], Caracas

Venezuela [Consulta: Abril de 2006],<carolina.terna.net/ingsw2/Datos/Cascada-

ModeloV.doc>

[5] Tesis doctorales en Zarza, “Ingeniería de Software” [En línea], España [Consulta: Mayo

de 2006], <http://www.tdx.cesca.es/TESIS_UPC/AVAILABLE/TDX-0716102-

102210//05Capitulo05.pdf>

[6] Mundo Geek, “Ciclos de vida del software” [En línea], [Consulta: Mayo de 2006],

<http://mundogeek.net/archivos/2004/05/20>