SlideShare una empresa de Scribd logo
República Bolivariana de Venezuela
Ministerio del poder popular para la educación
Instituto universitario politécnico “Santiago Mariño”
Extensión Cabimas
“Inteligencia artificial
Integrante
Jesús Molleda
C.I:29.519.469
Carrera: ING.SISTEMA “47
28-06- 2020
INTRODUCCIÓN
En el diseño de software, se lleva a cabo, en diferentes pasos para
obtener un producto que cumpla con las especificaciones deseadas,
ajustándose a los parámetros establecidos por los medidas de calidad y
garantía, además de establecer sus ciclos de mantenimiento y
afinaciones reglamentarias para asegurar su perfecto funcionamiento.
El objetivo de los diseñadores es producir un modelo o representación
de una entidad que será construida después. En cualquier proceso de
diseño existen dos fases importantes: la diversificación y la
convergencia. La diversificación es la adquisición de un repertorio de
alternativas, de un material primitivo de diseño: componentes,
soluciones de componentes y conocimiento, todo dentro de catálogos,
de libros de texto y en la mente.
En que consiste el diseño de Software
Para poder explicar los fundamentos básicos, primero hay que saber
que es el diseño del Software
El diseño de software es el proceso por el que un agente crea
una especificación de un artefacto de software, pensado para
cumplir unos objetivos, utilizando un conjunto de componentes
primitivos y sujeto a restricciones. El diseño de software se
puede referir a "toda la actividad en conceptualizar, enmarcar,
implementar, poner en funcionamiento y, finalmente, modificar
sistemas complejos" o "la actividad que sigue a la especificación
de requisitos y precede a la programación, como en un proceso
de ingeniería de software estilizado.
Uno de los componentes principales del diseño de software es el
análisis de requisitos del software (ARS, del inglés SRA). Se trata de
una parte del proceso de desarrollo de software que enumera
especificaciones empleadas en ingeniería de software. Si el software
está "automatizado" o centrado en el usuario, el diseño de software
puede implicar también el diseño de experiencia de usuario que utiliza
un storyboard o guion gráfico para ayudar determinar esas
especificaciones. Si el software es completamente automatizado (es
decir, sin usuario o interfaz de usuario), un diseño de software puede
ser tan sencillo como un diagrama de flujo o un texto describiendo una
secuencia planeada de acontecimientos.
Importancia del diseño de Software
Una fase muy importante en el ciclo de vida de un proyecto es el Diseño del Software. Se trata de
una etapa fundamental y en muchas ocasiones la más importante en el desarrollo de Software. Es
el momento en que los profesionales tienen que aportar sus conocimientos, experiencia y
creatividad para llegar a una solución que cumpla con los requerimientos funcionales y no
funcionales establecidos en la fase de la toma de requisitos.
El diseño del Software tiene un impacto directo sobre la capacidad del sistema para cumplir o no
el total de requerimientos establecidos. Un error de diseño en esta fase puede acarrear problemas
en todo el proyecto y provocar que este caiga en una espiral de continuos cambios y de rehacer
constantemente el trabajo.
Fundamentos basicos Para el diseño de Software
Una vez que se han establecido los requisitos del software, 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 al final se obtiene un
software validado. El diseño es técnicamente la parte central de la ingeniería del software. Durante el diseño se
desarrollan, revisan y se documentan los refinamientos progresivos de las estructuras de datos, de la estructura
del programa y de los detalles procedimentales. El diseño da como resultado
representaciones cuya calidad puede ser evaluada.
Los fundamentos del diseño ayudan al
desarrollador de software a responder a estas
preguntas:
• ¿Qué criterios puedo utilizar para dividir
el software en componentes individuales?
• ¿Cómo se separan los detalles de una
función o de la estructura de los datos de
la representación conceptual del software?
• ¿Existen criterios uniformes que definan
la calidad técnica de un
• diseño de software?
Fundamentos basicos para el diseño de Software
Los Fundamentos básicos del diseño de Software se dividen en:
ABSTRACCIÓN
REFINAMIENTO
MODULARIDAD
ARQUITECTURA DEL
SOFTWARE
JERARQUÍA DE
CONTROL
ESTRUCTURA DE
DATOS
PROCEDIMIENTOS
DEL SOFTWARE
OCULTAMIENTO DE
INFORMACIÓN
 ABSTRACCIÓN
Fundamentos basicos para el diseño de Software
Cuando se considera una solución modular para cualquier problema, pueden formularse varios niveles de abstracción.
En el nivel superior de abstracción se establece una solución en términos generales, en lenguaje natural. En los niveles
inferiores de abstracción se utiliza una orientación más procedimental. Por último, en el nivel más bajo de abstracción, se
establece una solución, de forma que pueda implementarse directamente.
Cada paso de los procesos de la ingeniería del software es un refinamiento del nivel de abstracción de la solución
software. Conforme nos movemos desde los preliminares hacia el diseño detallado, se reduce el nivel de abstracción.
Finalmente, el nivel más bajo de abstracción se alcanza cuando se genera el código fuente.
Conforme nos movemos por los diferentes niveles de abstracción,
trabajamos para crear abstracciones de datos y de procedimientos.
• Una abstracción de datos es un conjunto de datos que describen un
objeto, como puede ser el DNI de una persona, que está compuesta
por conjunto de partes de información, pero que nos podemos
referir a todos los datos mencionando el nombre de la abstracción
de datos.
• Una abstracción procedimental es una determinada secuencia de
instrucciones que tienen una función limitada y específica, como
puede ser “mover objeto”, que supone la secuencia de pasos “abrir
pinza”, “mover hasta posición de destino 1”, “cerrar pinza”, “mover
hasta posición 2”, “abrir pinza”, “mover hasta posición origen”,
“cerrar pinza”.
 REFINAMIENTO.
El refinamiento sucesivo es una primera estrategia de diseño
descendente propuesta por Niklaus Wirth. La arquitectura de un
programa se desarrolla en niveles sucesivos de refinamiento de los
detalles procedimentales. Se desarrolla una jerarquía descomponiendo
una función de forma sucesiva hasta que se llega a las sentencias del
lenguaje de programación.
Comenzamos con una declaración de la función
(o una descripción de la información) definida a
un nivel superior de abstracción. Es decir, la
declaración describe la función o la información
conceptualmente, pero no proporciona
información sobre el funcionamiento interno de
la función o sobre la estructura interna de la
información, sino que se va a realizando
sucesivamente, dando
cada vez más detalles.
Fundamentos basicos para el diseño de Software
 MODULARIDAD.
El software se divide en componentes con nombres y ubicaciones determinados, que se denominan módulos y que se
integran para satisfacer los requisitos del proveedor.
El software monolítico (es decir, un programa grande compuesto de un solo módulo) no puede ser estudiado fácilmente por
un lector, ya que el número de caminos de control, el número de variables y la complejidad global harían el código
prácticamente indescifrable.
Mátemáticamente, esto se explica de esta forma: Sea C(x)
una función que defina la complejidad de un problema x, y
E(x) una función que defina el esfuerzo de desarrollo de un
problema x.
Para dos problemas p1 y p2, si
C(p1) > C(p2)
se deduce que
E(p1) > E(p2)
Además, se cumple que
C(p1 + p2) > C(p1) + C(p2)
y que
E(p1 + p2) > E(p1) + E(p2)
Esto nos lleva a la conclusión divide y vencerás, por tanto la
modularidad del software facilita el desarrollo del mismo,
pero hasta un cierto límite, porque si llegáramos a dividir el
problema en infinitos módulos, los módulos tendrían una
complejidad y un esfuerzo mucho menor, pero crecería el
coste asociado a la creación de interfaces entre los módulos,
Fundamentos basicos para el diseño de Software
 ARQUITECTURA DEL SOFTWARE.
La arquitectura del software se refiere a dos características
importantes del software:
• La estructura jerárquica de los módulos del software
• La estructura de los datos
La arquitectura del software se obtiene mediante un proceso de partición, que relaciona los problemas del mundo real
(definidos en el análisis de requerimientos) con las soluciones software para resolver los problemas software.
Fundamentos basicos para el diseño de Software
 JERARQUÍA DE CONTROL.
se le conoce como estructura del programa, y
representa la organización jerárquica de los
módulos de un programa e implica una jerarquía
de control. La representación de jerarquía se suele
representar con diagramas de árbol, aunque
también se pueden utilizar otros tipos de
notaciones.
• Profundidad: Número de niveles de control
• Anchura: Amplitud global del control
• Grado de salida: Número de módulos que controla un
módulo
• Grado de entrada: Número de módulos que controlan a
un módulo
• Visibilidad: Conjunto de componentes del programa
que pueden ser invocados por un módulo (Herencia en
entornos de POO). Todos los objetos serían visibles para
el módulo
• Conectividad: Conjunto de componentes a los que se
invoca directamente o se utilizan sus datos. (La ejecución
de un módulo puede suponer la ejecución de otro
módulo)
Fundamentos basicos para el diseño de Software
 ESTRUCTURA DE DATOS.
La estructura de datos es una representación de la lógica que existe entre
los elementos individuales de información. Debido a que la estructura
de la información afectará de forma determinante al diseño
procedimiental, la estructura de datos es tan importante como la
estructura del programa en la representación de la arquitectura del
software.
La estructura de datos dicta la organización, los métodos de acceso, el
grado de asociatividad y las alternativas para el tratamiento de la
información. Las estructuras de datos clásicas son los elementos
escalares, los arrays, las listas y los árboles.
Fundamentos basicos para el diseño de Software
 PROCEDIMIENTOS DEL SOFTWARE.
La estructura del programa define la jerarquía de control,
independientemente de las decisiones y secuencias de procesamiento. El
procedimiento del software se centra en los detalles de procesamiento de
cada módulo individual.
El procedimiento debe proporcionar una
especificación precisa del procesamiento,
incluyendo la secuencia de sucesos, los puntos
concretos de decisiones, la repetición de
operaciones e incluso la
organización/estructura de los datos.
Como existe una relación entre la estructura y
el procedimiento, ya que el procesamiento de
un módulo puede suponer la llamada a otros
módulos. A esto se le conoce como
representación procedimental del software por
capas.
Fundamentos basicos para el diseño de Software
 OCULTAMIENTO DE INFORMACIÓN.
El concepto de modularidad nos lleva a esta pregunta: ¿cómo descomponer una solución de software
en el mejor conjunto de módulos? El principio de ocultamiento de la información sugiere que los
módulos deben especificarse de forma que la información (procedimientos y datos) contenida dentro
de un módulo sea inaccesible a otros módulos que no necesiten tal información.
Por tanto se trata de definir una serie de módulos independientes que se comuniquen sólo a través
de la información necesaria para realizar la función de software.
El uso de ocultamiento de información en el diseño facilitará las modificaciones, prueba y
mantenimiento del software, ya que como la mayoría de los datos y de los procedimientos están
ocultos a otras partes del software, será menos probable que los errores que se introduzcan durante
la modificación se propaguen a otros módulos del software.
Fundamentos basicos para el diseño de Software
Diseño Oriebtado a Objetos
El diseño orientado a objeto (DOO) 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 la forma de interactuar con el objeto, también se definen en esta etapa
Un programa orientado a objetos se caracteriza por la interacción de estos objetos.
GARANTÍAS DE CALIDAD DE SOFTWARE
Se define como concordancia con los requisitos
funcionales y de rendimiento explícitamente
establecidos, con los estándares de desarrollo
explícitamente documentados, y con las características
implícitas que se espera de todo software desarrollado
profesionalmente.
La garantía de calidad de software es una actividad de protección que se aplica a
lo largo de todo el proceso del software. La SQA engloba:
1. Un enfoque de gestión de calidad.
2. Tecnología de ingeniería del software efectiva (métodos y herramientas).
3. Revisiones técnicas formales que se aplican durante el proceso del software.
4. Una estrategia de prueba multi-‐escalada.
5. El control de la documentación del software y de los cambios realizados.
6. Un procedimiento que asegure un ajuste a los estándares de desarrollo
delsoftware (cuando sea posible).
7. Mecanismos de medición y de generación de informes.
TÉCNICAS DE PRUEBAS DE SOFTWARE
1) Prueba Unitaria: La prueba unitaria se aplica
en el elemento más pequeño de un sistema, cada
componente es testeado para asegurar que
funciona correctamente. Normalmente desarrolla
una única función cohesiva. La función de la
prueba unitaria es de analizar cada pequeña
parte y testear que funciona correctamente.
2) Prueba de Integración: La prueba de
integración es una extensión lógica de las
pruebas unitarias. Dos unidades que ya han
sido testeadas y combinadas en un
componente y su interface son testeadas
entre ellas.
3) Las pruebas funcionales: se basan en
asegurarse de que todas las características
funcionen de cabo a rabo. Por ejemplo, testear
que las características de un usuario se actualicen
cuando el usuario clicka en el botón de guardar.
Las pruebas funcionales testean una pequeña
parte de la funcionalidad del sistema entera. Se
aplica para verificar que las aplicaciones y
funcionalidades del software actúan
correctamente acorde a un diseño específico. Las
pruebas funcionales son elementos cruciales
para asegurar la calidad del producto software y
confirmar que actúa acorde a sus funciones tal
y como el usuario espera.
4) Pruebas de rendimiento: Y la última es la
prueba de rendimiento. En el desarrollo
desoftware, la prueba de rendimiento es una
práctica de test que determina la actuación
de un sistema en términos de respuesta y
estabilidad en una carga de trabajo en
particular. También puede servir para
investigar, medir, validar o verificar otros
atributos de calidad del sistema, como la
escalabilidad, seguridad y uso de recursos.
Las pruebas de rendimiento construye unos
estándares de actuación en la
implementación, diseño y arquitectura de un
sistema.
MANTENIMIENTO DE SOFTWARE
El mantenimiento preventivo de software es el proceso por el
cual se mejora y optimiza el software que se ha instalado, este
mantenimiento se realiza para la prevención de posibles
problemas que puedan llegar a surgir a medida que se utiliza el
computador.
La principal razón por la que se realiza este mantenimiento, en
estos días es el análisis en busca de virus, ya que estos; los “Virus”
son programas nocivos para el computador, ya que
causan una inestabilidad en el sistema, bajas en el rendimiento del
computador, pérdida de productividad, cortes en los sistemas y
probables errores en el mismo, tales que no se pueden corregir de
manera simple, sino mediante de una formateada
CONCLUSIÓN
El diseño de Software, suelen tomarse en cuenta muchos factoreres, tales como
sus objetivos funcionales, los parámetros a elegir y los recursos con los que se
deben interactuar dentro del entorno de desarrollo. También nos permitirá
tener una visión general antes de lanzarse a la codificación y construcción.
El diseño del Software tiene un impacto directo sobre la capacidad del sistema
para cumplir o no el total de requerimientos establecidos. Un error de diseño en
esta fase puede acarrear problemas en todo el proyecto y provocar que este
caiga en una espiral de continuos cambios y de rehacer constantemente el
trabajo. A raíz de esto es que se deben realizar diversas pruebas para
comprobar si el Software desarrollado cumple con los estándares de calidad y
garantía, además de establecer una conclusión mas firme y saber si cumplirá
con su objetivo de manera optima o necesitaría mas complementos y
desarrollo.
Dentro de las diversas pueba de software, se aprecia que son utilizadas, de
manera que los resultados sean contundentes y claros, ya sea de comprobar
datos, hasta realizar una prueba de estrés a todo en conjunto para saber si se
podrá con la tension exigida dentro del campo real donde sera aplicado como
solucion

Más contenido relacionado

PDF
Fundamentos del Diseño de Software
PPTX
Fundamentos básicos para el diseño de software
PPTX
Fundamentos Básicos para el Diseño del Software - Sistemas II
PPTX
Fundamentos del diseño de software
PPTX
Diseño, Mantenimiento de Software +
PPTX
Jose r ojas ii
PDF
Presentaciondefundamentosdesoftware
PPTX
Fundamentos del diseno de software jesus marcano
Fundamentos del Diseño de Software
Fundamentos básicos para el diseño de software
Fundamentos Básicos para el Diseño del Software - Sistemas II
Fundamentos del diseño de software
Diseño, Mantenimiento de Software +
Jose r ojas ii
Presentaciondefundamentosdesoftware
Fundamentos del diseno de software jesus marcano

La actualidad más candente (20)

PPTX
Adrian adrianza
PPTX
Fundamentos del diseño y Garantías de Calidad del Software
PPTX
Fundamentos del diseno software
PPTX
presentacion_edisleynissilva
PPTX
FUNDAMENTO DEL DISEÑO DE SOFTWARE
PPT
Proceso de diseño
PPT
Desarrollo de Software Orienta a Objetos
PPTX
DiseñO Del Software E IngenieríA Del Software
DOCX
Fundamentos de desarrollo de sistemas
PDF
4. Diseño e Implementación de Software
DOC
Diseno Software
PPT
Atributos de calidad en el desarrollo de software
PPTX
Fundamento del Diseño de Software
PPTX
Fundamentos del diseño de software
DOCX
¿Qué es la arquitectura de software?
PDF
Ingeniería de software II - Parte 2
DOCX
Ingenieria en Software
PPT
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
DOC
Guillermo cárdenas
Adrian adrianza
Fundamentos del diseño y Garantías de Calidad del Software
Fundamentos del diseno software
presentacion_edisleynissilva
FUNDAMENTO DEL DISEÑO DE SOFTWARE
Proceso de diseño
Desarrollo de Software Orienta a Objetos
DiseñO Del Software E IngenieríA Del Software
Fundamentos de desarrollo de sistemas
4. Diseño e Implementación de Software
Diseno Software
Atributos de calidad en el desarrollo de software
Fundamento del Diseño de Software
Fundamentos del diseño de software
¿Qué es la arquitectura de software?
Ingeniería de software II - Parte 2
Ingenieria en Software
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
Guillermo cárdenas
Publicidad

Similar a Fundamentos basicos del diseño de software (20)

PPTX
Análisis del Proyecto de Software
PPTX
Presentación Fundamentos Básicos del Diseño de Software Pedro Luces
PPT
Tecnicas.de.ingenieria.de.software
PDF
Diseño estructurado
PDF
Software exposicion
PPTX
Diseño del software
PPT
PPTX
Edwin alexande mata escobar
PPTX
Vinculación diseño-código
PPTX
Vinculación diseño-ódigo
PPTX
Fundamentos para el diseño de un software
PPTX
Presentacion
PPTX
Fundamentos, Garantías y Técnicas en el diseño de software
PDF
Fundamentos básicos para el diseño de software
PPTX
Inf 162
PPTX
Ra semana 13 2
PDF
ingenieriadesoftware1
PDF
Apuntes ing-sof-unidad-4-1-2015
PDF
PPTX
Riverodanna_presentacion
Análisis del Proyecto de Software
Presentación Fundamentos Básicos del Diseño de Software Pedro Luces
Tecnicas.de.ingenieria.de.software
Diseño estructurado
Software exposicion
Diseño del software
Edwin alexande mata escobar
Vinculación diseño-código
Vinculación diseño-ódigo
Fundamentos para el diseño de un software
Presentacion
Fundamentos, Garantías y Técnicas en el diseño de software
Fundamentos básicos para el diseño de software
Inf 162
Ra semana 13 2
ingenieriadesoftware1
Apuntes ing-sof-unidad-4-1-2015
Riverodanna_presentacion
Publicidad

Último (20)

PPT
Que son las redes de computadores y sus partes
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PDF
La electricidad y la electrónica .pdf n
PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PDF
Calidad desde el Docente y la mejora continua .pdf
PDF
Influencia-del-uso-de-redes-sociales.pdf
PPTX
REDES INFORMATICAS REDES INFORMATICAS.pptx
PDF
Conceptos básicos de programación tecnología.pdf
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
PPTX
Presentación PASANTIAS AuditorioOO..pptx
PDF
Maste clas de estructura metálica y arquitectura
DOCX
Trabajo colaborativo Grupo #2.docxmkkkkkkl
PDF
Estrategia de apoyo tecnología miguel angel solis
PPTX
Administración se srevidores de apliaciones
PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PDF
Estrategia de apoyo tecnología grado 9-3
PPTX
Introduccion a servidores de Aplicaciones (1).pptx
PPTX
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Que son las redes de computadores y sus partes
historia_web de la creacion de un navegador_presentacion.pptx
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
La electricidad y la electrónica .pdf n
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Calidad desde el Docente y la mejora continua .pdf
Influencia-del-uso-de-redes-sociales.pdf
REDES INFORMATICAS REDES INFORMATICAS.pptx
Conceptos básicos de programación tecnología.pdf
Zarate Quispe Alex aldayir aplicaciones de internet .docx
Presentación PASANTIAS AuditorioOO..pptx
Maste clas de estructura metálica y arquitectura
Trabajo colaborativo Grupo #2.docxmkkkkkkl
Estrategia de apoyo tecnología miguel angel solis
Administración se srevidores de apliaciones
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
Estrategia de apoyo tecnología grado 9-3
Introduccion a servidores de Aplicaciones (1).pptx
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx

Fundamentos basicos del diseño de software

  • 1. República Bolivariana de Venezuela Ministerio del poder popular para la educación Instituto universitario politécnico “Santiago Mariño” Extensión Cabimas “Inteligencia artificial Integrante Jesús Molleda C.I:29.519.469 Carrera: ING.SISTEMA “47 28-06- 2020
  • 2. INTRODUCCIÓN En el diseño de software, se lleva a cabo, en diferentes pasos para obtener un producto que cumpla con las especificaciones deseadas, ajustándose a los parámetros establecidos por los medidas de calidad y garantía, además de establecer sus ciclos de mantenimiento y afinaciones reglamentarias para asegurar su perfecto funcionamiento. El objetivo de los diseñadores es producir un modelo o representación de una entidad que será construida después. En cualquier proceso de diseño existen dos fases importantes: la diversificación y la convergencia. La diversificación es la adquisición de un repertorio de alternativas, de un material primitivo de diseño: componentes, soluciones de componentes y conocimiento, todo dentro de catálogos, de libros de texto y en la mente.
  • 3. En que consiste el diseño de Software Para poder explicar los fundamentos básicos, primero hay que saber que es el diseño del Software El diseño de software es el proceso por el que un agente crea una especificación de un artefacto de software, pensado para cumplir unos objetivos, utilizando un conjunto de componentes primitivos y sujeto a restricciones. El diseño de software se puede referir a "toda la actividad en conceptualizar, enmarcar, implementar, poner en funcionamiento y, finalmente, modificar sistemas complejos" o "la actividad que sigue a la especificación de requisitos y precede a la programación, como en un proceso de ingeniería de software estilizado. Uno de los componentes principales del diseño de software es el análisis de requisitos del software (ARS, del inglés SRA). Se trata de una parte del proceso de desarrollo de software que enumera especificaciones empleadas en ingeniería de software. Si el software está "automatizado" o centrado en el usuario, el diseño de software puede implicar también el diseño de experiencia de usuario que utiliza un storyboard o guion gráfico para ayudar determinar esas especificaciones. Si el software es completamente automatizado (es decir, sin usuario o interfaz de usuario), un diseño de software puede ser tan sencillo como un diagrama de flujo o un texto describiendo una secuencia planeada de acontecimientos.
  • 4. Importancia del diseño de Software Una fase muy importante en el ciclo de vida de un proyecto es el Diseño del Software. Se trata de una etapa fundamental y en muchas ocasiones la más importante en el desarrollo de Software. Es el momento en que los profesionales tienen que aportar sus conocimientos, experiencia y creatividad para llegar a una solución que cumpla con los requerimientos funcionales y no funcionales establecidos en la fase de la toma de requisitos. El diseño del Software tiene un impacto directo sobre la capacidad del sistema para cumplir o no el total de requerimientos establecidos. Un error de diseño en esta fase puede acarrear problemas en todo el proyecto y provocar que este caiga en una espiral de continuos cambios y de rehacer constantemente el trabajo.
  • 5. Fundamentos basicos Para el diseño de Software Una vez que se han establecido los requisitos del software, 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 al final se obtiene un software validado. El diseño es técnicamente la parte central de la ingeniería del software. Durante el diseño se desarrollan, revisan y se documentan los refinamientos progresivos de las estructuras de datos, de la estructura del programa y de los detalles procedimentales. El diseño da como resultado representaciones cuya calidad puede ser evaluada. Los fundamentos del diseño ayudan al desarrollador de software a responder a estas preguntas: • ¿Qué criterios puedo utilizar para dividir el software en componentes individuales? • ¿Cómo se separan los detalles de una función o de la estructura de los datos de la representación conceptual del software? • ¿Existen criterios uniformes que definan la calidad técnica de un • diseño de software?
  • 6. Fundamentos basicos para el diseño de Software Los Fundamentos básicos del diseño de Software se dividen en: ABSTRACCIÓN REFINAMIENTO MODULARIDAD ARQUITECTURA DEL SOFTWARE JERARQUÍA DE CONTROL ESTRUCTURA DE DATOS PROCEDIMIENTOS DEL SOFTWARE OCULTAMIENTO DE INFORMACIÓN
  • 7.  ABSTRACCIÓN Fundamentos basicos para el diseño de Software Cuando se considera una solución modular para cualquier problema, pueden formularse varios niveles de abstracción. En el nivel superior de abstracción se establece una solución en términos generales, en lenguaje natural. En los niveles inferiores de abstracción se utiliza una orientación más procedimental. Por último, en el nivel más bajo de abstracción, se establece una solución, de forma que pueda implementarse directamente. Cada paso de los procesos de la ingeniería del software es un refinamiento del nivel de abstracción de la solución software. Conforme nos movemos desde los preliminares hacia el diseño detallado, se reduce el nivel de abstracción. Finalmente, el nivel más bajo de abstracción se alcanza cuando se genera el código fuente. Conforme nos movemos por los diferentes niveles de abstracción, trabajamos para crear abstracciones de datos y de procedimientos. • Una abstracción de datos es un conjunto de datos que describen un objeto, como puede ser el DNI de una persona, que está compuesta por conjunto de partes de información, pero que nos podemos referir a todos los datos mencionando el nombre de la abstracción de datos. • Una abstracción procedimental es una determinada secuencia de instrucciones que tienen una función limitada y específica, como puede ser “mover objeto”, que supone la secuencia de pasos “abrir pinza”, “mover hasta posición de destino 1”, “cerrar pinza”, “mover hasta posición 2”, “abrir pinza”, “mover hasta posición origen”, “cerrar pinza”.
  • 8.  REFINAMIENTO. El refinamiento sucesivo es una primera estrategia de diseño descendente propuesta por Niklaus Wirth. La arquitectura de un programa se desarrolla en niveles sucesivos de refinamiento de los detalles procedimentales. Se desarrolla una jerarquía descomponiendo una función de forma sucesiva hasta que se llega a las sentencias del lenguaje de programación. Comenzamos con una declaración de la función (o una descripción de la información) definida a un nivel superior de abstracción. Es decir, la declaración describe la función o la información conceptualmente, pero no proporciona información sobre el funcionamiento interno de la función o sobre la estructura interna de la información, sino que se va a realizando sucesivamente, dando cada vez más detalles. Fundamentos basicos para el diseño de Software
  • 9.  MODULARIDAD. El software se divide en componentes con nombres y ubicaciones determinados, que se denominan módulos y que se integran para satisfacer los requisitos del proveedor. El software monolítico (es decir, un programa grande compuesto de un solo módulo) no puede ser estudiado fácilmente por un lector, ya que el número de caminos de control, el número de variables y la complejidad global harían el código prácticamente indescifrable. Mátemáticamente, esto se explica de esta forma: Sea C(x) una función que defina la complejidad de un problema x, y E(x) una función que defina el esfuerzo de desarrollo de un problema x. Para dos problemas p1 y p2, si C(p1) > C(p2) se deduce que E(p1) > E(p2) Además, se cumple que C(p1 + p2) > C(p1) + C(p2) y que E(p1 + p2) > E(p1) + E(p2) Esto nos lleva a la conclusión divide y vencerás, por tanto la modularidad del software facilita el desarrollo del mismo, pero hasta un cierto límite, porque si llegáramos a dividir el problema en infinitos módulos, los módulos tendrían una complejidad y un esfuerzo mucho menor, pero crecería el coste asociado a la creación de interfaces entre los módulos, Fundamentos basicos para el diseño de Software
  • 10.  ARQUITECTURA DEL SOFTWARE. La arquitectura del software se refiere a dos características importantes del software: • La estructura jerárquica de los módulos del software • La estructura de los datos La arquitectura del software se obtiene mediante un proceso de partición, que relaciona los problemas del mundo real (definidos en el análisis de requerimientos) con las soluciones software para resolver los problemas software. Fundamentos basicos para el diseño de Software
  • 11.  JERARQUÍA DE CONTROL. se le conoce como estructura del programa, y representa la organización jerárquica de los módulos de un programa e implica una jerarquía de control. La representación de jerarquía se suele representar con diagramas de árbol, aunque también se pueden utilizar otros tipos de notaciones. • Profundidad: Número de niveles de control • Anchura: Amplitud global del control • Grado de salida: Número de módulos que controla un módulo • Grado de entrada: Número de módulos que controlan a un módulo • Visibilidad: Conjunto de componentes del programa que pueden ser invocados por un módulo (Herencia en entornos de POO). Todos los objetos serían visibles para el módulo • Conectividad: Conjunto de componentes a los que se invoca directamente o se utilizan sus datos. (La ejecución de un módulo puede suponer la ejecución de otro módulo) Fundamentos basicos para el diseño de Software
  • 12.  ESTRUCTURA DE DATOS. La estructura de datos es una representación de la lógica que existe entre los elementos individuales de información. Debido a que la estructura de la información afectará de forma determinante al diseño procedimiental, la estructura de datos es tan importante como la estructura del programa en la representación de la arquitectura del software. La estructura de datos dicta la organización, los métodos de acceso, el grado de asociatividad y las alternativas para el tratamiento de la información. Las estructuras de datos clásicas son los elementos escalares, los arrays, las listas y los árboles. Fundamentos basicos para el diseño de Software
  • 13.  PROCEDIMIENTOS DEL SOFTWARE. La estructura del programa define la jerarquía de control, independientemente de las decisiones y secuencias de procesamiento. El procedimiento del software se centra en los detalles de procesamiento de cada módulo individual. El procedimiento debe proporcionar una especificación precisa del procesamiento, incluyendo la secuencia de sucesos, los puntos concretos de decisiones, la repetición de operaciones e incluso la organización/estructura de los datos. Como existe una relación entre la estructura y el procedimiento, ya que el procesamiento de un módulo puede suponer la llamada a otros módulos. A esto se le conoce como representación procedimental del software por capas. Fundamentos basicos para el diseño de Software
  • 14.  OCULTAMIENTO DE INFORMACIÓN. El concepto de modularidad nos lleva a esta pregunta: ¿cómo descomponer una solución de software en el mejor conjunto de módulos? El principio de ocultamiento de la información sugiere que los módulos deben especificarse de forma que la información (procedimientos y datos) contenida dentro de un módulo sea inaccesible a otros módulos que no necesiten tal información. Por tanto se trata de definir una serie de módulos independientes que se comuniquen sólo a través de la información necesaria para realizar la función de software. El uso de ocultamiento de información en el diseño facilitará las modificaciones, prueba y mantenimiento del software, ya que como la mayoría de los datos y de los procedimientos están ocultos a otras partes del software, será menos probable que los errores que se introduzcan durante la modificación se propaguen a otros módulos del software. Fundamentos basicos para el diseño de Software
  • 15. Diseño Oriebtado a Objetos El diseño orientado a objeto (DOO) 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 la forma de interactuar con el objeto, también se definen en esta etapa Un programa orientado a objetos se caracteriza por la interacción de estos objetos.
  • 16. GARANTÍAS DE CALIDAD DE SOFTWARE Se define como concordancia con los requisitos funcionales y de rendimiento explícitamente establecidos, con los estándares de desarrollo explícitamente documentados, y con las características implícitas que se espera de todo software desarrollado profesionalmente. La garantía de calidad de software es una actividad de protección que se aplica a lo largo de todo el proceso del software. La SQA engloba: 1. Un enfoque de gestión de calidad. 2. Tecnología de ingeniería del software efectiva (métodos y herramientas). 3. Revisiones técnicas formales que se aplican durante el proceso del software. 4. Una estrategia de prueba multi-‐escalada. 5. El control de la documentación del software y de los cambios realizados. 6. Un procedimiento que asegure un ajuste a los estándares de desarrollo delsoftware (cuando sea posible). 7. Mecanismos de medición y de generación de informes.
  • 17. TÉCNICAS DE PRUEBAS DE SOFTWARE 1) Prueba Unitaria: La prueba unitaria se aplica en el elemento más pequeño de un sistema, cada componente es testeado para asegurar que funciona correctamente. Normalmente desarrolla una única función cohesiva. La función de la prueba unitaria es de analizar cada pequeña parte y testear que funciona correctamente. 2) Prueba de Integración: La prueba de integración es una extensión lógica de las pruebas unitarias. Dos unidades que ya han sido testeadas y combinadas en un componente y su interface son testeadas entre ellas. 3) Las pruebas funcionales: se basan en asegurarse de que todas las características funcionen de cabo a rabo. Por ejemplo, testear que las características de un usuario se actualicen cuando el usuario clicka en el botón de guardar. Las pruebas funcionales testean una pequeña parte de la funcionalidad del sistema entera. Se aplica para verificar que las aplicaciones y funcionalidades del software actúan correctamente acorde a un diseño específico. Las pruebas funcionales son elementos cruciales para asegurar la calidad del producto software y confirmar que actúa acorde a sus funciones tal y como el usuario espera. 4) Pruebas de rendimiento: Y la última es la prueba de rendimiento. En el desarrollo desoftware, la prueba de rendimiento es una práctica de test que determina la actuación de un sistema en términos de respuesta y estabilidad en una carga de trabajo en particular. También puede servir para investigar, medir, validar o verificar otros atributos de calidad del sistema, como la escalabilidad, seguridad y uso de recursos. Las pruebas de rendimiento construye unos estándares de actuación en la implementación, diseño y arquitectura de un sistema.
  • 18. MANTENIMIENTO DE SOFTWARE El mantenimiento preventivo de software es el proceso por el cual se mejora y optimiza el software que se ha instalado, este mantenimiento se realiza para la prevención de posibles problemas que puedan llegar a surgir a medida que se utiliza el computador. La principal razón por la que se realiza este mantenimiento, en estos días es el análisis en busca de virus, ya que estos; los “Virus” son programas nocivos para el computador, ya que causan una inestabilidad en el sistema, bajas en el rendimiento del computador, pérdida de productividad, cortes en los sistemas y probables errores en el mismo, tales que no se pueden corregir de manera simple, sino mediante de una formateada
  • 19. CONCLUSIÓN El diseño de Software, suelen tomarse en cuenta muchos factoreres, tales como sus objetivos funcionales, los parámetros a elegir y los recursos con los que se deben interactuar dentro del entorno de desarrollo. También nos permitirá tener una visión general antes de lanzarse a la codificación y construcción. El diseño del Software tiene un impacto directo sobre la capacidad del sistema para cumplir o no el total de requerimientos establecidos. Un error de diseño en esta fase puede acarrear problemas en todo el proyecto y provocar que este caiga en una espiral de continuos cambios y de rehacer constantemente el trabajo. A raíz de esto es que se deben realizar diversas pruebas para comprobar si el Software desarrollado cumple con los estándares de calidad y garantía, además de establecer una conclusión mas firme y saber si cumplirá con su objetivo de manera optima o necesitaría mas complementos y desarrollo. Dentro de las diversas pueba de software, se aprecia que son utilizadas, de manera que los resultados sean contundentes y claros, ya sea de comprobar datos, hasta realizar una prueba de estrés a todo en conjunto para saber si se podrá con la tension exigida dentro del campo real donde sera aplicado como solucion