SlideShare una empresa de Scribd logo
1 de 31
FUNDAMENTOS DEL DISEÑO DE
SOFTWARE
Elaborado por: Monica Naranjo
Introducción
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.
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). "El milagro más común de la ingeniería de software es la transición del análisis al diseño y del
diseño al código" Richard Due
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.
 El diseño de la arquitectura de software se describe cómo se descompone y como están
organizados los componentes en el software. [IEEEP1471-00]
Fundamentos del Diseño de Software
 Diseño Detallado.
 El diseño detallado se describe el comportamiento específico de estos componentes.
 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.
Fundamentos del Diseño de Software
 Un 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.
Fundamentos del Diseño de Software
 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.
Fundamentos del Diseño de Software
 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.
Fundamentos del Diseño de Software
 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.
Fundamentos del Diseño de Software
 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.
Fundamentos del Diseño de Software
 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
Fundamentos del Diseño de Software
 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.
Diseño orientado a objeto
 El análisis y diseño orientado a objetos (ADOO) es un enfoque de la ingeniería de software que
modela un sistema como un grupo de objetos que interactúan entre sí. Este enfoque representa
un domino absoluto en términos de conceptos compuestos por verbos y sustantivos, clasificados
de acuerdo a su dependencia funcional. Todo sistema de información requiere de artefactos o
componentes (clases) para llevar a cabo tareas, es de gran importancia dentro de la ingeniería
de software tener un buen "análisis y diseño" para un mejor desarrollo, que conlleva a que tan
"escalable" sea un sistema de información.
 En este método de análisis y diseño se crea un conjunto de modelos utilizando una notación
acordada como, por ejemplo, el lenguaje unificado de modelado (UML).
Diseño orientado a objeto
 ADOO aplica técnicas de modelado de objetos para analizar los requerimientos para un
contexto (por ejemplo, un sistema de negocio, un conjunto de módulos de software) y para
diseñar una solución para mejorar los procesos involucrados.
 No está restringido al diseño de programas de computadora, sino que cubre sistemas enteros de
distinto tipo. Las metodologías de análisis y diseño más modernas son "casos de uso" guiados a
través de requerimientos, diseño, implementación, pruebas, y despliegue.
 El lenguaje unificado de modelado se ha vuelto el lenguaje de modelado estándar usado en
análisis y diseño orientado a objetos.
Garantía de Calidad de Software
 Garantía de calidad del software (SQA) consiste en los medios de la supervisión tecnología de
dotación lógica los procesos y los métodos aseguraban calidad. Hace esto por medio de
intervenciones de sistema de gerencia de la calidad debajo de cuál se crea el sistema de
software. Estas intervenciones son movidas hacia atrás por unos o más estándares, generalmente
ISO 9000.
 La calidad del software es el conjunto de cualidades que lo caracterizan y que determinan su
utilidad y existencia. La calidad es sinónimo de eficiencia, flexibilidad, corrección, confiabilidad,
mantenibilidad, portabilidad, usabilidad, seguridad e integridad. La calidad del software es
medible y varía de un sistema a otro o de un programa a otro. “La calidad del software es el
grado con el que un sistema, componente o proceso cumple los requerimientos especificados y
las necesidades o expectativas del cliente o usuario”.
Metodología de las garantía de calidad de
software
 La prueba del software es tanto un arte como una ciencia. En grande, los usos complejos, tales
como sistemas operativos.Diversos usos del software requieren diversos acercamientos cuando
viene a la prueba, pero algunas de las tareas mas comunes del QA del software incluyen:
 Prueba de la validación La prueba de la validación es el acto de los datos que entran que el
probador sabe para ser erróneo en un uso. Comparación de los datos Comparando la salida de
un uso con parámetros específicos a un sistema previamente creado de los datos con los mismos
parámetros que se saben para ser exactos.
Metodología de las garantía de calidad de
software
 Prueba de la tensión Una prueba de tensión es cuando el software se utiliza tan pesadamente
como sea posible por un período de la hora de considerar si hace frente a los altos niveles de la
carga.
 Prueba de la utilidad A veces consiguiendo a los usuarios que son desconocedores con el
software intentarlo durante algún tiempo y ofrecer la regeneración a los reveladores sobre lo que
encontraron difíciles de hacer es la mejor manera de llevar a cabo mejoras a un interfaz.
Ventajas de las garantía de calidad de
software
 Un plan de la SQA puede tomar un número de trayectorias, probando para diversas capacidades
y la ejecución diferente analiza, dependiendo de las demandas del proyecto, los usuarios, y el
software.
 Satisfacción de cliente mejorada: La satisfacción de cliente mejorada significa relaciones más de
largo, más provechosas del cliente.
 Coste reducido de desarrollo: Porque el proceso de la garantía de calidad del software se diseña
para prevenir defectos e ineficacias del software, los proyectos que incorporan riguroso, prueba
del objetivo encontrarán que los costes del desarrollo están reducidos puesto que todas las fases
más posteriores del ciclo vital del desarrollo llegan a ser aerodinámicas y simplificados
perceptiblemente.
Técnicas de pruebas de software
 Las pruebas de software (en inglés software testing) 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. Existen distintos modelos de desarrollo de software,
así como modelos de pruebas. A cada uno corresponde un nivel distinto de involucramiento en
las actividades de desarrollo.
Técnicas de pruebas de software
 Pruebas estáticas: son el tipo de pruebas que se realizan sin ejecutar el código de la aplicación. Puede
referirse a la revisión de documentos, ya que no se hace una ejecución de código. Esto se debe a que
se pueden realizar "pruebas de escritorio" con el objetivo de seguir los flujos de la aplicación.
 Pruebas dinámicas: todas aquellas pruebas que para su ejecución requieren la ejecución de la
aplicación. Las pruebas dinámicas permiten el uso de técnicas de caja negra y caja blanca con mayor
amplitud. Debido a la naturaleza dinámica de la ejecución de pruebas es posible medir con mayor
precisión el comportamiento de la aplicación desarrollada.
 Tipos de pruebas por su ejecución
 Pruebas manuales
 Pruebas automáticas
Técnicas de pruebas de software
 El control de la calidad de software lleva consigo aplicativos que permiten realizar pruebas
autónomas y masivas permitiendo así la verificación desde el punto de vista estático y de caja
blanca, es decir pruebas donde se analiza el software sin ejecutar el software mediante el código
fuente del mismo. Podemos encontrar herramientas Open Source (libres) o Comerciales (de
pago). Estas herramientas podrán ser utilizadas para diferentes tipos de pruebas como:
 Herramientas de gestión de pruebas
 Herramientas para pruebas funcionales
 Herramientas para pruebas de carga y rendimiento
Mantenimiento de software (preventivo,
seguridad).
 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.
Mantenimiento de software (preventivo,
seguridad).
 El mantenimiento preventivo consiste en una atención constante de limpieza, revisión y afinación
de los distintos elementos integrantes de un equipo de cómputo. Es importante saber que la
mayoría de los problemas que se presentan en el trabajo cotidiano, se debe a la falta de un
programa específico de mantenimiento de los equipos, de tal manera que la mayoría de los
problemas se resuelven con el mismo procedimiento del mantenimiento preventivo. El
mantenimiento tiene técnicas para darle un periodo de vida útil más largo y libre de fallas.
Debemos de tener en cuenta que es necesario darle mantenimiento al software ya que el
continuo uso genera una serie de cambios en la configuración original del sistema, causando
bajas en el rendimiento que al acumularse con el tiempo pueden generar problemas serios.
Actualmente es indispensable mantener actualizada la protección contra virus informáticos.
Mantenimiento de software (preventivo,
seguridad).
 Por supuesto es muy recomendable usar su equipo responsablemente, ya que esto le podrá
causar un gasto mayor a futuro. Las recomendaciones son: Cuidar las páginas a las que accesa,
las de música, videos o juegos regularmente traen enlaces que pueden filtrarse directamente al
equipo de cómputo, tener un antivirus actualizado, hacer cada cierto tiempo un escaneado y
limpieza de su PC, evitar los mensajes SPAM que llegan en los correos electrónicos, estos
mensajes llegan normalmente con remitente desconocido y se almacenan en la carpeta Correo
no deseado, generalmente son solo virus que no hacen mucho daño, pero también puede
costar hasta el formateo del equipo y con esto, la pérdida de archivos importantes.
Fundamentos al requerimiento del diseño
 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.
 La IEEE los divide en funcionales y no funcionales:
 Funcionales: Condición o capacidad de un sistema requerida por el usuario para resolver un problema
o alcanzar un objetivo.
 No Funcionales: Condición o capacidad que debe poseer un sistema par satisfacer un contrato, un
estándar, una especificación u otro documento formalmente impuesto.
 Para realizar bien el desarrollo de software es esencial realizar una especificación completa de los
requerimientos de los mismos. Independientemente de lo bien diseñado o codificado que esté, un
programa pobremente especificado decepcionará al usuario y hará fracasar el desarrollo. La tarea de
análisis de los requerimientos es un proceso de descubrimiento y refinamiento, El ámbito del
programa, establecido inicialmente durante la ingeniería del sistema, es refinado en detalle. Se
analizan y asignan a los distintos elementos de los programas las soluciones alternativas.
Fundamentos al requerimiento del diseño
 Los requerimientos de un sistema de software, cuando se ven en su conjunto son extensos y
detallados, y además contienen múltiples relaciones entre sí. Lo que nos da a concluir, que el conjunto
de requerimientos de un sistema computacional es complejo. Obtenemos la posibilidad de especificar
sistemas complejos al documentar especificaciones simples y concisas para el sistema. Esto se logra
mediante al clasificar, estructurar y organizar todo lo que el sistema debe de hacer. En otras palabras al
analizar sus requerimientos.
 El análisis de requerimientos es la tarea que plantea la asignación de software a nivel de sistema y el
diseño de programas. El análisis de requerimientos facilita al ingeniero de sistemas especificar la
función y comportamiento de los programas, indicar la interfaz con otros elementos del sistema y
establecer las ligaduras de diseño que debe cumplir el programa. El análisis de requerimientos permite
al ingeniero refinar la asignación de software y representar el dominio de la información que será
tratada por el programa. El análisis de requerimientos de al diseñador la representación de la
información y las funciones que pueden ser traducidas en datos, arquitectura y diseño procedimental.
Finalmente, la especificación de requerimientos suministra al técnico y al cliente, los medios para
valorar la calidad de los programas, una vez que se haya construido.
Métodos de análisis de requerimientos
 El análisis de requisitos del software se puede subdividir en cinco áreas de esfuerzo:
 1. Reconocimiento del problema
 2. Evaluación y síntesis
 3. Modelado
 4. Especificación
 5. Revisión
Métodos de análisis de requerimientos
 Todos los métodos de análisis se relacionan por un conjunto de principios operativos:
 1.Debe representarse y entenderse el dominio de la información de un problema.
 2.Deben definirse las funciones que debe realizar el software.
 3.Debe representarse el comportamiento del software (como consecuencia de acontecimientos externos),
 4.Deben dividirse los modelos que representan información, función y comportamiento de manera que se
descubran los detalles por capas (o jerárquicamente).
 5.El proceso de análisis debería ir desde la información esencial hasta el detalle de la implementación.
Métodos de análisis de requerimientos
 Además de los principios operativos mencionados anteriormente, se sugiere un conjunto de principios directrices
para la ingeniería de requerimientos:
 1. Entender el problema antes de empezar a crear el modelo de análisis.
 2. Desarrollar prototipos que permitan al usuario entender como será la interacción hombre-máquina.
 3. Registrar el orden y la razón de cada requerimiento,
 4. Usar múltiples planteamientos de requerimientos.
 5. Priorizar los requerimientos.
 6. Trabajar para eliminar la ambigüedad.
Conclusiones
 Cuando se va desarrollar un software intervienen muchas personas como lo es el cliente que es
el que tiene el problema en su empresa y desea que sea solucionado, para esto existe el Analista
de Sistema que es el encargado de hacerle llegar todos los requerimientos y necesidades que
tiene el cliente a los programadores que son las personas encargadas de realizar lo que es la
codificación y diseño del sistema para después probarlo e instalarlo en la empresa.
 Desarrollar un software significa construirlo simplemente mediante su descripción. Esta es una
muy buena razón para considerar la actividad de desarrollo de software como una ingeniería. En
un nivel más general, la relación existente entre un software y su entorno es clara ya que el
software es introducido en el mundo de modo de provocar ciertos efectos en el mismo.
Bibliografía
 Análisis y diseño orientado a objetos. (s.f). Recuperado de
https://es.wikipedia.org/wiki/An%C3%A1lisis_y_dise%C3%B1o_orientado_a_objetos
 Análisis de requisitos del software (s.f.) Recuperado de
http://yaqui.mxl.uabc.mx/~molguin/as/IngReq.htm
 Ángel Miguel Macas, Jorge Fierro.(s.f.). Diseño de software. Recuperado de
http://www.monografias.com/trabajos73/diseno-software/diseno-software.shtml
 Ariel Vargas. (18 de octubre de 2010). Ingeniería del Software. Recuperado de
http://arielvargasu.blogspot.com/2010/10/garantia-de-calidad-de-software-sqa_18.html
 Mantenimiento de software.(s.f). Recuperado de
https://es.wikipedia.org/wiki/Mantenimiento_de_software
 Pruebas de software (s.f.). Recuperado de https://es.wikipedia.org/wiki/Pruebas_de_software

Más contenido relacionado

La actualidad más candente

Metodologia analisis-y-diseno-sistemas-informacion
Metodologia analisis-y-diseno-sistemas-informacionMetodologia analisis-y-diseno-sistemas-informacion
Metodologia analisis-y-diseno-sistemas-informacionmenamigue
 
Fundamentos de analisis y desarrollo de sistemas
Fundamentos  de analisis y desarrollo de sistemasFundamentos  de analisis y desarrollo de sistemas
Fundamentos de analisis y desarrollo de sistemaskellygomezj
 
Metodología para el desarrollo de sistema de información según jeffrey whitten
Metodología para el desarrollo de sistema de información según jeffrey whittenMetodología para el desarrollo de sistema de información según jeffrey whitten
Metodología para el desarrollo de sistema de información según jeffrey whittentravesuras79
 
Analisis y Diseño de sistemas de información
Analisis y Diseño de sistemas de informaciónAnalisis y Diseño de sistemas de información
Analisis y Diseño de sistemas de informaciónysik granja
 
Análisis de sistemas fases del diseño de sistemas
Análisis de sistemas fases del diseño de sistemasAnálisis de sistemas fases del diseño de sistemas
Análisis de sistemas fases del diseño de sistemasprofmyriamsanuy
 
Jose marcano analisis y diseño de sistemas
Jose marcano analisis y diseño de sistemasJose marcano analisis y diseño de sistemas
Jose marcano analisis y diseño de sistemasAmerigled Salgado
 
Ensayo Analisis y Diseño de Sistemas
Ensayo Analisis y Diseño de Sistemas Ensayo Analisis y Diseño de Sistemas
Ensayo Analisis y Diseño de Sistemas malejandro08
 
especificaciones de diseño de software para una página de viajes
especificaciones de diseño de software para una página de viajesespecificaciones de diseño de software para una página de viajes
especificaciones de diseño de software para una página de viajesGabriel Gongora
 
Metodologías para el Análisisy Diseño de Sistemas
Metodologías para el Análisisy Diseño de SistemasMetodologías para el Análisisy Diseño de Sistemas
Metodologías para el Análisisy Diseño de Sistemasalberto_marin11
 
Diseño de Sistemas de Información en la Empresa
Diseño de Sistemas de Información en la EmpresaDiseño de Sistemas de Información en la Empresa
Diseño de Sistemas de Información en la EmpresaEdicion Ticnews
 
Ciclo de-vida-de-un-sistema-1
Ciclo de-vida-de-un-sistema-1Ciclo de-vida-de-un-sistema-1
Ciclo de-vida-de-un-sistema-1Tomasjz
 
desarrollo de software
desarrollo de softwaredesarrollo de software
desarrollo de softwareJean Davila
 
Analisis y diseño de sistemas de información clase 2
Analisis y diseño de sistemas de información clase 2Analisis y diseño de sistemas de información clase 2
Analisis y diseño de sistemas de información clase 2Sebas Castro
 
Análisis de sistemas informáticos alexis diaz
Análisis de sistemas informáticos   alexis diazAnálisis de sistemas informáticos   alexis diaz
Análisis de sistemas informáticos alexis diazAlexis Díaz
 
Analisis y diseño de sistema de información trabajo
Analisis y diseño de sistema de información trabajoAnalisis y diseño de sistema de información trabajo
Analisis y diseño de sistema de información trabajoDfcr Dafe
 

La actualidad más candente (20)

Metodologia analisis-y-diseno-sistemas-informacion
Metodologia analisis-y-diseno-sistemas-informacionMetodologia analisis-y-diseno-sistemas-informacion
Metodologia analisis-y-diseno-sistemas-informacion
 
Diseño de software
Diseño de softwareDiseño de software
Diseño de software
 
Fundamentos de analisis y desarrollo de sistemas
Fundamentos  de analisis y desarrollo de sistemasFundamentos  de analisis y desarrollo de sistemas
Fundamentos de analisis y desarrollo de sistemas
 
Fase De DiseñO Y Analisis De Datos
Fase De DiseñO Y Analisis De DatosFase De DiseñO Y Analisis De Datos
Fase De DiseñO Y Analisis De Datos
 
Metodología para el desarrollo de sistema de información según jeffrey whitten
Metodología para el desarrollo de sistema de información según jeffrey whittenMetodología para el desarrollo de sistema de información según jeffrey whitten
Metodología para el desarrollo de sistema de información según jeffrey whitten
 
Analisis y Diseño de sistemas de información
Analisis y Diseño de sistemas de informaciónAnalisis y Diseño de sistemas de información
Analisis y Diseño de sistemas de información
 
Análisis de sistemas fases del diseño de sistemas
Análisis de sistemas fases del diseño de sistemasAnálisis de sistemas fases del diseño de sistemas
Análisis de sistemas fases del diseño de sistemas
 
Jose marcano analisis y diseño de sistemas
Jose marcano analisis y diseño de sistemasJose marcano analisis y diseño de sistemas
Jose marcano analisis y diseño de sistemas
 
Diseño Estructurado
Diseño EstructuradoDiseño Estructurado
Diseño Estructurado
 
Analisis y diseño de sistemas
Analisis y diseño de sistemasAnalisis y diseño de sistemas
Analisis y diseño de sistemas
 
Ensayo Analisis y Diseño de Sistemas
Ensayo Analisis y Diseño de Sistemas Ensayo Analisis y Diseño de Sistemas
Ensayo Analisis y Diseño de Sistemas
 
especificaciones de diseño de software para una página de viajes
especificaciones de diseño de software para una página de viajesespecificaciones de diseño de software para una página de viajes
especificaciones de diseño de software para una página de viajes
 
Metodologías para el Análisisy Diseño de Sistemas
Metodologías para el Análisisy Diseño de SistemasMetodologías para el Análisisy Diseño de Sistemas
Metodologías para el Análisisy Diseño de Sistemas
 
Diseño de Sistemas de Información en la Empresa
Diseño de Sistemas de Información en la EmpresaDiseño de Sistemas de Información en la Empresa
Diseño de Sistemas de Información en la Empresa
 
Ciclo de-vida-de-un-sistema-1
Ciclo de-vida-de-un-sistema-1Ciclo de-vida-de-un-sistema-1
Ciclo de-vida-de-un-sistema-1
 
desarrollo de software
desarrollo de softwaredesarrollo de software
desarrollo de software
 
Analisis y diseño de sistemas de información clase 2
Analisis y diseño de sistemas de información clase 2Analisis y diseño de sistemas de información clase 2
Analisis y diseño de sistemas de información clase 2
 
Libro analisis de sistemas
Libro analisis de sistemasLibro analisis de sistemas
Libro analisis de sistemas
 
Análisis de sistemas informáticos alexis diaz
Análisis de sistemas informáticos   alexis diazAnálisis de sistemas informáticos   alexis diaz
Análisis de sistemas informáticos alexis diaz
 
Analisis y diseño de sistema de información trabajo
Analisis y diseño de sistema de información trabajoAnalisis y diseño de sistema de información trabajo
Analisis y diseño de sistema de información trabajo
 

Similar a Fundamentos

Diseno Software
Diseno SoftwareDiseno Software
Diseno Softwarealfmuny
 
Fundamentos Basicos para El Diseño de Software
Fundamentos Basicos para El Diseño de SoftwareFundamentos Basicos para El Diseño de Software
Fundamentos Basicos para El Diseño de SoftwareRicardoAlvarez235
 
fundamentos para el diseño de software
fundamentos para el diseño de softwarefundamentos para el diseño de software
fundamentos para el diseño de softwareMaraPilarNava
 
Fundamentos para el diseño de un software
Fundamentos para el diseño de un softwareFundamentos para el diseño de un software
Fundamentos para el diseño de un softwaressalzar
 
Fundamentos de Diseño Orientado a Objetos
Fundamentos de Diseño Orientado a ObjetosFundamentos de Diseño Orientado a Objetos
Fundamentos de Diseño Orientado a Objetosforwer1223
 
Fundamentos del diseño de software
Fundamentos del diseño de software Fundamentos del diseño de software
Fundamentos del diseño de software AlessandreMndez
 
Ra semana 13 2
Ra semana 13 2Ra semana 13 2
Ra semana 13 2victdiazm
 
Diseño estructurado
Diseño estructuradoDiseño estructurado
Diseño estructuradoDascorp
 
Fundamentos básicos para el diseño de software
Fundamentos básicos para el diseño de softwareFundamentos básicos para el diseño de software
Fundamentos básicos para el diseño de softwareluis javier perez
 
Fundamentos, Garantías y Técnicas en el diseño de software
Fundamentos, Garantías y Técnicas en el diseño de softwareFundamentos, Garantías y Técnicas en el diseño de software
Fundamentos, Garantías y Técnicas en el diseño de softwareGerardo Valera
 
Fundamentos del sofware
Fundamentos del sofwareFundamentos del sofware
Fundamentos del sofwareKatyPerez17
 
Diseño del software
Diseño del softwareDiseño del software
Diseño del softwaregenesisptc_
 
Fundamentos de diseño de software
Fundamentos de diseño de softwareFundamentos de diseño de software
Fundamentos de diseño de softwareLuis Jesus Curbata
 

Similar a Fundamentos (20)

Diseno Software
Diseno SoftwareDiseno Software
Diseno Software
 
Fundamentos Basicos para El Diseño de Software
Fundamentos Basicos para El Diseño de SoftwareFundamentos Basicos para El Diseño de Software
Fundamentos Basicos para El Diseño de Software
 
Juan velasquez
Juan velasquezJuan velasquez
Juan velasquez
 
fundamentos para el diseño de software
fundamentos para el diseño de softwarefundamentos para el diseño de software
fundamentos para el diseño de software
 
Fundamentos para el diseño de un software
Fundamentos para el diseño de un softwareFundamentos para el diseño de un software
Fundamentos para el diseño de un software
 
Deber analisis
Deber analisisDeber analisis
Deber analisis
 
Fundamentos de Diseño Orientado a Objetos
Fundamentos de Diseño Orientado a ObjetosFundamentos de Diseño Orientado a Objetos
Fundamentos de Diseño Orientado a Objetos
 
Fundamentos del diseño de software
Fundamentos del diseño de software Fundamentos del diseño de software
Fundamentos del diseño de software
 
Ra semana 13 2
Ra semana 13 2Ra semana 13 2
Ra semana 13 2
 
8.conceptos de diseño
8.conceptos de diseño8.conceptos de diseño
8.conceptos de diseño
 
Diseño estructurado
Diseño estructuradoDiseño estructurado
Diseño estructurado
 
Fundamentos básicos para el diseño de software
Fundamentos básicos para el diseño de softwareFundamentos básicos para el diseño de software
Fundamentos básicos para el diseño de software
 
Software exposicion
Software exposicionSoftware exposicion
Software exposicion
 
Nixon torrealbav
Nixon torrealbavNixon torrealbav
Nixon torrealbav
 
Presentacion
PresentacionPresentacion
Presentacion
 
Fundamentos, Garantías y Técnicas en el diseño de software
Fundamentos, Garantías y Técnicas en el diseño de softwareFundamentos, Garantías y Técnicas en el diseño de software
Fundamentos, Garantías y Técnicas en el diseño de software
 
Fundamentos del sofware
Fundamentos del sofwareFundamentos del sofware
Fundamentos del sofware
 
Diseño del software
Diseño del softwareDiseño del software
Diseño del software
 
Conceptos de diseño
Conceptos de diseñoConceptos de diseño
Conceptos de diseño
 
Fundamentos de diseño de software
Fundamentos de diseño de softwareFundamentos de diseño de software
Fundamentos de diseño de software
 

Último

Trabajo en altura de acuerdo a la normativa peruana
Trabajo en altura de acuerdo a la normativa peruanaTrabajo en altura de acuerdo a la normativa peruana
Trabajo en altura de acuerdo a la normativa peruana5extraviado
 
CFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric ProjectCFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric ProjectCarlos Delgado
 
Fisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdfFisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdfJessLeonelVargasJimn
 
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...Arquitecto Alejandro Gomez cornejo muñoz
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023ANDECE
 
SEMANA 6 MEDIDAS DE TENDENCIA CENTRAL.pdf
SEMANA  6 MEDIDAS DE TENDENCIA CENTRAL.pdfSEMANA  6 MEDIDAS DE TENDENCIA CENTRAL.pdf
SEMANA 6 MEDIDAS DE TENDENCIA CENTRAL.pdffredyflores58
 
Fe_C_Tratamientos termicos_uap _3_.ppt
Fe_C_Tratamientos termicos_uap   _3_.pptFe_C_Tratamientos termicos_uap   _3_.ppt
Fe_C_Tratamientos termicos_uap _3_.pptVitobailon
 
produccion de cerdos. 2024 abril 20..pptx
produccion de cerdos. 2024 abril 20..pptxproduccion de cerdos. 2024 abril 20..pptx
produccion de cerdos. 2024 abril 20..pptxEtse9
 
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfCONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfErikNivor
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Francisco Javier Mora Serrano
 
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdfLEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdfAdelaHerrera9
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEANDECE
 
Tarea de UTP matematices y soluciones ingenieria
Tarea de UTP matematices y soluciones ingenieriaTarea de UTP matematices y soluciones ingenieria
Tarea de UTP matematices y soluciones ingenieriaSebastianQP1
 
Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...
Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...
Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...ssuser646243
 
Topografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasTopografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasSegundo Silva Maguiña
 
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxAMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxLuisvila35
 
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinaciónEstacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinaciónAlexisHernandez885688
 
Biología molecular ADN recombinante.pptx
Biología molecular ADN recombinante.pptxBiología molecular ADN recombinante.pptx
Biología molecular ADN recombinante.pptxluisvalero46
 
3.3 Tipos de conexiones en los transformadores trifasicos.pdf
3.3 Tipos de conexiones en los transformadores trifasicos.pdf3.3 Tipos de conexiones en los transformadores trifasicos.pdf
3.3 Tipos de conexiones en los transformadores trifasicos.pdfRicardoRomeroUrbano
 
Sistema de Gestión de Freelancers (Base de Datos)
Sistema de Gestión de Freelancers (Base de Datos)Sistema de Gestión de Freelancers (Base de Datos)
Sistema de Gestión de Freelancers (Base de Datos)dianamateo1513
 

Último (20)

Trabajo en altura de acuerdo a la normativa peruana
Trabajo en altura de acuerdo a la normativa peruanaTrabajo en altura de acuerdo a la normativa peruana
Trabajo en altura de acuerdo a la normativa peruana
 
CFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric ProjectCFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric Project
 
Fisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdfFisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdf
 
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
 
SEMANA 6 MEDIDAS DE TENDENCIA CENTRAL.pdf
SEMANA  6 MEDIDAS DE TENDENCIA CENTRAL.pdfSEMANA  6 MEDIDAS DE TENDENCIA CENTRAL.pdf
SEMANA 6 MEDIDAS DE TENDENCIA CENTRAL.pdf
 
Fe_C_Tratamientos termicos_uap _3_.ppt
Fe_C_Tratamientos termicos_uap   _3_.pptFe_C_Tratamientos termicos_uap   _3_.ppt
Fe_C_Tratamientos termicos_uap _3_.ppt
 
produccion de cerdos. 2024 abril 20..pptx
produccion de cerdos. 2024 abril 20..pptxproduccion de cerdos. 2024 abril 20..pptx
produccion de cerdos. 2024 abril 20..pptx
 
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfCONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
 
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdfLEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSE
 
Tarea de UTP matematices y soluciones ingenieria
Tarea de UTP matematices y soluciones ingenieriaTarea de UTP matematices y soluciones ingenieria
Tarea de UTP matematices y soluciones ingenieria
 
Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...
Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...
Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...
 
Topografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasTopografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la Ingenierías
 
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxAMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
 
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinaciónEstacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
 
Biología molecular ADN recombinante.pptx
Biología molecular ADN recombinante.pptxBiología molecular ADN recombinante.pptx
Biología molecular ADN recombinante.pptx
 
3.3 Tipos de conexiones en los transformadores trifasicos.pdf
3.3 Tipos de conexiones en los transformadores trifasicos.pdf3.3 Tipos de conexiones en los transformadores trifasicos.pdf
3.3 Tipos de conexiones en los transformadores trifasicos.pdf
 
Sistema de Gestión de Freelancers (Base de Datos)
Sistema de Gestión de Freelancers (Base de Datos)Sistema de Gestión de Freelancers (Base de Datos)
Sistema de Gestión de Freelancers (Base de Datos)
 

Fundamentos

  • 1. FUNDAMENTOS DEL DISEÑO DE SOFTWARE Elaborado por: Monica Naranjo
  • 2. Introducción 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). "El milagro más común de la ingeniería de software es la transición del análisis al diseño y del diseño al código" Richard Due
  • 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.  El diseño de la arquitectura de software se describe cómo se descompone y como están organizados los componentes en el software. [IEEEP1471-00]
  • 5. Fundamentos del Diseño de Software  Diseño Detallado.  El diseño detallado se describe el comportamiento específico de estos componentes.  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.
  • 6. Fundamentos del Diseño de Software  Un 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.
  • 7. Fundamentos del Diseño de Software  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.
  • 8. Fundamentos del Diseño de Software  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.
  • 9. Fundamentos del Diseño de Software  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.
  • 10. Fundamentos del Diseño de Software  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.
  • 11. Fundamentos del Diseño de Software  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
  • 12. Fundamentos del Diseño de Software  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.
  • 13. Diseño orientado a objeto  El análisis y diseño orientado a objetos (ADOO) es un enfoque de la ingeniería de software que modela un sistema como un grupo de objetos que interactúan entre sí. Este enfoque representa un domino absoluto en términos de conceptos compuestos por verbos y sustantivos, clasificados de acuerdo a su dependencia funcional. Todo sistema de información requiere de artefactos o componentes (clases) para llevar a cabo tareas, es de gran importancia dentro de la ingeniería de software tener un buen "análisis y diseño" para un mejor desarrollo, que conlleva a que tan "escalable" sea un sistema de información.  En este método de análisis y diseño se crea un conjunto de modelos utilizando una notación acordada como, por ejemplo, el lenguaje unificado de modelado (UML).
  • 14. Diseño orientado a objeto  ADOO aplica técnicas de modelado de objetos para analizar los requerimientos para un contexto (por ejemplo, un sistema de negocio, un conjunto de módulos de software) y para diseñar una solución para mejorar los procesos involucrados.  No está restringido al diseño de programas de computadora, sino que cubre sistemas enteros de distinto tipo. Las metodologías de análisis y diseño más modernas son "casos de uso" guiados a través de requerimientos, diseño, implementación, pruebas, y despliegue.  El lenguaje unificado de modelado se ha vuelto el lenguaje de modelado estándar usado en análisis y diseño orientado a objetos.
  • 15. Garantía de Calidad de Software  Garantía de calidad del software (SQA) consiste en los medios de la supervisión tecnología de dotación lógica los procesos y los métodos aseguraban calidad. Hace esto por medio de intervenciones de sistema de gerencia de la calidad debajo de cuál se crea el sistema de software. Estas intervenciones son movidas hacia atrás por unos o más estándares, generalmente ISO 9000.  La calidad del software es el conjunto de cualidades que lo caracterizan y que determinan su utilidad y existencia. La calidad es sinónimo de eficiencia, flexibilidad, corrección, confiabilidad, mantenibilidad, portabilidad, usabilidad, seguridad e integridad. La calidad del software es medible y varía de un sistema a otro o de un programa a otro. “La calidad del software es el grado con el que un sistema, componente o proceso cumple los requerimientos especificados y las necesidades o expectativas del cliente o usuario”.
  • 16. Metodología de las garantía de calidad de software  La prueba del software es tanto un arte como una ciencia. En grande, los usos complejos, tales como sistemas operativos.Diversos usos del software requieren diversos acercamientos cuando viene a la prueba, pero algunas de las tareas mas comunes del QA del software incluyen:  Prueba de la validación La prueba de la validación es el acto de los datos que entran que el probador sabe para ser erróneo en un uso. Comparación de los datos Comparando la salida de un uso con parámetros específicos a un sistema previamente creado de los datos con los mismos parámetros que se saben para ser exactos.
  • 17. Metodología de las garantía de calidad de software  Prueba de la tensión Una prueba de tensión es cuando el software se utiliza tan pesadamente como sea posible por un período de la hora de considerar si hace frente a los altos niveles de la carga.  Prueba de la utilidad A veces consiguiendo a los usuarios que son desconocedores con el software intentarlo durante algún tiempo y ofrecer la regeneración a los reveladores sobre lo que encontraron difíciles de hacer es la mejor manera de llevar a cabo mejoras a un interfaz.
  • 18. Ventajas de las garantía de calidad de software  Un plan de la SQA puede tomar un número de trayectorias, probando para diversas capacidades y la ejecución diferente analiza, dependiendo de las demandas del proyecto, los usuarios, y el software.  Satisfacción de cliente mejorada: La satisfacción de cliente mejorada significa relaciones más de largo, más provechosas del cliente.  Coste reducido de desarrollo: Porque el proceso de la garantía de calidad del software se diseña para prevenir defectos e ineficacias del software, los proyectos que incorporan riguroso, prueba del objetivo encontrarán que los costes del desarrollo están reducidos puesto que todas las fases más posteriores del ciclo vital del desarrollo llegan a ser aerodinámicas y simplificados perceptiblemente.
  • 19. Técnicas de pruebas de software  Las pruebas de software (en inglés software testing) 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. Existen distintos modelos de desarrollo de software, así como modelos de pruebas. A cada uno corresponde un nivel distinto de involucramiento en las actividades de desarrollo.
  • 20. Técnicas de pruebas de software  Pruebas estáticas: son el tipo de pruebas que se realizan sin ejecutar el código de la aplicación. Puede referirse a la revisión de documentos, ya que no se hace una ejecución de código. Esto se debe a que se pueden realizar "pruebas de escritorio" con el objetivo de seguir los flujos de la aplicación.  Pruebas dinámicas: todas aquellas pruebas que para su ejecución requieren la ejecución de la aplicación. Las pruebas dinámicas permiten el uso de técnicas de caja negra y caja blanca con mayor amplitud. Debido a la naturaleza dinámica de la ejecución de pruebas es posible medir con mayor precisión el comportamiento de la aplicación desarrollada.  Tipos de pruebas por su ejecución  Pruebas manuales  Pruebas automáticas
  • 21. Técnicas de pruebas de software  El control de la calidad de software lleva consigo aplicativos que permiten realizar pruebas autónomas y masivas permitiendo así la verificación desde el punto de vista estático y de caja blanca, es decir pruebas donde se analiza el software sin ejecutar el software mediante el código fuente del mismo. Podemos encontrar herramientas Open Source (libres) o Comerciales (de pago). Estas herramientas podrán ser utilizadas para diferentes tipos de pruebas como:  Herramientas de gestión de pruebas  Herramientas para pruebas funcionales  Herramientas para pruebas de carga y rendimiento
  • 22. Mantenimiento de software (preventivo, seguridad).  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.
  • 23. Mantenimiento de software (preventivo, seguridad).  El mantenimiento preventivo consiste en una atención constante de limpieza, revisión y afinación de los distintos elementos integrantes de un equipo de cómputo. Es importante saber que la mayoría de los problemas que se presentan en el trabajo cotidiano, se debe a la falta de un programa específico de mantenimiento de los equipos, de tal manera que la mayoría de los problemas se resuelven con el mismo procedimiento del mantenimiento preventivo. El mantenimiento tiene técnicas para darle un periodo de vida útil más largo y libre de fallas. Debemos de tener en cuenta que es necesario darle mantenimiento al software ya que el continuo uso genera una serie de cambios en la configuración original del sistema, causando bajas en el rendimiento que al acumularse con el tiempo pueden generar problemas serios. Actualmente es indispensable mantener actualizada la protección contra virus informáticos.
  • 24. Mantenimiento de software (preventivo, seguridad).  Por supuesto es muy recomendable usar su equipo responsablemente, ya que esto le podrá causar un gasto mayor a futuro. Las recomendaciones son: Cuidar las páginas a las que accesa, las de música, videos o juegos regularmente traen enlaces que pueden filtrarse directamente al equipo de cómputo, tener un antivirus actualizado, hacer cada cierto tiempo un escaneado y limpieza de su PC, evitar los mensajes SPAM que llegan en los correos electrónicos, estos mensajes llegan normalmente con remitente desconocido y se almacenan en la carpeta Correo no deseado, generalmente son solo virus que no hacen mucho daño, pero también puede costar hasta el formateo del equipo y con esto, la pérdida de archivos importantes.
  • 25. Fundamentos al requerimiento del diseño  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.  La IEEE los divide en funcionales y no funcionales:  Funcionales: Condición o capacidad de un sistema requerida por el usuario para resolver un problema o alcanzar un objetivo.  No Funcionales: Condición o capacidad que debe poseer un sistema par satisfacer un contrato, un estándar, una especificación u otro documento formalmente impuesto.  Para realizar bien el desarrollo de software es esencial realizar una especificación completa de los requerimientos de los mismos. Independientemente de lo bien diseñado o codificado que esté, un programa pobremente especificado decepcionará al usuario y hará fracasar el desarrollo. La tarea de análisis de los requerimientos es un proceso de descubrimiento y refinamiento, El ámbito del programa, establecido inicialmente durante la ingeniería del sistema, es refinado en detalle. Se analizan y asignan a los distintos elementos de los programas las soluciones alternativas.
  • 26. Fundamentos al requerimiento del diseño  Los requerimientos de un sistema de software, cuando se ven en su conjunto son extensos y detallados, y además contienen múltiples relaciones entre sí. Lo que nos da a concluir, que el conjunto de requerimientos de un sistema computacional es complejo. Obtenemos la posibilidad de especificar sistemas complejos al documentar especificaciones simples y concisas para el sistema. Esto se logra mediante al clasificar, estructurar y organizar todo lo que el sistema debe de hacer. En otras palabras al analizar sus requerimientos.  El análisis de requerimientos es la tarea que plantea la asignación de software a nivel de sistema y el diseño de programas. El análisis de requerimientos facilita al ingeniero de sistemas especificar la función y comportamiento de los programas, indicar la interfaz con otros elementos del sistema y establecer las ligaduras de diseño que debe cumplir el programa. El análisis de requerimientos permite al ingeniero refinar la asignación de software y representar el dominio de la información que será tratada por el programa. El análisis de requerimientos de al diseñador la representación de la información y las funciones que pueden ser traducidas en datos, arquitectura y diseño procedimental. Finalmente, la especificación de requerimientos suministra al técnico y al cliente, los medios para valorar la calidad de los programas, una vez que se haya construido.
  • 27. Métodos de análisis de requerimientos  El análisis de requisitos del software se puede subdividir en cinco áreas de esfuerzo:  1. Reconocimiento del problema  2. Evaluación y síntesis  3. Modelado  4. Especificación  5. Revisión
  • 28. Métodos de análisis de requerimientos  Todos los métodos de análisis se relacionan por un conjunto de principios operativos:  1.Debe representarse y entenderse el dominio de la información de un problema.  2.Deben definirse las funciones que debe realizar el software.  3.Debe representarse el comportamiento del software (como consecuencia de acontecimientos externos),  4.Deben dividirse los modelos que representan información, función y comportamiento de manera que se descubran los detalles por capas (o jerárquicamente).  5.El proceso de análisis debería ir desde la información esencial hasta el detalle de la implementación.
  • 29. Métodos de análisis de requerimientos  Además de los principios operativos mencionados anteriormente, se sugiere un conjunto de principios directrices para la ingeniería de requerimientos:  1. Entender el problema antes de empezar a crear el modelo de análisis.  2. Desarrollar prototipos que permitan al usuario entender como será la interacción hombre-máquina.  3. Registrar el orden y la razón de cada requerimiento,  4. Usar múltiples planteamientos de requerimientos.  5. Priorizar los requerimientos.  6. Trabajar para eliminar la ambigüedad.
  • 30. Conclusiones  Cuando se va desarrollar un software intervienen muchas personas como lo es el cliente que es el que tiene el problema en su empresa y desea que sea solucionado, para esto existe el Analista de Sistema que es el encargado de hacerle llegar todos los requerimientos y necesidades que tiene el cliente a los programadores que son las personas encargadas de realizar lo que es la codificación y diseño del sistema para después probarlo e instalarlo en la empresa.  Desarrollar un software significa construirlo simplemente mediante su descripción. Esta es una muy buena razón para considerar la actividad de desarrollo de software como una ingeniería. En un nivel más general, la relación existente entre un software y su entorno es clara ya que el software es introducido en el mundo de modo de provocar ciertos efectos en el mismo.
  • 31. Bibliografía  Análisis y diseño orientado a objetos. (s.f). Recuperado de https://es.wikipedia.org/wiki/An%C3%A1lisis_y_dise%C3%B1o_orientado_a_objetos  Análisis de requisitos del software (s.f.) Recuperado de http://yaqui.mxl.uabc.mx/~molguin/as/IngReq.htm  Ángel Miguel Macas, Jorge Fierro.(s.f.). Diseño de software. Recuperado de http://www.monografias.com/trabajos73/diseno-software/diseno-software.shtml  Ariel Vargas. (18 de octubre de 2010). Ingeniería del Software. Recuperado de http://arielvargasu.blogspot.com/2010/10/garantia-de-calidad-de-software-sqa_18.html  Mantenimiento de software.(s.f). Recuperado de https://es.wikipedia.org/wiki/Mantenimiento_de_software  Pruebas de software (s.f.). Recuperado de https://es.wikipedia.org/wiki/Pruebas_de_software