1. UNIVERSIDAD FERMIN TORO
ESCUELA DE INGENIERIA EN COMPUTACION
CÁTEDRA: DISEÑO DE SOFTWARE
DISEÑO E INGENIERIA
DE SOFTWARE
2. A través de la historia de la ingeniería del software ha evolucionado
un conjunto de conceptos fundamentales de diseño de software,
aunque el grado de interés en cada concepto ha variado con los años,
han pasado la prueba del tiempo ofreciendo cada uno al ingeniero de
software fundamentos sobre el cual pueden aplicarse métodos de
diseño más elaborados.
El diseño de Software juega un papel importante en el desarrollo de
software lo cual permite al ingeniero de software producir varios
modelos del sistema o producto de que se va a construir el mismo
que forman una especie de plan de la solución de la aplicación. Estos
modelos puede evaluarse en relación con su calidad y mejorarse
antes de generar código, de realizar pruebas y de que los usuarios
finales se vean involucrados a gran escala. El diseño es el sitio en el
que se establece la calidad del software.
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. 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. Objetivos del Diseño
El objetivo más importante es :
• entregar las funciones requeridas por el usuario (Satisfaga una especificación funcional dada).
Pero además para lograr esto deben considerarse los aspectos de :
• Rendimiento : cuán rápido permitirá el diseño realizar el trabajo dado un recurso particular de
hardware. Es decir que contemple las limitaciones del medio donde será implementado el sistema, y
alcance los requerimientos de performance y uso de recursos.
• Control : protección contra errores humanos, máquinas defectuosas, o daños intencionales.
• Cambiabilidad : facilidad con la cual el diseño permite modificar el sistema.
• Generalmente estos tres factores trabajan unos contra otros : un sistema con muchos controles tenderá
a degradar su rendimiento, un sistema diseñado para un alto rendimiento solo podrá ser cambiado con
dificultad, etc..
Además deberá:
• Satisfacer criterios de diseño sobre la forma interna y externa del producto obtenido.
• Satisfacer restricciones sobre el proceso de diseño en sí mismo, tales como su tiempo o costo, o las
herramientas disponibles para hacer el diseño.
• Una vez establecidos los requisitos del sistema, el diseño es la primera de tres actividades técnicas
(diseño, codificación y prueba). Cada actividad transforma la información de forma que finalmente se
obtiene un software para computadora validado.
6. Es la aplicación de un enfoque sistemático,
disciplinado y cuantificable al desarrollo, operación y
mantenimiento de software, y el estudio de estos
enfoques, es decir, la aplicación de la ingeniería al
software. Es la aplicación de la ingeniería al software,
ya que integra matemáticas, ciencias de la
computación y prácticas cuyos orígenes se encuentran
en la ingeniería.
7. OBJETIVOS DE LA INGENIERIA DE
SOFTWARE
En la construcción y desarrollo de proyectos se aplican
métodos y técnicas para resolver los problemas, la
informática aporta herramientas y procedimientos sobre los
que se apoya la ingeniería de software.
• Mejorar la calidad de los productos de software
• Aumentar la productividad y trabajo de los ingenieros del
software.
• Facilitar el control del proceso de desarrollo de software.
• Suministrar a los desarrolladores las bases para construir
software de alta calidad en una forma eficiente.
• Definir una disciplina que garantice la producción y el
mantenimiento de los productos software desarrollados
en el plazo fijado y dentro del costo estimado.
8. Arquitectura
La integración de infraestructura, desarrollo de aplicaciones, bases de datos y
herramientas gerenciales, requieren de capacidad y liderazgo para poder ser
conceptualizados y proyectados a futuro, solucionando los problemas de hoy. El rol
en el cual se delegan todas estas actividades es el del Arquitecto.
El arquitecto de software es la persona que añade valor a los procesos de negocios
gracias a su valioso aporte de soluciones tecnológicas.
La arquitectura de sistemas en general, es una actividad de planeación, ya sea a nivel
de infraestructura de red y hardware, o de software.
La arquitectura de software consiste en el diseño de componentes de una aplicación
(entidades del negocio), generalmente utilizando patrones de arquitectura. El diseño
arquitectónico debe permitir visualizar la interacción entre las entidades del negocio
y además poder ser validado, por ejemplo por medio de diagramas de secuencia. Un
diseño arquitectónico describe en general el cómo se construirá una aplicación de
software. Para ello se documenta utilizando diagramas, por ejemplo:
• Diagramas de clases
• Diagramas de base de datos
• Diagrama de despliegue
• Diagrama de secuencia
9. Principales áreas de estudio y/o
investigación
• Métodos y Metodologías de Desarrollo de Software
• Procesos de Desarrollo de Software
• Gestión de Proyectos de Software
• Medición y Estimación de Software
• Ingeniería de Requisitos / Requerimientos
• Ingeniería de Software Empírica
• Gestión de Riesgos
• Usabilidad de Software
• Evaluación de Software
• Métricas de Software
• Calidad de Software
• Métodos Formales
• Ingeniería Web