SlideShare a Scribd company logo
1 of 55
FUNDAMENTOS DE
INGENIERÍA DE
SOFTWARE
CONCEPTOS BÁSICOS
¿Qué es el software?
• Es el producto que diseñan y construyen los ingenieros del
software. Esto abarca programas que se ejecutan dentro de una
computadora de cualquier tamaño y arquitectura, documentos
virtuales e impresos y datos que combinan números, texto, audio,
video e imágenes.
¿Quién lo hace?
• Los ingenieros de software lo construyen, y virtualmente cualquier
persona en el mundo industrializado lo utiliza bien directa o
indirectamente.
¿Porqué es importante?
¿Cuáles son los pasos?
APLICACIONES DEL
SOFTWARE
Puede aplicarse en cualquier situación donde se haya
definido previamente un conjunto específico de pasos
procedimentales.
• Software de sistemas
• Software de tiempo real
• Software de gestión
• Software de ingeniería y científico
PRODUCTO DE
SOFTWARE
Son sistemas de software junto a la documentación
que describe cómo instalarlo y usarlo.
• Documentación de requerimientos
• Documentación de diseño
• Código fuente
• Planes de prueba del sistema
• Principios de operación
• Instrucciones de instalación
• Procedimientos de mantenimiento
• Manuales de usuario
CATEGORÍAS DE
SOFTWARE
Los productos de software se pueden dividir en dos grupos:
• Productos genéricos: desarrollados para un mercado.
• Productos a la medida: encargados por un cliente.
La diferencia entre uno y otro:
• En los genéricos, la organización que desarrolla el software controla su
especificación.
• En los otros, por lo general es desarrollada y controlada por la organización
que está comprando el software.
CARACTERÍSTICAS DE
LOS PRODUCTOS DE
SOFTWARE
Mantenibles.
• Debe ser posible que el software evolucione y que siga
cumpliendo con sus especificaciones.
Confiabilidad.
• El software no debe causar daños físicos o económicos en el
caso de fallos.
Eficiencia.
• El software no debe desperdiciar los recursos del sistema.
Utilización adecuada.
• El software debe contar con una interfaz de usuario adecuada
y su documentación.
INGENIERÍA DE
SOFTWARE
El término “Ingeniería del software” surge a final de los años 60
dentro de una conferencia dedicada a “la crisis del software”.
Se define como:
• “La disciplina tecnológica relacionada con la producción sistemática y el
mantenimiento de productos de software que son desarrollados y modificados
en el tiempo previsto y dentro de los costos estimados”.
Su objetivo es producir productos de software.
OTROS CONCEPTOS
Ingeniería del software:
• Conjunto de métodos, herramientas y procedimientos para producir
software de gran calidad. [R. Pressman]
Los métodos describen cómo construir técnicamente el
software. Comprende las actividades de:
• Planificación y estimación de proyectos
• Análisis de requisitos
• Diseño
• Codificación
• Prueba
• Mantenimiento
Las herramientas dan soporte semiautomático a los
métodos.
Los procedimientos relacionan formalmente los métodos
y las herramientas.
CALIDAD DE SOFTWARE
La calidad del software es una noción que puede ser
descrita mediante una serie de factores, que pueden ser:
• Externos: observables por los usuarios del producto.
• Internos: observables por profesionales de la computación.
FACTORES EXTERNOS
Corrección: capacidad de los productos de software de ejecutar sus
tareas tal como están definidas en su especificación de requerimientos.
Robustez: capacidad de un sistema de software para funcionar en
situaciones anormales.
Modificabilidad: facilidad de un producto para adaptarse al cambio de
especificaciones.
Reusabilidad: facilidad para ser reutilizado en todo o en parte para
nuevas aplicaciones.
Compatibilidad: facilidad de los productos de software para
combinarse unos con otros.
Eficiencia: buen uso de los recursos de software y hardware
disponibles.
FACTORES EXTERNOS
Portabilidad: facilidad para adaptarse a otros entornos de software o
hardware.
Verificabilidad: facilidad para preparar procedimientos de aceptación,
en particular datos de prueba, para detectar fallos durante las fases de
validación y operación.
Integridad: capacidad de un sistema para proteger sus documentos
(programas, datos) contra accesos y modificaciones no autorizados.
Facilidad de uso: capacidad de aprender a manejar un sistema de
software, operar con el, preparar datos de entrada, interpretar
resultados, etc.
FACTORES INTERNOS
Modularidad: independencia funcional de los
componentes del programa.
Legibilidad: facilidad de lectura e interpretación del
código del programa.
EL PROCESO DEL
SOFTWARE
¿Qué es un proceso de software?
Es un conjunto de actividades, acciones y tareas que
se ejecutan cuando va a crearse algún producto del
trabajo.
• Una actividad busca lograr un objetivo amplio y se desarrolla sin
importar el dominio de la aplicación.
• Una acción es un conjunto de tareas que producen un producto
importante del trabajo.
• Una tarea se centra en un objetivo pequeño pero bien definido
que produce un resultado tangible.
ACTIVIDADES DEL
PROCESO DE
SOFTWARE
Una estructura de proceso general para la ingeniería de software consta de las
siguientes actividades:
• Planificación
• Análisis
• Diseño
• Implementación
• Pruebas
• Instalación o Despliegue
• Uso y mantenimiento
Comunicación: comunicarse con los clientes para entender los objetivos.
Planeación: Cualquier viaje se simplifica si existe un mapa. Para el desarrollo de software
el mapa es el plan del proyecto de software.
Modelado: crear un bosquejo del objeto por hacer con el fin de entender el panorama.
Construcción: generación de código y pruebas para descubrir errores.
Despliegue: entrega al consumidor para su evaluación.
PLANIFICACIÓN
Delimitación del ámbito del proyecto
Realización de un estudio de viabilidad
Análisis de los riesgos asociados al proyecto
Estimación del costo del proyecto
Planificación temporal y la asignación de recursos a
las distintas etapas del proyecto.
ANÁLISIS
Técnicas de elicitación de requerimientos
• Incluye desde el cliente que paga el proyecto hasta los usuarios
finales de la aplicación.
• Sin olvidarse de terceras personas, empresas competidoras y
organismos reguladores.
Herramientas de modelado de sistemas.
• Ayudan a comunicar la estructura de un sistema complejo
• Sirven para especificar el comportamiento deseado del sistema
• Ayudan a comprender mejor lo que estamos diseñando
• Permiten descubrir oportunidades de simplificación y de reutilización
Metodologías de análisis de requerimientos.
DISEÑO
Un software bien diseñado debe exhibir determinadas características.
Su diseño debería ser modular
Sus módulos deberían ser cohesivos (encargarse de una tarea concreta y sólo de una) y
estar débilmente acoplados entre sí (para facilitar el mantenimiento del sistema).
Cada módulo debería ofrecer a los demás unas interfaces bien definidos y ocultar sus
detalles de implementación.
Debe ser posible relacionar las decisiones de diseño tomadas con los requerimientos del
sistema que las ocasionaron.
Diseños mas comunes
• Arquitecturas multicapa
• Arquitecturas cliente/servidor
IMPLEMENTACIÓN
Antes de escribir una sola línea de código (o de
crear una tabla en nuestra base de datos) es
fundamental haber comprendido bien el problema
que se pretende resolver y haber aplicado
principios básicos de diseño que nos permitan
construir un sistema de información de calidad.
• Herramientas adecuadas
• Un entorno de desarrollo que facilite nuestro trabajo
• Un lenguaje de programación apropiado para el tipo de
sistema que vayamos a construir.
PRUEBAS
Errar es humano y la etapa de pruebas tiene como objetivo
detectar los errores que se hayan podido cometer en las
etapas anteriores del proyecto (y, eventualmente,
corregirlos).
• Las pruebas de unidad
• Las pruebas de integración
• Pruebas alfa
• Pruebas beta
• Test de aceptación
• Revisiones
INSTALACIÓN/DESPLIEG
UE
Una vez concluidas las etapas de desarrollo de un sistema de
información (análisis, diseño, implementación y pruebas), llega el
instante de que poner el sistema en funcionamiento, su instalación o
despliegue.
De cara a su instalación, hemos de planificar el entorno en el que el
sistema debe funcionar, tanto hardware como software: equipos
necesarios y su configuración física, redes de interconexión entre
los equipos y de acceso a sistemas externos, sistemas operativos
(actualizados para evitar problemas de seguridad), bibliotecas y
componentes suministrados por terceras partes, etcétera.
USO Y MANTENIMIENTO
La etapa de mantenimiento consume típicamente del 40 al 80 por
ciento de los recursos de una empresa de desarrollo de software.
De hecho, con un 60% de media, es probablemente la etapa más
importante del ciclo de vida del software.
Dada la naturaleza del software, que ni se rompe ni se desgasta
con el uso, su mantenimiento incluye tres facetas diferentes:
• Eliminar los defectos que se detecten durante su vida útil (mantenimiento
correctivo)
• Adaptarlo a nuevas necesidades (mantenimiento adaptativo)
• Añadirle nueva funcionalidad (mantenimiento perfectivo),
CICLO DE VIDA
Sucesión de etapas por las que atraviesa un producto software a lo
largo de su desarrollo y existencia.
Existen distintas formas, paradigmas o modelos de ciclo de vida de
software:
• Clásico o cascada
• Prototipado.
• Evolutivo o en espiral.
• Combinación de estilos, etc.
Alternativamente, a veces se usan los términos
“Ciclo de vida”, y “Modelo de ciclo de vida”
CICLO DE VIDA
CLÁSICO O CASCADA
Propuesto por W. Royce a principios de los 70.
Aplicación secuencial de una serie de pasos.
Cada paso genera entradas y documentación
para la siguiente.
MODELO EN CASCADA
REAL
CRÍTICAS AL CICLO DE
VIDA CLÁSICO
Proyectos raramente siguen el ciclo de vida secuencial.
Dificultad para establecer los requerimientos al principio de
proceso.
Errores detectados tardíamente.
Mantenimiento por parcheado (corregir según se presenten
los problemas).
PROTOTIPADO
Prototipear consiste en construir una
versión inicial de un producto, el cual se
describe la interacción hombre-máquina
sin implementar completamente la
funcionalidad del sistema (prototipo sin
funcionalidad).
Utilidad:
•Ayuda a los analistas a establecer las necesidades
del cliente.
•Ayuda a los desarrolladores a mejorar los productos.
CLASES DE
PROTOTIPOS
Vertical: desarrolla completamente algunas de las
facetas del producto.
Horizontal: desarrolla parcialmente todas las facetas del
producto.
Evolutivo: la versión final es el producto ya construido.
Desechable: se usa solo para la captación de
requerimientos y funcionalidad.
OBSERVACIONES
SOBRE EL
PROTOTIPADO
Facilita la captación de los requerimientos del cliente.
Reduce el riesgo de parcheado del producto final.
La construcción del prototipo supone una inversión adicional.
El cliente ve funcionando una versión de lo que será su programa
sin asumir que dicha versión no es robusta ni completa.
EVOLUTIVO O EN
ESPIRAL
El desarrollo en espiral fue definido por primera vez por
Barry Boehm en 1986.
Las actividades de este modelo se conforman en una
espiral, en la que cada bucle o iteración representa un
conjunto de actividades.
Las actividades no están fijadas a ninguna prioridad, sino
que las siguientes se eligen en función del análisis de
riesgo, comenzando por el bucle interior.
VENTAJAS
El análisis del riesgo se hace de forma explícita y clara. Une los mejores
elementos de los restantes modelos.
Reduce riesgos del proyecto
Incorpora objetivos de calidad
Integra el desarrollo con el mantenimiento, etc.
Además es posible tener en cuenta mejoras y nuevos requerimientos sin
romper con la metodología, ya que este ciclo de vida no es rígido ni estático.
DESVENTAJAS
Genera mucho tiempo en el desarrollo
del sistema
Modelo costoso
Requiere experiencia en la identificación
de riesgos
OTROS TIPOS DE
MODELADO
Modelo incremental
Modelo DRA
Modelo en “Y”
Proceso Unificado de Rational (RUP)
Metodología ágil
Scrum
Programación extrema
¿QUÉ MODELO
UTILIZAR?
Para sistemas bien conocidos se puede utilizar el Modelo de
Cascada. La fase de análisis de riesgos es relativamente fácil
Con requisitos estables y sistemas de seguridad críticos, se
recomienda utilizar modelos formales
Con especificaciones incompletas, el modelo de prototipado
ayuda a identificarlos y va produciendo un sistema funcional
Pueden utilizarse modelos híbridos en distintas partes del
desarrollo
CLASIFICACIÓN DE LA
TECNOLOGÍA EN EL
DESARROLLO DE
SOFTWARE
Una de las tareas del ingeniero de software es la de seleccionar la
mejor tecnología para el tipo de proyecto a desarrollar.
Definimos tecnología de software como un conjunto integrado de
notaciones, herramientas y métodos, basados en unos sólidos
fundamentos, que permiten el desarrollo de un producto software en
un contexto organizativo dado.
Una tecnología de software puede considerarse constituida por los
siguientes componentes:
TECNOLOGÍAS DE
SOFTWARE
Las dos mas importantes son:
• Tecnologías de desarrollo
estructurado
• Tecnologías orientadas a objetos
TECNOLOGÍA
ESTRUCTURADA
Las tecnologías de desarrollo estructurado son las más convencionales de las
empleadas hoy día. Han surgido de la evolución de las ideas de programación
estructurada (hace más de veinticinco años) hacia las fases iniciales del ciclo de
vida.
La idea base de esta tecnología es que es posible estructurar el modelo de un
sistema de software en base a funciones que procesan información que reciben
de otras funciones (o del exterior) y dirigen la información procesada a otros
módulos funcionales (o al exterior).
El enfoque seguido, por tanto, es el de pensar en las funciones del sistema
necesarias (extraídas de los requisitos del sistema) y luego en los datos que
requieren.
TECNOLOGÍAS
ORIENTADOS A
OBJETOSLas tecnologías de desarrollo estructurado han demostrado sus
limitaciones a la hora de organizar y facilitar la evolución de sistemas de
software complejos.
La descomposición en funciones hace difícil al diseñador mantener la
relación con los objetos del mundo real sobre los que se modifican
generalmente los requisitos del usuario.
Los métodos de descomposición orientada a objetos constituyen la
tendencia más influyente observada en la ingeniería de sistemas de
software en los últimos años.
Con ellos nos referimos a un conjunto de métodos (aún en fase de
desarrollo o evolución) que permiten al analista y diseñador concebir su
sistema identificando clases de objetos, operaciones permitidas y
relaciones entre ellos como base para la estructura del sistema a diseñar.
¿Cuáles son las ventajas de un lenguaje
orientado a objetos?
• Fomenta la reutilización y extensión del código.
• Permite crear sistemas más complejos.
• Relacionar el sistema al mundo real.
• Facilita la creación de programas visuales.
• Construcción de prototipos
• Agiliza el desarrollo de software
• Facilita el trabajo en equipo
• Facilita el mantenimiento del software
HERRAMIENTAS CASE
Utilizamos las computadoras en nuestras vidas sin pensarlo.
•TV´s, microondas, cajeros automáticos, etc.
Desde que se inició la creación de software, surgió la necesidad de
herramientas que automatizaran el proceso.
Traductores, recopiladores, ensambladores, procesadores de
macros, etc.
•Estas aplicaciones provocaron una gran demanda por desarrollar software.
Se creo una gran cantidad de software que necesitaba
mantenimiento y actualización.
Causo muchos problemas a la industria de software, ya que no
podía cubrir la demanda con los métodos que se utilizaban.
•Crisis de software
Se crearon metodologías para intentar crear estándares de
desarrollo.
Además se creó un soporte automatizado para el desarrollo y
mantenimiento de software,
•Computer Aided Software Engineering (CASE)
¿QUÉ SON LAS
HERRAMIENTAS CASE?
Son un conjunto de programas y ayudas que
dan asistencia a los analistas, ingenieros de
software y desarrolladores, durante todos los
pasos del Ciclo de Vida de desarrollo de un
Software.
También se pueden definir como:•Conjunto de métodos, utilidades y técnicas que facilitan la
automatización del ciclo de vida del desarrollo de sistemas
de información, completamente o en alguna de sus fases.
VENTAJAS
La mejor razón para la creación de estas herramientas fue el
incremento en la velocidad de desarrollo de los sistemas.
Por esto, las compañías pudieron desarrollar sistemas sin encarar el
problema de tener cambios en las necesidades del negocio, antes de
finalizar el proceso de desarrollo.
También permite a las compañías competir más efectivamente usando
estos sistemas desarrollados nuevamente para compararlos con sus
necesidades de negocio actuales. En un mercado altamente
competitivo, esto puede hacer la diferencia entre el éxito y el fracaso.
Las herramientas CASE también permiten a los analistas
tener más tiempo para el análisis y diseño y minimizar
el tiempo para codificar y probar.
Además permiten:
•Verificar el uso de todos los elementos en el sistema
diseñado.
•Automatizar el dibujo de diagramas.
•Ayudar en la documentación del sistema.
•Ayudar en la creación de relaciones en la Base de Datos.
CLASIFICACIÓN DE
HERRAMIENTAS CASE
No existe una única clasificación de herramientas
CASE y, en ocasiones, es difícil incluirlas en una clase
determinada. Podrían clasificarse atendiendo a:
•Las plataformas que soportan.
•Las fases del ciclo de vida del desarrollo de sistemas que cubren.
•La arquitectura de las aplicaciones que producen.
•Su funcionalidad.
FASES DEL CICLO DE
VIDA QUE CUBREN
Herramientas integradas, I-CASE (Integrated CASE, CASE integrado):
abarcan todas las fases del ciclo de vida del desarrollo de sistemas. Son
llamadas también CASE workbench.
Herramientas de alto nivel, U-CASE (Upper CASE - CASE superior) o
front-end, orientadas a la automatización y soporte de las actividades
desarrolladas durante las primeras fases del desarrollo: análisis y diseño.
Herramientas de bajo nivel, L-CASE (Lower CASE - CASE inferior) o back-
end, dirigidas a las últimas fases del desarrollo: construcción e
implantación.
Juegos de herramientas o Tools-Case, son el tipo más simple de
herramientas CASE. Automatizan una fase dentro del ciclo de vida.
Dentro de este grupo se encontrarían las herramientas de reingeniería,
orientadas a la fase de mantenimiento.
Tipo de
CASE
Ventajas Desventajas
I – CASE • Integra el ciclo de vida.
• Permite lograr importantes
mejoras de productividad a
mediano plazo.
• Permite un eficiente soporte al
mantenimiento de sistemas.
• Mantiene la consistencia de los
sistemas a nivel corporativo.
• No es tan eficiente para
soluciones simples, sino
para soluciones complejas.
• Depende del Hardware y del
Software.
• Es costoso.
Upper CASE • Se utiliza en plataforma PC, es
aplicable a diferentes entornos.
• Menor costo.
• Permite mejorar la calidad
de los sistemas, pero no
mejora la productividad.
• No permite la integración
del ciclo de vida.
Lower CASE • Permite lograr importantes
mejoras de productividad a
corto plazo.
• Permite un eficiente soporte al
mantenimiento de sistemas.
• No garantiza la consistencia
de los resultados a nivel
corporativo.
• No garantiza la eficiencia
del Análisis y Diseño.
• No permite la integración
del ciclo de vida.
DE ACUERDO A SU
FUNCIONALIDAD
Herramientas de planificación de sistemas de gestión.
Herramientas de análisis y diseño.
Herramientas de programación.
Herramientas de integración y prueba.
Herramientas de gestión de prototipos.
Herramientas de mantenimiento.
Herramientas de gestión de proyectos.
Herramientas de soporte.
COMPONENTES DE UNA
CASE
Repositorio: Base de datos central de una herramienta CASE. La mayoría de
herramientas CASE poseen un repositorio propio o bien trabajan sobre un
repositorio suministrado por otro fabricante o vendedor.
Módulos de diagramación y modelización: Algunos de los diagramas y
modelos utilizados con mayor frecuencia son:
•Diagrama de flujo de datos.
•Modelo entidad - interrelación.
•Historia de la vida de las entidades.
•Diagrama Estructura de datos.
•Diagrama Estructura de cuadros.
•Técnicas matriciales.
Herramienta de prototipado: El objetivo principal de esta herramienta es
poder mostrar al usuario, desde los momentos iniciales del diseño, el
aspecto que tendrá la aplicación una vez desarrollada.
Generador de código: Normalmente se suele utilizar sobre ordenadores
personales o estaciones de trabajo, por lo que el paso posterior del código
al host puede traer problemas, al tener que compilar en ambos entornos.
Las características más importantes de los generadores de código son:
•Lenguaje generado
•Portabilidad de código
•Generación del esqueleto del programa
Módulo generador de documentación: El módulo generador
de la documentación se alimenta del repositorio para
transcribir las especificaciones allí contenidas.
Algunas características de los generadores de
documentación son:
•Generación automática a partir de los datos del repositorio
•Combinación de información textual y gráfica
•Generación de referencias cruzadas.
•Ayuda de tratamiento de textos

More Related Content

What's hot

Dispositvos de entrada y salida
Dispositvos de entrada y salidaDispositvos de entrada y salida
Dispositvos de entrada y salidaitzayana bacilio
 
Analizador Sintáctico
Analizador SintácticoAnalizador Sintáctico
Analizador SintácticoPablo Guerra
 
Arquitecturas de pizarra o repositório
Arquitecturas de pizarra o repositórioArquitecturas de pizarra o repositório
Arquitecturas de pizarra o repositóriorehoscript
 
Metodologías de Desarrollo de Software Tradicionales y Emergentes
Metodologías de Desarrollo de Software Tradicionales y EmergentesMetodologías de Desarrollo de Software Tradicionales y Emergentes
Metodologías de Desarrollo de Software Tradicionales y EmergentesMiguel Rodríguez
 
Unidad 1 Ingenieria de software
Unidad 1 Ingenieria de softwareUnidad 1 Ingenieria de software
Unidad 1 Ingenieria de softwareJahiro Bojorquez
 
DISEÑO DE LA ARQUITECTURA DEL SOFTWARE
DISEÑO DE LA ARQUITECTURA DEL SOFTWAREDISEÑO DE LA ARQUITECTURA DEL SOFTWARE
DISEÑO DE LA ARQUITECTURA DEL SOFTWAREjose_rob
 
Tecnicas de estimacion de costos de proyecto software
Tecnicas de estimacion de costos de proyecto softwareTecnicas de estimacion de costos de proyecto software
Tecnicas de estimacion de costos de proyecto softwareJennifer Andrea Cano Guevara
 
modelos del proceso del software
 modelos del proceso del software  modelos del proceso del software
modelos del proceso del software Brihany Rossell
 
Unidad 4: INTEROPERABILIDAD ENTRE SISTEMAS OPERATIVOS
Unidad 4:  INTEROPERABILIDAD ENTRE SISTEMAS OPERATIVOSUnidad 4:  INTEROPERABILIDAD ENTRE SISTEMAS OPERATIVOS
Unidad 4: INTEROPERABILIDAD ENTRE SISTEMAS OPERATIVOSYessica Hyuga Soto
 
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesPortafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesHumano Terricola
 
Origen del Modelo OSI y su impacto en als estructuras de redes
Origen del Modelo OSI y su impacto en als estructuras de redesOrigen del Modelo OSI y su impacto en als estructuras de redes
Origen del Modelo OSI y su impacto en als estructuras de redesKim Sorel Rush
 
Cuadro comparativo s.o
Cuadro  comparativo s.oCuadro  comparativo s.o
Cuadro comparativo s.oriosofelia
 
Fundamentos del Diseño de Software
Fundamentos del Diseño de SoftwareFundamentos del Diseño de Software
Fundamentos del Diseño de SoftwareNelson Guanipa
 

What's hot (20)

Dispositvos de entrada y salida
Dispositvos de entrada y salidaDispositvos de entrada y salida
Dispositvos de entrada y salida
 
Analizador Sintáctico
Analizador SintácticoAnalizador Sintáctico
Analizador Sintáctico
 
Arquitecturas de pizarra o repositório
Arquitecturas de pizarra o repositórioArquitecturas de pizarra o repositório
Arquitecturas de pizarra o repositório
 
Metodologías de Desarrollo de Software Tradicionales y Emergentes
Metodologías de Desarrollo de Software Tradicionales y EmergentesMetodologías de Desarrollo de Software Tradicionales y Emergentes
Metodologías de Desarrollo de Software Tradicionales y Emergentes
 
Unidad 1 Ingenieria de software
Unidad 1 Ingenieria de softwareUnidad 1 Ingenieria de software
Unidad 1 Ingenieria de software
 
DISEÑO DE LA ARQUITECTURA DEL SOFTWARE
DISEÑO DE LA ARQUITECTURA DEL SOFTWAREDISEÑO DE LA ARQUITECTURA DEL SOFTWARE
DISEÑO DE LA ARQUITECTURA DEL SOFTWARE
 
Factores de calidad del software
Factores de calidad del softwareFactores de calidad del software
Factores de calidad del software
 
Tecnicas de estimacion de costos de proyecto software
Tecnicas de estimacion de costos de proyecto softwareTecnicas de estimacion de costos de proyecto software
Tecnicas de estimacion de costos de proyecto software
 
Estándares para el Modelado de Procesos de Negocios
Estándares para el Modelado de Procesos de NegociosEstándares para el Modelado de Procesos de Negocios
Estándares para el Modelado de Procesos de Negocios
 
2. El proceso del software
2. El proceso del software2. El proceso del software
2. El proceso del software
 
modelos del proceso del software
 modelos del proceso del software  modelos del proceso del software
modelos del proceso del software
 
Estimación de Proyectos de Software
Estimación de Proyectos de SoftwareEstimación de Proyectos de Software
Estimación de Proyectos de Software
 
Unidad 4: INTEROPERABILIDAD ENTRE SISTEMAS OPERATIVOS
Unidad 4:  INTEROPERABILIDAD ENTRE SISTEMAS OPERATIVOSUnidad 4:  INTEROPERABILIDAD ENTRE SISTEMAS OPERATIVOS
Unidad 4: INTEROPERABILIDAD ENTRE SISTEMAS OPERATIVOS
 
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesPortafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
 
Capas de la ingenieria de software
Capas de la ingenieria de softwareCapas de la ingenieria de software
Capas de la ingenieria de software
 
Metodologia orientada a objeto
Metodologia orientada a objetoMetodologia orientada a objeto
Metodologia orientada a objeto
 
Origen del Modelo OSI y su impacto en als estructuras de redes
Origen del Modelo OSI y su impacto en als estructuras de redesOrigen del Modelo OSI y su impacto en als estructuras de redes
Origen del Modelo OSI y su impacto en als estructuras de redes
 
Cuadro comparativo s.o
Cuadro  comparativo s.oCuadro  comparativo s.o
Cuadro comparativo s.o
 
Fundamentos del Diseño de Software
Fundamentos del Diseño de SoftwareFundamentos del Diseño de Software
Fundamentos del Diseño de Software
 
Gestion de memoria en Linux
Gestion de memoria en LinuxGestion de memoria en Linux
Gestion de memoria en Linux
 

Viewers also liked

Modelado de requisitos
Modelado de requisitosModelado de requisitos
Modelado de requisitosKleo Jorgee
 
Modelado del AnáLisis
Modelado del AnáLisisModelado del AnáLisis
Modelado del AnáLisisCarolina Rojas
 
Modelado del análisis
Modelado del análisisModelado del análisis
Modelado del análisisJavier Rivera
 
Unidad 5 Mad Modelado Analisis Modelo Conceptual
Unidad 5 Mad Modelado Analisis   Modelo ConceptualUnidad 5 Mad Modelado Analisis   Modelo Conceptual
Unidad 5 Mad Modelado Analisis Modelo ConceptualSergio Sanchez
 
6.modelado de los requerimientos escenarios y clases
6.modelado de los requerimientos  escenarios y clases6.modelado de los requerimientos  escenarios y clases
6.modelado de los requerimientos escenarios y clasesRamiro Estigarribia Canese
 
Unidad 1.3 Analisis De Requerimientos
Unidad 1.3 Analisis De RequerimientosUnidad 1.3 Analisis De Requerimientos
Unidad 1.3 Analisis De RequerimientosSergio Sanchez
 

Viewers also liked (6)

Modelado de requisitos
Modelado de requisitosModelado de requisitos
Modelado de requisitos
 
Modelado del AnáLisis
Modelado del AnáLisisModelado del AnáLisis
Modelado del AnáLisis
 
Modelado del análisis
Modelado del análisisModelado del análisis
Modelado del análisis
 
Unidad 5 Mad Modelado Analisis Modelo Conceptual
Unidad 5 Mad Modelado Analisis   Modelo ConceptualUnidad 5 Mad Modelado Analisis   Modelo Conceptual
Unidad 5 Mad Modelado Analisis Modelo Conceptual
 
6.modelado de los requerimientos escenarios y clases
6.modelado de los requerimientos  escenarios y clases6.modelado de los requerimientos  escenarios y clases
6.modelado de los requerimientos escenarios y clases
 
Unidad 1.3 Analisis De Requerimientos
Unidad 1.3 Analisis De RequerimientosUnidad 1.3 Analisis De Requerimientos
Unidad 1.3 Analisis De Requerimientos
 

Similar to Fundamentos de ingenieria del software (2)

Unidad 1 ing de software
Unidad 1 ing de softwareUnidad 1 ing de software
Unidad 1 ing de softwareMary Carmen
 
IngSoftCap01-Introduccion.pdf
IngSoftCap01-Introduccion.pdfIngSoftCap01-Introduccion.pdf
IngSoftCap01-Introduccion.pdfcristian265023
 
Ingenieria de Software
Ingenieria de SoftwareIngenieria de Software
Ingenieria de SoftwarePablo Niama
 
Seleccion de tecnicas de ingenieria de software
Seleccion de tecnicas de ingenieria de softwareSeleccion de tecnicas de ingenieria de software
Seleccion de tecnicas de ingenieria de softwareIngris Argueta
 
Sanchez garcia juan jose definiciones en la ingeniería de software sis4-1
Sanchez garcia juan jose  definiciones en la ingeniería de software sis4-1Sanchez garcia juan jose  definiciones en la ingeniería de software sis4-1
Sanchez garcia juan jose definiciones en la ingeniería de software sis4-1Jose Garcia
 
Ingeniería de software
Ingeniería de software Ingeniería de software
Ingeniería de software jevo1994
 
Ingeniería de software - definiciones
Ingeniería de software - definicionesIngeniería de software - definiciones
Ingeniería de software - definicionesdettebe
 
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, modelosRafael Fdo Lopez Castillo
 

Similar to Fundamentos de ingenieria del software (2) (20)

UNIDAD_I.ppt
UNIDAD_I.pptUNIDAD_I.ppt
UNIDAD_I.ppt
 
Unidad 1 ing de software
Unidad 1 ing de softwareUnidad 1 ing de software
Unidad 1 ing de software
 
Software
SoftwareSoftware
Software
 
Inf 162
Inf 162Inf 162
Inf 162
 
IngSoftCap01-Introduccion.pdf
IngSoftCap01-Introduccion.pdfIngSoftCap01-Introduccion.pdf
IngSoftCap01-Introduccion.pdf
 
Software
SoftwareSoftware
Software
 
Ingenieria de Software
Ingenieria de SoftwareIngenieria de Software
Ingenieria de Software
 
Seleccion de tecnicas de ingenieria de software
Seleccion de tecnicas de ingenieria de softwareSeleccion de tecnicas de ingenieria de software
Seleccion de tecnicas de ingenieria de software
 
Tic
TicTic
Tic
 
Sanchez garcia juan jose definiciones en la ingeniería de software sis4-1
Sanchez garcia juan jose  definiciones en la ingeniería de software sis4-1Sanchez garcia juan jose  definiciones en la ingeniería de software sis4-1
Sanchez garcia juan jose definiciones en la ingeniería de software sis4-1
 
Ingeniería de software
Ingeniería de software Ingeniería de software
Ingeniería de software
 
Omar,luis,daniel
Omar,luis,danielOmar,luis,daniel
Omar,luis,daniel
 
Tarea 2 de fundamentos del computador
Tarea 2 de fundamentos del computadorTarea 2 de fundamentos del computador
Tarea 2 de fundamentos del computador
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Modelo
ModeloModelo
Modelo
 
Ingeniería de software - definiciones
Ingeniería de software - definicionesIngeniería de software - definiciones
Ingeniería de software - definiciones
 
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
 
Taller de Programación Distribuida
Taller de Programación DistribuidaTaller de Programación Distribuida
Taller de Programación Distribuida
 
Software de ingenieria
Software de ingenieriaSoftware de ingenieria
Software de ingenieria
 
Actividad 1
Actividad 1Actividad 1
Actividad 1
 

Recently uploaded

Theme design in Plone 6 - World Plone Day 2024
Theme design in Plone 6 - World Plone Day 2024Theme design in Plone 6 - World Plone Day 2024
Theme design in Plone 6 - World Plone Day 2024Leonardo J. Caballero G.
 
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptxMacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptxcalzadillasluis134
 
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVOSISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVOELIAMARYTOVARFLOREZD
 
Semana 5-Conceptualización del lenguaje de programación C++
Semana 5-Conceptualización del lenguaje de programación C++Semana 5-Conceptualización del lenguaje de programación C++
Semana 5-Conceptualización del lenguaje de programación C++luzgaray6
 
Introducción a Plone CMS - World Plone Day 2024
Introducción a Plone CMS - World Plone Day 2024Introducción a Plone CMS - World Plone Day 2024
Introducción a Plone CMS - World Plone Day 2024Leonardo J. Caballero G.
 
Presentación de html, css y javascript.
Presentación  de html, css y javascript.Presentación  de html, css y javascript.
Presentación de html, css y javascript.CeteliInmaculada
 

Recently uploaded (6)

Theme design in Plone 6 - World Plone Day 2024
Theme design in Plone 6 - World Plone Day 2024Theme design in Plone 6 - World Plone Day 2024
Theme design in Plone 6 - World Plone Day 2024
 
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptxMacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
 
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVOSISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
 
Semana 5-Conceptualización del lenguaje de programación C++
Semana 5-Conceptualización del lenguaje de programación C++Semana 5-Conceptualización del lenguaje de programación C++
Semana 5-Conceptualización del lenguaje de programación C++
 
Introducción a Plone CMS - World Plone Day 2024
Introducción a Plone CMS - World Plone Day 2024Introducción a Plone CMS - World Plone Day 2024
Introducción a Plone CMS - World Plone Day 2024
 
Presentación de html, css y javascript.
Presentación  de html, css y javascript.Presentación  de html, css y javascript.
Presentación de html, css y javascript.
 

Fundamentos de ingenieria del software (2)

  • 2. CONCEPTOS BÁSICOS ¿Qué es el software? • Es el producto que diseñan y construyen los ingenieros del software. Esto abarca programas que se ejecutan dentro de una computadora de cualquier tamaño y arquitectura, documentos virtuales e impresos y datos que combinan números, texto, audio, video e imágenes. ¿Quién lo hace? • Los ingenieros de software lo construyen, y virtualmente cualquier persona en el mundo industrializado lo utiliza bien directa o indirectamente. ¿Porqué es importante? ¿Cuáles son los pasos?
  • 3. APLICACIONES DEL SOFTWARE Puede aplicarse en cualquier situación donde se haya definido previamente un conjunto específico de pasos procedimentales. • Software de sistemas • Software de tiempo real • Software de gestión • Software de ingeniería y científico
  • 4. PRODUCTO DE SOFTWARE Son sistemas de software junto a la documentación que describe cómo instalarlo y usarlo. • Documentación de requerimientos • Documentación de diseño • Código fuente • Planes de prueba del sistema • Principios de operación • Instrucciones de instalación • Procedimientos de mantenimiento • Manuales de usuario
  • 5. CATEGORÍAS DE SOFTWARE Los productos de software se pueden dividir en dos grupos: • Productos genéricos: desarrollados para un mercado. • Productos a la medida: encargados por un cliente. La diferencia entre uno y otro: • En los genéricos, la organización que desarrolla el software controla su especificación. • En los otros, por lo general es desarrollada y controlada por la organización que está comprando el software.
  • 6. CARACTERÍSTICAS DE LOS PRODUCTOS DE SOFTWARE Mantenibles. • Debe ser posible que el software evolucione y que siga cumpliendo con sus especificaciones. Confiabilidad. • El software no debe causar daños físicos o económicos en el caso de fallos. Eficiencia. • El software no debe desperdiciar los recursos del sistema. Utilización adecuada. • El software debe contar con una interfaz de usuario adecuada y su documentación.
  • 7. INGENIERÍA DE SOFTWARE El término “Ingeniería del software” surge a final de los años 60 dentro de una conferencia dedicada a “la crisis del software”. Se define como: • “La disciplina tecnológica relacionada con la producción sistemática y el mantenimiento de productos de software que son desarrollados y modificados en el tiempo previsto y dentro de los costos estimados”. Su objetivo es producir productos de software.
  • 8. OTROS CONCEPTOS Ingeniería del software: • Conjunto de métodos, herramientas y procedimientos para producir software de gran calidad. [R. Pressman]
  • 9. Los métodos describen cómo construir técnicamente el software. Comprende las actividades de: • Planificación y estimación de proyectos • Análisis de requisitos • Diseño • Codificación • Prueba • Mantenimiento Las herramientas dan soporte semiautomático a los métodos. Los procedimientos relacionan formalmente los métodos y las herramientas.
  • 10. CALIDAD DE SOFTWARE La calidad del software es una noción que puede ser descrita mediante una serie de factores, que pueden ser: • Externos: observables por los usuarios del producto. • Internos: observables por profesionales de la computación.
  • 11. FACTORES EXTERNOS Corrección: capacidad de los productos de software de ejecutar sus tareas tal como están definidas en su especificación de requerimientos. Robustez: capacidad de un sistema de software para funcionar en situaciones anormales. Modificabilidad: facilidad de un producto para adaptarse al cambio de especificaciones. Reusabilidad: facilidad para ser reutilizado en todo o en parte para nuevas aplicaciones. Compatibilidad: facilidad de los productos de software para combinarse unos con otros. Eficiencia: buen uso de los recursos de software y hardware disponibles.
  • 12. FACTORES EXTERNOS Portabilidad: facilidad para adaptarse a otros entornos de software o hardware. Verificabilidad: facilidad para preparar procedimientos de aceptación, en particular datos de prueba, para detectar fallos durante las fases de validación y operación. Integridad: capacidad de un sistema para proteger sus documentos (programas, datos) contra accesos y modificaciones no autorizados. Facilidad de uso: capacidad de aprender a manejar un sistema de software, operar con el, preparar datos de entrada, interpretar resultados, etc.
  • 13. FACTORES INTERNOS Modularidad: independencia funcional de los componentes del programa. Legibilidad: facilidad de lectura e interpretación del código del programa.
  • 14. EL PROCESO DEL SOFTWARE ¿Qué es un proceso de software? Es un conjunto de actividades, acciones y tareas que se ejecutan cuando va a crearse algún producto del trabajo. • Una actividad busca lograr un objetivo amplio y se desarrolla sin importar el dominio de la aplicación. • Una acción es un conjunto de tareas que producen un producto importante del trabajo. • Una tarea se centra en un objetivo pequeño pero bien definido que produce un resultado tangible.
  • 15. ACTIVIDADES DEL PROCESO DE SOFTWARE Una estructura de proceso general para la ingeniería de software consta de las siguientes actividades: • Planificación • Análisis • Diseño • Implementación • Pruebas • Instalación o Despliegue • Uso y mantenimiento Comunicación: comunicarse con los clientes para entender los objetivos. Planeación: Cualquier viaje se simplifica si existe un mapa. Para el desarrollo de software el mapa es el plan del proyecto de software. Modelado: crear un bosquejo del objeto por hacer con el fin de entender el panorama. Construcción: generación de código y pruebas para descubrir errores. Despliegue: entrega al consumidor para su evaluación.
  • 16. PLANIFICACIÓN Delimitación del ámbito del proyecto Realización de un estudio de viabilidad Análisis de los riesgos asociados al proyecto Estimación del costo del proyecto Planificación temporal y la asignación de recursos a las distintas etapas del proyecto.
  • 17. ANÁLISIS Técnicas de elicitación de requerimientos • Incluye desde el cliente que paga el proyecto hasta los usuarios finales de la aplicación. • Sin olvidarse de terceras personas, empresas competidoras y organismos reguladores. Herramientas de modelado de sistemas. • Ayudan a comunicar la estructura de un sistema complejo • Sirven para especificar el comportamiento deseado del sistema • Ayudan a comprender mejor lo que estamos diseñando • Permiten descubrir oportunidades de simplificación y de reutilización Metodologías de análisis de requerimientos.
  • 18. DISEÑO Un software bien diseñado debe exhibir determinadas características. Su diseño debería ser modular Sus módulos deberían ser cohesivos (encargarse de una tarea concreta y sólo de una) y estar débilmente acoplados entre sí (para facilitar el mantenimiento del sistema). Cada módulo debería ofrecer a los demás unas interfaces bien definidos y ocultar sus detalles de implementación. Debe ser posible relacionar las decisiones de diseño tomadas con los requerimientos del sistema que las ocasionaron. Diseños mas comunes • Arquitecturas multicapa • Arquitecturas cliente/servidor
  • 19. IMPLEMENTACIÓN Antes de escribir una sola línea de código (o de crear una tabla en nuestra base de datos) es fundamental haber comprendido bien el problema que se pretende resolver y haber aplicado principios básicos de diseño que nos permitan construir un sistema de información de calidad. • Herramientas adecuadas • Un entorno de desarrollo que facilite nuestro trabajo • Un lenguaje de programación apropiado para el tipo de sistema que vayamos a construir.
  • 20. PRUEBAS Errar es humano y la etapa de pruebas tiene como objetivo detectar los errores que se hayan podido cometer en las etapas anteriores del proyecto (y, eventualmente, corregirlos). • Las pruebas de unidad • Las pruebas de integración • Pruebas alfa • Pruebas beta • Test de aceptación • Revisiones
  • 21. INSTALACIÓN/DESPLIEG UE Una vez concluidas las etapas de desarrollo de un sistema de información (análisis, diseño, implementación y pruebas), llega el instante de que poner el sistema en funcionamiento, su instalación o despliegue. De cara a su instalación, hemos de planificar el entorno en el que el sistema debe funcionar, tanto hardware como software: equipos necesarios y su configuración física, redes de interconexión entre los equipos y de acceso a sistemas externos, sistemas operativos (actualizados para evitar problemas de seguridad), bibliotecas y componentes suministrados por terceras partes, etcétera.
  • 22. USO Y MANTENIMIENTO La etapa de mantenimiento consume típicamente del 40 al 80 por ciento de los recursos de una empresa de desarrollo de software. De hecho, con un 60% de media, es probablemente la etapa más importante del ciclo de vida del software. Dada la naturaleza del software, que ni se rompe ni se desgasta con el uso, su mantenimiento incluye tres facetas diferentes: • Eliminar los defectos que se detecten durante su vida útil (mantenimiento correctivo) • Adaptarlo a nuevas necesidades (mantenimiento adaptativo) • Añadirle nueva funcionalidad (mantenimiento perfectivo),
  • 23. CICLO DE VIDA Sucesión de etapas por las que atraviesa un producto software a lo largo de su desarrollo y existencia. Existen distintas formas, paradigmas o modelos de ciclo de vida de software: • Clásico o cascada • Prototipado. • Evolutivo o en espiral. • Combinación de estilos, etc. Alternativamente, a veces se usan los términos “Ciclo de vida”, y “Modelo de ciclo de vida”
  • 25. CLÁSICO O CASCADA Propuesto por W. Royce a principios de los 70. Aplicación secuencial de una serie de pasos. Cada paso genera entradas y documentación para la siguiente.
  • 27. CRÍTICAS AL CICLO DE VIDA CLÁSICO Proyectos raramente siguen el ciclo de vida secuencial. Dificultad para establecer los requerimientos al principio de proceso. Errores detectados tardíamente. Mantenimiento por parcheado (corregir según se presenten los problemas).
  • 28. PROTOTIPADO Prototipear consiste en construir una versión inicial de un producto, el cual se describe la interacción hombre-máquina sin implementar completamente la funcionalidad del sistema (prototipo sin funcionalidad). Utilidad: •Ayuda a los analistas a establecer las necesidades del cliente. •Ayuda a los desarrolladores a mejorar los productos.
  • 29. CLASES DE PROTOTIPOS Vertical: desarrolla completamente algunas de las facetas del producto. Horizontal: desarrolla parcialmente todas las facetas del producto. Evolutivo: la versión final es el producto ya construido. Desechable: se usa solo para la captación de requerimientos y funcionalidad.
  • 30. OBSERVACIONES SOBRE EL PROTOTIPADO Facilita la captación de los requerimientos del cliente. Reduce el riesgo de parcheado del producto final. La construcción del prototipo supone una inversión adicional. El cliente ve funcionando una versión de lo que será su programa sin asumir que dicha versión no es robusta ni completa.
  • 31. EVOLUTIVO O EN ESPIRAL El desarrollo en espiral fue definido por primera vez por Barry Boehm en 1986. Las actividades de este modelo se conforman en una espiral, en la que cada bucle o iteración representa un conjunto de actividades. Las actividades no están fijadas a ninguna prioridad, sino que las siguientes se eligen en función del análisis de riesgo, comenzando por el bucle interior.
  • 32.
  • 33.
  • 34. VENTAJAS El análisis del riesgo se hace de forma explícita y clara. Une los mejores elementos de los restantes modelos. Reduce riesgos del proyecto Incorpora objetivos de calidad Integra el desarrollo con el mantenimiento, etc. Además es posible tener en cuenta mejoras y nuevos requerimientos sin romper con la metodología, ya que este ciclo de vida no es rígido ni estático.
  • 35. DESVENTAJAS Genera mucho tiempo en el desarrollo del sistema Modelo costoso Requiere experiencia en la identificación de riesgos
  • 36. OTROS TIPOS DE MODELADO Modelo incremental Modelo DRA Modelo en “Y” Proceso Unificado de Rational (RUP) Metodología ágil Scrum Programación extrema
  • 37. ¿QUÉ MODELO UTILIZAR? Para sistemas bien conocidos se puede utilizar el Modelo de Cascada. La fase de análisis de riesgos es relativamente fácil Con requisitos estables y sistemas de seguridad críticos, se recomienda utilizar modelos formales Con especificaciones incompletas, el modelo de prototipado ayuda a identificarlos y va produciendo un sistema funcional Pueden utilizarse modelos híbridos en distintas partes del desarrollo
  • 38. CLASIFICACIÓN DE LA TECNOLOGÍA EN EL DESARROLLO DE SOFTWARE Una de las tareas del ingeniero de software es la de seleccionar la mejor tecnología para el tipo de proyecto a desarrollar. Definimos tecnología de software como un conjunto integrado de notaciones, herramientas y métodos, basados en unos sólidos fundamentos, que permiten el desarrollo de un producto software en un contexto organizativo dado. Una tecnología de software puede considerarse constituida por los siguientes componentes:
  • 39.
  • 40. TECNOLOGÍAS DE SOFTWARE Las dos mas importantes son: • Tecnologías de desarrollo estructurado • Tecnologías orientadas a objetos
  • 41. TECNOLOGÍA ESTRUCTURADA Las tecnologías de desarrollo estructurado son las más convencionales de las empleadas hoy día. Han surgido de la evolución de las ideas de programación estructurada (hace más de veinticinco años) hacia las fases iniciales del ciclo de vida. La idea base de esta tecnología es que es posible estructurar el modelo de un sistema de software en base a funciones que procesan información que reciben de otras funciones (o del exterior) y dirigen la información procesada a otros módulos funcionales (o al exterior). El enfoque seguido, por tanto, es el de pensar en las funciones del sistema necesarias (extraídas de los requisitos del sistema) y luego en los datos que requieren.
  • 42. TECNOLOGÍAS ORIENTADOS A OBJETOSLas tecnologías de desarrollo estructurado han demostrado sus limitaciones a la hora de organizar y facilitar la evolución de sistemas de software complejos. La descomposición en funciones hace difícil al diseñador mantener la relación con los objetos del mundo real sobre los que se modifican generalmente los requisitos del usuario. Los métodos de descomposición orientada a objetos constituyen la tendencia más influyente observada en la ingeniería de sistemas de software en los últimos años. Con ellos nos referimos a un conjunto de métodos (aún en fase de desarrollo o evolución) que permiten al analista y diseñador concebir su sistema identificando clases de objetos, operaciones permitidas y relaciones entre ellos como base para la estructura del sistema a diseñar.
  • 43. ¿Cuáles son las ventajas de un lenguaje orientado a objetos? • Fomenta la reutilización y extensión del código. • Permite crear sistemas más complejos. • Relacionar el sistema al mundo real. • Facilita la creación de programas visuales. • Construcción de prototipos • Agiliza el desarrollo de software • Facilita el trabajo en equipo • Facilita el mantenimiento del software
  • 44. HERRAMIENTAS CASE Utilizamos las computadoras en nuestras vidas sin pensarlo. •TV´s, microondas, cajeros automáticos, etc. Desde que se inició la creación de software, surgió la necesidad de herramientas que automatizaran el proceso. Traductores, recopiladores, ensambladores, procesadores de macros, etc. •Estas aplicaciones provocaron una gran demanda por desarrollar software. Se creo una gran cantidad de software que necesitaba mantenimiento y actualización.
  • 45. Causo muchos problemas a la industria de software, ya que no podía cubrir la demanda con los métodos que se utilizaban. •Crisis de software Se crearon metodologías para intentar crear estándares de desarrollo. Además se creó un soporte automatizado para el desarrollo y mantenimiento de software, •Computer Aided Software Engineering (CASE)
  • 46. ¿QUÉ SON LAS HERRAMIENTAS CASE? Son un conjunto de programas y ayudas que dan asistencia a los analistas, ingenieros de software y desarrolladores, durante todos los pasos del Ciclo de Vida de desarrollo de un Software. También se pueden definir como:•Conjunto de métodos, utilidades y técnicas que facilitan la automatización del ciclo de vida del desarrollo de sistemas de información, completamente o en alguna de sus fases.
  • 47. VENTAJAS La mejor razón para la creación de estas herramientas fue el incremento en la velocidad de desarrollo de los sistemas. Por esto, las compañías pudieron desarrollar sistemas sin encarar el problema de tener cambios en las necesidades del negocio, antes de finalizar el proceso de desarrollo. También permite a las compañías competir más efectivamente usando estos sistemas desarrollados nuevamente para compararlos con sus necesidades de negocio actuales. En un mercado altamente competitivo, esto puede hacer la diferencia entre el éxito y el fracaso.
  • 48. Las herramientas CASE también permiten a los analistas tener más tiempo para el análisis y diseño y minimizar el tiempo para codificar y probar. Además permiten: •Verificar el uso de todos los elementos en el sistema diseñado. •Automatizar el dibujo de diagramas. •Ayudar en la documentación del sistema. •Ayudar en la creación de relaciones en la Base de Datos.
  • 49. CLASIFICACIÓN DE HERRAMIENTAS CASE No existe una única clasificación de herramientas CASE y, en ocasiones, es difícil incluirlas en una clase determinada. Podrían clasificarse atendiendo a: •Las plataformas que soportan. •Las fases del ciclo de vida del desarrollo de sistemas que cubren. •La arquitectura de las aplicaciones que producen. •Su funcionalidad.
  • 50. FASES DEL CICLO DE VIDA QUE CUBREN Herramientas integradas, I-CASE (Integrated CASE, CASE integrado): abarcan todas las fases del ciclo de vida del desarrollo de sistemas. Son llamadas también CASE workbench. Herramientas de alto nivel, U-CASE (Upper CASE - CASE superior) o front-end, orientadas a la automatización y soporte de las actividades desarrolladas durante las primeras fases del desarrollo: análisis y diseño. Herramientas de bajo nivel, L-CASE (Lower CASE - CASE inferior) o back- end, dirigidas a las últimas fases del desarrollo: construcción e implantación. Juegos de herramientas o Tools-Case, son el tipo más simple de herramientas CASE. Automatizan una fase dentro del ciclo de vida. Dentro de este grupo se encontrarían las herramientas de reingeniería, orientadas a la fase de mantenimiento.
  • 51. Tipo de CASE Ventajas Desventajas I – CASE • Integra el ciclo de vida. • Permite lograr importantes mejoras de productividad a mediano plazo. • Permite un eficiente soporte al mantenimiento de sistemas. • Mantiene la consistencia de los sistemas a nivel corporativo. • No es tan eficiente para soluciones simples, sino para soluciones complejas. • Depende del Hardware y del Software. • Es costoso. Upper CASE • Se utiliza en plataforma PC, es aplicable a diferentes entornos. • Menor costo. • Permite mejorar la calidad de los sistemas, pero no mejora la productividad. • No permite la integración del ciclo de vida. Lower CASE • Permite lograr importantes mejoras de productividad a corto plazo. • Permite un eficiente soporte al mantenimiento de sistemas. • No garantiza la consistencia de los resultados a nivel corporativo. • No garantiza la eficiencia del Análisis y Diseño. • No permite la integración del ciclo de vida.
  • 52. DE ACUERDO A SU FUNCIONALIDAD Herramientas de planificación de sistemas de gestión. Herramientas de análisis y diseño. Herramientas de programación. Herramientas de integración y prueba. Herramientas de gestión de prototipos. Herramientas de mantenimiento. Herramientas de gestión de proyectos. Herramientas de soporte.
  • 53. COMPONENTES DE UNA CASE Repositorio: Base de datos central de una herramienta CASE. La mayoría de herramientas CASE poseen un repositorio propio o bien trabajan sobre un repositorio suministrado por otro fabricante o vendedor. Módulos de diagramación y modelización: Algunos de los diagramas y modelos utilizados con mayor frecuencia son: •Diagrama de flujo de datos. •Modelo entidad - interrelación. •Historia de la vida de las entidades. •Diagrama Estructura de datos. •Diagrama Estructura de cuadros. •Técnicas matriciales.
  • 54. Herramienta de prototipado: El objetivo principal de esta herramienta es poder mostrar al usuario, desde los momentos iniciales del diseño, el aspecto que tendrá la aplicación una vez desarrollada. Generador de código: Normalmente se suele utilizar sobre ordenadores personales o estaciones de trabajo, por lo que el paso posterior del código al host puede traer problemas, al tener que compilar en ambos entornos. Las características más importantes de los generadores de código son: •Lenguaje generado •Portabilidad de código •Generación del esqueleto del programa
  • 55. Módulo generador de documentación: El módulo generador de la documentación se alimenta del repositorio para transcribir las especificaciones allí contenidas. Algunas características de los generadores de documentación son: •Generación automática a partir de los datos del repositorio •Combinación de información textual y gráfica •Generación de referencias cruzadas. •Ayuda de tratamiento de textos