Post on 30-Jan-2023
UNIDAD 1
• Elementos de Ingeniería del Software
• Conceptos generales sobre el análisis y diseño de sistemas
• El Papel del Analista de Sistemas
• La ingeniería de Software Asistida por computador
TEMAS
1. Historia del software, crisis del software. 2. Conceptos de ingeniería de software. 3. Procesos involucrados en el desarrollo de
software. 4. Planificación y tipos del ciclo de vida. 5. El proceso unificado de desarrollo de software
(RUP). 6. Roles involucrados en el desarrollo de un
proyecto de software, organización de los departamentos de informática y su evolución.
Historia del Software
En las tres primeras décadas de la informática, del 50 a los 80: Primera era (50-60): Orientación por lotes, distribución
limitada y software a la “medida”. Segunda era (70): Multiusuario, tiempo real, base de datos
(BD), y software como producto. Tercera era (80): Sistemas distribuidos, incorporación de
inteligencia, hardware a bajo costo, impacto en el consumo. Cuarta era (90-2000): Potentes sistemas de sobremesa,
tecnologia orientada a objetos y sistemas expertos. Quinta era (2000-2010): Redes neuronales artificiales,
computación paralela, Web (internet, e-comerce, correo, etc), sistemas inteligentes.
Crisis del Software
Nació del mantenimiento del software, la personalización del software los hacia imposible de mantener, el multifuncional, generaron altas crisis y llevaron a los sistemas inteligentes al igual que el software neuronal, la inteligencia artificial y los sistemas expertos a la crisis del soft.
Otros problemas:
La sofisticación del hardware a desfazado la capacidad de construir software.
Crisis del Software
Otros problemas:
La capacidad de construir nuevos programas no da abasto a la demanda de software.
La capacidad para mantener los programas existentes estaba amenazada por el mal diseño.
La crisis del software dio inicio a la ingeniería de software.
Crisis del Software en el horizonte
• El software no funciona.
• Como desarrollar el software.
• La planificación y estimación de costos.
• La productividad no corresponde a la demanda de servicios.
• No hay tiempo para recoger datos.
• La insatisfacción del cliente con el sistema terminado.
• La calidad del software es cuestionable.
• Mantenimiento de los software existentes.
• Desarrollos de software con diferentes metodologías.
Definición de Ingeniería de Software
Todos estos elementos de las crisis se solucionan con la ingeniería de software.
“El establecimiento y uso de principios de ingeniería robustos orientados a obtener software económico, fiable y que funcione sobre máquinas reales, con los tres elementos claves: métodos, herramientas y procedimentos”
Componentes de Ingeniería de Software
Método: Es el como: Planificación, análisis de los requisitos, diseño de estructuras de datos, arquitectura de programas y algoritmos, codificación, prueba y mantenimiento.
Herramientas: Con qué: son un soporte automático para los métodos (Case).
Procedimientos: Pegamento de la ingeniería de software para juntar métodos y herramientas. Define la secuencia de los métodos.
Conceptos de Ingeniería de Software
Al principio los sistemas se basaron en la técnica orientada al hardware.
El programador aprendía su oficio mediante prueba y error.
Los altos costos se daban para el hardware, en la década de los 80 los costos se distribuyen entre el hardware y el software.
En los 80 se preguntaban porque los programas debían mantenerse, porque no se terminan, porque los errores antes de entregarlo en producción.
Conceptos de Ingeniería de Software
Las aplicaciones escritas hace años son virtualmente imposible de mantener.
Nadie tiene conocimiento detallado sobre la estructura interna de los programas.
Sistemas empotrados (No hay con que reemplazarlos).
Llega la subcontratación y la era donde
“El conocimiento es poder”
Conceptos de ingeniería de Software
Software:
• Instrucciones que cuando se ejecutan proporcionan la función y el comportamiento deseado.
• Estructura de datos que facilitan a los programas manipular la información.
• Documentos que describen la operación y el uso de programas.
Conceptos de ingeniería de Software
Características del Software:
• Elemento del sistema que es lógico.
• El software se desarrolla no se fabrica.
• El software no se estropea, se vuelve obsoleto.
• El software no tiene piezas de repuesto.
• Un error en el diseño nos lleva a una falla en producción.
• La mayoría de los software se compran a la medida, no se compran partes para ensamblar.
Conceptos de ingeniería de Software
Componentes del Software: • El software es información en dos formas básicas:
– Componentes no ejecutables en la máquina y – Componentes ejecutables o de configuración.
• Corresponde a los requisitos del cliente con un código ejecutable.
• Se traduce un modelo o prototipo de requisitos a un diseño.
• Se traduce el diseño del software a una forma en un lenguaje que especifica la estructura de datos, los atributos procedimentales y los requisitos, la forma en lenguaje es procesada por unas instrucciones ejecutables.
Conceptos de ingeniería de Software
Componentes del Software:
• La reusabilidad: los lenguajes han ido evolucionando a través de las décadas hasta llegar hoy a los lenguajes no procedimentales,
o sea: “especificación del resultado deseado y en vez de la acción requerida para conseguir el resultado”
Conceptos de ingeniería de Software
Aplicaciones del software: Se puede utilizar en cualquier situación donde se haya
definido previamente un conjunto de pasos procedimentales o algoritmo, con excepción de las redes neuronales y de los sistemas expertos.
Contenido: Significado y forma de la información de entrada y salida.
Determinismo de la información: Predecibilidad del orden y del tiempo de llegada de los
datos.
Tipos de Software
Soft. De Sistemas: Para servir a otros programas (compiladores, editores, etc.)
Soft. De Tiempo Real: El software que mide, analiza y controla los sucesos del mundo real.
Soft. De Gestión: Accede y reestructura los datos existentes en orden para la toma de decisiones (nómina, inventarios, etc.).
Soft. De Ingeniería y Científico: Se caracteriza por los algoritmos en el manejo de números.
Tipos de Software
Soft. Empotrado: Recibe memoria de solo lectura y se utiliza para controlar productos del mercado.
Soft. De Computador Personal
Soft. De Inteligencia Artificial: Uso de algoritmos no numéricos para resolver problemas complejos, ej: software de reconocimiento de patrones, imágenes y voz, y redes neuronales (simuladores del cerebro humano).
Proceso de la Ingeniería de Software
1. Definición: El que: 1.1 Análisis del Sistema. 1.2 Planificación del Proyecto. 1.3 Análisis de Requisitos
2. Desarrollo: El como: 2.1 Diseño del Software 2.2 Codificación del Software. 2.3 Prueba del Software.
3. Mantenimiento: El cambio: 3.1 Corrección o mantenimiento correctivo 3.2 Adaptación 3.3 Mejora o mantenimiento predictivo
Mitos y modelos de Ingeniería de Software
Mitos Mitos de Gestión Mitos del Cliente Mitos de los desarrolladores
Modelos para Ingeniería de Software:
Clásico Prototipo Espiral Cuarta Generación RUP
Modelos de Ingeniería de Software
1. Ciclo de Vida Clásico formado por: – Ingeniería del Sistema
– Análisis
– Diseño
– Codificación
– Prueba
– Mantenimiento
Cada etapa provee a la siguiente y retroalimenta al sistema completo.
Modelos de Ingeniería de Software
2. Construcción de Prototipos: Facilita al programador la construcción de un modelo de software, existen tres formas de generarlo:
– En papel: un modelo basado que describa la interacción hombre-máquina.
– Que implemente algunos subconjuntos de la función requerida del programa deseado.
– Programa existente que ejecute parte o toda la función deseada.
Modelos de Ingeniería de Software
2. Pasos para construir un Prototipo:
– Recolección y refinamiento de requisitos.
– Diseño rápido.
– Construcción de prototipo.
– Evaluación del prototipo por el cliente.
– Refinamiento del prototipo.
– Producto de ingeniería.
Modelos de Ingeniería de Software
3. Modelo en Espiral
Ciclo de vida clásico más prototipo más análisis de riesgos, se define en cuatro actividades:
– Planificación.
– Análisis de riesgos.
– Ingeniería de software.
– Evaluación del Cliente.
Modelos de Ingeniería de Software
4. Modelo de Cuarta Generación
Ciclo de vida clásico más prototipo más análisis de riesgos, se define en cuatro actividades:
– Recolección de requisitos
– Estrategia de diseño
– Implementación
– Pruebas y correcciones inmediatas.
Proceso Unificado de desarrollo de software - RUP
Fases: • Introducción • Gestión del proyecto
– Plan de desarrollo de software – Planificación del proyecto
• Fase de inicio • Fase de elaboración • Fase de construcción
– Diario de ejecución
• Modelado del negocio – Modelo de objetos – Modelo de dominio
• Requisitos – Visión – Glosario – Casos de uso con una herramienta como rational rose y las especificaciones de casos de uso. – Gestión de requisitos
• Análisis y diseño – Modelo de análisis y diseño – Modelo de datos
• Implementación – Prototipo de interfaz de usuario (comunes) – Componentes y despliegue
• Pruebas
Proceso Unificado de desarrollo de software - RUP
Primer modelo original orientado a objetos.
Las plantillas son importantes en el modelo RUP.
Características:
• Dirigido por casos de uso: hilo conductor que orienta las actividades de desarrollo.
– Análisis: define las necesidades recopila, clarifica y valida.
– Diseño: realiza los casos de uso.
– Pruebas: verifica que se satisfacen los casos de uso.
• Interactivo e incremental
– Descomposición de un proyecto en miniproyectos.
– Cada miniproyecto es una interacción.
– Las interacciones deben estar controladas.
– Cada interacción trata un conjunto de casos de uso.
• Centrado en la arquitectura
– Concepto similar a la arquitectura de un edificio (varios planos con diferentes aspectos del edificio, imagen completa del edificio antes de iniciar su construcción)
– Arquitectura en software: diferentes vistas del sistema, estructural, funcional, determina la forma del sistema.
– Arquitectura: determina la forma del sistema.
– Los casos de uso: deter minan la función del sistema.
• Dimensiones del RUP
– Dinámica y estática
CONCEPTO
• INFORMÁTICA
Sistematizacion de la información realizada de diferentes maneras y con
diferentes modelos.
SOFTWARE
Intangible
• SISTEMAS
Administración de los equipos que permiten procesar los datos para generar información.
HARDWARE
Tangible
Roles en el desarrollo de un proyecto de ingeniería y organización del departamento de sistemas
Roles en el desarrollo de software: Líder Ingeniero desarrollador Administrador de red Administrador de la base de datos
Organización de los departamentos de informática:
Líder Soporte técnico Análisis, diseño y Desarrollo Administración de la Red Administración de la Base de Datos Operación e instalación
BIBLIOGRAFIA
• PRESMAN, Roger S. Ingeniería de Software, Un enfoque práctico. Ed. McGraw-Hill. Cuarta Edición,1997.
• JACOBSON Ivar, BOOCH Grady, RUMBAUGH James. El proceso Unificado de Desarrollo de Software. Ed. Addison Wesley, 1999.
• MCCONNELL, Steve. Desarrollo y gestión de proyectos informáticos. Ed. McGraw-Hill. 1997.
• FOWLER, Martin, Scott, Kendall. UML Gota a Gota. Addison Wesley Longman,1997.
• LARMAN, Craig. UML y Patrones. Introducción al análisis y diseño orientado a objetos. Ed. Prentice-Hall, 1999.
• BOOCH Grady, RUMBAUGH James, JACOBSON Ivar. El lenguaje Unificado de Modelado. Ed. Addison Wesley, 1999.