Laura Patricia Pinto Prieto Ingeniera de sistemas.

Slides:



Advertisements
Presentaciones similares
DISEÑO DE TRANSFERENCIA ENTRE REGISTROS
Advertisements

MODELOS ORIENTADOS A OBJETOS
INGENIERÍA DE SOFTWARE Introducción Arquitectura de Software
Fundamentos de Diseño de Software INFT.1
También conocido como Diseño Lógico Rodrigo Salvatierra Alberú.
ALGORITMOS.
Diseño y Arquitectura sobre productos de software
Resolución de Problemas Algoritmos y Programación
Diseño orientado al flujo de datos
Fundamentos de Ingeniería de Software
Tipos de Datos Abstractos Modularidad
Guia Diseño Robert Echeverria
Introducción a la programación orientada a aspectos.
Tipo de Dato Abstracto Tipos de datos:
CONCEPTOS Y PRINCIPIOS DE DISEÑO
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno.
Administración de Procesos de Pruebas
M.S.C. Ivette Hernández Dávila
METODOLOGIA DE LA PROGRAMACION
Fundamentos de Programación
 El termino OO, significa que el software es organizado como una colección de objetos. Un objeto es un paquete de software que contiene datos y procedimientos.
Modelado Arquitectónico
DEPARTAMENTO DE INGENIERÍA INFORMÁTICA
Diseño del Software Diseño de datos Diseño arquitectónico
Actividad 6. Requisitos del software, referente a la estructura y base de datos. M.C. Juan Carlos Olivares Rojas Syllabus May,
OMAR SANCHEZ ROBLES HECTOR PEREZ GARCIA. “Sistemas de cómputo compuesto por un gran número de CPU´s conectados mediante una red de alta velocidad”, Tanenbaum.
Arquitectura de una aplicación
Programación Orientada a Aspectos (POA)
Ingeniería de Software Orientado a Objetos
1.1 Concepto y terminología
DISEÑO DE SOFTWARE 1ª. Parte
Fundamentos de programación
Diseño e Implementación
TEMA 5. Estructura organizacional: dimensiones y principales configuraciones estructurales. UNED, Tomo II, pp ,
5.3 APROXIMACIONES AL DISEÑO
PROGRAMACIÓN PROCEDIMENTAL
Diseño de algoritmos La computadora puede realizar procesos y darnos resultados, sin que tengamos la noción exacta de las operaciones que realiza. Con.
Comunicación y Multimedia
CONCEPTOS BÁSICOS Diseño de Sistemas.
Organización y Estructuración de Datos
Universidad Central de Venezuela Facultad de Ciencias Postgrado en Ciencias de la Computación Sistemas Distribuidos Albany Márquez.
Diseño: Fundamento y Documentación ISF5501 Ingeniería de Software Semana 13/2.
Metodología para la construcción de programas
Importancia en la efectividad del:
Diseño de Software y su Proceso
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
VISIÓN GENERAL DE LA IS Con independencia del modelo de proceso hay tres fases genéricas: Fase de definición Fase de desarrollo Fase de mantenimiento Cada.
Explica con tus propias palabras
Facultad de Ingeniería
Metodología de la programación
Diseño de Sistemas.
Diseño del Software e Ingeniería del Software
Diseño Orientado al Flujo de Datos
Elaboración de algoritmos usando lógica de programación
TIPOS DE PRUEBAS DEL SOFTWARE
UML.
Tecnologías Cliente / Servidor Capitulo II Richard Jiménez V. clienteserver.wordpress.com.
Unidad 2: Análisis Estructurado de sistemas
Un requerimiento es una condición o capacidad a la que el sistema (siendo construido) debe conformar [ Rational ]. Un requerimiento de software puede.
Proceso de desarrollo de Software
Arquitectura de una aplicación Arquitectur a: desarrolla un plan general del sistema, asegurando que las necesidades de los usuarios sean atendidas. Ingeniería.
República Bolivariana de Venezuela Universidad Nacional Experimental Politécnica de la Fuerza Armada (UNEFA) Carrera: Ingeniería de Sistemas Cátedra: Análisis.
CICLO DE VIDA DE UN SOFTWARE. Es el conjunto de los programas de cómputo, procedimientos, reglas, documentación y datos asociados, que forman parte de.
Fundamentos de Ingeniería de Software
Objetivos de la prueba Los objetivos principales de realizar una prueba son: Detectar un error. Tener un buen caso de prueba, es decir que tenga más probabilidad.
Presentación De UML Lenguaje estándar para escribir planos de software Se usa para visualizar, especificar, construir y documentar los artefactos de un.
La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible.
Entregables del Proyecto
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Profesor: Jesús Chaparro Bachilleres: Perez, emibeliz Prada, Rainer Villahermosa, José Abril 2014.
Transcripción de la presentación:

Laura Patricia Pinto Prieto Ingeniera de sistemas. Conceptos de diseño Laura Patricia Pinto Prieto Ingeniera de sistemas.

Abstracción La noción psicológica de «abstracción» permite concentrarse en un problema a algún nivel de generalización sin tener en consideración los datos irrelevantes de bajo nivel; la utilización de la abstracción también permite trabajar con conceptos y términos que son familiares en el entorno del problema sin tener que transformarlos en una estructura no familiar.. . A medida que nos adentramos en el proceso de diseño, se reduce el nivel de abstracción. Finalmente el nivel de abstracción más bajo se alcanza cuando se genera el código fuente.

Abstracción Una abstracción procedimental es una secuencia nombrada de instrucciones que tiene una función específica y limitada. Una abstracción de datos es una colección nombrada de datos que describe un objeto de datos. La abstracción de control es la tercera forma de abstracción que se utiliza en el diseño del software. Al igual que las abstracciones procedimentales y de datos, este tipo de abstracción implica un mecanismo de control de programa sin especificar los datos internos.

Refinamiento En cada paso (del refinamiento), se descompone una o varias instrucciones del programa dado en instrucciones más detalladas. Esta descomposición sucesiva o refinamiento de especificaciones termina cuando todas las instrucciones se expresan en función de cualquier computadora subyacente o de cualquier lenguaje de programación.. . De la misma manera que se refinan las tareas, los datos también se tienen que refinar, descomponer o estructurar, y es natural refinar el programa y las especificaciones de los datos en paralelo.

Modularidad El software se divide en componentes nombrados y abordados por separado, llamados frecuentemente módulos, que se integran para satisfacer los requisitos del problema. El software monolítico no puede ser entendido fácilmente por el lector. «Divide y vencerás» más fácil resolver un problema complejo cuando se rompe en piezas manejables.

¿Cómo se define un módulo con un tamaño adecuado? Criterio Definición Capacidad de descomposición modular Proporciona un mecanismo sistemático para descomponer el problema en subproblemas, reducirá la complejidad de todo el problema. Capacidad de empleo de componentes modulares. Permite ensamblar los componentes de diseño (reusables) existentes en un sistema nuevo. 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. Protección modular. Si dentro de un módulo se produce una condición aberrante y sus efectos se limitan a ese módulo, se minimizará el impacto de los efectos secundarios inducidos por los errores.

Arquitectura del software La arquitectura del software alude a la «estructura global del software y a las formas en que la estructura proporciona la integridad conceptual de un sistema» En su forma más simple, la arquitectura es la estructura jerárquica de los componentes del programa (módulos), la manera en que los componentes interactúan y la estructura de datos que van a utilizar los componentes.

Shaw y Garlan [SHA95a] describen un conjunto de propiedades que deberán especificarse como parte de un diseño arquitectónico: Propiedades estructurales. Este aspecto de la representación del diseño arquitectónico define los componentes de un sistema (por ejemplo, módulos, objetos, filtros) y la manera en que esos componentes se empaquetan e interactúan unos con otros. Propiedades extra-funcionales. La descripción del diseño arquitectónico deberá ocuparse de cómo la arquitectura de diseño consigue los requisitos para el rendimiento, capacidad, fiabilidad, seguridad, capacidad de adaptación y otras características del sistema.

Familias de sistemas relacionados Familias de sistemas relacionados. El diseño arquitectónico deberá dibujarse sobre patrones repetibles que se basen comúnmente en el diseño de familias de sistemas similares. En esencia, el diseño deberá tener la habilidad de volver a utilizar los bloques de construcción arquitectónicos.

Modelos del diseño arquitectónico Los modelos estructurales representan la arquitectura como una colección organizada de componentes de programa. Los modelos del marco de trabajo aumentan el nivel de abstracción del diseño en un intento de identificar los marcos de trabajo (patrones) repetibles del diseño arquitectónico que se encuentran en tipos similares de aplicaciones. Los modelos dinámicos tratan los aspectos de comportamiento de la arquitectura del programa, indicando cómo puede cambiar la estructura o la configuración del sistema en función de los acontecimientos externos. Los modelos de proceso se centran en el diseño del proceso técnico de negocios que tiene que adaptar el sistema. Los modelos funcionales se pueden utilizar para representar la jerarquía funcional de un sistema.

Jerarquía de control Representa la organización de los componentes de programa (módulos) e implica una jerarquía de control. No representa los aspectos procedimentales del software.

División estructural La división vertical La división Horizontal Sugiere que dentro de la estructura de programa el control (toma de decisiones) y el trabajo se distribuyan de manera descendente. Los módulos del nivel superior deberán llevar a cabo funciones de control y no realizarán mucho trabajo de procesamiento. Los módulos que residen en la parte inferior de la estructura deberán ser los trabajadores, aquellos que realizan todas las tareas de entrada, proceso y salida. La división horizontal divide el software en funcionalidades, proporciona diferentes ventajas: proporciona software más fácil de probar conduce a un software más fácil de mantener propaga menos efectos secundarios proporciona software más fácil de ampliar Desventaja: suele hacer que los datos pasen a través de interfaces de módulos y que puedan complicar el control global del flujo del programa

La estructura de datos Es una representación de la relación lógica entre elementos individuales de datos. Como la estructura de la información afectará invariablemente al diseño procedimental final, la estructura de datos es tan importante como la estructura de programa para la representación de la arquitectura del software.

La estructura de programa La estructura de programa define la jerarquía de control sin tener en consideración la secuencia de proceso de decisiones. El procedimiento de software se centra en el procesamiento de cada módulo individualmente. El procedimiento debe proporcionar una especificación precisa de procesamiento, incluyendo la secuencia de sucesos, los puntos de decisión exactos, las operaciones repetitivas e incluso la estructura/organización de datos.

Ocultación de información En otras palabras, los módulos deberán especificarse y diseñarse de manera que la información (procedimiento y datos) que está dentro de un módulo sea inaccesible a otros módulos que no necesiten esa información.

Diseño modular efectivo

Independencia funcional Diseñar el software de manera que cada módulo trate una subfunción de requisitos y tenga una interfaz sencilla cuando se observa desde otras partes de la estructura del programa. Los módulos independientes son más fáciles de mantener (y probar) porque se limitan los efectos secundarios originados por modificaciones de diseño/código; porque se reduce la propagación de errores; y porque es posible utilizar módulos usables

Independencia funcional La independencia se mide mediante dos criterios cualitativos: la cohesión y el acoplamiento. La cohesión es una medida de la fuerza relativa funcional de un módulo. la cohesión es una indicación cualitativa del grado que tiene un módulo para centrarse en una sola cosa. Un módulo cohesivo deberá (idealmente) hacer una sola cosa.

cohesión Los niveles moderados de cohesión están relativamente cerca unos de otros en la escala de independencia modular. Cuando los elementos de procesamiento de un módulo están relacionados, y deben ejecutarse en un orden específico, existe cohesión procedimental. Cuando todos los elementos de procesamiento se centran en un área de una estructura de datos, tenemos presente una cohesión de comunicación. Una cohesión alta se caracteriza por un módulo que realiza una única tarea.

acoplamiento El acoplamiento es una medida de la independencia relativa entre los módulos. El acoplamiento es una medida de interconexión entre módulos dentro de una estructura de software. El acoplamiento depende de la complejidad de interconexión entre los módulos, el punto donde se realiza una entrada o referencia a un módulo, y los datos que pasan a través de la interfaz. En el diseño del software, intentamos conseguir el acoplamiento más bajo posible. Una conectividad sencilla entre los módulos da como resultado un software más fácil de entender y menos propenso a tener un «efecto ola» [STE75] causado cuando ocurren errores en un lugar y se propagan por el sistema.

Tipos de acoplamiento

Tarea Leer Heuristica para el diseño de una modularidad efectiva. Numeral 13.6 del libro Rogger Pressman, 5 edición.