Resumen FINAL [Parcial 1] MIO PDF
Document Details
Tags
Summary
Este documento resume los fundamentos de la ingeniería, incluyendo definiciones clave, clasificación de problemas, el método científico, el proceso de resolución de problemas, y otras nociones relacionadas con este campo. Se enfoca en conceptos y definiciones básicas.
Full Transcript
Fundamentos de la Ingeniería Definiciones Ingeniería: Es la aplicación de ciertos conocimientos, habilidades y actitudes principalmente, a la creación de obras y dispositivos físicos que satisfagan necesidades y deseos de la sociedad. Ingeniero: Es la persona que por razón de su e...
Fundamentos de la Ingeniería Definiciones Ingeniería: Es la aplicación de ciertos conocimientos, habilidades y actitudes principalmente, a la creación de obras y dispositivos físicos que satisfagan necesidades y deseos de la sociedad. Ingeniero: Es la persona que por razón de su especial conocimiento y uso de las matemáticas, física, ciencias de la Ingeniería, los principios, método de análisis y diseño en ingeniería adquiridos por educación y experiencia, está calificado para ejercer la ingeniería. Problema: Surge del deseo de transformar el estado, forma o condición de las cosas a otro. Clasificación de Problema Situación Problemática Oportunidad Problema Cerrados → Aquellos que admiten una única solución. Abiertos → Admiten múltiples soluciones, aquella que satisface restricciones y optimiza un conjunto de condiciones (criterios de selección) resultará en la mejor. Metodo Cientifico 1. Identificación de una Anomalía. 2. Recolección de datos significativos. 3. Análisis de datos. 4. Elaboración de una explicación o hipótesis. 5. Predicción de eventos futuros en base a la hipótesis. 6. Elaboración de experimentos que comprueben las predicciones. 7. Reformular la hipótesis y volver a repetir los pasos anteriores. 8. Convertir la hipótesis en una teoría. Proceso de Resolución de un Problema Formulación del Problema Detectarlo: ¿Hay un problema? ¿Cuál es? Si no se recibe un enunciado detallado → Hacer preguntas. Describir el problema. Clarificar el problema manteniendo descripciones amplias. Análisis del Problema Recopilación de datos significativos sobre el problema y sus restricciones. ¿Problema Abierto o Problema Cerrado? Escuchar opiniones. Descomponer el problema. Dar descripciones detalladas. Establecer un estado de origen y un estado deseado. Indicar las restricciones a cumplir y los criterios para elegir. Búsqueda de Soluciones Hay que tener en cuenta el conjunto de requerimientos. Tener en cuenta que cada variable tendrá un valor distinto para cada solución posible. Buscar soluciones parciales. Usar la imaginación o lluvia de ideas. Analizar variable por variable. Combinar soluciones parciales. Elección Hay que tener en cuenta los criterios de selección. Tener en cuenta la importancia de cada criterio. Impacto de la solución en cada criterio. Impacto de cada criterio en la solución. Comparar la relación [Costo → Beneficio] Tomar una decisión. Especificación de la Solución Dar descripciones detalladas de las características de la solución. Dar una evaluación de la Factibilidad y Rentabilidad de la solución. Presentar modelos, diseños, controles, monitoreo, etc… Presentar Informes. Implementación Desarrollar un producto nuevo. Elaborar documentación para su uso y desarrollo. Capacitar a los usuarios. Poner en funcionamiento y controlar soluciones existentes. Mantenimiento Se modifica la implementación del producto. Se incorpora nueva funcionalidad. Se actualiza funcionalidad existente. Se corrigen errores. Se migra el producto a nuevas versiones de HW y SW. Se adapta el producto a nuevos entornos Se integran nuevos productos al producto actual. Restricción vs. Criterio Criterio Suelen ser comunes. Varía su prioridad. Sus valores pueden oscilar en un rango. Restricción Es una condición que la solución al problema DEBE cumplir. Es MUY importante cuestionarlas. Modelos de Representación Definición Son descripciones de la naturaleza o comportamientos de un objeto real. Tipos de Representaciones Físicas o Icónicas Tienen una semejanza física con un objeto real. Conserva Proporciones. Gráficas Se visualizan relaciones y magnitudes relativas. Esquemáticas Representan de manera simbólica un objeto real. Matemáticas Son fórmulas matemáticas para resolver problemas complejos. Predicción y Comunicación. Simulaciones Son experimentos donde se representan objetos reales. Se clasifican en: - Físicas. - Analogicas. - Digitales. Mediciones ¿Por qué MEDIR? Para comprender lo que se está realizando en el proceso de desarrollo. ¿QUÉ medir? Entidad: Objeto o evento del mundo real. Atributo: Propiedad de una Entidad. Medición Proceso mediante el cual se asignan valores o símbolos a los atributos de entidades del mundo real. Medida Es un elemento que proporciona un indicio cuantitativo de la cantidad, tamaño de un atributo. Métrica Medida cuantitativa del grado en el que un sistema posee un atributo determinado. Indicador Es una métrica o combinación de métricas que proporcionan información acerca del proceso, el proyecto o producto en sí. Teoría de la Representación Escalas Nominal Una escala de medición es Nominal si los datos son nombres, etiquetas o categorías que se usan para definir un atributo de un elemento, es decir, se refiere a “nombre o nomenclatura”. La escala de medición Nominal no tiene un orden. La escala de medición Nominal no tiene magnitud, por lo tanto, no tiene números o símbolos. Marcela, Tomas, Joaquin, ETC… Ordinal Una escala de medición es Ordinal si menciona nombres y estos tienen un “orden o jerarquía” natural, es una clasificación en donde la nomenclatura se encuentra en un nivel superior a otra y que dicho orden es reconocido. Pequeño || Mediano || Grande Intervalos En esta escala de medición, la característica principal son las distancias o intervalos, la distancia entre un valor de la escala y otro valor, es la misma. El valor ‘0’ existe como un valor más dentro de los datos y no significa una carencia o ausencia de lo que se mide. Los datos son numéricos. Temperatura: 15C || 16C || 0C || -1C Talla de Pantalones: 0 || 1 || 2 Proporciones Su nombre nos indica que se pueden hacer “razones” o divisiones, tiene sentido hablar del doble, del triple, ETC… El cero SI implica ausencia o carencia absoluta de lo que se está midiendo. Los datos son numéricos. Ingreso: $6.000 || $12.000 || $24.000 (Tiene sentido decir que el que gana $12.000, gana el doble que el que gana $6.000) Altura: 2.10 mts || 4 mts || 0 mts || ETC… Absoluta La medición se realiza contando el número de elementos. Siempre toma la forma “número de ocurrencias de ‘x’ en la entidad”. Entidad → Monedas en un Monedero. Atributo → Cantidad M1(x) → El número resultante de contar la cantidad de monedas que hay en el monedero, no importa el valor que simboliza cada moneda. [FIN UNIDAD 1] Ingeniería de Software ¿Qué es? Es la aplicación de un método sistemático, disciplinado y cuantificable para el desarrollo de software. Software Es producto y herramienta para la construcción de un producto al mismo tiempo. Componentes Actividades → Es lo que sucede en el sistema. Objetos → Elementos involucrados en las actividades. Relaciones → entre los objetos y actividades en las que participan. Límite → Limita el sistema de su contexto. Construcción de un Sistema Clientes Presentan sus deseos y necesidades. Equipo Desarrolla planos y modelos. Luego Se presentan pantallas y descripciones de uso del sistema. Se discuten detalles de apariencia y funcionalidad. Cuando se llega a un diseño global aprobado → Se discute cómo será la implementación del mismo. Se realiza el código escrito del sistema. Se realizan pruebas. Producto Final Se verifica que los Requerimientos se hayan cumplido. La construcción de un sistema está descrito de forma lineal, pero es muy común que se repitan pasos. Ingeniería de Software Algunas definiciones Importantes Método Técnica formal para producir un resultado. Paradigma Enfoque particular o filosofía. Procedimiento Combinación de herramientas y técnicas que producen un resultado. Herramienta Instrumento o sistema automatizado que permite resolver una tarea de una mejor forma. Participantes - Roles Cliente Es quien solicita y paga el sistema que se va a crear. Desarrollador Es quien construye el software para el cliente. Usuario Quien usará el software creado. Participantes - Miembros del Equipo Analistas de Requerimientos Determinan que desea el cliente y cuales son sus requerimientos. Diseñadores Describen qué debe hacer el sistema solicitado por el cliente. Programadores Implementan los Requerimientos en código. Testers Detectan defectos en el sistema. Capacitadores Entrenan al cliente en el uso del sistema. Equipo de Mantenimiento Trabaja en corregir errores o cambiar aspectos del sistema. Proceso vs. Procedimiento Procedimiento Combinación estructurada de herramientas y técnicas Proceso Es un conjunto de Procedimientos Están sujetos a restricciones y compuesto por subprocesos. Proceso del Software Estructura General 1. Comunicación. 2. Planificación. 3. Modelado. 4. Construcción. 5. Despliegue. Actividad “Sombrilla” Se aplica a lo largo del proyecto para administrar y controlar: - Avance - Calidad - Cambio - Riesgo Flujo del Proceso Lineal Secuencia de Actividades lineales. Iterativo Repite una o más de las actividades antes de pasar a la siguiente. Evolutivo Cada circuito lleva a una versión más completa del producto. Paralelo Se ejecutan una o más actividades en paralelo. Modelos de Proceso Cascada El trabajo fluye de manera lineal desde la primer actividad hasta la última Los Requerimientos deben estar bien definidos o se usan para mejorar el sistema existente. Ventaja → Simple de explicar para personas no familiarizadas. Desventaja → No aplicable cuando los Requerimientos son dinámicos (van cambiando constantemente). Incremental Son secuencias lineales aplicadas de forma escalonada. Útil cuando no se dispone de personal suficiente. Ayuda a la administración de Riesgos. Iteraciones El sistema se entrega completo al comienzo Las iteraciones modifican o mejoran la funcionalidad. Prototipo → Se planea rápidamente una iteración para producir un prototipo del sistema. Útil cuando el cliente solo define objetivos generales y no identifica requerimientos detallados. Espiral → Se itera en forma de espiral. Las primeras iteraciones producen prototipos. Es adaptable para usarse durante todo el ciclo de vida de un sistema. Procesos Especializados Tienen las características de los métodos vistos anteriormente. Se aplica para enfoques específicos como “Métodos Formales” Métodos Formales → Especificación matemática del software y sus características. Metodologías Ágiles Importan más las personas y la comunicación que las herramientas y procesos. Importa más un software funcionando qué documentación exhaustiva. Programación Extrema → Se enfoca en la colaboración estrecha entre desarrolladores y clientes para establecer metáforas. [Planificación → Diseño → Codificación → Pruebas] Scrum → Se realizan ‘Sprints’ cortos de 2 a 4 semanas donde cada Sprint tiene un conjunto de tareas que deben completarse antes de la próxima reunión con el cliente. [Requerimientos → Analisis → Diseno → Evolucion → Entrega] Ingeniería de Requerimientos Requerimiento Descripción de algo que el sistema es capaz de hacer. Tipos de Requerimientos Basados en el Escenario Vistos desde el punto de vista de “actores” del sistema. Datos Ilustran el dominio de la información del problema. Orientados a clases Representan objetos y la manera en que colaboran para cumplir requerimientos del sistema. Comportamiento Modo en el que se comporta el software como consecuencia de eventos. Actividades: Requerimientos Concepción ¿Cómo se inicia un proyecto de software? Conversación casual. Necesidad de Negocio. Nuevo Mercado. Identificar Participantes Indagación Hay que distinguir requerimientos que DEBEN ser absolutamente satisfechos, Requerimientos deseables pero no indispensables y Requerimientos posibles pero que podrían eliminarse. Requerimiento Funcional → Describe que hará el sistema. Requerimiento NO Funcional (Restricciones) → Describen Restricciones sobre el sistema que limitará la elección de la solución. Elaboración Expandir y refinar la información obtenida. Especificación Se presentan: - Documentos Escritos. - Modelos Gráficos. - Prototipos. - ETC… Validación Se analiza la especificación (Paso anterior) para garantizar que: - Todos los requerimientos han sido enunciados. - No hay ambigüedades. - Se detectaron y corrigieron errores. - Se siguieron los estándares establecidos. Administración Se debe identificar, controlar y dar seguimiento a los requerimientos. Diseño Definición Diseñar un sistema es determinar un conjunto de componentes y de interfaces entre componentes que satisfagan un conjunto de requerimientos. Descomposición Toda descomposición separa el diseño en partes llamadas “Módulos o Componentes”. Un sistema es “Modular” cuando una de las actividades la realiza un único componente y además tiene bien definidas todas sus entradas y salidas. Tipos de Descomposición Modular Descripción de alto nivel de las funciones de cada componente. Orientada por Datos Está basada en las estructuras externas de los datos. Orientada por Eventos Está basado en los eventos a manejar en el sistema. Diseño “de afuera hacia adentro” Se enfoca en el Metodo “Caja Negra” Basado en las entradas de Usuario. Diseño Orientado a Objetos Se identifican clases de Objetos y sus interrelaciones A nivel alto → Descripción de Objetos. A nivel bajo → Atributos de los Objetos. Conceptos de Diseño Abstracción Se plantean distintos niveles de Abstracción. ⇐ Abstracción Detalle ⇒ Tipos de Abstracciones Procedimiento Es una secuencia de instrucciones. Datos Es un conjunto que describe a un objeto. Arquitectura Forma en la que interactúan los componentes de un sistema. A partir de ella se realizará el diseño más detallado. Patrón Describe una estructura de diseño que resuelve un problema particular de diseño. Separación de Intereses Se subdivide el problema en partes que pueden ser resueltas de manera independiente. Tiene un efecto directo en el diseño. Ocultamiento de la Información Principio → La información de los módulos debe ser inaccesible para quien no necesite de ella. La modularidad se consigue mediante módulos que solo intercambien información necesaria para lograr que el software funcione. Independencia Funcional Cada módulo debe resolver un conjunto específico de Requerimientos. Es el resultado directo de aplicar la división de Problemas y el Ocultamiento de la Información. Refinamiento Es el proceso mediante el cual se reduce el nivel de abstracción del sistema. Características de un Buen Diseño Cada componente del diseño es lo más independiente posible del resto. Para medir la independencia de los componentes usamos el “Acoplamiento” y la “Cohesión” Un Buen Diseño Modular minimiza el Acoplamiento y maximiza la Cohesión Acoplamiento Dos componentes están altamente acoplados cuando existe mucha dependencia entre ellos. Los componentes poco acoplados tienen pocas dependencias. El acoplamiento depende de: - Referencias de componentes - Cantidad de datos pasados entre componentes - El grado de control de un componente sobre otro Tipos de Acoplamiento Acoplamiento de Contenido Es cuando un componente [A] modifica a un componente [B]. Esto genera que el componente [B] sea completamente dependiente de [A]. Acoplamiento Común Es cuando un almacenamiento de datos es común a dos o más Módulos. Acoplamiento de Control Es cuando un componente pasa parámetros de control a otro. Acoplamiento de Molde Es cuando se usa una estructura de datos compleja para pasar datos de un módulo a otro. Acoplamiento de Datos Es cuando solamente se comparten datos. Cohesión La Cohesión se refiere al grado de unión que tiene un componente. A mayor grado de unión, más relacionadas entre sí están sus partes internas. Un componente es cohesivo cuando todos sus elementos están orientados a realizar una única tarea y son esenciales para llevarla a cabo. Tipos de Cohesión Cohesión Accidental Es cuando las partes no tienen relación alguna entre sí. Cohesión Lógica Es cuando los elementos están relacionados lógicamente. Ej: Función Cohesión Temporal Es cuando las funciones de un componente están relacionadas por el momento en el que ocurren o son invocadas. Cohesión de Procedimiento Es cuando las funciones de un componente se agrupan únicamente porque están relacionadas con un procedimiento. Cohesión Comunicativa Es cuando un componente asocia funciones que trabajan en el mismo conjunto de datos. Cohesión Secuencial Es cuando la relación entre dos funciones es que una produce la salida que servirá como entrada para la otra. Cohesión Funcional Es la cohesión ideal. En estos componentes las partes están relacionadas por la función que realizan. Es una única función y todas las partes que la componen son esenciales para realizarla.