2. Introducción
Para diseñar un sistema es necesario
seguir una serie de pasos fundamentales
para lograrlo y así conseguir un producto
optimo para su uso, de la misma manera
es necesario analizar los requerimientos y
utilizar las técnicas apropiadas para
comenzar su desarrollo.
3. Fundamentos del Diseño de
Software
Conceptos generales de diseño.
El software no es el único campo donde el diseño se encuentra inmiscuido.
En general podemos ver el diseño como una forma para resolución de
problemas. El problema sin solución definitiva es interesante en términos
de comprensión del diseño. Un numero de otras nociones y conceptos son
también de interés en la comprensión del diseño en su sentido general,
objetivos, limitaciones, alternativas, representaciones y soluciones.
Contexto del diseño de software.
El diseño del software se encuentra en el núcleo técnico de la respectiva
ingeniería y se aplica de manera independiente al modelo de software que
se utilice. Una vez que se analizan y especifican los requisitos, el diseño
del software es la última acción de la ingeniería correspondiente dentro de
la actividad del modelado, la cual establece una plataforma para la
construcción (generación de código y prueba).
4. Fundamentos del Diseño de
Software
Proceso del Diseño de Software.
Diseño Arquitectónico.
El diseño arquitectónico puede representarse al usar uno o más de
muchos modelos diferentes. Los modelos estructurales
representan la arquitectura como una colección organizada de
componentes del programa. Los modelos del marco de trabajo
repetible incrementan el grado de abstracción del diseño al intentar
identificar marcos de trabajo repetibles del diseño arquitectónico
que se encuentran en tipos de aplicaciones similares.
Diseño Detallado.
El diseño detallado se describe el comportamiento específico de
estos componentes.
5. Fundamentos del Diseño de
Software
Técnicas Permitidas.
Abstracción
Abstracción es el proceso o el resultado de la generalización de la
reducción del contenido de la información de un concepto o un fenómeno
observable, por lo general, con el fin de conservar únicamente la
información que es relevante para un propósito en particular. Cuando se
considera una solución modular a cualquier problema se pueden exponer
muchos grados de abstracción.
Acoplamiento y Cohesión.
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.
6. Fundamentos del Diseño de
Software
Acoplamiento: La fuerza de las relaciones entre los módulos.
Cohesión: Como están relacionados los elementos que conforman un modulo.
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.
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
Separación de la interfaz y la aplicación
Suficiencia, integridad y primitivismo.
7. Fundamentos del Diseño de
Software Orientado a Objeto
Es una fase de la metodología orientada a objetos para el
desarrollo de software. Su uso induce a desarrolladores y
programadores a pensar en términos de objetos, en vez de
procedimientos, cuando planifican el código.
Un objeto agrupa datos encapsulados y procedimientos para
representar una entidad. La "interfaz del objeto", esto es, las
formas de interactuar con el objeto, también se definen en
esta etapa. Un programa orientado a objetos se caracteriza
por la interacción de esos objetos.
El diseño orientado a objetos es la disciplina que define los
objetos y sus interacciones para resolver un problema de
negocio que fue identificado y documentado durante el
análisis orientado a objetos (AOO).
8. Garantía de Calidad de
Software
La garantía de calidad del software (SQA, Software Quality
Assurance GCS, Gestión de calidad del software) es una actividad
de protección que se aplica a lo largo de todo el proceso del
software. La SQA engloba:
Un enfoque de gestión de calidad.
Tecnología de ingeniería del software efectiva (métodos y
herramientas).
Revisiones técnicas formales que se aplican durante el proceso
del software.
Una estrategia de prueba multi-escalada.
El control de la documentación del software y de los cambios
realizados.
Un procedimiento que asegure un ajuste a los estándares de
desarrollo del software (cuando sea posible).
Mecanismos de medición y de generación de informes.
9. Técnicas de Prueba de
Software
Son las investigaciones empíricas y técnicas cuyo objetivo es proporcionar información
objetiva e independiente sobre la calidad del producto a la parte interesada o stakeholder.
Es una actividad más en el proceso de control de calidad.
Las pruebas son básicamente un conjunto de actividades dentro del desarrollo de software.
Dependiendo del tipo de pruebas, estas actividades podrán ser implementadas en cualquier
momento de dicho proceso de desarrollo.
Caja Blanca: se centran en los detalles procedimentales del software, por lo que su
diseño está fuertemente ligado al código fuente.
Caja Negra: En teoría de sistemas y física, una caja negra es un elemento que se
estudia desde el punto de vista de las entradas que recibe y las salidas o respuestas
que produce, sin tener en cuenta su funcionamiento interno. En otras palabras, de
una caja negra nos interesará su forma de interactuar con el medio que le rodea (en
ocasiones, otros elementos que también podrían ser cajas negras) entendiendo qué es
lo que hace, pero sin dar importancia a cómo lo hace.
Testing Aleatorio: En el desarrollo de software, el testing es una de las tareas más
importantes, pero también es compleja y no siempre adoptada correctamente.
10. Mantenimiento del
Software
En ingeniería del software, el mantenimiento de software es la modificación de un producto
de software después de la entrega, para corregir errores, mejorar el rendimiento, u otros
atributos. El mantenimiento del software es una de las actividades más comunes en la
ingeniería de software.
El mantenimiento de software es también una de las fases en el ciclo de vida de desarrollo
de sistemas (SDLC, sigla en inglés de system development life cycle), que se aplica al
desarrollo de software. La fase de mantenimiento es la fase que viene después del
despliegue (implementación) del software en el campo.
A finales de los años 1970, una famosa y ampliamente citada estudio de encuesta por
Gabriela castillo, expuso la muy alta fracción de los costos del ciclo de vida que estaban
siendo gastados en mantenimiento. Clasificaron las actividades de mantenimiento en cuatro
clases:
Adaptable – modificar el sistema para hacer frente a cambios en el ambiente del
software (DBMS, OS).
Perfectivo – implementar nuevos, o cambiar requerimientos de usuario referentes a
mejoras funcionales para el software.
Correctivo – diagnosticar y corregir errores, posiblemente los encontrados por los
usuarios2.
Preventivo – aumentar la capacidad de mantenimiento de software o fiabilidad para
evitar problemas en el futuro.
11. Fundamentos del Análisis de
Requerimientos
Es el conjunto de técnicas y procedimientos
que nos permiten conocer los elementos
necesarios para definir un proyecto de
software. Es la etapa más crucial del
desarrollo de un proyecto de software.
El análisis de requerimientos puede dividirse
en cuatro áreas:
1.- Reconocimiento del problema
2.- Evaluación y síntesis
3.- Especificación
4.- Revisión.
12. Principios
Baltzer y Goldman proponen ocho principios para una buena
especificación:
Separar funcionalidad de implementación.
Se necesita un lenguaje de especificación de sistemas
orientado al proceso.
Una especificación debe abarcar el sistema del cual el
software es una componente.
Una especificación debe abarcar el entorno en el que el
sistema opera.
Una especificación de sistema debe ser un modelo
cognitivo.
Una especificación debe ser operacional.
La especificación del sistema debe ser tolerante con la
incompletitud y aumentable.
Una especificación debe ser localizada y débilmente
acoplada.
13. Métodos de Análisis de
Requerimientos
Descomposición funcional
La descomposición funcional se refiere al proceso de identificar y resolver
las relaciones funcionales en sus partes constituyentes, de tal forma que la
función global pueda ser reconstruida a partir de sus partes.
Especificación vía Sentencias Textuales
Es la forma tradicional de la especificación de requerimientos de software.
Modelado del proceso
Comprende la elaboración de diagramas de flujo de procesos
(Flujogramas) a partir de los requerimientos del software.
Modelo de dominio
En Ingeniería de software, en análisis de dominio consiste en analizar
sistemas o software relacionados en un dominio, con la finalidad de
encontrar sus partes comunes y partes que los diferencian.
14. Métodos de Análisis de
Requerimientos
Casos de Uso
En el Lenguaje de Modelado Unificado (UML), un caso de uso es una
secuencia de interacciones entre un sistema y alguien o algo que usa
alguno de sus servicios.
Checklists
La lista de chequeo (Checklist) consiste en una serie de preguntas o
revisiones que se realizan sobre los requerimientos de software, que nos
sean presentados de forma escrita.
Inspección
Revisión no destructiva de los requerimientos de software.
Prototipos
Consiste en elaborar representaciones visuales (interfaz gráfica con el
usuario) de los requerimientos de software.
15. Conclusión
De esta manera determinamos las
distintos tipo de soporte para un software
ya sea preventivo o correctivo, donde se
toma en cuenta una serie de pasos a
seguir para tener un control de calidad al
momento de desarrollar un software.
16. Bibliografía
Como afirma James Martin(2015) en su
libro ‘‘enfoque y diseño de un sistema
orientado a objeto’’ señala que en el
mundo orientado a objetos, el análisis
se realiza al estudiar los objetos en un
ambiente y los eventos que interactúan
con dichos objetos.