SlideShare una empresa de Scribd logo
1 de 21
Universidad Fermín Toro
 Vice-rectorado Académico
   Facultad de Ingeniería
  Escuela de Computación




 DISEÑO ESTRUCTURADO
      (UNIDAD II)




                            Autor: Wilcar A. Rojas

                                  C.I: 13.313.297




CABUDARE, NOVIEMBRE 2012
Desarrollo Estructurado
      El desarrollo estructurado comenzó con la programación. A mediados de los
60 el enfoque estructurado se extiende a la fase de diseño que se conoce como
diseño estructurado, el cual se basa en definir una abstracción más amplia usando
los módulos de programa como componentes básicos de construcción. A mediados
de los 70, se empezaron a surgir las técnicas estructuradas, donde se empezó a
construir programas de una forma artesanal con métodos de ingeniería. El
desarrollo estructurado permitió facilitar la comprensión de programas, normas
para la aplicación de estructuras de datos y de control.
      En el diseño estructurado se caracteriza por lo siguiente:
      Mayor nivel de abstracción (independencia del lenguaje programación).
      Elemento básico de diseño: módulo.
      Modularidad que permite medir la calidad de programas.
      Representa los procesos, flujos y estructuras de datos, de una manera
      jerárquica y descendente.
      Ven el sistema como entradas-proceso-salidas.
      Se concentran en la parte del proceso.
      Se lee de porciones, independientes de las especificaciones.
Aunque este desarrollo permite diseñar un buen proceso y estructura de un
programa, tiene inconvenientes como:
      Leer todas las especificaciones para entender el problema.
      Se repetía la misma información en partes diferentes del documento.
      El enfoque de requisitos se interpretaba diferente por cada usuario.
      Cuando se finalizaba el proceso de desarrollo las especificaciones eran
      obsoletas.


      Este enfoque se conoce como análisis estructurado o análisis descendente o
top - down. Desde su aparición se han hecho mejoras como dar menor
importancia a la construcción de los modelos físicos actuales y a los modelos
lógicos actuales, diferenciar más los modelos físicos y lógicos. Ampliar las técnicas
de análisis estructurado, para modelar sistemas en tiempo real y enfocarse en el
modelo de datos.
      En el desarrollo estructurado los programas están divididos en distintos
bloques, estos bloques tienen funciones que se van confeccionado en forma de
arriba-abajo, empezando desde las generales hasta las particulares, hasta llegar a
detallar cada uno de los procedimientos y su interacción. Este desarrollo se enfoca
al diseño del programa y la compresión se hace mas fácil. Se ha hecho evidente
que este enfoque aun está un poco arraigado ya que se tiende a no pasar de un
proceso o iteración a otra, sin culminar con la anterior, ademas que el ciclo de vida
debe recorrerse completo y al manejarse de esta manera, trae como
consecuencias información redundante, costos y desperdicio de tiempo.


                        Desarrollo Orientado a Objetos
      El desarrollo del paradigma de Orientado a Objetos (OO) trata los procesos
y datos de forma conjunta. Este comienza a mediados de los 80 con los lenguajes
de programación Orienta a Objetos en los que se daba énfasis a la abstracción de
datos para los que se adjuntaba un conjunto de operaciones. Por otra parte los
conceptos de técnicas estructuradas han servido de base para muchas de las
metodológicas OO.
      La orientación a objetos empieza con los lenguajes de programación
orientados a objetos; en estos lenguajes los problemas del mundo real se
representan como un conjunto de objetos para los que se adjuntan un conjunto de
operaciones. Ej. C++, Java, entre otros.
      En la metodología orientada a objetos el sistema se organiza como una
colección de objetos que interactúan entre sí y que contienen tanto estructuras de
datos como un comportamiento. Esto se opone a la programación convencional, en
la cual las estructuras de datos y el comportamiento solamente están relacionadas
de forma débil, ya que estos se enfocan principalmente a las funciones.
Los principios del modelo OO son:
     Abstracción: Es una descripción simplificada o especificación de un sistema
     que enfatiza algunos de los detalles o propiedades del sistema, mientras
     suprime otros.
     Encapsulación: En el proceso de ocultar todos los detalles de un objeto que
     no contribuyen a sus características esenciales.
     Modularidad: Es la propiedad de un sistema que ha sido descompuesto en
     un conjunto de módulos coherentes e independientes.
     Jerarquía o herencia: Es el orden de las abstracciones organizado por
     niveles.
     Tipificación: Es la definición precisa de un objeto de tal forma que objetos
     de diferentes tipos no puedan ser intercambiados o, cuando mucho, puedan
     intercambiarse de manera muy restringida.
     Concurrencia: Es la propiedad que distingue un objeto que está activo de
     uno que no lo está.
     Persistencia: Es la propiedad de un objeto a través de la cual su existencia
     trasciende el tiempo (es decir, el objeto continua existiendo después de que
     su creador ha dejado de existir) y/o el espacio (es decir, la localización del
     objeto se mueve del espacio de dirección en que fue creado).


      Booch (1986) dice que “si un modelo que se dice OO no contiene alguno de
los primeros cuatro elementos, entonces no es Orientado a Objetos”.


      El desarrollo orientado a objetos comprende dividir un programa en clases,
donde estas clases estarán estructuradas por propiedades, atributos, variables,
pretendiendo simular y describir de manera conceptual a un objeto, y lo
importante de este desarrollo es que al usar el principio de encapsulamiento
proporciona la ventaja de que se evite interferencias extrañas entre distintas
partes del programa y podemos cambiar la implementación concreta de un objeto
sin afectar al resto del sistema. Actualmente este desarrollo es el que esta
aflorando más en los aspectos de desarrollo de software ya que permite crear un
modelo parecido a la realidad y ver las cosas como un objeto, es decir, realmente
como son y como se comportan.


               Características deseables de una metodología
      Existencia de reglas predefinidas, fases y subfases, tareas, productos
      intermedios, técnicas y herramientas tales que se amolden a cualquier
      desarrollo.
      Cobertura total del ciclo de desarrollo.
      Verificaciones intermedias.
      Planificación y control.
      Comunicación efectiva.
      Utilización sobre un abanico amplio de proyectos.
      Fácil formación.
      Herramientas case.
      La metodología debe contener actividades que mejoren el proceso de
      desarrollo.
      Soporte al mantenimiento. Por ejemplo. Reingeniería.
      Soporte de la reutilización de software, no solo reutilización de código.
      Actualmente, se huye de métodos muy burocráticos o monolíticos.


      Se dice entonces que una metodología es la que permita definir las etapas,
las salidas, entradas de un proyecto. Mantener un programa no es fácil pero se
puede lograr, por lo tanto, las metodologías deben permitir una robusta formación
del proyecto que permita utilizar mecanismos de mejora y que se usen los recursos
disponibles con su mayor rendimiento y eficacia.
Metodologías Vs. Ciclo de vida




       Una metodología es un conjunto integrado de técnicas y métodos que
permite abordar de forma homogénea y abierta cada una de las actividades del
ciclo de vida de un proyecto de desarrollo. Una definición estándar de metodología
puede ser el conjunto de métodos que se utilizan en una determinada actividad
con el fin de formalizarla y optimizarla. Determina los pasos a seguir y cómo
realizarlos para finalizar una tarea.
       Si esto se aplica a la Ingeniería de software, podemos destacar que una
metodología:
       Optimiza el proceso y el producto software.
       Es una guía en la planificación y en el desarrollo del software.
       Define qué hacer, cómo y cuándo durante todo el desarrollo y
       mantenimiento de un proyecto.
Una metodología define una estrategia global para enfrentarse con el
proyecto. Entre los elementos que forman parte de una metodología se pueden
destacar:
      Fases: tareas a realizar en cada fase.
      Productos: E/S de cada fase, documentos.
      Procedimientos y herramientas: apoyo a la realización de cada tarea.
      Criterios de evaluación: del proceso y del producto. Saber si se han logrado
      los objetivos.


      El ciclo de vida es el conjunto de fases por las que pasa el sistema que se
está desarrollando desde que nace la idea inicial hasta que el software es retirado
o remplazado.
Entre las funciones que debe tener un ciclo de vida se pueden destacar:
      Determinar el orden de las fases del proceso de software.
      Establecer los criterios de transición para pasar de una fase a la siguiente.
      Definir las entradas y salidas de cada fase.
      Describir los estados por los que pasa el producto.
      Describir las actividades a realizar para transformar el producto.
      Definir un esquema que sirve como base para planificar, organizar,
      coordinar, desarrollar, entre otros.


Las etapas de un ciclo de vida de un software son:
      Inicio: éste es el nacimiento de la idea. Aquí definimos los objetivos del
      proyecto y los recursos necesarios para su ejecución. Hacia dónde
      queremos ir, y no cómo queremos ir. Las características implícitas o
      explícitas de cada proyecto hacen necesaria una etapa previa destinada a
      obtener el objetivo por el cual se escribirán miles o cientos de miles de
      líneas de código. Un alto porcentaje del éxito de nuestro proyecto se
      definirá en estas etapas que, al igual que la etapa de debugging, muchos
      líderes de proyecto subestiman.
Planificación: idearemos un planeamiento detallado que guíe la gestión
del proyecto, temporal y económicamente.
Implementación: acordaremos el conjunto de actividades que componen
la realización del producto.
Puesta en producción: nuestro proyecto entra en la etapa de definición,
allí donde se lo presentamos al cliente o usuario final, sabiendo que
funciona correctamente y responde a los requerimientos solicitados en su
momento. Esta etapa es muy importante no sólo por representar la
aceptación o no del proyecto por parte del cliente o usuario final sino por
las múltiples dificultades que suele presentar en la práctica, alargándose
excesivamente y provocando costos no previstos.
Control en producción: control del producto, analizando cómo el proceso
difiere o no de los requerimientos originales e iniciando las acciones
correctivas si fuesen necesarias. Cuando decimos que hay que corregir el
producto,   hacemos      referencia   a     pequeñas   desviaciones   de   los
requerimientos originales que puedan llegar a surgir en el ambiente
productivo. Si nuestro programa no realiza la tarea para lo cual fue creada,
esta etapa no es la adecuada para el rediseño. Incluimos también en esta
etapa el liderazgo, documentación y capacitación, proporcionando directivas
a los recursos humanos, para que hagan su trabajo en forma correcta y
efectiva.


                     Objetivos de cada etapa:
Expresión de necesidades: Esta etapa tiene como objetivo el armado de
un documento en el cual se reflejan los requerimientos y funcionalidades
que ofrecerá al usuario el sistema a implementar (qué, y no cómo, se va a
implementar).
Especificaciones:     Formalizamos    los    requerimientos;   el   documento
obtenido en la etapa anterior se tomará como punto de partida para esta
etapa.
Análisis: Determinamos los elementos que intervienen en el sistema a
desarrollar, su estructura, relaciones, evolución temporal, funcionalidades,
tendremos una descripción clara de qué producto vamos a construir, qué
funcionalidades aportará y qué comportamiento tendrá.
Diseño: Ya sabemos qué hacer, ahora tenemos que determinar cómo
debemos hacerlo (¿cómo debe ser construido el sistema en cuestión?);
definimos en detalle entidades y relaciones de las bases de datos,
seleccionamos el lenguaje que vamos a utilizar, el Sistema Gestor de Bases
de Datos, entre otros).
Implementación: Empezamos a codificar algoritmos y estructuras de
datos, definidos en las etapas anteriores, en el correspondiente lenguaje de
programación o para un determinado sistema gestor de bases de datos. En
muchos proyectos se pasa directamente a esta etapa; son proyectos muy
arriesgados que adoptan un modelo de ciclo de vida de code & fix (codificar
y corregir) donde se eliminan las etapas de especificaciones, análisis y
diseño con la consiguiente pérdida de control sobre la gestión del proyecto.
Debugging (Depuración): El objetivo de esta etapa es garantizar que
nuestro programa no contiene errores de diseño o codificación. En esta
etapa no deseamos saber si nuestro programa realiza lo que solicitó el
usuario, esa tarea le corresponde a la etapa de implementación. En ésta
deseamos encontrar la mayor cantidad de errores. Todas los programas
contienen errores: encontrarlos es cuestión de tiempo. Lo ideal es encontrar
la mayoría, si no todos, en esta etapa. También se pueden agregar pruebas
de rendimiento.
Validación: Esta etapa tiene como objetivo la verificación de que el
sistema desarrollado cumple con los requerimientos expresados inicialmente
por el cliente y que han dado lugar al presente proyecto. En muchos
proyectos las etapas de validación y debugging se realizan en paralelo por
la estrecha relación que llevan. Sin embargo, tenemos que evitar la
confusión: podemos realizarlos en paralelo, pero no como una única etapa.
Evolución: En la mayoría de los proyectos se considera esta etapa como
      Mantenimiento y evolución, y se le asigna, no sólo el agregado de nuevas
      funcionalidades (evolución); sino la corrección de errores que surgen
      (mantenimiento). En la práctica esta denominación no es del todo errónea,
      ya que es posible que aun luego de una etapa de debugging y validación
      exhaustiva, se filtren errores.


      Una metodología puede seguir uno o varios modelos de ciclo de vida,
adaptándose a cada uno de ellos, dependiendo de las necesidades dadas en un
momento determinado, es decir, el ciclo de vida indica lo que hay que obtener a lo
largo del desarrollo del proyecto pero no da las indicaciones de como obtenerlo. La
metodología indica los diferentes pasos y fases para obtener los distintos
productos parciales y finales. En sí para el desarrollo de software, se necesita
aplicar una metodología o varias metodologías, dentro de un ciclo de vida, de
manera que sepamos qué hacer y como hacerlo para conseguir lo que se quiere y
cumplir con las metas planteadas.


             Modelos de procesos en el desarrollo de software
Un modelo de proceso para el desarrollo de software es una representación
simplificada de pasos, representada desde una perspectiva específica. Por su
naturaleza los modelos son simplificados, por lo tanto un modelo de procesos del
software es una abstracción de un proceso real.
Estos modelos tienen como propósito la producción eficaz y eficiente de un
producto software que reúna los requisitos del cliente. Este proceso es
intensamente intelectual, afectado por la creatividad y juicio de las personas
involucradas. La mayoría de los modelos de procesos de desarrollo del software
son dirigidos por el tiempo; cuanto más tarde sea, más atrás se encontrará en el
proceso de desarrollo. Como todo proceso, están constituidos de pasos o fases que
contienen a su vez actividades, estos modelos de desarrollo de software se basan
en un ciclo de vida para desarrollar el mismo, como lo son:
             La   necesidad   de    solucionar   un   problema   (surgimiento   de
             necesidades)
             Inicio del proceso (desarrollo), dentro de esta fase se encuentra la
             definición del proyecto, el análisis del contexto, definición de
             requerimientos, diseño del sistema, construcción del sistema,
             pruebas e implantación.
             Operación y mantenimiento, donde realiza ajustes y se buscan fallas.
             Renovación o extinción.
      Los procesos de software son complejos debido a que un producto de
software es intangible y por lo general muy abstracto, esto dificulta la definición
del producto y sus requisitos, sobre todo cuando no se tiene precedentes en
productos software similares. En general este producto está compuesto por
hardware y software. En cuanto al hardware, su producción se realiza
sistemáticamente y la base de conocimiento para el desarrollo de dicha actividad
está claramente definida. Respecto del software, su construcción y resultados han
sido históricamente cuestionados debido a los problemas asociados


      Los modelos de procesos permiten al analista de sistemas desarrollar un
plan de requisitos del software, permiten establecer un trabajo en forma ordenada,
además que existen muchos modelos que se adaptan a las exigencias del
proyecto, solo debemos saber cual nos conviene, pero lo mas importante, es que
estos modelos nos llevan a presentar los proyectos al cliente de manera que éste
vea su diseño y sus funciones y que la mayoría de ellos están orientados al
mantenimiento.


      Clasificación de las Metodologías según el modelo de proceso
            Modelos Convencionales o Prescriptivos de Procesos
      Los modelos convencionales o modelos prescriptivos de procesos permiten
llenar el marco de trabajo con un conjunto de tareas orientadas al desarrollo de un
software.
      Se les llama "prescriptivos" porque prescriben un conjunto de elementos del
proceso, tales como:
             Actividades del Marco de Trabajo.
             Acciones de la Ingeniería del software.
             Tareas.
             Productos de trabajo.
             Aseguramiento de la calidad.
             Mecanismos de control del cambio para cada proyecto.
      Estos modelos son útiles si queremos describir un conjunto único de
actividades dentro de un marco de trabajo para un proceso de software. cada
actividad debe contener un conjunto de acciones de ingeniería del software, y
definir cada acción en cuanto a un conjunto de tareas que identifique el trabajo (y
los productos del trabajo) que deben completarse para alcanzar las metas de
desarrollo. Sin importar el modelo del proceso que se desee usar, los ingenieros de
software eligen una manera tradicional para realizar el marco de trabajo genérico
para el proceso, ya que estos modelos se caracterizan por ser en esencia rígidos,
estrictos y los más utilizados.




       En las metodologías convencionales, el ciclo de vida de un proyecto, puede
definirse como un ciclo de vida lineal, ya que imponen una disciplina de trabajo
sobre el proceso de desarrollo del software, con el fin de conseguir un software
más eficiente. Para ello, se hace énfasis en la planificación total de todo el trabajo
a realizar y una vez que está todo detallado, comienza el ciclo de desarrollo del
producto software. Se centran especialmente en el control del proceso, mediante
una rigurosa definición de roles, actividades, artefactos, herramientas y notaciones
para el modelado y documentación detallada. Además, las metodologías
tradicionales no se adaptan adecuadamente a los cambios, por lo que no son
métodos adecuados cuando se trabaja en un entorno, donde los requisitos no
pueden predecirse o bien pueden variar.
       Los modelos prescriptivos de proceso definen un conjunto distinto de
actividades, acciones, tareas fundamentos y productos de trabajo que es requieren
para desarrollar software de alta calidad. Los ingenieros de software y sus
gerentes deben adaptar un modelo prescripto de proceso a sus necesidades y
después lo siguen. Además, la gente que ha solicitado el software tiene un papel
por desempeñar se ejecuta el modelo de software. ¿Por qué es importante?
Porque proporciona estabilidad, control y organización a una actividad que si no se
controla puede volverse caótica. ¿Cuáles son los pasos? El proceso conduce a un
equipo de software a través de un conjunto de actividades del marco de trabajo
que se organizan en un flujo de proceso. ¿Cuál es un obtenido? Desde punto de
vista de un ingeniero de software, los productos de trabajo son los programas,
documentos y datos que se producen como consecuencia de las actividades y
tareas que define el proceso.


                                Modelo en Cascada




      El modelo en cascada, algunas veces llamado el ciclo de vida clásico,
sugiere un enfoque sistemático, secuencial hacia el desarrollo del software, que se
inicia con la especificación de requerimientos del cliente y que continúa con la
planeación, el modelado, la construcción y el despliegue para culminar en el
soporte del software terminado.
      Este modelo es aplicable en donde existen ocasiones en que los requisitos
de un problema se entienden de una manera razonable y deben estar bien
definidos, también cuando el trabajo fluye desde la comunicación a través del
despliegue de una manera casi lineal, esta situación se encuentra a veces cuando
es necesario hacer adaptaciones o mejorías bien definidas a un sistema existente.
El modelo en cascada es el paradigma más antiguo para la ingeniería del software.
Sin embargo, en las décadas pasadas, las criticas a este modelo de proceso han
ocasionado que aun sus más fervientes practicantes hayan cuestionado su eficacia.
Entre los problemas que algunas veces se encuentran al aplicar el modelo en
cascada están:
1. Es muy raro que los proyectos reales sigan el flujo secuencial que propone el
modelo. A pesar de que el modelo lineal incluye iteraciones, lo hace de manera
indirecta. Como resultado, los cambios confunden mientras el equipo de proyecto
actúa.
2. Con frecuencia es difícil para el cliente establecer todos los requisitos de manera
explícita. El modelo en cascada lo requiere y se enfrentan dificultades al incorporar
la incertidumbre natural presente en el inicio de muchos proyectos.
3. El cliente debe tener paciencia. Una versión que funcione de los programas
estará disponible cuando el proyecto esté muy avanzado. Un error grave será
desastroso si no se detecta antes de la revisión del programa.
En un análisis interesante de proyectos reales, Bradac(1994) concluyó que la
naturaleza lineal del modelo en cascada conduce a "estados de bloqueo" en los
cuales algunos miembros del equipo del proyecto deben esperar a otros para
terminar tareas dependientes. De hecho, el tiempo de espera puede superar el que
se aplica en el trabajo productivo. El estado de bloqueo tiende a ser más común al
principio y al final del proceso secuencial.
En la actualidad, el trabajo del software está acelerado y sujeto a una cadena
infinita de cambios (de características, funciones y contenido de la información).
Con frecuencia, el modelo en cascada no es apropiado para dicho trabajo. Sin
embargo, puede servir como un modelo de proceso útil en situaciones donde los
requerimientos están fijos y donde el trabajo se realiza, hasta su conclusión, de
una manera lineal.
Las principales etapas de este modelo según Sommerville (2005) son:
              Análisis    y   definición       de   requerimientos.   Los   servicios,
              restricciones y metas del sistema se definen a partir de las consultas
              con los usuarios. Se define una especificación del sistema.
              Diseño del sistema y del software. El proceso de diseño del
              sistema divide los requerimientos en sistemas hardware o software.
Establece una arquitectura completa del sistema. El diseño del
             software identifica y describe las abstracciones fundamentales del
             sistema software y sus relaciones.
             Implementación y prueba de unidades. Durante esta etapa, el
             diseño del software se lleva a cabo como un conjunto o unidades de
             programas.
             Integración y prueba del sistema. Los programas o las unidades
             individuales de programas se integran y prueban como un sistema
             completo para asegurar que se cumplan los requerimientos del
             software.
             Funcionamiento y mantenimiento. El sistema se instala y se
             pone en funcionamiento práctico. El mantenimiento implica corregir
             errores no descubiertos en las etapas anteriores del ciclo de vida.


                    Modelo de Procesos Incrementables




      El modelo incremental combina elementos del modelo en cascada aplicado
en forma iterativa. El modelo incremental aplica secuencias lineales de manera
escalonada conforme avanza el tiempo en el calendario. Cada secuencia lineal
produce "incrementos" del software. Por ejemplo, el software procesador de texto,
desarrollado con el paradigma incremental en su primer incremento, podría realizar
funciones básicas de administración de archivos, edición y producción de
documentos; en el segundo incremento, ediciones más sofisticadas, y tendría
funciones más complejas de producción de documentos; en el tercer incremento,
funciones de corrección ortográfica y gramatical; y en el cuarto, capacidades
avanzadas de configuración de página. Se debe tener en cuenta que el flujo del
proceso de cualquier incremento puede incorporar el paradigma de construcción
de prototipos que se expone más adelante.
      A menudo, al utilizar un modelo incremental el primer incremento es un
producto esencial. Es decir, se incorporan los requisitos básicos, pero muchas
características suplementarias (algunas conocidas, otras no) no se incorporan. El
producto esencial queda en manos del cliente (o se somete a una evaluación
detallada). Como resultado de la evaluación se desarrolla un plan para el
incremento siguiente. El plan afronta la modificación del producto esencial con el
fin de satisfacer de mejor manera las necesidades del cliente y la entrega de
características y funcionalidades adicionales. Este proceso se repite después de la
entrega de cada incremento mientras no se haya elaborado el producto completo.
      El modelo de proceso incremental, al igual que la construcción de prototipos
y otros enfoques evolutivos, es iterativo por naturaleza. Pero a diferencia de la
construcción de prototipos, el modelo incremental se enfoca en la entrega de un
producto operacional con cada incremento. Los primeros incrementos son
versiones “incompletas del producto final, pero proporcionan al usuario la
      funcionalidad que necesita y una plataforma para evaluarlo.
El desarrollo incremental es útil sobre todo cuando el personal necesario para una
implementación completa no está disponible. Los primeros incrementos se pueden
implementar con menos gente. Si el producto esencial es bien recibido se agrega
(si se requiere) más personal para implementar el incremento siguiente. Además,
los incrementos se pueden planear para manejar los riesgos técnicos. Por ejemplo,
un sistema grande podría requerir la disponibilidad de un hardware nuevo que está
en desarrollo y cuya fecha de entrega es incierta. Sería posible planear los
primeros incrementos de forma que se evite el uso de este hardware, lo que
permitiría la entrega de funcionalidad parcial a los usuarios finales sin retrasos
desordenados.


      Combina elementos del modelo en cascada aplicado en forma iterativa. El
modelo incremental aplica secuencias lineales de manera escalonada conforme
avanza el tiempo en el calendario. Cada secuencia lineal produce incrementos.
Produce entregas de software pequeñas pero usables (incrementos). Cada parte se
construye sobre partes ya entregadas.


            Modelo de desarrollo rápido de aplicaciones (DRA)




      El desarrollo rápido de aplicaciones (DRA) es un modelo de proceso de
software incremental que resalta un ciclo de desarrollo corto. El modelo DRA es
una adaptación a "alta velocidad" del modelo en cascada en el que se logra el
desarrollo rápido mediante un enfoque de construcción basado en componentes. Si
se entienden bien los requisitos y se limita el ámbito del proyecto, el proceso DRA
permite que un equipo de desarrollo cree un "sistema completamente funcional"
dentro de un periodo muy corto (por ejemplo, de 60 a 90 días).
      Como otros modelos de proceso, el enfoque DRA cumple con las actividades
genéricas del marco de trabajo que ya se han presentado. La comunicación trabaja
para entender el problema de negocios y las características de información que
debe incluir el software. La planeación es esencial porque varios equipos de
software trabajan en paralelo sobre diferentes funciones del sistema. El modelado
incluye tres grandes fases — modelado de negocios, modelado de datos y
modelado del proceso — y establece representaciones del diseño que sirven como
base para la actividad de construcción del modelo DRA. La construcción resalta el
empleo de componentes de software existente y la aplicación de la generación
automática de código. Por último, el despliegue establece una base para las
iteraciones subsecuentes, si éstas son necesarias.
      El modelo de proceso DRA se ilustra en la siguiente figura. Es obvio que las
restricciones de tiempo impuestas sobre un proyecto DRA exigen un "ámbito de
escalas". Si una aplicación de negocios se puede modular de forma que cada gran
función pueda completarse en menos de tres meses (mediante la aplicación del
enfoque ya descrito), ésta es una candidata para el DRA. Cada gran función se
puede abordar mediante un equipo de DRA por separado, para después integrarlas
y formar un todo.
Como todos los modelos de procesos, el enfoque DRA tiene inconvenientes:
1) Para proyectos grandes, pero escalables, el DRA necesita suficientes recursos
humanos para crear en número correcto de equipos DRA.
2) Si los desarrolladores y clientes no se comprometen con las actividades rápidas
necesarias para completar el sistema en un marco de tiempo muy breve, los
proyectos DRA fallarán.
3) Si un sistema no se puede modular en forma apropiada, la construcción de los
componentes necesarios para el DRA será problemática.
4) Si el alto rendimiento es un aspecto importante, y se alcanzará al convertir
interfaces en componentes del sistema, el enfoque DRA podría no funcionar.
5) El DRA sería inapropiado cuando los riesgos técnicos son altos (por ejemplo,
cuando una aplicación nueva aplica muchas nuevas tecnologías).
Es un modelo de proceso del software incremental que resulta un ciclo de
desarrollo corto. El modelo DRA es una adaptación a alta velocidad del modelo en
cascada en el que se logra el desarrollo rápido mediante un enfoque de
construcción basado en componentes. Hace un uso intensivo de componentes
reusables de software con un ciclo de desarrollo extremadamente corto.
      Es importante destacar que los Modelo Prescriptivos proporcionan un
conjunto de pautas para el diseño, uso y rehusó de los objetos de aprendizaje,
como complemento al proceso de su descripción, de una manera iterativa o
incremental, desde la concepción del objeto de aprendizaje hasta su reusabilidad a
corto, mediano y largo plazo. Pero el éxito en la creación de cualquier objeto de
aprendizaje dependerá de la adecuada aplicación del proceso de Ingeniería de
Software, cuyas etapas facilitan el desarrollo de los objetos de aprendizaje.


TECNICA DE DISEÑO ESTRUCTURADO
OBJETIVOS DE LA TECNICA
• Obtener la estructura modular y los detalles de proceso del sistema, partiendo
solamente de los «productos» obtenidos en la fase de Análisis del Sistema.
• Cambiar la atención del QUE al COMO.
• Obtener un diseño que no sólo «funcione», sino que también sea mantenible,
mejore la reutilización y se pueda probar y entender fácilmente.
• Utilizar herramientas gráficas (Diagramas de Estructura de Cuadros) para
representar la estructura modular del sistema.
      Se trata por tanto, de conseguir que cada módulo de la estructura en árbol
que se obtenga cumpla las siguientes características:
   1. Módulos de pequeño tamaño.
El impacto de un cambio a realizar puede ser perfectamente aislado. Si el tamaño
de los módulos es reducido, una determinada modificación afectará a un número
mayor de módulos, sin embargo, la cantidad de código a considerar será menor.
o Independencia modular. Cuanto mayor es la independencia de un módulo es
más sencillo trabajar con él, por tanto, el diseño debe reducir la compartición de
ficheros, de datos, la de dispositivos, las interfases comunes con el Sistema
Operativo y las llamadas, desde o hacia otros módulos.
2. Características de Caja Negra.
La característica de Caja Negra se aplica a cualquier sistema, programa o módulo,
para dar una visión exclusiva de sus entradas y salidas, sin tener en cuenta los
detalles de cómo se realiza el proceso. El uso de la Caja Negra permite una visión
más fácil del conjunto, posponiendo la consideración de los detalles para una
etapa posterior.
   3. Modelización conceptual.
Un sistema será más fácil de mantener si el modelo utilizado en su diseño se ha
basado en los conceptos lógicos de la organización, los cuales serán más familiares
y comprensibles para el personal de mantenimiento que las descripciones físicas
(equipo, organización de la unidad, cómo se realiza el trabajo en la actualidad,...).
o Aislamiento de los detalles. En un sistema existen partes que reflejan la filosofía
y otras partes que reflejan los detalles. Debido a que los detalles son más
susceptibles de cambiar, ambas partes deben diseñarse por separado para evitar
que una variación en los detalles afecte a la filosofía del sistema.

Más contenido relacionado

La actualidad más candente

Programación Orientada a Objetos vs Programación Estructurada
Programación Orientada a Objetos vs Programación EstructuradaProgramación Orientada a Objetos vs Programación Estructurada
Programación Orientada a Objetos vs Programación EstructuradaMichael de la Cruz
 
Diccionario de datos
Diccionario de datosDiccionario de datos
Diccionario de datosJorge Garcia
 
Diccionario de datos Unefa
Diccionario de datos UnefaDiccionario de datos Unefa
Diccionario de datos Unefaginotamborero
 
Metodología orientada a objetos
Metodología orientada a objetosMetodología orientada a objetos
Metodología orientada a objetosalcrrsc
 
Arboles En Estructura de Datos
Arboles En Estructura de DatosArboles En Estructura de Datos
Arboles En Estructura de DatosDARKGIRL93
 
Cuadro comparativo de enfoque estructurado y enfoque orientado
Cuadro comparativo de enfoque estructurado y enfoque orientadoCuadro comparativo de enfoque estructurado y enfoque orientado
Cuadro comparativo de enfoque estructurado y enfoque orientadoFreddySantiago32
 
Tabla comparativa de herramientas case oswaldo mauleon
Tabla comparativa de herramientas case oswaldo mauleon Tabla comparativa de herramientas case oswaldo mauleon
Tabla comparativa de herramientas case oswaldo mauleon oswaldoyuneri
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamientoLalo Chooper
 
Programación lógica y funcional
Programación lógica y funcionalProgramación lógica y funcional
Programación lógica y funcionalAlejandra MA
 
Algoritmos de busqueda
Algoritmos de busquedaAlgoritmos de busqueda
Algoritmos de busquedaJohnfornerod
 
Modelo cascada
Modelo cascadaModelo cascada
Modelo cascadamasilog
 
Ventajas y desventajas de las bases de datos frente a los archivos
Ventajas y desventajas de las bases de datos frente a los archivosVentajas y desventajas de las bases de datos frente a los archivos
Ventajas y desventajas de las bases de datos frente a los archivosIsabel
 

La actualidad más candente (20)

Programación Orientada a Objetos vs Programación Estructurada
Programación Orientada a Objetos vs Programación EstructuradaProgramación Orientada a Objetos vs Programación Estructurada
Programación Orientada a Objetos vs Programación Estructurada
 
Diccionario de datos
Diccionario de datosDiccionario de datos
Diccionario de datos
 
Vista lógica
Vista lógicaVista lógica
Vista lógica
 
Diccionario de datos Unefa
Diccionario de datos UnefaDiccionario de datos Unefa
Diccionario de datos Unefa
 
Metodología orientada a objetos
Metodología orientada a objetosMetodología orientada a objetos
Metodología orientada a objetos
 
UML - Analisis de Sistemas
UML - Analisis de SistemasUML - Analisis de Sistemas
UML - Analisis de Sistemas
 
Métodos Formales
Métodos FormalesMétodos Formales
Métodos Formales
 
Arboles En Estructura de Datos
Arboles En Estructura de DatosArboles En Estructura de Datos
Arboles En Estructura de Datos
 
Cuadro comparativo de enfoque estructurado y enfoque orientado
Cuadro comparativo de enfoque estructurado y enfoque orientadoCuadro comparativo de enfoque estructurado y enfoque orientado
Cuadro comparativo de enfoque estructurado y enfoque orientado
 
Tabla comparativa de herramientas case oswaldo mauleon
Tabla comparativa de herramientas case oswaldo mauleon Tabla comparativa de herramientas case oswaldo mauleon
Tabla comparativa de herramientas case oswaldo mauleon
 
Metodologia Incremental
Metodologia IncrementalMetodologia Incremental
Metodologia Incremental
 
16 Curso de POO en java - arreglos unidimensionales
16 Curso de POO en java - arreglos unidimensionales16 Curso de POO en java - arreglos unidimensionales
16 Curso de POO en java - arreglos unidimensionales
 
Metodología RUP
Metodología RUPMetodología RUP
Metodología RUP
 
Arreglos
ArreglosArreglos
Arreglos
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamiento
 
Programación lógica y funcional
Programación lógica y funcionalProgramación lógica y funcional
Programación lógica y funcional
 
Algoritmos de busqueda
Algoritmos de busquedaAlgoritmos de busqueda
Algoritmos de busqueda
 
Modelo cascada
Modelo cascadaModelo cascada
Modelo cascada
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
 
Ventajas y desventajas de las bases de datos frente a los archivos
Ventajas y desventajas de las bases de datos frente a los archivosVentajas y desventajas de las bases de datos frente a los archivos
Ventajas y desventajas de las bases de datos frente a los archivos
 

Destacado

Desarrollo de Software Orienta a Objetos
Desarrollo de Software Orienta a ObjetosDesarrollo de Software Orienta a Objetos
Desarrollo de Software Orienta a ObjetosDat@center S.A
 
Atributos de calidad en el desarrollo de software
Atributos de calidad en el desarrollo de softwareAtributos de calidad en el desarrollo de software
Atributos de calidad en el desarrollo de softwareGustavo Cuen
 
Enfoque estructurado y Enfoque OO - Ingenieria de software
Enfoque estructurado y Enfoque OO  - Ingenieria de softwareEnfoque estructurado y Enfoque OO  - Ingenieria de software
Enfoque estructurado y Enfoque OO - Ingenieria de softwareKola Real
 
Analisis estructurado y Orientado a objeto
Analisis estructurado y Orientado a objetoAnalisis estructurado y Orientado a objeto
Analisis estructurado y Orientado a objetoNormanBonavista24
 
Enfoques de desarrollo de sw
Enfoques de desarrollo de swEnfoques de desarrollo de sw
Enfoques de desarrollo de swWalterJes
 
Los sistemas en el contexto de la solución de problemas unidad 3
Los sistemas en el contexto de la solución de problemas unidad 3Los sistemas en el contexto de la solución de problemas unidad 3
Los sistemas en el contexto de la solución de problemas unidad 3Alejandro Sanchez Rodriguez
 
Aplicaciones del mantenimiento
Aplicaciones del mantenimientoAplicaciones del mantenimiento
Aplicaciones del mantenimientojairo curipoma
 
Sesión 3: Modelos prescriptivos de proceso de software
Sesión 3: Modelos prescriptivos de proceso de softwareSesión 3: Modelos prescriptivos de proceso de software
Sesión 3: Modelos prescriptivos de proceso de softwareLuis Fernández
 
Modelos Prescriptivos del Desarrollo del Sistema de Información
Modelos Prescriptivos del Desarrollo del Sistema de InformaciónModelos Prescriptivos del Desarrollo del Sistema de Información
Modelos Prescriptivos del Desarrollo del Sistema de InformaciónIsaias Toledo
 
U6 metodología de sistemas blandos
U6 metodología de sistemas blandosU6 metodología de sistemas blandos
U6 metodología de sistemas blandosMariana Alor
 
metodología de Diseño Estructurado y las Técnicas
metodología de Diseño Estructurado y las Técnicasmetodología de Diseño Estructurado y las Técnicas
metodología de Diseño Estructurado y las TécnicasHenry Rosales
 
Mantenimiento de Software
Mantenimiento de SoftwareMantenimiento de Software
Mantenimiento de SoftwareLia IS
 
Gestion De Proyecto De Desarrollo De Software
Gestion De Proyecto De Desarrollo De SoftwareGestion De Proyecto De Desarrollo De Software
Gestion De Proyecto De Desarrollo De SoftwareDecimo Sistemas
 
Programacion Orientada a Objetos y a Eventos
Programacion Orientada a Objetos y a EventosProgramacion Orientada a Objetos y a Eventos
Programacion Orientada a Objetos y a EventosNICK
 
Arquitectura de un sitio web
Arquitectura de un sitio webArquitectura de un sitio web
Arquitectura de un sitio webedgarcajun
 
Modelo Orientado A Objetos
Modelo Orientado A ObjetosModelo Orientado A Objetos
Modelo Orientado A Objetosjose_rob
 
Modelos de Ciclo de Vida del Software [Ventajas y Desventajas]
Modelos de Ciclo de Vida del Software [Ventajas y Desventajas]Modelos de Ciclo de Vida del Software [Ventajas y Desventajas]
Modelos de Ciclo de Vida del Software [Ventajas y Desventajas]Cloud Rodriguez
 
Metodologia de desarrollo de software
Metodologia de desarrollo de softwareMetodologia de desarrollo de software
Metodologia de desarrollo de softwareVictor Varela
 
Diseño estructurado
Diseño estructuradoDiseño estructurado
Diseño estructuradomateraactivo
 

Destacado (20)

Desarrollo de Software Orienta a Objetos
Desarrollo de Software Orienta a ObjetosDesarrollo de Software Orienta a Objetos
Desarrollo de Software Orienta a Objetos
 
Atributos de calidad en el desarrollo de software
Atributos de calidad en el desarrollo de softwareAtributos de calidad en el desarrollo de software
Atributos de calidad en el desarrollo de software
 
Enfoque estructurado y Enfoque OO - Ingenieria de software
Enfoque estructurado y Enfoque OO  - Ingenieria de softwareEnfoque estructurado y Enfoque OO  - Ingenieria de software
Enfoque estructurado y Enfoque OO - Ingenieria de software
 
Analisis estructurado y Orientado a objeto
Analisis estructurado y Orientado a objetoAnalisis estructurado y Orientado a objeto
Analisis estructurado y Orientado a objeto
 
Enfoques de desarrollo de sw
Enfoques de desarrollo de swEnfoques de desarrollo de sw
Enfoques de desarrollo de sw
 
Los sistemas en el contexto de la solución de problemas unidad 3
Los sistemas en el contexto de la solución de problemas unidad 3Los sistemas en el contexto de la solución de problemas unidad 3
Los sistemas en el contexto de la solución de problemas unidad 3
 
Aplicaciones del mantenimiento
Aplicaciones del mantenimientoAplicaciones del mantenimiento
Aplicaciones del mantenimiento
 
Sesión 3: Modelos prescriptivos de proceso de software
Sesión 3: Modelos prescriptivos de proceso de softwareSesión 3: Modelos prescriptivos de proceso de software
Sesión 3: Modelos prescriptivos de proceso de software
 
Modelos Prescriptivos del Desarrollo del Sistema de Información
Modelos Prescriptivos del Desarrollo del Sistema de InformaciónModelos Prescriptivos del Desarrollo del Sistema de Información
Modelos Prescriptivos del Desarrollo del Sistema de Información
 
U6 metodología de sistemas blandos
U6 metodología de sistemas blandosU6 metodología de sistemas blandos
U6 metodología de sistemas blandos
 
Modelado conceptual de aplicaciones web
Modelado conceptual de aplicaciones webModelado conceptual de aplicaciones web
Modelado conceptual de aplicaciones web
 
metodología de Diseño Estructurado y las Técnicas
metodología de Diseño Estructurado y las Técnicasmetodología de Diseño Estructurado y las Técnicas
metodología de Diseño Estructurado y las Técnicas
 
Mantenimiento de Software
Mantenimiento de SoftwareMantenimiento de Software
Mantenimiento de Software
 
Gestion De Proyecto De Desarrollo De Software
Gestion De Proyecto De Desarrollo De SoftwareGestion De Proyecto De Desarrollo De Software
Gestion De Proyecto De Desarrollo De Software
 
Programacion Orientada a Objetos y a Eventos
Programacion Orientada a Objetos y a EventosProgramacion Orientada a Objetos y a Eventos
Programacion Orientada a Objetos y a Eventos
 
Arquitectura de un sitio web
Arquitectura de un sitio webArquitectura de un sitio web
Arquitectura de un sitio web
 
Modelo Orientado A Objetos
Modelo Orientado A ObjetosModelo Orientado A Objetos
Modelo Orientado A Objetos
 
Modelos de Ciclo de Vida del Software [Ventajas y Desventajas]
Modelos de Ciclo de Vida del Software [Ventajas y Desventajas]Modelos de Ciclo de Vida del Software [Ventajas y Desventajas]
Modelos de Ciclo de Vida del Software [Ventajas y Desventajas]
 
Metodologia de desarrollo de software
Metodologia de desarrollo de softwareMetodologia de desarrollo de software
Metodologia de desarrollo de software
 
Diseño estructurado
Diseño estructuradoDiseño estructurado
Diseño estructurado
 

Similar a Desarrollo estructurado

4 Clase Metodologia De Desarrolo De Software
4 Clase Metodologia De Desarrolo De Software4 Clase Metodologia De Desarrolo De Software
4 Clase Metodologia De Desarrolo De SoftwareJulio Pari
 
Metodologia y prototipo
Metodologia y prototipoMetodologia y prototipo
Metodologia y prototipoArturo Jimenez
 
Clasificación de las metodologías de desarrollo de software
Clasificación de las metodologías de desarrollo de softwareClasificación de las metodologías de desarrollo de software
Clasificación de las metodologías de desarrollo de softwareEliset Gonzales Uceda
 
¡Summit loxa ingenieria de software
¡Summit loxa ingenieria de software¡Summit loxa ingenieria de software
¡Summit loxa ingenieria de softwareJorgeArmijosC
 
TallernMetodolognnandelnDesarrollondenSoftwarennnMiguelnVergarandocx___7064ee...
TallernMetodolognnandelnDesarrollondenSoftwarennnMiguelnVergarandocx___7064ee...TallernMetodolognnandelnDesarrollondenSoftwarennnMiguelnVergarandocx___7064ee...
TallernMetodolognnandelnDesarrollondenSoftwarennnMiguelnVergarandocx___7064ee...Jose Alexis Villamizar
 
Metodologías para desarrollo de software
Metodologías para desarrollo de softwareMetodologías para desarrollo de software
Metodologías para desarrollo de softwareAbner Garcia
 
Fundamentos Y Métodos De Análisis De Requerimientos10
Fundamentos Y Métodos De Análisis De Requerimientos10Fundamentos Y Métodos De Análisis De Requerimientos10
Fundamentos Y Métodos De Análisis De Requerimientos10EstebanOrtegon
 
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 sistemasUNEFA
 
Metodologias de Analisis y Diseno de Sistemas
Metodologias de Analisis y Diseno de SistemasMetodologias de Analisis y Diseno de Sistemas
Metodologias de Analisis y Diseno de SistemasElvis Mendoza Sequera
 
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
 

Similar a Desarrollo estructurado (20)

4 Clase Metodologia De Desarrolo De Software
4 Clase Metodologia De Desarrolo De Software4 Clase Metodologia De Desarrolo De Software
4 Clase Metodologia De Desarrolo De Software
 
Presentación2
Presentación2Presentación2
Presentación2
 
Metodologia y prototipo
Metodologia y prototipoMetodologia y prototipo
Metodologia y prototipo
 
Presentación2
Presentación2Presentación2
Presentación2
 
ASD.pptx
ASD.pptxASD.pptx
ASD.pptx
 
Clasificación de las metodologías de desarrollo de software
Clasificación de las metodologías de desarrollo de softwareClasificación de las metodologías de desarrollo de software
Clasificación de las metodologías de desarrollo de software
 
3 proceso sw
3 proceso sw3 proceso sw
3 proceso sw
 
Ender metodologia estructura
Ender metodologia estructuraEnder metodologia estructura
Ender metodologia estructura
 
Monografia
MonografiaMonografia
Monografia
 
3 proceso sw (caso de uso)
3 proceso sw  (caso de uso)3 proceso sw  (caso de uso)
3 proceso sw (caso de uso)
 
Ingenieria del Software
Ingenieria del SoftwareIngenieria del Software
Ingenieria del Software
 
Metodologías de modelado para aplicaciones web
Metodologías de modelado para aplicaciones webMetodologías de modelado para aplicaciones web
Metodologías de modelado para aplicaciones web
 
¡Summit loxa ingenieria de software
¡Summit loxa ingenieria de software¡Summit loxa ingenieria de software
¡Summit loxa ingenieria de software
 
TallernMetodolognnandelnDesarrollondenSoftwarennnMiguelnVergarandocx___7064ee...
TallernMetodolognnandelnDesarrollondenSoftwarennnMiguelnVergarandocx___7064ee...TallernMetodolognnandelnDesarrollondenSoftwarennnMiguelnVergarandocx___7064ee...
TallernMetodolognnandelnDesarrollondenSoftwarennnMiguelnVergarandocx___7064ee...
 
AMSI
AMSIAMSI
AMSI
 
Metodologías para desarrollo de software
Metodologías para desarrollo de softwareMetodologías para desarrollo de software
Metodologías para desarrollo de software
 
Fundamentos Y Métodos De Análisis De Requerimientos10
Fundamentos Y Métodos De Análisis De Requerimientos10Fundamentos Y Métodos De Análisis De Requerimientos10
Fundamentos Y Métodos De Análisis De Requerimientos10
 
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
 
Metodologias de Analisis y Diseno de Sistemas
Metodologias de Analisis y Diseno de SistemasMetodologias de Analisis y Diseno de Sistemas
Metodologias de Analisis y Diseno de Sistemas
 
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
 

Más de waralivt

Investigación Expositiva
Investigación ExpositivaInvestigación Expositiva
Investigación Expositivawaralivt
 
Wilcar rojas
Wilcar rojasWilcar rojas
Wilcar rojaswaralivt
 
Evaluación
EvaluaciónEvaluación
Evaluaciónwaralivt
 
Recursos disponibles
Recursos disponiblesRecursos disponibles
Recursos disponibleswaralivt
 
Proceso de una maquinas de turing
Proceso de una maquinas de turingProceso de una maquinas de turing
Proceso de una maquinas de turingwaralivt
 
Maquinas de turing
Maquinas de turingMaquinas de turing
Maquinas de turingwaralivt
 
Lenguajes Formales y AF
Lenguajes Formales y AFLenguajes Formales y AF
Lenguajes Formales y AFwaralivt
 
ANALISIS NUMERICO
ANALISIS NUMERICOANALISIS NUMERICO
ANALISIS NUMERICOwaralivt
 
Arquitecturas
ArquitecturasArquitecturas
Arquitecturaswaralivt
 

Más de waralivt (9)

Investigación Expositiva
Investigación ExpositivaInvestigación Expositiva
Investigación Expositiva
 
Wilcar rojas
Wilcar rojasWilcar rojas
Wilcar rojas
 
Evaluación
EvaluaciónEvaluación
Evaluación
 
Recursos disponibles
Recursos disponiblesRecursos disponibles
Recursos disponibles
 
Proceso de una maquinas de turing
Proceso de una maquinas de turingProceso de una maquinas de turing
Proceso de una maquinas de turing
 
Maquinas de turing
Maquinas de turingMaquinas de turing
Maquinas de turing
 
Lenguajes Formales y AF
Lenguajes Formales y AFLenguajes Formales y AF
Lenguajes Formales y AF
 
ANALISIS NUMERICO
ANALISIS NUMERICOANALISIS NUMERICO
ANALISIS NUMERICO
 
Arquitecturas
ArquitecturasArquitecturas
Arquitecturas
 

Último

Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfFrancisco158360
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptxolgakaterin
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIACarlos Campaña Montenegro
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuaDANNYISAACCARVAJALGA
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PCCesarFernandez937857
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 

Último (20)

Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptx
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahua
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PC
 
Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 

Desarrollo estructurado

  • 1. Universidad Fermín Toro Vice-rectorado Académico Facultad de Ingeniería Escuela de Computación DISEÑO ESTRUCTURADO (UNIDAD II) Autor: Wilcar A. Rojas C.I: 13.313.297 CABUDARE, NOVIEMBRE 2012
  • 2. Desarrollo Estructurado El desarrollo estructurado comenzó con la programación. A mediados de los 60 el enfoque estructurado se extiende a la fase de diseño que se conoce como diseño estructurado, el cual se basa en definir una abstracción más amplia usando los módulos de programa como componentes básicos de construcción. A mediados de los 70, se empezaron a surgir las técnicas estructuradas, donde se empezó a construir programas de una forma artesanal con métodos de ingeniería. El desarrollo estructurado permitió facilitar la comprensión de programas, normas para la aplicación de estructuras de datos y de control. En el diseño estructurado se caracteriza por lo siguiente: Mayor nivel de abstracción (independencia del lenguaje programación). Elemento básico de diseño: módulo. Modularidad que permite medir la calidad de programas. Representa los procesos, flujos y estructuras de datos, de una manera jerárquica y descendente. Ven el sistema como entradas-proceso-salidas. Se concentran en la parte del proceso. Se lee de porciones, independientes de las especificaciones. Aunque este desarrollo permite diseñar un buen proceso y estructura de un programa, tiene inconvenientes como: Leer todas las especificaciones para entender el problema. Se repetía la misma información en partes diferentes del documento. El enfoque de requisitos se interpretaba diferente por cada usuario. Cuando se finalizaba el proceso de desarrollo las especificaciones eran obsoletas. Este enfoque se conoce como análisis estructurado o análisis descendente o top - down. Desde su aparición se han hecho mejoras como dar menor importancia a la construcción de los modelos físicos actuales y a los modelos lógicos actuales, diferenciar más los modelos físicos y lógicos. Ampliar las técnicas
  • 3. de análisis estructurado, para modelar sistemas en tiempo real y enfocarse en el modelo de datos. En el desarrollo estructurado los programas están divididos en distintos bloques, estos bloques tienen funciones que se van confeccionado en forma de arriba-abajo, empezando desde las generales hasta las particulares, hasta llegar a detallar cada uno de los procedimientos y su interacción. Este desarrollo se enfoca al diseño del programa y la compresión se hace mas fácil. Se ha hecho evidente que este enfoque aun está un poco arraigado ya que se tiende a no pasar de un proceso o iteración a otra, sin culminar con la anterior, ademas que el ciclo de vida debe recorrerse completo y al manejarse de esta manera, trae como consecuencias información redundante, costos y desperdicio de tiempo. Desarrollo Orientado a Objetos El desarrollo del paradigma de Orientado a Objetos (OO) trata los procesos y datos de forma conjunta. Este comienza a mediados de los 80 con los lenguajes de programación Orienta a Objetos en los que se daba énfasis a la abstracción de datos para los que se adjuntaba un conjunto de operaciones. Por otra parte los conceptos de técnicas estructuradas han servido de base para muchas de las metodológicas OO. La orientación a objetos empieza con los lenguajes de programación orientados a objetos; en estos lenguajes los problemas del mundo real se representan como un conjunto de objetos para los que se adjuntan un conjunto de operaciones. Ej. C++, Java, entre otros. En la metodología orientada a objetos el sistema se organiza como una colección de objetos que interactúan entre sí y que contienen tanto estructuras de datos como un comportamiento. Esto se opone a la programación convencional, en la cual las estructuras de datos y el comportamiento solamente están relacionadas de forma débil, ya que estos se enfocan principalmente a las funciones.
  • 4. Los principios del modelo OO son: Abstracción: Es una descripción simplificada o especificación de un sistema que enfatiza algunos de los detalles o propiedades del sistema, mientras suprime otros. Encapsulación: En el proceso de ocultar todos los detalles de un objeto que no contribuyen a sus características esenciales. Modularidad: Es la propiedad de un sistema que ha sido descompuesto en un conjunto de módulos coherentes e independientes. Jerarquía o herencia: Es el orden de las abstracciones organizado por niveles. Tipificación: Es la definición precisa de un objeto de tal forma que objetos de diferentes tipos no puedan ser intercambiados o, cuando mucho, puedan intercambiarse de manera muy restringida. Concurrencia: Es la propiedad que distingue un objeto que está activo de uno que no lo está. Persistencia: Es la propiedad de un objeto a través de la cual su existencia trasciende el tiempo (es decir, el objeto continua existiendo después de que su creador ha dejado de existir) y/o el espacio (es decir, la localización del objeto se mueve del espacio de dirección en que fue creado). Booch (1986) dice que “si un modelo que se dice OO no contiene alguno de los primeros cuatro elementos, entonces no es Orientado a Objetos”. El desarrollo orientado a objetos comprende dividir un programa en clases, donde estas clases estarán estructuradas por propiedades, atributos, variables, pretendiendo simular y describir de manera conceptual a un objeto, y lo importante de este desarrollo es que al usar el principio de encapsulamiento proporciona la ventaja de que se evite interferencias extrañas entre distintas partes del programa y podemos cambiar la implementación concreta de un objeto sin afectar al resto del sistema. Actualmente este desarrollo es el que esta
  • 5. aflorando más en los aspectos de desarrollo de software ya que permite crear un modelo parecido a la realidad y ver las cosas como un objeto, es decir, realmente como son y como se comportan. Características deseables de una metodología Existencia de reglas predefinidas, fases y subfases, tareas, productos intermedios, técnicas y herramientas tales que se amolden a cualquier desarrollo. Cobertura total del ciclo de desarrollo. Verificaciones intermedias. Planificación y control. Comunicación efectiva. Utilización sobre un abanico amplio de proyectos. Fácil formación. Herramientas case. La metodología debe contener actividades que mejoren el proceso de desarrollo. Soporte al mantenimiento. Por ejemplo. Reingeniería. Soporte de la reutilización de software, no solo reutilización de código. Actualmente, se huye de métodos muy burocráticos o monolíticos. Se dice entonces que una metodología es la que permita definir las etapas, las salidas, entradas de un proyecto. Mantener un programa no es fácil pero se puede lograr, por lo tanto, las metodologías deben permitir una robusta formación del proyecto que permita utilizar mecanismos de mejora y que se usen los recursos disponibles con su mayor rendimiento y eficacia.
  • 6. Metodologías Vs. Ciclo de vida Una metodología es un conjunto integrado de técnicas y métodos que permite abordar de forma homogénea y abierta cada una de las actividades del ciclo de vida de un proyecto de desarrollo. Una definición estándar de metodología puede ser el conjunto de métodos que se utilizan en una determinada actividad con el fin de formalizarla y optimizarla. Determina los pasos a seguir y cómo realizarlos para finalizar una tarea. Si esto se aplica a la Ingeniería de software, podemos destacar que una metodología: Optimiza el proceso y el producto software. Es una guía en la planificación y en el desarrollo del software. Define qué hacer, cómo y cuándo durante todo el desarrollo y mantenimiento de un proyecto.
  • 7. Una metodología define una estrategia global para enfrentarse con el proyecto. Entre los elementos que forman parte de una metodología se pueden destacar: Fases: tareas a realizar en cada fase. Productos: E/S de cada fase, documentos. Procedimientos y herramientas: apoyo a la realización de cada tarea. Criterios de evaluación: del proceso y del producto. Saber si se han logrado los objetivos. El ciclo de vida es el conjunto de fases por las que pasa el sistema que se está desarrollando desde que nace la idea inicial hasta que el software es retirado o remplazado. Entre las funciones que debe tener un ciclo de vida se pueden destacar: Determinar el orden de las fases del proceso de software. Establecer los criterios de transición para pasar de una fase a la siguiente. Definir las entradas y salidas de cada fase. Describir los estados por los que pasa el producto. Describir las actividades a realizar para transformar el producto. Definir un esquema que sirve como base para planificar, organizar, coordinar, desarrollar, entre otros. Las etapas de un ciclo de vida de un software son: Inicio: éste es el nacimiento de la idea. Aquí definimos los objetivos del proyecto y los recursos necesarios para su ejecución. Hacia dónde queremos ir, y no cómo queremos ir. Las características implícitas o explícitas de cada proyecto hacen necesaria una etapa previa destinada a obtener el objetivo por el cual se escribirán miles o cientos de miles de líneas de código. Un alto porcentaje del éxito de nuestro proyecto se definirá en estas etapas que, al igual que la etapa de debugging, muchos líderes de proyecto subestiman.
  • 8. Planificación: idearemos un planeamiento detallado que guíe la gestión del proyecto, temporal y económicamente. Implementación: acordaremos el conjunto de actividades que componen la realización del producto. Puesta en producción: nuestro proyecto entra en la etapa de definición, allí donde se lo presentamos al cliente o usuario final, sabiendo que funciona correctamente y responde a los requerimientos solicitados en su momento. Esta etapa es muy importante no sólo por representar la aceptación o no del proyecto por parte del cliente o usuario final sino por las múltiples dificultades que suele presentar en la práctica, alargándose excesivamente y provocando costos no previstos. Control en producción: control del producto, analizando cómo el proceso difiere o no de los requerimientos originales e iniciando las acciones correctivas si fuesen necesarias. Cuando decimos que hay que corregir el producto, hacemos referencia a pequeñas desviaciones de los requerimientos originales que puedan llegar a surgir en el ambiente productivo. Si nuestro programa no realiza la tarea para lo cual fue creada, esta etapa no es la adecuada para el rediseño. Incluimos también en esta etapa el liderazgo, documentación y capacitación, proporcionando directivas a los recursos humanos, para que hagan su trabajo en forma correcta y efectiva. Objetivos de cada etapa: Expresión de necesidades: Esta etapa tiene como objetivo el armado de un documento en el cual se reflejan los requerimientos y funcionalidades que ofrecerá al usuario el sistema a implementar (qué, y no cómo, se va a implementar). Especificaciones: Formalizamos los requerimientos; el documento obtenido en la etapa anterior se tomará como punto de partida para esta etapa.
  • 9. Análisis: Determinamos los elementos que intervienen en el sistema a desarrollar, su estructura, relaciones, evolución temporal, funcionalidades, tendremos una descripción clara de qué producto vamos a construir, qué funcionalidades aportará y qué comportamiento tendrá. Diseño: Ya sabemos qué hacer, ahora tenemos que determinar cómo debemos hacerlo (¿cómo debe ser construido el sistema en cuestión?); definimos en detalle entidades y relaciones de las bases de datos, seleccionamos el lenguaje que vamos a utilizar, el Sistema Gestor de Bases de Datos, entre otros). Implementación: Empezamos a codificar algoritmos y estructuras de datos, definidos en las etapas anteriores, en el correspondiente lenguaje de programación o para un determinado sistema gestor de bases de datos. En muchos proyectos se pasa directamente a esta etapa; son proyectos muy arriesgados que adoptan un modelo de ciclo de vida de code & fix (codificar y corregir) donde se eliminan las etapas de especificaciones, análisis y diseño con la consiguiente pérdida de control sobre la gestión del proyecto. Debugging (Depuración): El objetivo de esta etapa es garantizar que nuestro programa no contiene errores de diseño o codificación. En esta etapa no deseamos saber si nuestro programa realiza lo que solicitó el usuario, esa tarea le corresponde a la etapa de implementación. En ésta deseamos encontrar la mayor cantidad de errores. Todas los programas contienen errores: encontrarlos es cuestión de tiempo. Lo ideal es encontrar la mayoría, si no todos, en esta etapa. También se pueden agregar pruebas de rendimiento. Validación: Esta etapa tiene como objetivo la verificación de que el sistema desarrollado cumple con los requerimientos expresados inicialmente por el cliente y que han dado lugar al presente proyecto. En muchos proyectos las etapas de validación y debugging se realizan en paralelo por la estrecha relación que llevan. Sin embargo, tenemos que evitar la confusión: podemos realizarlos en paralelo, pero no como una única etapa.
  • 10. Evolución: En la mayoría de los proyectos se considera esta etapa como Mantenimiento y evolución, y se le asigna, no sólo el agregado de nuevas funcionalidades (evolución); sino la corrección de errores que surgen (mantenimiento). En la práctica esta denominación no es del todo errónea, ya que es posible que aun luego de una etapa de debugging y validación exhaustiva, se filtren errores. Una metodología puede seguir uno o varios modelos de ciclo de vida, adaptándose a cada uno de ellos, dependiendo de las necesidades dadas en un momento determinado, es decir, el ciclo de vida indica lo que hay que obtener a lo largo del desarrollo del proyecto pero no da las indicaciones de como obtenerlo. La metodología indica los diferentes pasos y fases para obtener los distintos productos parciales y finales. En sí para el desarrollo de software, se necesita aplicar una metodología o varias metodologías, dentro de un ciclo de vida, de manera que sepamos qué hacer y como hacerlo para conseguir lo que se quiere y cumplir con las metas planteadas. Modelos de procesos en el desarrollo de software Un modelo de proceso para el desarrollo de software es una representación simplificada de pasos, representada desde una perspectiva específica. Por su naturaleza los modelos son simplificados, por lo tanto un modelo de procesos del software es una abstracción de un proceso real.
  • 11. Estos modelos tienen como propósito la producción eficaz y eficiente de un producto software que reúna los requisitos del cliente. Este proceso es intensamente intelectual, afectado por la creatividad y juicio de las personas involucradas. La mayoría de los modelos de procesos de desarrollo del software son dirigidos por el tiempo; cuanto más tarde sea, más atrás se encontrará en el proceso de desarrollo. Como todo proceso, están constituidos de pasos o fases que contienen a su vez actividades, estos modelos de desarrollo de software se basan en un ciclo de vida para desarrollar el mismo, como lo son: La necesidad de solucionar un problema (surgimiento de necesidades) Inicio del proceso (desarrollo), dentro de esta fase se encuentra la definición del proyecto, el análisis del contexto, definición de requerimientos, diseño del sistema, construcción del sistema, pruebas e implantación. Operación y mantenimiento, donde realiza ajustes y se buscan fallas. Renovación o extinción. Los procesos de software son complejos debido a que un producto de software es intangible y por lo general muy abstracto, esto dificulta la definición del producto y sus requisitos, sobre todo cuando no se tiene precedentes en productos software similares. En general este producto está compuesto por
  • 12. hardware y software. En cuanto al hardware, su producción se realiza sistemáticamente y la base de conocimiento para el desarrollo de dicha actividad está claramente definida. Respecto del software, su construcción y resultados han sido históricamente cuestionados debido a los problemas asociados Los modelos de procesos permiten al analista de sistemas desarrollar un plan de requisitos del software, permiten establecer un trabajo en forma ordenada, además que existen muchos modelos que se adaptan a las exigencias del proyecto, solo debemos saber cual nos conviene, pero lo mas importante, es que estos modelos nos llevan a presentar los proyectos al cliente de manera que éste vea su diseño y sus funciones y que la mayoría de ellos están orientados al mantenimiento. Clasificación de las Metodologías según el modelo de proceso Modelos Convencionales o Prescriptivos de Procesos Los modelos convencionales o modelos prescriptivos de procesos permiten llenar el marco de trabajo con un conjunto de tareas orientadas al desarrollo de un software. Se les llama "prescriptivos" porque prescriben un conjunto de elementos del proceso, tales como: Actividades del Marco de Trabajo. Acciones de la Ingeniería del software. Tareas. Productos de trabajo. Aseguramiento de la calidad. Mecanismos de control del cambio para cada proyecto. Estos modelos son útiles si queremos describir un conjunto único de actividades dentro de un marco de trabajo para un proceso de software. cada actividad debe contener un conjunto de acciones de ingeniería del software, y definir cada acción en cuanto a un conjunto de tareas que identifique el trabajo (y
  • 13. los productos del trabajo) que deben completarse para alcanzar las metas de desarrollo. Sin importar el modelo del proceso que se desee usar, los ingenieros de software eligen una manera tradicional para realizar el marco de trabajo genérico para el proceso, ya que estos modelos se caracterizan por ser en esencia rígidos, estrictos y los más utilizados. En las metodologías convencionales, el ciclo de vida de un proyecto, puede definirse como un ciclo de vida lineal, ya que imponen una disciplina de trabajo sobre el proceso de desarrollo del software, con el fin de conseguir un software más eficiente. Para ello, se hace énfasis en la planificación total de todo el trabajo a realizar y una vez que está todo detallado, comienza el ciclo de desarrollo del producto software. Se centran especialmente en el control del proceso, mediante una rigurosa definición de roles, actividades, artefactos, herramientas y notaciones para el modelado y documentación detallada. Además, las metodologías tradicionales no se adaptan adecuadamente a los cambios, por lo que no son métodos adecuados cuando se trabaja en un entorno, donde los requisitos no pueden predecirse o bien pueden variar. Los modelos prescriptivos de proceso definen un conjunto distinto de actividades, acciones, tareas fundamentos y productos de trabajo que es requieren para desarrollar software de alta calidad. Los ingenieros de software y sus gerentes deben adaptar un modelo prescripto de proceso a sus necesidades y después lo siguen. Además, la gente que ha solicitado el software tiene un papel por desempeñar se ejecuta el modelo de software. ¿Por qué es importante? Porque proporciona estabilidad, control y organización a una actividad que si no se controla puede volverse caótica. ¿Cuáles son los pasos? El proceso conduce a un
  • 14. equipo de software a través de un conjunto de actividades del marco de trabajo que se organizan en un flujo de proceso. ¿Cuál es un obtenido? Desde punto de vista de un ingeniero de software, los productos de trabajo son los programas, documentos y datos que se producen como consecuencia de las actividades y tareas que define el proceso. Modelo en Cascada El modelo en cascada, algunas veces llamado el ciclo de vida clásico, sugiere un enfoque sistemático, secuencial hacia el desarrollo del software, que se inicia con la especificación de requerimientos del cliente y que continúa con la planeación, el modelado, la construcción y el despliegue para culminar en el soporte del software terminado. Este modelo es aplicable en donde existen ocasiones en que los requisitos de un problema se entienden de una manera razonable y deben estar bien definidos, también cuando el trabajo fluye desde la comunicación a través del despliegue de una manera casi lineal, esta situación se encuentra a veces cuando es necesario hacer adaptaciones o mejorías bien definidas a un sistema existente. El modelo en cascada es el paradigma más antiguo para la ingeniería del software. Sin embargo, en las décadas pasadas, las criticas a este modelo de proceso han ocasionado que aun sus más fervientes practicantes hayan cuestionado su eficacia.
  • 15. Entre los problemas que algunas veces se encuentran al aplicar el modelo en cascada están: 1. Es muy raro que los proyectos reales sigan el flujo secuencial que propone el modelo. A pesar de que el modelo lineal incluye iteraciones, lo hace de manera indirecta. Como resultado, los cambios confunden mientras el equipo de proyecto actúa. 2. Con frecuencia es difícil para el cliente establecer todos los requisitos de manera explícita. El modelo en cascada lo requiere y se enfrentan dificultades al incorporar la incertidumbre natural presente en el inicio de muchos proyectos. 3. El cliente debe tener paciencia. Una versión que funcione de los programas estará disponible cuando el proyecto esté muy avanzado. Un error grave será desastroso si no se detecta antes de la revisión del programa. En un análisis interesante de proyectos reales, Bradac(1994) concluyó que la naturaleza lineal del modelo en cascada conduce a "estados de bloqueo" en los cuales algunos miembros del equipo del proyecto deben esperar a otros para terminar tareas dependientes. De hecho, el tiempo de espera puede superar el que se aplica en el trabajo productivo. El estado de bloqueo tiende a ser más común al principio y al final del proceso secuencial. En la actualidad, el trabajo del software está acelerado y sujeto a una cadena infinita de cambios (de características, funciones y contenido de la información). Con frecuencia, el modelo en cascada no es apropiado para dicho trabajo. Sin embargo, puede servir como un modelo de proceso útil en situaciones donde los requerimientos están fijos y donde el trabajo se realiza, hasta su conclusión, de una manera lineal. Las principales etapas de este modelo según Sommerville (2005) son: Análisis y definición de requerimientos. Los servicios, restricciones y metas del sistema se definen a partir de las consultas con los usuarios. Se define una especificación del sistema. Diseño del sistema y del software. El proceso de diseño del sistema divide los requerimientos en sistemas hardware o software.
  • 16. Establece una arquitectura completa del sistema. El diseño del software identifica y describe las abstracciones fundamentales del sistema software y sus relaciones. Implementación y prueba de unidades. Durante esta etapa, el diseño del software se lleva a cabo como un conjunto o unidades de programas. Integración y prueba del sistema. Los programas o las unidades individuales de programas se integran y prueban como un sistema completo para asegurar que se cumplan los requerimientos del software. Funcionamiento y mantenimiento. El sistema se instala y se pone en funcionamiento práctico. El mantenimiento implica corregir errores no descubiertos en las etapas anteriores del ciclo de vida. Modelo de Procesos Incrementables El modelo incremental combina elementos del modelo en cascada aplicado en forma iterativa. El modelo incremental aplica secuencias lineales de manera escalonada conforme avanza el tiempo en el calendario. Cada secuencia lineal produce "incrementos" del software. Por ejemplo, el software procesador de texto, desarrollado con el paradigma incremental en su primer incremento, podría realizar
  • 17. funciones básicas de administración de archivos, edición y producción de documentos; en el segundo incremento, ediciones más sofisticadas, y tendría funciones más complejas de producción de documentos; en el tercer incremento, funciones de corrección ortográfica y gramatical; y en el cuarto, capacidades avanzadas de configuración de página. Se debe tener en cuenta que el flujo del proceso de cualquier incremento puede incorporar el paradigma de construcción de prototipos que se expone más adelante. A menudo, al utilizar un modelo incremental el primer incremento es un producto esencial. Es decir, se incorporan los requisitos básicos, pero muchas características suplementarias (algunas conocidas, otras no) no se incorporan. El producto esencial queda en manos del cliente (o se somete a una evaluación detallada). Como resultado de la evaluación se desarrolla un plan para el incremento siguiente. El plan afronta la modificación del producto esencial con el fin de satisfacer de mejor manera las necesidades del cliente y la entrega de características y funcionalidades adicionales. Este proceso se repite después de la entrega de cada incremento mientras no se haya elaborado el producto completo. El modelo de proceso incremental, al igual que la construcción de prototipos y otros enfoques evolutivos, es iterativo por naturaleza. Pero a diferencia de la construcción de prototipos, el modelo incremental se enfoca en la entrega de un producto operacional con cada incremento. Los primeros incrementos son versiones “incompletas del producto final, pero proporcionan al usuario la funcionalidad que necesita y una plataforma para evaluarlo. El desarrollo incremental es útil sobre todo cuando el personal necesario para una implementación completa no está disponible. Los primeros incrementos se pueden implementar con menos gente. Si el producto esencial es bien recibido se agrega (si se requiere) más personal para implementar el incremento siguiente. Además, los incrementos se pueden planear para manejar los riesgos técnicos. Por ejemplo, un sistema grande podría requerir la disponibilidad de un hardware nuevo que está en desarrollo y cuya fecha de entrega es incierta. Sería posible planear los primeros incrementos de forma que se evite el uso de este hardware, lo que
  • 18. permitiría la entrega de funcionalidad parcial a los usuarios finales sin retrasos desordenados. Combina elementos del modelo en cascada aplicado en forma iterativa. El modelo incremental aplica secuencias lineales de manera escalonada conforme avanza el tiempo en el calendario. Cada secuencia lineal produce incrementos. Produce entregas de software pequeñas pero usables (incrementos). Cada parte se construye sobre partes ya entregadas. Modelo de desarrollo rápido de aplicaciones (DRA) El desarrollo rápido de aplicaciones (DRA) es un modelo de proceso de software incremental que resalta un ciclo de desarrollo corto. El modelo DRA es una adaptación a "alta velocidad" del modelo en cascada en el que se logra el desarrollo rápido mediante un enfoque de construcción basado en componentes. Si se entienden bien los requisitos y se limita el ámbito del proyecto, el proceso DRA permite que un equipo de desarrollo cree un "sistema completamente funcional" dentro de un periodo muy corto (por ejemplo, de 60 a 90 días). Como otros modelos de proceso, el enfoque DRA cumple con las actividades genéricas del marco de trabajo que ya se han presentado. La comunicación trabaja
  • 19. para entender el problema de negocios y las características de información que debe incluir el software. La planeación es esencial porque varios equipos de software trabajan en paralelo sobre diferentes funciones del sistema. El modelado incluye tres grandes fases — modelado de negocios, modelado de datos y modelado del proceso — y establece representaciones del diseño que sirven como base para la actividad de construcción del modelo DRA. La construcción resalta el empleo de componentes de software existente y la aplicación de la generación automática de código. Por último, el despliegue establece una base para las iteraciones subsecuentes, si éstas son necesarias. El modelo de proceso DRA se ilustra en la siguiente figura. Es obvio que las restricciones de tiempo impuestas sobre un proyecto DRA exigen un "ámbito de escalas". Si una aplicación de negocios se puede modular de forma que cada gran función pueda completarse en menos de tres meses (mediante la aplicación del enfoque ya descrito), ésta es una candidata para el DRA. Cada gran función se puede abordar mediante un equipo de DRA por separado, para después integrarlas y formar un todo. Como todos los modelos de procesos, el enfoque DRA tiene inconvenientes: 1) Para proyectos grandes, pero escalables, el DRA necesita suficientes recursos humanos para crear en número correcto de equipos DRA. 2) Si los desarrolladores y clientes no se comprometen con las actividades rápidas necesarias para completar el sistema en un marco de tiempo muy breve, los proyectos DRA fallarán. 3) Si un sistema no se puede modular en forma apropiada, la construcción de los componentes necesarios para el DRA será problemática. 4) Si el alto rendimiento es un aspecto importante, y se alcanzará al convertir interfaces en componentes del sistema, el enfoque DRA podría no funcionar. 5) El DRA sería inapropiado cuando los riesgos técnicos son altos (por ejemplo, cuando una aplicación nueva aplica muchas nuevas tecnologías). Es un modelo de proceso del software incremental que resulta un ciclo de desarrollo corto. El modelo DRA es una adaptación a alta velocidad del modelo en
  • 20. cascada en el que se logra el desarrollo rápido mediante un enfoque de construcción basado en componentes. Hace un uso intensivo de componentes reusables de software con un ciclo de desarrollo extremadamente corto. Es importante destacar que los Modelo Prescriptivos proporcionan un conjunto de pautas para el diseño, uso y rehusó de los objetos de aprendizaje, como complemento al proceso de su descripción, de una manera iterativa o incremental, desde la concepción del objeto de aprendizaje hasta su reusabilidad a corto, mediano y largo plazo. Pero el éxito en la creación de cualquier objeto de aprendizaje dependerá de la adecuada aplicación del proceso de Ingeniería de Software, cuyas etapas facilitan el desarrollo de los objetos de aprendizaje. TECNICA DE DISEÑO ESTRUCTURADO OBJETIVOS DE LA TECNICA • Obtener la estructura modular y los detalles de proceso del sistema, partiendo solamente de los «productos» obtenidos en la fase de Análisis del Sistema. • Cambiar la atención del QUE al COMO. • Obtener un diseño que no sólo «funcione», sino que también sea mantenible, mejore la reutilización y se pueda probar y entender fácilmente. • Utilizar herramientas gráficas (Diagramas de Estructura de Cuadros) para representar la estructura modular del sistema. Se trata por tanto, de conseguir que cada módulo de la estructura en árbol que se obtenga cumpla las siguientes características: 1. Módulos de pequeño tamaño. El impacto de un cambio a realizar puede ser perfectamente aislado. Si el tamaño de los módulos es reducido, una determinada modificación afectará a un número mayor de módulos, sin embargo, la cantidad de código a considerar será menor. o Independencia modular. Cuanto mayor es la independencia de un módulo es más sencillo trabajar con él, por tanto, el diseño debe reducir la compartición de ficheros, de datos, la de dispositivos, las interfases comunes con el Sistema Operativo y las llamadas, desde o hacia otros módulos.
  • 21. 2. Características de Caja Negra. La característica de Caja Negra se aplica a cualquier sistema, programa o módulo, para dar una visión exclusiva de sus entradas y salidas, sin tener en cuenta los detalles de cómo se realiza el proceso. El uso de la Caja Negra permite una visión más fácil del conjunto, posponiendo la consideración de los detalles para una etapa posterior. 3. Modelización conceptual. Un sistema será más fácil de mantener si el modelo utilizado en su diseño se ha basado en los conceptos lógicos de la organización, los cuales serán más familiares y comprensibles para el personal de mantenimiento que las descripciones físicas (equipo, organización de la unidad, cómo se realiza el trabajo en la actualidad,...). o Aislamiento de los detalles. En un sistema existen partes que reflejan la filosofía y otras partes que reflejan los detalles. Debido a que los detalles son más susceptibles de cambiar, ambas partes deben diseñarse por separado para evitar que una variación en los detalles afecte a la filosofía del sistema.