Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Diseño de software (página 2)



Partes: 1, 2

En un alto grado de abstracción una solución se
establece en términos generales con el lenguaje
del entorno del problema.

En los grados de menor abstracción se proporciona una
descripción más detallada de la
solución.

En la medida en que se cambian los diferentes grados de
abstracción se trabaja para crear abstracciones
procedimentales y de datos.

Abstracción Procedimental: Se refiere a
una secuencia de instrucciones que tiene una función
específica y limitada.

Abstracción de Datos: Es una
colección nombrada de datos que describe un objeto de
datos.

  • Acoplamiento y Cohesión.

Dentro del modelo de
diseño
es necesario que las clases de diseño colaboren con alguna
otra.

Es una medida de la interconexión entre los
módulos de la estructura de
un programa.
Depende de la complejidad de la interfaz entre los
módulos, el punto en el que se entra o se hace referencia
al módulo y qué datos pasan a través de la
interfaz. Intentamos conseguir el menor nivel posible de
acoplamiento. Las conexiones sencillas entre los módulos
hacen que el software sea más
fácil de entender y menos dado al efecto ola.

Acoplamiento: La fuerza de las
relaciones entre los módulos.

Acoplamiento de datos: está subordinado
al módulo y se accede a él por medio de una lista
convencional de argumentos a través de la cual se pasan
los datos.

Acoplamiento de marca:
cuando en vez de argumentos simples se pasa una porción de
la estructura de
datos se pasa por la interfaz del módulo.

Acoplamiento de control:
se pasa un indicador de control (una variable que controla las
decisiones en el módulo subordinado).

Acoplamiento externo: cuando los
módulos están atados a un entorno externo al
software. Por ejemplo, las I/O y los dispositivos.

Acoplamiento común: varios
módulos hacen referencia a un área global de
datos.

Acoplamiento de contenido: un módulo
hace uso de datos o de información de control mantenidos dentro de
los límites de
otro módulo. Cuando se realiza una bifurcación
hacia la mitad de otro módulo.

Una clase de
diseño cohesiva tiene un conjunto de responsabilidades
pequeño y enfocado, y aplica atributos y métodos de
manera sencilla de implementar dichas responsabilidades.

Cohesión: Como están relacionados los
elementos que conforman un modulo.

Es una extensión natural del concepto de
ocultamiento de la información. Un módulo con
cohesión realiza una sola tarea dentro de un procedimiento de
software, requiriendo poca interacción con los procedimientos
que se realizan en otras partes del programa. Un módulo
con cohesión debería hacer una sola cosa.

Siempre debemos buscar la cohesión más alta,
aunque la parte media del espectro es a menudo aceptable.

Coincidencialmente cohesivo: un módulo
que realiza un conjunto de tareas poco relacionadas las unas con
las otras.

Cohesión lógica: realiza tareas
relacionadas lógicamente (produce todas las salidas).

Cohesión temporal: contienen tareas
relacionadas por el hecho de que todas deben hacerse en el mismo
intervalo de tiempo.

Cohesión procedimental: cuando los
elementos de procesamiento están relacionados y deben
ejecutarse en un orden específico.

Cohesión de comunicación: todos los elementos
de procesamiento se concentran en un área de la estructura
de datos.

  • La descomposición y la modularización.

Los patrones de arquitectura y
diseño de software materializan la modularidad; es decir,
el software se divide en componentes con nombres independientes y
que es posible abordar en forma individual. Estos componentes
llamados módulos se integran para satisfacer los
requisitos del problema.

Modularidad: Es el atributo particular del software que
permite que un programa sea manejable de manera
intelectual.

Se divide el software en componentes identificables y
tratables por separado, denominados módulos, que
están integrados para satisfacer los requisitos del
programa.

Hay un número m de módulos que
resultarían en un costo de desarrollo
mínimo, pero no tenemos la sofisticación necesaria
para predecir m con seguridad

  • Encapsulación/Ocultar
    Información

Mediante la agrupación y empaquetado de
los elementos y los detalles internos de una abstracción,
haciendo que estos detalles sean inaccesibles.

  • Separación de la interfaz y la
    aplicación

La separación de la interfaz y la
aplicación implica la definición de un elemento
especificando una interfaz pública, conoce a los clientes, aparte
de los detalles de cómo se realiza el componente.

  • Suficiencia, integridad y primitivismo.

Los métodos asociados con una clase de diseño
deben enfocarse en el cumplimiento de un servicio para
la clase.

Temas Claves en
el Diseño de Software

A la hora de diseñar software hay una serie de
cuestiones fundamentales que se deben tomar en cuenta. Algunos
relacionados con la calidad
así como los concernientes a la dirección como por ejemplo el rendimiento.
Además de cómo se descomponen, organizan los
paquetes de los componentes de software.

Esto es tan fundamental que en todo el proceso de
diseño que se debe abordar de una manera u otra.

"[Aspectos] no suelen ser unidades de
descomposición funcional del software, sino más
bien a las propiedades que afectan el desempeño o la semántica de los componentes en el sistema en
diferentes maneras "
(Kic97).

  • Concurrencia:

La forma de descomponer el software en los procesos,
tareas e hilos tratar relacionarlos con la eficiencia, la
atomicidad, la sincronización, y demás cuestiones
de programación.

  • Control y manejo de Eventos

Cómo organizar los datos y el controlar el flujo,
manejo de reactivo y temporal de los acontecimientos a
través de diversos mecanismos, tales como la
invocación implícita de llamadas y sus
intentos.

  • Distribución de Componentes

Cómo distribuir el software en el hardware, cómo los
componentes se comunican, cómo se puede usar una
plataforma al utilizarse para hacer frente a software
heterogéneos.

El análisis y la gestión
del riesgo son una
serie de pasos que ayudan al equipo del software a comprender y a
gestionar la incertidumbre.

Un riesgo es un problema potencial que puede ocurrir o no.
Pero sin tener en cuenta el resultado, realmente es una

buena idea es identificarlo, evaluar su

probabilidad de aparición, estimar

su impacto, y establecer un plan de
contingencia por si ocurre el problema.

Una estrategia
considerablemente más inteligente para el control del
riesgo es ser proactivo. La estrategia proactiva empieza mucho
antes de que comiencen los trabajos técnicos. Se
identifican los riesgos
potenciales, se evalúa su probabilidad y
su impacto y se establece una prioridad según su
importancia. Después, el equipo de Software establece un
plan para controlar el riesgo. El primer objetivo es
evitar el riesgo, pero como no se pueden evitar todos los
riesgos, el equipo trabaja para desarrollar un plan de
contingencia que le permita responder de una manera eficaz y
controlada.

Estructura y
Arquitectura de Software

En el sentido estricto, una arquitectura de software es "Una
descripción de los subsistemas y componentes de un sistema
de software y las relaciones que existen entre ellos" (Bus96:
c6).

A mediados de 1990, la arquitectura empezó a emerger
como una disciplina
más amplia que implica el estudio de las estructuras y
las arquitecturas de software en una forma más
genérica, dando ideas interesantes sobre diseño del
software en diferentes niveles de abstracción.

Algunos de estos conceptos son muy útiles durante el
diseño arquitectónico (estilo de arquitectura), de
software específico, así como en su diseño
de detalle (nivel inferior, patrones de diseño).
Así también para el diseño de
sistemas genéricos lo que lleva a la concepción
de las familias de los programas
(conocidas como líneas de productos). La
mayoría de estos conceptos pueden verse como intentos de
describir, por tanto la reutilización del diseño
genérico del conocimiento.

El desarrollo de un sistema con gran cantidad de software
requiere que este sea visto desde diferentes perspectivas.
Diferentes usuarios (usuario final, analistas, desarrolladores,
integradores, jefes de proyecto…)
siguen diferentes actividades en diferentes momentos del ciclo de vida
del proyecto, lo que da lugar a las diferentes vistas del
proyecto, dependiendo de qué interese más en cada
instante de tiempo.

La arquitectura es el conjunto de decisiones significativas
sobre:

  • La organización del sistema

  • Selección de elementos estructurales y sus
    interfaces a través de los cuales se constituye el
    sistema.

  • El Comportamiento, como se especifica las colaboraciones
    entre esos componentes.

  • Composición de los elementos estructurales y de
    comportamiento en subsistemas progresivamente más
    grandes.

  • El estilo arquitectónico que
    guía esta organización: elementos
    estáticos y dinámicos y sus interfaces, sus
    colaboraciones y su composición.

  • Estructuras Arquitectónicas y Puntos de Vista.

Durante las diferentes facetas o etapas del software deben ser
descritos y documentados.

"Una vista representa un aspecto parcial de la
arquitectura de un software mostrando las propiedades del sistema
de software".

La arquitectura que no debe centrarse únicamente en la
estructura y en el comportamiento, sino que abarque temas como el
uso, funcionalidad, rendimiento, capacidad de adaptación,
reutilización, capacidad para ser comprendida,
restricciones, compromisos entre alternativas, así como
aspectos estéticos. Para ello se sugiere una arquitectura
que permita describir mejor los sistemas desde
diferentes vistas, donde cada una de ellas es una
proyección de la
organización y la estructura centrada en un aspecto
particular del sistema.

La vista de casos de uso comprende la
descripción del comportamiento del sistema tal y como es
percibido por los usuarios finales, analistas y encargados de las
pruebas y se
utilizan los diagramas de
casos de uso para capturar los aspectos estáticos mientras
que los dinámicos son representados por diagramas de
interacción, estados y actividades.

La vista de diseño comprende las
clases, interfaces y colaboraciones que forman el vocabulario del
problema y de la solución. Esta vista soporta
principalmente los requisitos funcionales del sistema, o sea, los
servicios que
el sistema debe proporcionar. Los aspectos estáticos se
representan mediante diagramas de clases y objetos y los aspectos
dinámicos con diagramas de interacción, estados y
actividades.

La vista de procesos comprende los hilos y
procesos que forman mecanismos de sincronización y
concurrencia del sistema cubriendo el funcionamiento, capacidad
de crecimiento y el rendimiento del sistema. Con UML, los aspectos
estáticos y dinámicos se representan igual que en
la vista de diseño, pero con el énfasis que aportan
las clases activas, las cuales representan los procesos y los
hilos.

La Vista de implementación comprende
los componentes y los archivos que un
sistema utiliza para ensamblar y hacer disponible el sistema
físico. Se ocupa principalmente de la gestión de
configuraciones de las distintas versiones del sistema. Los
aspectos estáticos se capturan con los diagramas de
componentes y los aspectos dinámicos con los diagramas de
interacción, estados y actividades.

La vista de despliegue de un sistema contiene
los nodos que forman la topología hardware sobre la que se ejecuta
el sistema. Se preocupa principalmente de la distribución, entrega e instalación
de las partes que constituyen el sistema. Los aspectos
estáticos de esta vista se representan mediante los
diagramas de despliegue y los aspectos dinámicos con
diagramas de interacción, estados y actividades.

  • Patrones de Diseño (Patrones Micro
    arquitectónicos).

"Cada patrón describe un problema que ocurre una
y otra vez en nuestro entorno, así como la solución
a este problema, de tal ,modo que esta solución se pueda
aplicar esta solución un millón de veces, sin hacer
lo mismo dos veces"
Christopher Alexander.

Los patrones de diseño hacen que sea más
fácil reutilizar buenos diseños y arquitecturas. Al
expresar como patrones de diseño técnicas
que ya han sido probadas, las estamos haciendo más
accesibles para los desarrolladores de nuevos sistemas. Los
patrones de diseño nos ayudan a elegir las alternativas
del diseño que hacen que un sistema sea reutilizable, y
evitar aquellas que dificultan dicha reutilización.

Los patrones de creación tienen que ver con el proceso
de creación, estructural o de comportamiento.

Calidad en el
análisis, diseño y
evaluación del
software

  • Calidad de atributos

Varios atributos son generalmente considerados importantes que
permiten obtener un diseño de software con alta calidad,
existen algunas características que son ( mantenible,
portabilidad, probable) y (correctos, robusto). Cabe destacar que
existen diferencias entre calidad de atributos que son
(rendimiento, seguridad,
funcionalidad y usabilidad), y los que son (portabilidad,
reutilización, integralidad y pruebas), y las
características relacionadas con la arquitectura
(integridad conceptual, correcto, completo).

  • Calidad en análisis y evaluación de
    técnicas

Varias técnicas y herramientas
pueden ayudar a mejorar la calidad de diseño de
software:

Diseño de software.- Para este tipo se puede aplicar al
diseño de software informal y semi informal tomando un
grupo base,
técnicas que permiten verificar la calidad de
diseño de los artefactos que pueden ser (vista de la
arquitectura, diseño -inspección, técnicas y
requerimientos).

Análisis estático.- Para este tipo se puede
aplicar al diseño de software informal y semi informal que
permite evaluar algo simple utilizando análisis
automáticos de casos de pruebas.

Simulación y prototipos.- Son técnicas
dinámicas que permiten evaluar un diseño la
característica de simulación, o la flexibilidad del
prototipo.

Diseño de
software

Muchas notaciones y lenguajes existen para representar el
diseño de artefactos de software. Algunos describen un
diseño estructural organizado, otros representan el inicio
del software. Estas notaciones son generalmente usadas durante un
diseño natural y se pueden usar durante ambos casos. Una
representan notaciones que son usadas en el contexto de
específicos métodos en las estrategias de
diseño y métodos de sub áreas, pero estas
categorías son categorizadas en notaciones para describir
la estructura estática y
la dinámicas vistas.

Software diseño estrategias y
métodos

Existen varias estrategias en el desarrollo del software que
permiten mejorar el diseño de procesos, a diferencia con
las estrategias generales, métodos que son
específicos en generar estrategias y proveen
notación para ser usados en

Métodos y descripción del proceso. Los
métodos utilizados son medias que permiten transferir
conocimiento y como un framework que permiten testear la ingeniería del software.

  • Estrategias generales

Las estrategias generales son usadas en el diseno de procesos
son dividios y refinados permitiendo lograr una alta estracion de
datos y información para esto utilizando
heurísticas usando para esto patentes y patentes de
lenguajes

Herramienta
(gsBase(ie))

Es una herramienta de desarrollo y explotación de
propósito general que se puede utilizar para crear
soluciones
para ingeniería, cálculo,
gestión, diseño
gráfico, educación, etc.
Incluye novedosas ideas originales que le harán su
trabajo mucho
más fácil.

Permite construir soluciones integrales
para empresas
(ERP's,
CRM's, B2B,
B2C, …)
minimizando el tiempo invertido, recursos hardware
y costes de desarrollo.

La comunicación entre cliente y
servidor se
puede establecer por redes locales internas,
Internet o redes
privadas. Los recursos mínimos de comunicaciones
necesarios hacen posible usar distintas tecnologías de
comunicación: ADSL, GPRS,
UMTS, RTB, Frame Relay,
3G, RDSI, etc.

Para diseñar, incluye un IDE (Integrated
Development Environment) que permite crear y modificar
aplicaciones de una forma rápida y ágil a la par
que dar soporte a instalaciones

El sistema de programación gsBase incorpora una idea
novedosa y original (ventanas dinámicas) que permite, sin
tener conocimientos de programación
orientada a objetos, realizar o diseñar programas con
dichas atribuciones de una forma elegante y resolver problemas de
gran complejidad de una forma muy fácil.

Todos los desarrollos realizados son reutilizables y el
sistema permite que en el desarrollo de aplicaciones, participen
grupos de
personas (trabajo en grupo cooperativo). La claridad del lenguaje de
programación utilizado permite, sin problemas, que un
técnico pueda interpretar rápidamente lo que otro
ha desarrollado (garantizado).

Para la definición de ventanas dinámicas se usa
el nuevo concepto de grupos o agrupaciones de controles. Los
campos de entrada, botones, textos,. de una determinada ventana
de gestión de archivo se
definen por grupos, no de forma individual como hacen la
mayoría de lenguajes de
programación, en los problemas del mundo real los
controles casi siempre van agrupados (por ejemplo para una ficha
de clientes: datos de identificación, datos
económicos, condiciones de venta, etc).

Gran parte del trabajo de diseño de aplicaciones
consiste en la creación de ventanas para la gestión
de archivos (creación de registros,
modificación, selección,
borrado, consulta, etc.). gsBase estandariza y generaliza este
tipo de ventanas haciendo su diseño inmediato, el sistema
incluye un potente control de grid, controles de entrada, listas,
árboles, chek-boxes, cuadros de radio, mensajes,
imágenes, botones, textos, sliders,
etc.

Monografias.com

La potente arquitectura cliente/servidor gsBase permite
el trabajo
concurrente de miles de usuarios, hablamos de usuarios conectados
de forma permanente al servidor y realizando procesos
simultáneos (no se trata de conexiones esporádicas
como ocurre en servidores
web). gsBase
es por tanto, la mejor solución para Medianas y Grandes
Empresas, por su escalabilidad, potencia,
robustez, seguridad  y necesidades mínimas de
hardware y comunicaciones.

Los resultados e informes
gráficos en gsBase tienen una calidad y
potencia excepcional. Diagramas de barras, de tarta, de
líneas o de áreas son construidos parametrizando
una simple función en gsBase. La integración de dichos elementos en
ventanas, informes o documentos es muy
sencilla y funcional.

Monografias.com

  • Características.

gsBase es un sistema de desarrollo de software para crear
aplicaciones cliente-servidor

Crear todo tipo de aplicaciones para empresas y administración pública

Diseñar sistemas centralizados para trabajo en local
y/o remoto o por Internet

 Las instalaciones de sus clientes finales podrán
ser de 1 a miles de usuarios concurrentes (Pymes o grandes
empresas).

 gsBase es la mejor herramienta para crear soluciones
ASP (Alquiler
de Software).

Monografias.com

  • Ventajas.

  • Facilidad en diseño: cientos de ideas nuevas para
    el desarrollo.

  • Tiempo mínimo de aprendizaje para el
    desarrollo.

  • Amplios recursos para el aprendizaje en el
    diseño.

  • Posibilidad de partir de aplicaciones ya diseñadas.
    Una vez adquirido el diseño, no pagará
    royalties.

  • Evaluación de las aplicaciones on-line trabajando
    con nuestros servidores de demostración el tiempo que
    necesite.

  • Posibilidad de dirección de proyectos por parte de
    nuestros ingenieros

  • Accesibilidad a sus datos y aplicaciones a nivel mundial
    para ejecución o mantenimiento

  • Sistema seguro y automatizado de distribución de
    sus aplicaciones.

  • Mínimos recursos de hardware y comunicaciones.

  • Facilidad de instalación y mantenimiento.

  • Sistema tolerante a fallos.

  • Trabajo en multi-idioma del sistema y sus
    aplicaciones.

  • Posibilidad de vender sus aplicaciones y módulos de
    aplicaciones diseñados.

  • Publicación en gsBase Resource Center.

  • Gestión de licencias automática, es posible
    deslicenciar en un ordenador y volver a licenciar en
    otro.

  • Los técnicos de desarrollo no son imprescindibles:
    lo que uno ha diseñado, puede mantenerlo otro sin
    problemas.

Bibliografía

[1] Swebok_Ironman_June_23_ 2004

[2] http://www.info-ab.uclm.es/asignaturas/42530/pdf/M1tema2.pdf

[3]
http://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_software

[4] http://www.monografias.com/trabajos28/proyecto-uml/proyecto-uml.shtml

[5] PRESSMAN Roger S., 2005. Ingeniería de
Software. Un enfoque práctico. Sexta edición. 2005, Estados
Unidos.

 

 

 

 

Autor:

Ángel Miguel Macas

Jorge Fierro.

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter