SlideShare a Scribd company logo
1 of 20
Download to read offline
TEMA 1.
INTRODUCCIÓN AL DISEÑO
SOFTWARE
Introducción.
Objetivos
 Conocer diferentes conceptos de la informática y de la
programación.
 Ver las etapas que se deben de seguir a la hora de realizar
un programa.
 Conocer el ciclo de vida del software.
2
Capítulo 1. Introducción
¿A que afecta el software?
 Transporte
 Servicios médicos
 Telecomunicaciones
 Fabricación de bienes
 Control financiero
Esto exige una garantía operativa
3
Introducción. Construcción de Software
Capítulo 1.4
Capítulo 1. Introducción
Construcción de Software
Metodología de la programación para resolver un
problema:
1. Formulación y especificación del problema.
 ¿Qué problema estamos intentando resolver?
 ¿Cuál será la finalidad del software en dicho contexto?
 ¿Quién tiene el conocimiento necesario?
 Especificación formal del problema
2. Diseño de una solución.
3. Implementación de la solución.
4. Prueba y documentación de la aplicación.
5. Documentación:
6. Valoración de la solución.
5
Capítulo 1. Introducción
Construcción de Software
Metodología de la programación para resolver un
problema:
1. Formulación y especificación del problema.
2. Diseño de una solución.
 Sin análisis de requisitos ni diseño, programar se convierte en
el arte de añadir errores a un archivo de texto vacío. (L.
Srygley)
3. Implementación de la solución.
4. Prueba y documentación de la aplicación.
5. Documentación:
6. Valoración de la solución.
6
Capítulo 1. Introducción
Construcción de Software
Metodología de la programación para resolver un problema:
1. Formulación y especificación del problema.
2. Diseño de una solución.
3. Implementación de la solución.
 Selección de las herramientas apropiadas
 Traducción del diseño a código
 Revisión y refinamiento
 Profilers de código
 Análisis estático
4. Prueba y documentación de la aplicación.
5. Documentación:
6. Valoración de la solución.
7
Capítulo 1. Introducción
Construcción de Software
Metodología de la programación para resolver un problema:
1. Formulación y especificación del problema.
2. Diseño de una solución.
3. Implementación de la solución.
4. Prueba y documentación de la aplicación.
 Pruebas de validación.
 ¿Hace el sistema lo que necesita el usuario?
 Pruebas de verificación.
 ¿Hace el sistema lo que dicen las especificaciones?
 Documentación de uso del sistema
5. Documentación:
6. Valoración de la solución.
8
Capítulo 1. Introducción
Construcción de Software
Metodología de la programación para resolver un
problema:
1. Formulación y especificación del problema.
2. Diseño de una solución.
3. Implementación de la solución.
4. Prueba y documentación de la aplicación.
5. Documentación:
 Implícita.
 Explícita (Comentarios como el Prólogo o Descriptivos).
 Herramientas de generación automática
6. Valoración de la solución.
9
Capítulo 1. Introducción
Construcción de Software10
Capítulo 1. Introducción
Construcción de Software
Metodología de la programación para resolver un
problema:
1. Formulación y especificación del problema.
2. Diseño de una solución.
3. Implementación de la solución.
4. Prueba y documentación de la aplicación.
5. Documentación:
6. Valoración de la solución.
 Estructuración, legibilidad y claridad del programa.
 Medidas de eficiencia: Espacio y Tiempo.
11
Capítulo 1. Introducción
Construcción de Software12
Introducción. Diseño Software. Fundamentos
Capítulo 1.13
Capítulo 1. Introducción
Diseño Software. Fundamentos
A.Abstracción: en distintos niveles, del más alto al más bajo.
 Procedimental (operaciones compuestas de
operaciones).Reducción de una secuencia de acciones a una
denominación simple.
 De datos (Datos complejos, formados por otros más simples).
Diseño de tipos de datos complejos a partir de los ya existentes.
 De control (flujo complejo abstraído)
B. Arquitectura del sistema:
 Aplicación de patrones arquitectónicos. Hay patrones genéricos
para varios modelos de sistemas software
 División del sistema en capas. Las arquitecturas que estructuran el
sistema en múltiples capas, son las más comunes
14
Capítulo 1. Introducción
Diseño Software. Fundamentos
C. Refinamiento: sucesivamente, se añaden detalles
procedimentales hasta trabajar con sentencias “primitivas” del
lenguaje de programación.
D. Modularidad: atacamos el problema por partes, dividimos el
problema en módulos más sencillos de manejar.
 Cada capa se divide en módulos. Estrategia divide y vencerás aplicada
al diseño del sistema.
 Facilidad de desarrollo y mantenimiento. Cuanto más simples sean los
módulos mejor.
15
Capítulo 1. Introducción
Diseño Software. Fundamentos
E. Independencia funcional
 Máxima cohesión. Cada módulo se encarga de una única tarea y lo
hace de manera global
 Mínimo acoplamiento. Los cambios en un módulo no deben provocar
modificaciones en otros módulos
16
Capítulo 1. Introducción
Diseño Software
F. Arquitectura del Software: organización jerárquica
de los módulos, su interacción y las estructuras de
datos que utilizan.
G.Jerarquía de control: Organización de los módulos
de un programa.
 Visibilidad: Conjunto de módulos que un módulo
puede llamar.
 Conectividad: módulos que llaman a otro módulos.
H.División Estructural: Capas de la arquitectura
(Presentación, Aplicación y Datos)
17
Capítulo 1. Introducción
Diseño Software
I. Estructura de datos: Relación lógica entre los distintos
elementos individuales de datos. Ejemplos: Listas, pilas, colas,
etc.
J. Procedimientos de software: Detalles de procesamiento de
cada módulo individual.
K. Ocultamiento de información: La información contenida en
un modulo debe ser inaccesible al resto de módulos que no
necesitan acceder a esa información. Permite independencia
entre módulos.
 Abstracción de la complejidad Exponer únicamente la interfaz de
acceso
 Mayor independencia entre módulos La información de estado es
inaccesible para otros módulos
18
Capítulo 1. Introducción
Diseño Software
Existen dos formas de construir un diseño de software. Una forma es
hacerlo tan simple que obviamente no haya deficiencias, y la otra es
hacerlo tan complicado que no existan deficiencias obvias.
El primer método es mucho más difícil.
C.A.R. Hoare
Escribir un programa brillante que funcione es una cosa, diseñar algo que
pueda soportar a largo plazo un negocio es otra muy diferente.
C. Ferguson
19
Capítulo 1. Introducción
Bibliografía
[AU87] A.V. Aho, J.A. Ullman. Data structures and algorithms.
Addison-Wesley.1992.
[FGG98] J. Fernández, A. Garrido, M. García. Estructuras de
datos. Un enfoque práctico usando C. Universidad de
Granada, 1998.
[Pres01] R.S. Pressman. Ingeniería del software, Un enfoque
práctico. Mc Graw Hill. 2001.
20

More Related Content

What's hot

Edwin alexande mata escobar
Edwin alexande mata escobarEdwin alexande mata escobar
Edwin alexande mata escobar
Edwin Alexander
 
Tema1 desarrollo de software basado en componentes
Tema1 desarrollo de software basado en componentesTema1 desarrollo de software basado en componentes
Tema1 desarrollo de software basado en componentes
Gary Araujo Viscarra
 
Unidad 1.2 B Metodos Agiles 1
Unidad 1.2 B Metodos Agiles  1Unidad 1.2 B Metodos Agiles  1
Unidad 1.2 B Metodos Agiles 1
Sergio Sanchez
 

What's hot (20)

Ciclo de vida de una aplicacion informatica
Ciclo de vida de una aplicacion informaticaCiclo de vida de una aplicacion informatica
Ciclo de vida de una aplicacion informatica
 
Ingeniería de software - Descripción, características, modelos
Ingeniería de software - Descripción, características, modelosIngeniería de software - Descripción, características, modelos
Ingeniería de software - Descripción, características, modelos
 
Ingenieria De Software
Ingenieria De SoftwareIngenieria De Software
Ingenieria De Software
 
Ingenieria de software
Ingenieria de softwareIngenieria de software
Ingenieria de software
 
Ingenieria de software
Ingenieria de softwareIngenieria de software
Ingenieria de software
 
Ingenieria de software (conceptos básicos)
Ingenieria de software (conceptos básicos)Ingenieria de software (conceptos básicos)
Ingenieria de software (conceptos básicos)
 
Edwin alexande mata escobar
Edwin alexande mata escobarEdwin alexande mata escobar
Edwin alexande mata escobar
 
metodologías para el análisis y diseño de sistemas
metodologías para el análisis y  diseño de sistemas  metodologías para el análisis y  diseño de sistemas
metodologías para el análisis y diseño de sistemas
 
Arquitectura de software
Arquitectura de softwareArquitectura de software
Arquitectura de software
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Diccionario
DiccionarioDiccionario
Diccionario
 
Ingeniería del-software
Ingeniería del-softwareIngeniería del-software
Ingeniería del-software
 
MeRinde
MeRindeMeRinde
MeRinde
 
Modelamiento software
Modelamiento softwareModelamiento software
Modelamiento software
 
Tema1 desarrollo de software basado en componentes
Tema1 desarrollo de software basado en componentesTema1 desarrollo de software basado en componentes
Tema1 desarrollo de software basado en componentes
 
Capitulo2
Capitulo2Capitulo2
Capitulo2
 
Que es Ingenieria del Software?,
Que es Ingenieria del Software?,Que es Ingenieria del Software?,
Que es Ingenieria del Software?,
 
Plan
PlanPlan
Plan
 
Modelado, Ingenieria de Software
Modelado, Ingenieria de SoftwareModelado, Ingenieria de Software
Modelado, Ingenieria de Software
 
Unidad 1.2 B Metodos Agiles 1
Unidad 1.2 B Metodos Agiles  1Unidad 1.2 B Metodos Agiles  1
Unidad 1.2 B Metodos Agiles 1
 

Similar to Tema 1 introduccion al diseno software

Apuntes ing-sof-unidad-4-1-2015
Apuntes ing-sof-unidad-4-1-2015Apuntes ing-sof-unidad-4-1-2015
Apuntes ing-sof-unidad-4-1-2015
Lucero Mtz
 
Trabajo diapositiva modulo 3 de josue
Trabajo diapositiva modulo 3 de josueTrabajo diapositiva modulo 3 de josue
Trabajo diapositiva modulo 3 de josue
Josue Zelaya
 
Ra semana 13 2
Ra semana 13 2Ra semana 13 2
Ra semana 13 2
victdiazm
 
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
ssalzar
 
Tecnicas de ingenieria de software
Tecnicas de ingenieria de softwareTecnicas de ingenieria de software
Tecnicas de ingenieria de software
'Jorge Martinez
 

Similar to Tema 1 introduccion al diseno software (20)

Apuntes ing-sof-unidad-4-1-2015
Apuntes ing-sof-unidad-4-1-2015Apuntes ing-sof-unidad-4-1-2015
Apuntes ing-sof-unidad-4-1-2015
 
Análisis del Proyecto de Software
Análisis del Proyecto de SoftwareAnálisis del Proyecto de Software
Análisis del Proyecto de Software
 
Significado dentro del ciclo de vida de desarrollo de sistemas
Significado dentro del ciclo de vida de desarrollo de sistemasSignificado dentro del ciclo de vida de desarrollo de sistemas
Significado dentro del ciclo de vida de desarrollo de sistemas
 
Significado dentro del ciclo de vida de desarrollo de sistemas
Significado dentro del ciclo de vida de desarrollo de sistemasSignificado dentro del ciclo de vida de desarrollo de sistemas
Significado dentro del ciclo de vida de desarrollo de sistemas
 
Ciclo de de_desarrollo_de_software
Ciclo de de_desarrollo_de_softwareCiclo de de_desarrollo_de_software
Ciclo de de_desarrollo_de_software
 
Trabajo diapositiva modulo 3 de josue
Trabajo diapositiva modulo 3 de josueTrabajo diapositiva modulo 3 de josue
Trabajo diapositiva modulo 3 de josue
 
Ra semana 13 2
Ra semana 13 2Ra semana 13 2
Ra semana 13 2
 
introducción ingeniería de software
introducción  ingeniería de  softwareintroducción  ingeniería de  software
introducción ingeniería de software
 
Fundamentos
FundamentosFundamentos
Fundamentos
 
Fundamentos basicos del diseño de software
Fundamentos basicos del diseño de softwareFundamentos basicos del diseño de software
Fundamentos basicos del 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
 
Tecnicas de ingenieria de software
Tecnicas de ingenieria de softwareTecnicas de ingenieria de software
Tecnicas de ingenieria de software
 
Adrian adrianza
Adrian adrianzaAdrian adrianza
Adrian adrianza
 
Trabajo diapositiva Software por Jhonatan Ruiz
Trabajo diapositiva  Software por Jhonatan RuizTrabajo diapositiva  Software por Jhonatan Ruiz
Trabajo diapositiva Software por Jhonatan Ruiz
 
Trabajo diapositiva modulo 3 de jhonatan
Trabajo diapositiva modulo 3 de jhonatanTrabajo diapositiva modulo 3 de jhonatan
Trabajo diapositiva modulo 3 de jhonatan
 
Ing
IngIng
Ing
 
Fundamentos del computado2
Fundamentos del computado2Fundamentos del computado2
Fundamentos del computado2
 
Fasesdedesarrollodeunprograma
FasesdedesarrollodeunprogramaFasesdedesarrollodeunprograma
Fasesdedesarrollodeunprograma
 
Paula guia
Paula guiaPaula guia
Paula guia
 
Dpss u3 a2_nigm
Dpss u3 a2_nigmDpss u3 a2_nigm
Dpss u3 a2_nigm
 

Tema 1 introduccion al diseno software

  • 1. TEMA 1. INTRODUCCIÓN AL DISEÑO SOFTWARE
  • 2. Introducción. Objetivos  Conocer diferentes conceptos de la informática y de la programación.  Ver las etapas que se deben de seguir a la hora de realizar un programa.  Conocer el ciclo de vida del software. 2
  • 3. Capítulo 1. Introducción ¿A que afecta el software?  Transporte  Servicios médicos  Telecomunicaciones  Fabricación de bienes  Control financiero Esto exige una garantía operativa 3
  • 4. Introducción. Construcción de Software Capítulo 1.4
  • 5. Capítulo 1. Introducción Construcción de Software Metodología de la programación para resolver un problema: 1. Formulación y especificación del problema.  ¿Qué problema estamos intentando resolver?  ¿Cuál será la finalidad del software en dicho contexto?  ¿Quién tiene el conocimiento necesario?  Especificación formal del problema 2. Diseño de una solución. 3. Implementación de la solución. 4. Prueba y documentación de la aplicación. 5. Documentación: 6. Valoración de la solución. 5
  • 6. Capítulo 1. Introducción Construcción de Software Metodología de la programación para resolver un problema: 1. Formulación y especificación del problema. 2. Diseño de una solución.  Sin análisis de requisitos ni diseño, programar se convierte en el arte de añadir errores a un archivo de texto vacío. (L. Srygley) 3. Implementación de la solución. 4. Prueba y documentación de la aplicación. 5. Documentación: 6. Valoración de la solución. 6
  • 7. Capítulo 1. Introducción Construcción de Software Metodología de la programación para resolver un problema: 1. Formulación y especificación del problema. 2. Diseño de una solución. 3. Implementación de la solución.  Selección de las herramientas apropiadas  Traducción del diseño a código  Revisión y refinamiento  Profilers de código  Análisis estático 4. Prueba y documentación de la aplicación. 5. Documentación: 6. Valoración de la solución. 7
  • 8. Capítulo 1. Introducción Construcción de Software Metodología de la programación para resolver un problema: 1. Formulación y especificación del problema. 2. Diseño de una solución. 3. Implementación de la solución. 4. Prueba y documentación de la aplicación.  Pruebas de validación.  ¿Hace el sistema lo que necesita el usuario?  Pruebas de verificación.  ¿Hace el sistema lo que dicen las especificaciones?  Documentación de uso del sistema 5. Documentación: 6. Valoración de la solución. 8
  • 9. Capítulo 1. Introducción Construcción de Software Metodología de la programación para resolver un problema: 1. Formulación y especificación del problema. 2. Diseño de una solución. 3. Implementación de la solución. 4. Prueba y documentación de la aplicación. 5. Documentación:  Implícita.  Explícita (Comentarios como el Prólogo o Descriptivos).  Herramientas de generación automática 6. Valoración de la solución. 9
  • 11. Capítulo 1. Introducción Construcción de Software Metodología de la programación para resolver un problema: 1. Formulación y especificación del problema. 2. Diseño de una solución. 3. Implementación de la solución. 4. Prueba y documentación de la aplicación. 5. Documentación: 6. Valoración de la solución.  Estructuración, legibilidad y claridad del programa.  Medidas de eficiencia: Espacio y Tiempo. 11
  • 13. Introducción. Diseño Software. Fundamentos Capítulo 1.13
  • 14. Capítulo 1. Introducción Diseño Software. Fundamentos A.Abstracción: en distintos niveles, del más alto al más bajo.  Procedimental (operaciones compuestas de operaciones).Reducción de una secuencia de acciones a una denominación simple.  De datos (Datos complejos, formados por otros más simples). Diseño de tipos de datos complejos a partir de los ya existentes.  De control (flujo complejo abstraído) B. Arquitectura del sistema:  Aplicación de patrones arquitectónicos. Hay patrones genéricos para varios modelos de sistemas software  División del sistema en capas. Las arquitecturas que estructuran el sistema en múltiples capas, son las más comunes 14
  • 15. Capítulo 1. Introducción Diseño Software. Fundamentos C. Refinamiento: sucesivamente, se añaden detalles procedimentales hasta trabajar con sentencias “primitivas” del lenguaje de programación. D. Modularidad: atacamos el problema por partes, dividimos el problema en módulos más sencillos de manejar.  Cada capa se divide en módulos. Estrategia divide y vencerás aplicada al diseño del sistema.  Facilidad de desarrollo y mantenimiento. Cuanto más simples sean los módulos mejor. 15
  • 16. Capítulo 1. Introducción Diseño Software. Fundamentos E. Independencia funcional  Máxima cohesión. Cada módulo se encarga de una única tarea y lo hace de manera global  Mínimo acoplamiento. Los cambios en un módulo no deben provocar modificaciones en otros módulos 16
  • 17. Capítulo 1. Introducción Diseño Software F. Arquitectura del Software: organización jerárquica de los módulos, su interacción y las estructuras de datos que utilizan. G.Jerarquía de control: Organización de los módulos de un programa.  Visibilidad: Conjunto de módulos que un módulo puede llamar.  Conectividad: módulos que llaman a otro módulos. H.División Estructural: Capas de la arquitectura (Presentación, Aplicación y Datos) 17
  • 18. Capítulo 1. Introducción Diseño Software I. Estructura de datos: Relación lógica entre los distintos elementos individuales de datos. Ejemplos: Listas, pilas, colas, etc. J. Procedimientos de software: Detalles de procesamiento de cada módulo individual. K. Ocultamiento de información: La información contenida en un modulo debe ser inaccesible al resto de módulos que no necesitan acceder a esa información. Permite independencia entre módulos.  Abstracción de la complejidad Exponer únicamente la interfaz de acceso  Mayor independencia entre módulos La información de estado es inaccesible para otros módulos 18
  • 19. Capítulo 1. Introducción Diseño Software Existen dos formas de construir un diseño de software. Una forma es hacerlo tan simple que obviamente no haya deficiencias, y la otra es hacerlo tan complicado que no existan deficiencias obvias. El primer método es mucho más difícil. C.A.R. Hoare Escribir un programa brillante que funcione es una cosa, diseñar algo que pueda soportar a largo plazo un negocio es otra muy diferente. C. Ferguson 19
  • 20. Capítulo 1. Introducción Bibliografía [AU87] A.V. Aho, J.A. Ullman. Data structures and algorithms. Addison-Wesley.1992. [FGG98] J. Fernández, A. Garrido, M. García. Estructuras de datos. Un enfoque práctico usando C. Universidad de Granada, 1998. [Pres01] R.S. Pressman. Ingeniería del software, Un enfoque práctico. Mc Graw Hill. 2001. 20