SlideShare una empresa de Scribd logo
1 de 50
Descargar para leer sin conexión
INSTITUTO TECNOLÓGICO
          DE ACAPULCO
       INGENIERIA EN SISTEMAS
         COMPUTACIONALES


Fundamentos de desarrollo de sistemas

            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




                                                            1
Í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




                                                                                                                    2
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.


                                                                                   3
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.




                                                                                4
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.


                                                                               5
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:




                                                                                 6
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.




                                                                                7
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



                                                                                  8
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


                                                                                   9
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.




                                                                              10
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


                                                                                    11
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.




                                                                                    12
Almacén de
                                           D1
                                                                                                                    El flujo de datos
                                                          Datos 1 A
                                                           Registro                                                    coincidente



                         Entrada B
                                                     3             Flujo de                4
          Entidad 2                                                datos D



                                                Proceso                              Proceso
      El flujo de datos                                                                                                       Almacén de
                                                                                                               D1
      del proceso padre
      debe coincidir con                                                                                                       Datos 1
      el diagrama hijo                                                                                                               Registro A


                                                                                                    Registro
                                       Registro
     Entrada B
                        3.1                                                                            de
                                                                                                                                 3
                                           de                                                     transacción
                                                                             Archivo de
                                      transacción               D5
                                                                           Transacción 1

                   Proceso                                                                                                    Proceso

                              Error                                                                                                  Flujo de datos
                                                           En los diagramas                                                           Z detallado
                                                           de nivel inferior se
                                                           podrían agregar
                                                           archivos de
    En un diagrama                                                                                                               3
                                                           transacciones
    hijo detallado se
    podrían agregar
    líneas de error
                                                                               El flujo de salida
                                                                                                                              Proceso
                                                                               debe coincidir con
                                                                                                                                     Flujo de datos D
                                                                               el proceso padre


                        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




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.



                                                                                                                                                        13
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

                                                                               14
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.

                                                                                 15
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.
                                                                                   16
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.




                                                                               17
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



                                                                                 18
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.




                                                                               19
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


                                                                                20
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

                                                                                 21
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



                                                                             22
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

                                                                                  23
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.




                                                                                 24
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.




                                                                                    25
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.




                                                                                 26
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

                                                                                   27
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



                                                                                    28
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.


                                                                               29
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:




                                                                                       30
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.


                                                                                 31
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.



                                                                                   32
 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.




                                                                                33
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.



                                                                                34
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.




                                                                              35
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:


 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>




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



                                                                                                                                36
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).




                                                                                    37
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.




                                                                                  38
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.




                                                                                    39
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".

                                                                                  40
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.




                                                                                  41
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.

                                                                                 42
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.
                                                                                  43
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.

                                                                                44
 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.




                                                                               45
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.




                                                                                  46
- 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:

                                                                                 47
- 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.




                                               48
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,



                                                                                49
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>




                                                                                             50

Más contenido relacionado

La actualidad más candente

Jose marcano analisis y diseño de sistemas
Jose marcano analisis y diseño de sistemasJose marcano analisis y diseño de sistemas
Jose marcano analisis y diseño de sistemasAmerigled Salgado
 
Analisis estructurado
Analisis estructuradoAnalisis estructurado
Analisis estructuradokvillazon
 
Diagrama de Flujo de Datos
Diagrama de Flujo de DatosDiagrama de Flujo de Datos
Diagrama de Flujo de DatosInés Andara
 
11 Clase Analisis De Requisitos
11 Clase Analisis De Requisitos11 Clase Analisis De Requisitos
11 Clase Analisis De RequisitosJulio Pari
 
Fundamentos del software
Fundamentos del softwareFundamentos del software
Fundamentos del softwaremrquaife
 
desarrollo de software
desarrollo de softwaredesarrollo de software
desarrollo de softwareJean Davila
 
Análisis y diseño de sistemas sesion 03 - modelado de dominio
Análisis y diseño de sistemas   sesion 03 - modelado de dominioAnálisis y diseño de sistemas   sesion 03 - modelado de dominio
Análisis y diseño de sistemas sesion 03 - modelado de dominioGianfrancoEduardoBra
 
Elementos orientados al flujo
Elementos orientados al flujoElementos orientados al flujo
Elementos orientados al flujoAlumic S.A
 
PRINCIPIOS DEL DISEÑO DE ESTRUCTURAS DE DATOS
PRINCIPIOS DEL DISEÑO DE ESTRUCTURAS DE DATOSPRINCIPIOS DEL DISEÑO DE ESTRUCTURAS DE DATOS
PRINCIPIOS DEL DISEÑO DE ESTRUCTURAS DE DATOSEvans Balcazar
 
Análisis de requerimientos y DFD (II)
Análisis de requerimientos y DFD (II)Análisis de requerimientos y DFD (II)
Análisis de requerimientos y DFD (II)Angela Inciarte
 
Anáilisis de requerimientos y DFD
Anáilisis de requerimientos y DFDAnáilisis de requerimientos y DFD
Anáilisis de requerimientos y DFDAngela Inciarte
 

La actualidad más candente (20)

Modelos de datos y procesos
Modelos de datos y procesosModelos de datos y procesos
Modelos de datos y procesos
 
Jose marcano analisis y diseño de sistemas
Jose marcano analisis y diseño de sistemasJose marcano analisis y diseño de sistemas
Jose marcano analisis y diseño de sistemas
 
Analisis estructurado
Analisis estructuradoAnalisis estructurado
Analisis estructurado
 
Diagrama de Flujo de Datos
Diagrama de Flujo de DatosDiagrama de Flujo de Datos
Diagrama de Flujo de Datos
 
Tema4 a
Tema4 aTema4 a
Tema4 a
 
11 Clase Analisis De Requisitos
11 Clase Analisis De Requisitos11 Clase Analisis De Requisitos
11 Clase Analisis De Requisitos
 
Fundamentos del software
Fundamentos del softwareFundamentos del software
Fundamentos del software
 
Clase 2 Semana 3
Clase 2 Semana 3Clase 2 Semana 3
Clase 2 Semana 3
 
Diseño fisico
Diseño fisicoDiseño fisico
Diseño fisico
 
Diagrama de contexto
Diagrama de contextoDiagrama de contexto
Diagrama de contexto
 
desarrollo de software
desarrollo de softwaredesarrollo de software
desarrollo de software
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
Análisis y diseño de sistemas sesion 03 - modelado de dominio
Análisis y diseño de sistemas   sesion 03 - modelado de dominioAnálisis y diseño de sistemas   sesion 03 - modelado de dominio
Análisis y diseño de sistemas sesion 03 - modelado de dominio
 
Diagramas de-flujo-de-datos01
Diagramas de-flujo-de-datos01Diagramas de-flujo-de-datos01
Diagramas de-flujo-de-datos01
 
Elementos orientados al flujo
Elementos orientados al flujoElementos orientados al flujo
Elementos orientados al flujo
 
Paradigmas
ParadigmasParadigmas
Paradigmas
 
PRINCIPIOS DEL DISEÑO DE ESTRUCTURAS DE DATOS
PRINCIPIOS DEL DISEÑO DE ESTRUCTURAS DE DATOSPRINCIPIOS DEL DISEÑO DE ESTRUCTURAS DE DATOS
PRINCIPIOS DEL DISEÑO DE ESTRUCTURAS DE DATOS
 
Ciclo De Vida
Ciclo De VidaCiclo De Vida
Ciclo De Vida
 
Análisis de requerimientos y DFD (II)
Análisis de requerimientos y DFD (II)Análisis de requerimientos y DFD (II)
Análisis de requerimientos y DFD (II)
 
Anáilisis de requerimientos y DFD
Anáilisis de requerimientos y DFDAnáilisis de requerimientos y DFD
Anáilisis de requerimientos y DFD
 

Similar a 94368577 unidad-iii-y-iv

Paraigma de la Ingenieria de Software.pdf
Paraigma de la Ingenieria de Software.pdfParaigma de la Ingenieria de Software.pdf
Paraigma de la Ingenieria de Software.pdfEdecio R. Freitez R.
 
Diseño estructurado
Diseño estructuradoDiseño estructurado
Diseño estructuradoeglisp
 
Unidad 3 TÉCNICAS PARA EL ANALISIS DE REQUERIMIENTO
Unidad 3 TÉCNICAS PARA EL ANALISIS DE REQUERIMIENTOUnidad 3 TÉCNICAS PARA EL ANALISIS DE REQUERIMIENTO
Unidad 3 TÉCNICAS PARA EL ANALISIS DE REQUERIMIENTOGuillermo Hernandez Miranda
 
Paradigmas de ingenieria del software
Paradigmas de ingenieria del softwareParadigmas de ingenieria del software
Paradigmas de ingenieria del softwareTensor
 
Metodologías para el desarrollo de sistemas
Metodologías para el desarrollo de sistemasMetodologías para el desarrollo de sistemas
Metodologías para el desarrollo de sistemasEliset Gonzales Uceda
 
Diseño de sistemas
Diseño de sistemasDiseño de sistemas
Diseño de sistemasMirna Lozano
 
Significado dentro del ciclo de vida de desarrollo de sistemas
Significado dentro del ciclo de vida de desarrollo de sistemasSignificado dentro del ciclo de vida de desarrollo de sistemas
Significado dentro del ciclo de vida de desarrollo de sistemasJuan Pablo Bustos Thames
 
Significado dentro del ciclo de vida de desarrollo de sistemas
Significado dentro del ciclo de vida de desarrollo de sistemasSignificado dentro del ciclo de vida de desarrollo de sistemas
Significado dentro del ciclo de vida de desarrollo de sistemasJuan Pablo Bustos Thames
 
Slideshare 2do corte, luismortell
Slideshare 2do corte, luismortellSlideshare 2do corte, luismortell
Slideshare 2do corte, luismortellforwer1223
 
Análisis de sistemas fases del diseño de sistemas
Análisis de sistemas fases del diseño de sistemasAnálisis de sistemas fases del diseño de sistemas
Análisis de sistemas fases del diseño de sistemasprofmyriamsanuy
 
Diseño de un Sistema de Informacion
Diseño de un Sistema de InformacionDiseño de un Sistema de Informacion
Diseño de un Sistema de Informacionjosue salas
 
Fundamentos Y Metodos de Analisis de Requerimientos
Fundamentos Y Metodos de Analisis de RequerimientosFundamentos Y Metodos de Analisis de Requerimientos
Fundamentos Y Metodos de Analisis de RequerimientosGlamisleidys Chourio
 
Jessika parica. Fundamentos y métodos de análisis de los requerimientos.
Jessika parica. Fundamentos y métodos de análisis de los requerimientos.Jessika parica. Fundamentos y métodos de análisis de los requerimientos.
Jessika parica. Fundamentos y métodos de análisis de los requerimientos.Jessika Parica
 
Análisis estructurado power
Análisis estructurado powerAnálisis estructurado power
Análisis estructurado powerA.C. Milan
 
Planificacion de proyecto de software
Planificacion de proyecto de softwarePlanificacion de proyecto de software
Planificacion de proyecto de softwareYORGELIS1608
 

Similar a 94368577 unidad-iii-y-iv (20)

Diseño
DiseñoDiseño
Diseño
 
Paraigma de la Ingenieria de Software.pdf
Paraigma de la Ingenieria de Software.pdfParaigma de la Ingenieria de Software.pdf
Paraigma de la Ingenieria de Software.pdf
 
Diseño estructurado
Diseño estructuradoDiseño estructurado
Diseño estructurado
 
Unidad 3 TÉCNICAS PARA EL ANALISIS DE REQUERIMIENTO
Unidad 3 TÉCNICAS PARA EL ANALISIS DE REQUERIMIENTOUnidad 3 TÉCNICAS PARA EL ANALISIS DE REQUERIMIENTO
Unidad 3 TÉCNICAS PARA EL ANALISIS DE REQUERIMIENTO
 
Herramientas fabry
Herramientas fabryHerramientas fabry
Herramientas fabry
 
Herramientas fabry
Herramientas fabryHerramientas fabry
Herramientas fabry
 
Paradigmas de ingenieria del software
Paradigmas de ingenieria del softwareParadigmas de ingenieria del software
Paradigmas de ingenieria del software
 
Metodologías para el desarrollo de sistemas
Metodologías para el desarrollo de sistemasMetodologías para el desarrollo de sistemas
Metodologías para el desarrollo de sistemas
 
Diseño de sistemas
Diseño de sistemasDiseño de sistemas
Diseño de sistemas
 
Significado dentro del ciclo de vida de desarrollo de sistemas
Significado dentro del ciclo de vida de desarrollo de sistemasSignificado dentro del ciclo de vida de desarrollo de sistemas
Significado dentro del ciclo de vida de desarrollo de sistemas
 
Significado dentro del ciclo de vida de desarrollo de sistemas
Significado dentro del ciclo de vida de desarrollo de sistemasSignificado dentro del ciclo de vida de desarrollo de sistemas
Significado dentro del ciclo de vida de desarrollo de sistemas
 
Slideshare 2do corte, luismortell
Slideshare 2do corte, luismortellSlideshare 2do corte, luismortell
Slideshare 2do corte, luismortell
 
Análisis de sistemas fases del diseño de sistemas
Análisis de sistemas fases del diseño de sistemasAnálisis de sistemas fases del diseño de sistemas
Análisis de sistemas fases del diseño de sistemas
 
Diseño de un Sistema de Informacion
Diseño de un Sistema de InformacionDiseño de un Sistema de Informacion
Diseño de un Sistema de Informacion
 
Fundamentos Y Metodos de Analisis de Requerimientos
Fundamentos Y Metodos de Analisis de RequerimientosFundamentos Y Metodos de Analisis de Requerimientos
Fundamentos Y Metodos de Analisis de Requerimientos
 
Jessika parica. Fundamentos y métodos de análisis de los requerimientos.
Jessika parica. Fundamentos y métodos de análisis de los requerimientos.Jessika parica. Fundamentos y métodos de análisis de los requerimientos.
Jessika parica. Fundamentos y métodos de análisis de los requerimientos.
 
Infografia
InfografiaInfografia
Infografia
 
pruba de "sdf"
pruba de "sdf"pruba de "sdf"
pruba de "sdf"
 
Análisis estructurado power
Análisis estructurado powerAnálisis estructurado power
Análisis estructurado power
 
Planificacion de proyecto de software
Planificacion de proyecto de softwarePlanificacion de proyecto de software
Planificacion de proyecto de software
 

94368577 unidad-iii-y-iv

  • 1. INSTITUTO TECNOLÓGICO DE ACAPULCO INGENIERIA EN SISTEMAS COMPUTACIONALES Fundamentos de desarrollo de sistemas 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 1
  • 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 2
  • 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. 3
  • 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. 4
  • 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. 5
  • 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: 6
  • 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. 7
  • 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 8
  • 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 9
  • 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. 10
  • 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 11
  • 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. 12
  • 13. Almacén de D1 El flujo de datos Datos 1 A Registro coincidente Entrada B 3 Flujo de 4 Entidad 2 datos D Proceso Proceso El flujo de datos Almacén de D1 del proceso padre debe coincidir con Datos 1 el diagrama hijo Registro A Registro Registro Entrada B 3.1 de 3 de transacción Archivo de transacción D5 Transacción 1 Proceso Proceso Error Flujo de datos En los diagramas Z detallado de nivel inferior se podrían agregar archivos de En un diagrama 3 transacciones hijo detallado se podrían agregar líneas de error El flujo de salida Proceso debe coincidir con Flujo de datos D el proceso padre 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 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. 13
  • 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 14
  • 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. 15
  • 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. 16
  • 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. 17
  • 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 18
  • 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. 19
  • 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 20
  • 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 21
  • 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 22
  • 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 23
  • 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. 24
  • 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. 25
  • 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. 26
  • 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 27
  • 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 28
  • 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. 29
  • 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: 30
  • 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. 31
  • 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. 32
  • 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. 33
  • 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. 34
  • 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. 35
  • 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: 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> 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 36
  • 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). 37
  • 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. 38
  • 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. 39
  • 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". 40
  • 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. 41
  • 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. 42
  • 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. 43
  • 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. 44
  • 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. 45
  • 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. 46
  • 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: 47
  • 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. 48
  • 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, 49
  • 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> 50