Ingeniería de Software: Conceptos Generales
117 Questions
4 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

¿Cuál de las siguientes categorías de software se caracteriza por su alta interacción con el hardware de la computadora?

  • Software incrustado
  • Software de aplicación
  • Software de sistema (correct)
  • Software de inteligencia artificial
  • ¿Qué tipo de software se utiliza principalmente para resolver necesidades específicas de negocios?

  • Software de aplicación (correct)
  • Software incrustado
  • Software de línea de producto
  • Software de Ingeniería y ciencia
  • ¿Cuál de los siguientes atributos es crucial para las aplicaciones web (WebApps)?

  • Software propietario
  • Rendimiento y rapidez (correct)
  • Gran almacenamiento de datos
  • Acceso restringido a usuarios específicos
  • ¿Qué característica define al software de inteligencia artificial según el contenido?

    <p>Resolución de problemas complejos</p> Signup and view all the answers

    ¿Qué desafío se presenta actualmente para los ingenieros en software debido a la computación moderna?

    <p>Desarrollo de sistemas que permitan comunicar dispositivos móviles y PCs</p> Signup and view all the answers

    ¿Cuál es una característica distintiva del software en comparación con el hardware?

    <p>El software es intangible y se desarrolla con el intelecto.</p> Signup and view all the answers

    ¿Qué describe mejor la 'curva de tina' en relación con el hardware?

    <p>La tasa de fallas del hardware se estabiliza con el tiempo.</p> Signup and view all the answers

    ¿Qué significa que el software no se desgasta?

    <p>El software no se ve afectado por el ambiente físico.</p> Signup and view all the answers

    ¿Qué puede causar el deterioro del software a lo largo del tiempo?

    <p>Los cambios realizados en el software que pueden introducir nuevos errores.</p> Signup and view all the answers

    ¿Qué se entiende por 'defectos ocultos' en el software?

    <p>Fallos que solo se detectan después de varias modificaciones del software.</p> Signup and view all the answers

    ¿Cuál de las siguientes características es esencial para un software mantenible?

    <p>Facilidad de evolución</p> Signup and view all the answers

    El costo del software es siempre menor que el costo del hardware.

    <p>False</p> Signup and view all the answers

    ¿Cuáles son las etapas del Proceso de Software?

    <p>Especificación, Diseño, Validación, Evolución</p> Signup and view all the answers

    El software ___________ debe adaptarse a los cambios requeridos por el cliente y el mercado.

    <p>evolutivo</p> Signup and view all the answers

    Asocia los tipos de productos de software con su descripción:

    <p>Genéricos = Producidos para ser vendidos al mercado Hechos a medida = Desarrollados bajo pedido específico Mantenible = Debe permitir modificaciones y evolución Confiable = No debe causar daños en caso de fallos</p> Signup and view all the answers

    ¿Cuál es la primera actividad en el proceso de ingeniería de software?

    <p>Comunicación</p> Signup and view all the answers

    El proceso de ingeniería de software se puede considerar una serie de pasos rígidos y no adaptables.

    <p>False</p> Signup and view all the answers

    ¿Qué se entiende por 'actividades sombrillas' en el proceso de ingeniería de software?

    <p>Actividades que ayudan a administrar, controlar el avance, calidad y riesgos del proyecto.</p> Signup and view all the answers

    En la fase de _____, se genera el código y se llevan a cabo pruebas para detectar errores en el software.

    <p>Construcción</p> Signup and view all the answers

    Asocia las actividades sombrillas con su propósito:

    <p>Seguimiento y control = Evaluar el progreso y tomar acciones necesarias Administración del riesgo = Identificar riesgos que afectan la calidad del producto Aseguramiento de calidad = Garantizar que el software cumple con los estándares Medición = Ayudar al equipo a satisfacer las necesidades del cliente</p> Signup and view all the answers

    ¿Cuál de los siguientes modelos de desarrollo de software es el más adecuado cuando los requisitos son claros desde el principio?

    <p>Modelo en cascada</p> Signup and view all the answers

    El desarrollo iterativo implica crear un sistema inicial y luego refinarlo basado en las necesidades del cliente.

    <p>True</p> Signup and view all the answers

    ¿Qué técnica se centra en la reutilización de componentes existentes en el desarrollo de software?

    <p>Ingeniería del Software basada en Componentes (CBSE)</p> Signup and view all the answers

    El modelo de desarrollo __________ permite un desarrollo más flexible y es ideal para proyectos con requisitos no completamente definidos.

    <p>evolutivo</p> Signup and view all the answers

    Asocia cada modelo de desarrollo de software con su característica principal:

    <p>Modelo en cascada = Fases definidas con documentación clara Desarrollo evolutivo = Flexibilidad y adaptación en iteraciones Ingeniería del Software basada en componentes = Reutilización de partes existentes Prototipado = Construcción de un modelo inicial para validación</p> Signup and view all the answers

    ¿Cuál de las siguientes afirmaciones sobre el modelo en espiral es correcta?

    <p>Se enfoca en la gestión de riesgos en cada ciclo.</p> Signup and view all the answers

    El modelo en espiral es más adecuado para proyectos pequeños y simples.

    <p>False</p> Signup and view all the answers

    ¿Cuáles son las cuatro fases principales de cada ciclo en el modelo en espiral?

    <p>Definición de objetivos, evaluación y análisis de riesgos, desarrollo y validación, planificación.</p> Signup and view all the answers

    El enfoque en la ___________ permite que el proceso sea más adaptable y reduce la probabilidad de problemas graves.

    <p>gestión de riesgos</p> Signup and view all the answers

    Asocia las fases del ciclo en espiral con su descripción:

    <p>Definición de objetivos = Establece los objetivos específicos del proyecto y los riesgos. Evaluación y análisis de riesgos = Analiza los riesgos identificados y define estrategias. Desarrollo y validación = Desarrolla y prueba el software basado en los riesgos. Planificación = Decide sobre el siguiente ciclo y desarrolla planes futuros.</p> Signup and view all the answers

    ¿Cuál de los siguientes lenguajes de programación es conocido por su simplicidad y versatilidad?

    <p>Python</p> Signup and view all the answers

    El software es un producto tangible que se puede tocar y ver físicamente.

    <p>False</p> Signup and view all the answers

    ¿Qué metodología ha contribuido a hacer el desarrollo de software más colaborativo y rápido en la actualidad?

    <p>metodologías ágiles</p> Signup and view all the answers

    La __________ es la práctica que permite que nuevas versiones de software se desplieguen rápidamente y sin interrupciones.

    <p>integración y entrega continuas</p> Signup and view all the answers

    Empareja los siguientes conceptos con su descripción adecuada:

    <p>Intangibilidad = El software no se puede tocar ni ver en su forma completa. Flexibilidad = Puede ser modificado y actualizado fácilmente. Reproducción = El costo de copiar el software es casi nulo. Dependencia del Hardware = El software necesita hardware para funcionar.</p> Signup and view all the answers

    ¿Cuál fue una de las características destacadas durante la primera era de la Ingeniería de Software (1950-1965)?

    <p>El desarrollo era completamente manual y se realizaba mediante prueba y error</p> Signup and view all the answers

    La Ingeniería de Software surgió en la década de 1980 debido a la crisis del software.

    <p>False</p> Signup and view all the answers

    ¿Cuál fue la evolución dando lugar a la multiprogramación y sistemas multiusuarios?

    <p>Segunda era (1965-1972)</p> Signup and view all the answers

    En la _____________, se comenzó a reconocer el software como un producto y se buscaron procedimientos para su desarrollo.

    <p>segunda era</p> Signup and view all the answers

    Asocia las eras de la Ingeniería de Software con sus características principales:

    <p>Primera era (1950-1965) = Codificación y corrección sin planificación Segunda era (1965-1972) = Multiprogramación y sistemas multiusuarios Tercera era (1972-1985) = Impacto colectivo de software y redes de información Cuarta era (1985-1995) = Desarrollo de software con creciente complejidad</p> Signup and view all the answers

    ¿Cuál de los siguientes enunciados describe mejor el propósito de los requerimientos del sistema?

    <p>Desglosan los requerimientos del usuario en detalles técnicos precisos.</p> Signup and view all the answers

    La ingeniería de requerimientos (RE) es solo el proceso de documentación de requerimientos y no incluye verificación.

    <p>False</p> Signup and view all the answers

    ¿Qué diferencia hay entre los requerimientos funcionales y los no funcionales?

    <p>Los requerimientos funcionales describen las funcionalidades específicas que el sistema debe cumplir, mientras que los no funcionales establecen estándares de calidad y rendimiento.</p> Signup and view all the answers

    Los requerimientos del __________ son declaraciones generales de los servicios que el sistema debe proporcionar.

    <p>usuario</p> Signup and view all the answers

    Asocia cada nivel de requerimiento con su descripción adecuada:

    <p>Requerimientos del usuario = Descripciones generales de servicios del sistema Requerimientos del sistema = Detalles técnicos precisos y restricciones operativas Requerimientos funcionales = Funcionalidades específicas que el sistema debe cumplir Requerimientos no funcionales = Estándares de calidad y rendimiento del sistema</p> Signup and view all the answers

    ¿Cuál de las siguientes es una ventaja de la observación en la recolección de requisitos?

    <p>Genera empatía</p> Signup and view all the answers

    Los prototipos desechables se construyen sobre la arquitectura final del producto.

    <p>False</p> Signup and view all the answers

    ¿Qué se debe documentar para asegurar el éxito de un proyecto de software?

    <p>Requisitos funcionales y no funcionales, criterio de aceptación, identificación única.</p> Signup and view all the answers

    El _____ es el término utilizado para evaluar y refinar los requisitos obtenidos en un proyecto.

    <p>análisis de requisitos</p> Signup and view all the answers

    Asocia los términos con sus descripciones adecuadas:

    <p>Prototipo desechable = Establecer que algo se puede hacer, luego se parte de cero Prototipo evolutivo = Implementado sobre la arquitectura del producto final Efecto Hawthorne = Cambio en el comportamiento de los usuarios por ser observados Tormenta de ideas = Generación libre de ideas sin criticar</p> Signup and view all the answers

    ¿Cuál de las siguientes actividades se realiza durante la preparación para una reunión de requisitos?

    <p>Configuración del lugar</p> Signup and view all the answers

    Menciona dos aspectos que se deben considerar al organizar una reunión con stakeholders.

    <p>Enviar material previo y asegurarse de la asistencia de los stakeholders correctos.</p> Signup and view all the answers

    ¿Cuál de los siguientes es un requisito funcional?

    <p>Autenticación de usuario</p> Signup and view all the answers

    Los requisitos no funcionales están directamente relacionados con funciones específicas del software.

    <p>False</p> Signup and view all the answers

    ¿Qué técnica se utiliza para recoger información estructurada de un gran número de stakeholders?

    <p>Encuestas y Cuestionarios</p> Signup and view all the answers

    La _____ describe la facilidad de uso y la experiencia del usuario en los requisitos no funcionales.

    <p>usabilidad</p> Signup and view all the answers

    Empareja cada tipo de requisito no funcional con su descripción:

    <p>Rendimiento = Tiempo de respuesta y capacidad de procesamiento Seguridad = Control de acceso a las funciones/datos Fiabilidad = Tolerancia a fallos y disponibilidad Escalabilidad = Capacidad para manejar el crecimiento de usuarios o datos</p> Signup and view all the answers

    ¿Cuál de estas es una técnica común en el proceso de obtención de requisitos?

    <p>Prototipado</p> Signup and view all the answers

    La verificación se asegura de que los requisitos especificados satisfagan las necesidades del cliente.

    <p>False</p> Signup and view all the answers

    ¿Cuál es uno de los objetivos de la planificación en el proceso de ingeniería de requisitos?

    <p>Establecer objetivos y recursos necesarios</p> Signup and view all the answers

    ¿Cuál de las siguientes afirmaciones describe correctamente la herencia en el paradigma de objetos?

    <p>Facilita la creación de nuevas clases basadas en clases existentes.</p> Signup and view all the answers

    Los atributos de un objeto son sinónimos de su estado.

    <p>True</p> Signup and view all the answers

    ¿Qué es un objeto en el contexto de programación orientada a objetos?

    <p>Una instancia de una clase.</p> Signup and view all the answers

    El _______ permite a los objetos responder de diferentes maneras al mismo método.

    <p>polimorfismo</p> Signup and view all the answers

    Asocia cada tipo de diagrama UML con su descripción:

    <p>Diagrama de clases = Representa las clases del sistema y sus relaciones. Diagrama de componentes = Muestra los componentes físicos del sistema. Diagrama de secuencia = Representa la interacción entre objetos en el tiempo. Diagrama de estado = Muestra los estados y transiciones de un objeto.</p> Signup and view all the answers

    ¿Cuál de los siguientes es un ejemplo de comportamiento en la clase 'Coche'?

    <p>Avanzar()</p> Signup and view all the answers

    Los métodos son funciones asociadas a un objeto o clase.

    <p>True</p> Signup and view all the answers

    ¿Para qué se utilizan los diagramas UML?

    <p>Para visualizar, especificar, construir y documentar componentes de un sistema de software.</p> Signup and view all the answers

    ¿Cuál de las siguientes características NO es parte del Proceso Unificado (UP)?

    <p>Exclusivamente lineal</p> Signup and view all the answers

    El enfoque en la arquitectura en el RUP se lleva a cabo solamente en la fase de producción.

    <p>False</p> Signup and view all the answers

    ¿Cuáles son las cuatro 'P' que se consideran en la gestión del proyecto según el contenido?

    <p>Personas, Proyecto, Producto, Proceso</p> Signup and view all the answers

    Las fases del ciclo de vida incluyen Inicio, Elaboración, __________ y Transición.

    <p>Construcción</p> Signup and view all the answers

    Empareja las fases del ciclo de vida con su objetivo principal:

    <p>Inicio = Definir alcance y objetivos del proyecto Elaboración = Definir arquitectura básica Construcción = Desarrollo del producto Transición = Liberación y entrega del producto</p> Signup and view all the answers

    ¿Qué aspecto es clave en el proceso iterativo e incremental?

    <p>Realimentación del usuario</p> Signup and view all the answers

    Las etapas del ciclo de vida incluyen equipos grandes y actividades predecibles principalmente en la fase de Inicio.

    <p>False</p> Signup and view all the answers

    ¿Qué se entiende por 'gestión del riesgo' en el contexto del RUP?

    <p>Evaluación del proyecto, tecnología y recursos para identificar y comprender los riesgos.</p> Signup and view all the answers

    El modelo de arquitectura conocido como __________ permite visualizar, especificar, construir y documentar la arquitectura del sistema.

    <p>4 + 1 vistas</p> Signup and view all the answers

    ¿Cuál es un objetivo de la fase de Elaboración?

    <p>Definir la funcionalidad y arquitectura básica</p> Signup and view all the answers

    ¿Qué tipo de relación se define como 'parte-de' en el contexto de la agregación?

    <p>Agregación</p> Signup and view all the answers

    La herencia se representa en UML con una flecha cuya punta es un triángulo vacío.

    <p>True</p> Signup and view all the answers

    ¿Cuáles son las cuatro fases del Proceso Unificado de Desarrollo de Software?

    <p>Inicio, Elaboración, Construcción, Transición</p> Signup and view all the answers

    La cardinalidad determina el número de __________ que se asocian a través de una relación.

    <p>ocurrencias</p> Signup and view all the answers

    Asocia cada fase del Proceso Unificado con su principal actividad:

    <p>Inicio = Definición de la visión del proyecto Elaboración = Refinamiento de requisitos y diseño arquitectónico Construcción = Desarrollo del sistema completo Transición = Liberación del sistema al usuario final</p> Signup and view all the answers

    ¿Cuál es una de las ventajas del Proceso Unificado de Desarrollo?

    <p>Permite retroalimentación temprana</p> Signup and view all the answers

    La composición implica que los componentes pueden pertenecer a varios objetos agregados.

    <p>False</p> Signup and view all the answers

    ¿Qué se busca optimizar en el Proceso Unificado de Desarrollo?

    <p>Rendimiento del proyecto</p> Signup and view all the answers

    El análisis y _________ establece la estructura técnica del sistema.

    <p>diseño</p> Signup and view all the answers

    Asocia cada disciplina del RUP con su función:

    <p>Modelado de negocios = Define los procesos de negocio Requisitos = Captura y análisis de requerimientos Implementación = Codificación de componentes Pruebas = Verificación del software</p> Signup and view all the answers

    ¿Cuál de los siguientes diagramas se utiliza para modelar la interacción entre objetos a través de mensajes?

    <p>Diagrama de secuencia</p> Signup and view all the answers

    ¿Cuál es un riesgo asociado a implementar el Proceso Unificado?

    <p>Puede ser complicado y costoso</p> Signup and view all the answers

    El objetivo de la fase de transición es asegurar que el sistema esté listo para su implementación.

    <p>True</p> Signup and view all the answers

    El diagrama de clases se utiliza exclusivamente para representar el comportamiento dinámico de un sistema.

    <p>False</p> Signup and view all the answers

    ¿Qué representa un diagrama de estados en UML?

    <p>Los diferentes estados por los que pasa un objeto y las transiciones entre esos estados.</p> Signup and view all the answers

    ¿Qué implica la dependencia en el contexto del desarrollo de software?

    <p>Relación entre objetos o clases donde uno necesita a otro.</p> Signup and view all the answers

    La ________ se enfoca en la entrega del software al usuario final.

    <p>gestión de proyectos</p> Signup and view all the answers

    El modelo dinámico está diseñado para presentar el comportamiento del sistema a través del _____.

    <p>tiempo</p> Signup and view all the answers

    Empareja el tipo de diagrama con su descripción:

    <p>Diagrama de interacción = Muestra la comunicación entre usuarios y el sistema. Diagrama de colaboración = Representa cómo los objetos trabajan juntos para lograr una tarea. Diagrama de actividades = Representa los flujos de trabajo o procesos dentro del sistema. Diagrama de clases = Modela la estructura estática del sistema a través de clases y relaciones.</p> Signup and view all the answers

    Asocia cada fase del Proceso Unificado con su propósito:

    <p>Inicio = Justificación del proyecto Elaboración = Establecer la arquitectura Construcción = Agregar funcionalidades Transición = Preparar para liberación</p> Signup and view all the answers

    ¿Cuál es el propósito principal de un diagrama de casos de uso?

    <p>Descripción de interacciones entre actores externos y el sistema</p> Signup and view all the answers

    Un mensaje en el contexto de UML se considera una comunicación bidireccional entre objetos.

    <p>False</p> Signup and view all the answers

    ¿Qué son las transiciones en un diagrama de estados?

    <p>Relaciones entre dos estados que reflejan acciones para cambiar el estado de un objeto.</p> Signup and view all the answers

    El _____ se considera como una caja que contiene elementos de tipo clasificadores en UML.

    <p>paquete</p> Signup and view all the answers

    Asocia los componentes del modelo dinámico con su descripción:

    <p>Diagrama de actividades = Muestra el flujo de trabajo del sistema. Diagrama de secuencia = Representa la interacción temporal entre objetos. Diagrama de estados = Describe los estados de un objeto durante su ciclo de vida. Vista de interacción = Presenta la comunicación del usuario con el sistema.</p> Signup and view all the answers

    ¿Cuál de los siguientes diagramas no forma parte de los diagramas de comportamiento?

    <p>Diagrama de clases</p> Signup and view all the answers

    Es posible que las clases en un diagrama de clases tengan nombres repetidos en el mismo espacio de nombres.

    <p>False</p> Signup and view all the answers

    ¿Qué representan los atributos en un diagrama de clases?

    <p>Las propiedades o variables que caracterizan a una clase.</p> Signup and view all the answers

    Los diagramas de _____ son los que tratan más sobre funciones y actividades del sistema.

    <p>comportamiento</p> Signup and view all the answers

    El diagrama de despliegue representa el comportamiento dinámico del sistema.

    <p>False</p> Signup and view all the answers

    En el diagrama de clases, los atributos pueden ser privados o públicos.

    <p>True</p> Signup and view all the answers

    Los diagramas de comportamiento no están enfocados en las funciones y actividades del sistema.

    <p>False</p> Signup and view all the answers

    El diagrama de secuencia se representa a través de un gráfico en tres dimensiones.

    <p>False</p> Signup and view all the answers

    Un mensaje en UML se define como una comunicación bidireccional entre objetos.

    <p>False</p> Signup and view all the answers

    La herencia en programación orientada a objetos permite crear nuevas clases basadas en una clase existente.

    <p>True</p> Signup and view all the answers

    Un diagrama de clases en UML muestra los componentes físicos del sistema.

    <p>False</p> Signup and view all the answers

    El polimorfismo permite que un objeto responda de manera uniforme ante diferentes métodos.

    <p>False</p> Signup and view all the answers

    Los atributos de un objeto son sus características, como color y velocidad.

    <p>True</p> Signup and view all the answers

    En un objeto, los métodos son contenedores de atributos asociados a la clase.

    <p>False</p> Signup and view all the answers

    Study Notes

    Definición y características del software

    • El software es un conjunto de programas que indican a un dispositivo cómo realizar tareas específicas, a diferencia del hardware que es tangible.
    • Cumple funciones desde operaciones básicas hasta aplicaciones complejas como videojuegos y sistemas operativos.
    • No se desgasta como el hardware, aunque puede deteriorarse por cambios y errores en su código a lo largo del tiempo.

    Comparación entre software y hardware

    • El software se desarrolla con intelecto y creatividad; no se manufactura físicamente.
    • El hardware presenta una tasa de fallas alta al inicio de su vida que tiende a estabilizarse, mientras que el software puede contener defectos ocultos que elevan su tasa de fallas inicialmente.
    • En la industria, el hardware generalmente se construye en componentes, mientras que el software se desarrolla para un uso individual.

    Categorías de software

    • Software de sistema: Programas que sirven a otros programas (ej. sistemas operativos, compiladores).
    • Software de aplicación: Diseñados para resolver necesidades específicas de negocios (ej. procesamiento de transacciones).
    • Software de ingeniería y ciencia: Uso de algoritmos complejos en campos científicos (ej. astronomía).
    • Software incrustado: Reside dentro de dispositivos y controla características específicas (ej. microondas).
    • Software de línea de producto: Diseñado para diferentes consumidores (ej. software de finanzas).
    • Aplicaciones web: Integradas con bases de datos, permiten el acceso en red (ej. comercio electrónico).
    • Software de inteligencia artificial: Soluciona problemas complejos con algoritmos no numéricos (ej. robótica).

    Desafíos en la ingeniería de software

    • Computación abierta: Desarrollo de software que permita comunicación fluida entre diferentes dispositivos en redes.
    • Construcción de redes simples para usuarios finales en el contexto de la web.
    • Uso de código fuente abierto para facilitar el desarrollo colaborativo y acceso a aplicaciones.

    WebApps: Atributos clave

    • Residen en redes (Internet o intranet) y pueden ser accedidas por múltiples usuarios simultáneamente.
    • Requieren actualizaciones continuas y son sensibles a la calidad del contenido.
    • Deben garantizar seguridad y rapidez, así como ser visualmente atractivas para los usuarios.

    Proceso de elaboración de software

    • Se necesita un análisis profundo del problema antes del desarrollo para lograr aplicaciones de calidad.
    • Diseñar software requiere colaboración de equipos multidisciplinarios debido a la complejidad moderna.
    • La alta calidad es fundamental ya que el software afecta operaciones críticas en diversos ámbitos.

    Ingeniería de software

    • Involucra la aplicación de métodos sistemáticos y disciplinados para el desarrollo y mantenimiento del software.
    • Busca la producción de software confiable y eficiente que cumpla con requisitos establecidos.
    • Involucra fases como análisis de situación, diseño de proyectos, desarrollo, y pruebas necesarias para su funcionamiento.
    • La relación entre las metodologías, herramientas y técnicas es esencial para un proceso de desarrollo sistemático y controlado.

    Proceso de Software

    • El proceso de software es flexible y adaptable, permitiendo al equipo seleccionar tareas adecuadas para cada proyecto.
    • Consta de cinco actividades fundamentales: Comunicación, Planeación, Modelado, Construcción y Despliegue.
    • Comunicación: Definición de características y funciones del software con el cliente.
    • Planeación: Elaboración de un "plan de proyecto" que describe técnicas, riesgos y recursos necesarios.
    • Modelado: Creación de un bosquejo o modelo para entender mejor los requerimientos y el diseño.
    • Construcción: Generación de código y pruebas para detectar errores en el software.
    • Despliegue: Entrega del software al cliente para evaluación y retroalimentación.
    • Las actividades son iterativas, produciendo incrementos del software en cada ciclo.
    • Actividades sombrillas: Gestionan seguimiento, control de calidad, riesgos y avance del proyecto.

    Tipos de Productos de Software

    • Productos genéricos: Desarrollados para ser vendidos en el mercado, implican mayor gasto.
    • Productos hechos a medida: Desarrollados bajo pedido, requieren un mayor esfuerzo.

    Características del Software

    • Mantenible: Capacidad de evolución y cumplimiento de especificaciones.
    • Confiable: No debe causar daño en caso de fallos.
    • Eficiente: Uso óptimo de recursos del sistema.
    • Fácil de usar: Interfaz adecuada y buena documentación.
    • La importancia de cada característica varía según el tipo de producto y su entorno de uso.

    El Proceso de Software y sus Actividades

    • El proceso incluye especificación, diseño, validación y evolución del software.
    • Especificación: Definición de software y restricciones operativas por parte de clientes e ingenieros.
    • Diseño: Elaboración y programación del software.
    • Validación: Comprobación de que el software cumple con los requisitos del cliente.
    • Evolución: Modificación del software según cambios requeridos por clientes y mercado.

    Métodos y Herramientas en Ingeniería de Software

    • Métodos: Estrategias organizadas para producir software que incluyen procesos, notaciones, modelos y pautas de diseño.
    • Herramientas CASE: Sistemas diseñados para facilitar tareas del proceso de software como edición y verificación de diagramas.

    Características del Proceso

    • Definido: Proceso comprensible y bien estructurado.
    • Visible: Acceso claro al proceso.
    • Asistido: Soporte mediante herramientas CASE.
    • Aceptable: Aceptación por parte del personal involucrado.
    • Confiable: Detección de errores antes de afectar el producto.
    • Robusto: Capacidad de continuar ante problemas inesperados.
    • Mantenible: Evolución para cumplir objetivos organizacionales.
    • Ágil: Rapidez en la producción del sistema.

    Modelo de Ingeniería del Proceso

    • Especificación: Establecimiento de requerimientos y restricciones.
    • Diseño: Modelado de la solución.
    • Construcción: Desarrollo del sistema.
    • Prueba: Verificación y validación del sistema.
    • Instalación: Entrega y aseguramiento del funcionamiento del sistema.
    • Mantenimiento: Reparación de fallos detectados.

    Problemas en el Modelo del Proceso

    • Especificaciones a menudo incompletas o inexactas.
    • Ambigüedad entre especificación, diseño y construcción.
    • Imposibilidad de probar un sistema antes de su producción.
    • Dificultad para reemplazar software durante el mantenimiento.

    Ejemplos de Modelos de Procesos

    • Modelo de flujo de trabajo: Muestra la secuencia de actividades con entradas, salidas y dependencias.
    • Modelo de flujo de datos: Representa actividades que transforman datos en el proceso.
    • Modelo de rol/acción: Representa roles de las personas involucradas y sus responsabilidades en el proceso.
    • La mayor parte de los modelos de procesos se basan en paradigmas de desarrollo de software.

    MODELOS GENÉRICOS DE DESARROLLO DE SOFTWARE

    • Enfoque en Cascada: Fases secuenciales (requerimientos, diseño, implementación, pruebas). Cada etapa es firmada y se avanza a la siguiente.
    • Desarrollo Iterativo: Combina especificación, desarrollo y validación. Un sistema inicial se desarrolla y se refina según las necesidades del cliente.
    • Ingeniería del Software Basada en Componentes (CBSE): Se centra en la reutilización de partes existencias del sistema, priorizando su interacción.

    DETALLES GENERALES DE MODELOS DE DESARROLLO

    • Modelo en Cascada: Estructurado para proyectos con requisitos claros. Ventajas: buena visibilidad y documentación. Desventajas: rigidez ante cambios.
    • Desarrollo Evolutivo: Especificación y desarrollo concurrentes. Flexible, pero con visibilidad pobre y costes elevados debido a la documentación.
    • Prototipado: Útil para clarificar requisitos indefinidos. Permite ajustes temprano, pero riesgo de mala documentación si no se gestiona.
    • Transformación Formal: Usa modelos matemáticos para asegurar precisión. Alta seguridad, pero requiere recursos y personal especializado.
    • Modelo en Espiral: Incorpora análisis de riesgos en un enfoque iterativo. Excelentes para proyectos complejos y de largo plazo, combinando flexibilidad y control.
    • Modelos Ágiles (como Scrum): Adaptativos para requisitos cambiantes, enfocados en entrega rápida y participación continua del cliente.

    ORIGEN Y ESTRUCTURA DEL MODELO EN ESPIRAL

    • Propuesto por Barry Boehm en 1988. Representa un enfoque flexible en comparación con cascada.
    • Fases se dividen en: definición de objetivos, evaluación de riesgos, desarrollo y validación, planeación.

    FASES DEL CICLO EN ESPIRAL

    • Definición de Objetivos: Establecimiento de metas y planificación con evaluación de riesgos.
    • Análisis de Riesgos: Identificación y elaboración de estrategias para mitigar riesgos.
    • Desarrollo y Validación: Elección de un modelo de desarrollo según los riesgos evaluados.
    • Planeación: Revisión de resultados y preparación para el siguiente ciclo.

    MANEJO DE RIESGOS EN EL MODELO EN ESPIRAL

    • Evaluación continua de riesgos en cada ciclo para ajustar el enfoque del proyecto antes de avanzar.

    DIFERENCIAS CON OTROS MODELOS

    • Enfoque explicitado en la gestión de riesgos. Mejora la adaptabilidad y reduce problemas de retrasos y costos.

    VENTAJAS DEL MODELO EN ESPIRAL

    • Flexibilidad para ajustar planes basada en los riesgos identificados.
    • Promueve iteración y mejora continua del producto final.

    DESVENTAJAS DEL MODELO EN ESPIRAL

    • Complejidad en la gestión de su enfoque iterativo y basado en riesgos.
    • Costos y tiempos potencialmente altos por la constante evaluación.

    APLICACIÓN DEL MODELO EN ESPIRAL

    • Adecuado para proyectos grandes y complejos donde los riesgos son altos. Ejemplos incluyen sistemas críticos como aplicados en defensa o salud.

    ASEGURAMIENTO DE CALIDAD

    • Se asegura mediante revisiones y pruebas continuas. Evaluación temprana de riesgos que implican calidad del software.

    DESAFÍOS EN LA IMPLEMENTACIÓN

    • Complejidad, costos elevados y necesidad de experiencia en gestión de riesgos y comunicación.

    FINALIZACIÓN DEL DESARROLLO EN EL MODELO EN ESPIRAL

    • Se cierra el desarrollo cuando se cumplen todos los objetivos y se mitigan riesgos críticos, garantizando satisfacción del cliente.

    CICLO DE VIDA DEL SOFTWARE

    • Análisis: Definición de requisitos del usuario y viabilidad.
    • Diseño: Estructuración del software según requerimientos. Incluye diseño general y en detalle.
    • Desarrollo: Programación de funciones definidas en diseño.
    • Pruebas: Verificación de cada componente y métodos de prueba eficaces.
    • Implementación: Codificación según diseños y desarrollo en entornos de prueba.
    • Mantenimiento: Modificaciones posteriores para corregir errores y mejorar el rendimiento.

    Rol en el diseño de sistemas

    • La Ingeniería de Software define la interacción entre componentes de software y hardware, asegurando cumplimiento de necesidades y correcta integración.
    • Se enfatiza la usabilidad, seguridad, escalabilidad y mantenibilidad del software.

    Historia de la Ingeniería de Software

    • Surgió en la década de 1960 debido a la "crisis del software", un periodo marcado por la complejidad creciente de proyectos sin metodologías adecuadas.
    • Evolucionó a través de varias etapas, incluyendo:
      • Primera era (1950-1965): Codificación y corrección básica, sin planificación ni documentación.
      • Segunda era (1965-1972): Simplificación de código y aparición del software como producto.
      • Tercera era (1972-1985): Impacto del software en redes de información y tecnologías de inteligencia artificial.
      • Cuarta era (1985-1995): Período significativo de desarrollo.
      • Quinta era (2000 en adelante): Omnipresencia de software en la web y reutilización de componentes.

    Cambios desde la primera etapa hasta la actualidad

    • Inicios con software básico y lenguajes de bajo nivel:
      • Evolución hacia lenguajes más avanzados como C y Java, facilitando desarrollo más complejo.
    • Introducción de interfaces gráficas en los 80s que hicieron el uso de computadoras más accesible.
    • Actualidad: software omnipresente, disponible en la nube, incluyendo inteligencia artificial y aprendizaje automático.

    Desarrollo en la actualidad

    • Uso de metodologías ágiles y herramientas de colaboración en línea.
    • Empleo de entornos de desarrollo integrados (IDEs) para facilitar programación.
    • Fuerte enfoque en seguridad y escalabilidad.
    • Prácticas de integración y entrega continuas (CI/CD) permiten despliegue rápido de software.

    Lenguajes predominantes en el mercado

    • Python: Versátil, popular en ciencia de datos e inteligencia artificial.
    • JavaScript: Esencial para desarrollo web (cliente y servidor).
    • Java: Muy utilizado en aplicaciones empresariales y Android.
    • C#: Principalmente en aplicaciones .NET.
    • C++: Común en sistemas de alto rendimiento como videojuegos.

    Relación con otras disciplinas

    • Conexión con Ciencia de la Computación, Gestión de Proyectos e Ingeniería de Sistemas.
    • La Ingeniería de Software se centra en aplicar principios teóricos a la resolución de problemas prácticos en el desarrollo.

    Distinción del software con otros productos

    • Intangibilidad: El software es un conjunto de instrucciones, no físico.
    • Flexibilidad: Modificaciones y mejoras sin cambios en hardware.
    • Bajo costo de reproducción y distribución en comparación con productos físicos.
    • Dependencia del hardware, ya que requiere especificaciones del equipo para funcionar.

    Aplicación de la computación ubicua

    • Integración de tecnología en la vida diaria sin ser notada, como en hogares inteligentes.
    • Gestión de salud mediante sensores vestibles.
    • Ciudades inteligentes optimizando tráfico y recursos a través de datos en tiempo real.

    Ejemplos de aplicación

    • Hogares Inteligentes: Automatización de tareas domésticas.
    • Salud y Bienestar: Monitoreo constante a través de dispositivos portátiles.
    • Ciudades Inteligentes: Uso de datos para mejorar seguridad y eficiencia urbana.

    Mitos relacionados con el desarrollo de software

    • El software libre no es de baja calidad.
    • Desarrollo abarca más que solo escribir código.
    • El software siempre requiere mantenimiento.
    • Más programadores no siempre aceleran el desarrollo.
    • Errores en el software son inevitables.
    • Pruebas no garantizan ausencia de errores.
    • Costo no refleja calidad del software.
    • Desarrollo es un esfuerzo colaborativo, no individual.
    • No es necesario conocer todos los lenguajes de programación.
    • Software personalizado no siempre es superior a soluciones estándar.

    Resolución de problemas y principios fundamentales

    • La Ingeniería de Software busca diseñar soluciones que sean robustas y escalables, alineadas con necesidades del negocio mediante técnicas de modelado y gestión de riesgos.

    Roles en tecnología

    • Product Owner (PO): Define y prioriza los requisitos del producto.
    • Scrum Master: Facilita el proceso Scrum y mejora la colaboración.
    • Project Manager (PM): Planifica y gestiona proyectos de software.
    • Analista Funcional: Documenta requisitos y las traduce a especificaciones.
    • Desarrollador/Ingeniero de Software: Escribe y mantiene el código.
    • Tester/QA: Asegura la calidad del software mediante pruebas.
    • Arquitecto de Software: Define la arquitectura del software.
    • DevOps Engineer: Automatiza procesos de desarrollo y despliegue.
    • Administrador de Bases de Datos (DBA): Gestor de bases de datos y asegura rendimiento.
    • Diseñador UX/UI: Crea interfaces de usuario intuitivas.
    • Administrador de Sistemas: Mantiene la infraestructura de TI.
    • Security Engineer: Protege sistemas y datos de amenazas.

    Diferencias entre software de código libre y código cerrado

    • Software de código cerrado: Licenciado, no puede ser modificado; ejemplo: IOS y Windows.
    • Software de código libre: Modificable y distribuido gratuitamente; ejemplo: Android y Linux.
    • El costo, servicio y seguridad varían significativamente entre ambos tipos de software.

    Ingeniería de Requisitos

    • La ingeniería de requisitos incluye descubrir, analizar, documentar y verificar los requerimientos de software.
    • Los requerimientos son descripciones de servicios y restricciones operativas que debe ofrecer un sistema.
    • Los requisitos establecen el “qué” de un sistema, mientras que el diseño se centra en el “cómo” se implementará.

    Tipos de Requerimientos

    • Requerimientos del Usuario: Declaraciones generales sobre las funciones y comportamientos que el sistema debe proporcionar desde la perspectiva del usuario final.
    • Requerimientos del Sistema: Describen con detalle las funciones y restricciones operativas; incluyen requerimientos funcionales y no funcionales.
    • Requisitos del Software: Específicos para el software, desglosan necesidades técnicas.

    Requerimientos Funcionales y No Funcionales

    • Requisitos Funcionales: Definen acciones específicas que el software debe realizar, como autenticación de usuario o gestión de inventario.
    • Requisitos No Funcionales: Definen los criterios de calidad del sistema, como rendimiento, seguridad, usabilidad y escalabilidad.

    Tipos de Requerimientos No Funcionales

    • Del Producto: Se refieren a limitaciones del comportamiento del producto, como rendimiento y fiabilidad.
    • De la Organización: Derivan de políticas y procedimientos existentes, incluyendo estándares y métodos de diseño.
    • Externos: Factores externos como legislativos, éticos y de interoperabilidad.

    Proceso de Ingeniería de Requisitos

    • Planificación: Establecer objetivos, alcance y recursos necesarios.
    • Obtención: Recopilar requisitos mediante técnicas como entrevistas o encuestas.
    • Análisis: Estudiar los requisitos para comprender su significado y eliminar ambigüedades.
    • Especificación: Documentar los requisitos de manera formal y estructurada.
    • Verificación: Comprobar que la especificación sea correcta y coherente.
    • Validación: Asegurar que los requisitos cumplen con las necesidades del cliente.

    Técnicas de Obtención de Requisitos

    • Entrevistas: Conversaciones directas con stakeholders para recolectar información.
    • Encuestas y Cuestionarios: Obtención estructurada de datos de un gran número de participantes.
    • Workshops: Reuniones colaborativas para discutir y priorizar requerimientos.
    • Observación: Análisis de cómo los usuarios trabajan actualmente para identificar sus necesidades.
    • Prototipado: Crear versiones preliminares del software para recibir retroalimentación.

    Documentación de Requisitos

    • Incluir identificación única, descripción clara, prioridad, criterios de aceptación y dependencias.
    • Documentación clara es vital para el éxito del proyecto y guía todas las actividades de desarrollo y pruebas.

    Participantes en el Proceso de Requisitos

    • Clientes y Usuarios: Proporcionan requisitos alineados a sus necesidades.
    • Diseñadores: Necesitan comprender los requisitos para satisfacer expectativas en el diseño.
    • Gerentes y Supervisores: Asegurar el seguimiento de hitos y comprender el impacto organizacional.

    Casos de Uso

    • Técnicas para describir requisitos funcionales desde la perspectiva del usuario.
    • Incluyen actores externos que interactúan con el sistema y especifican qué debe hacer sin detallar cómo.
    • Usados en Fases iniciales para especificar expectativas y funcionalidades del sistema.

    Elementos Clave en Casos de Uso

    • Actores: Usuarios o sistemas que interactúan con el sistema.
    • Relaciones: Indican cómo los actores participan en los casos de uso.
    • Diagramas de Casos de Uso: Representan interacciones entre actores y funcionalidades del sistema, útiles para comprender requisitos funcionales.

    Paradigmas de Objetos

    • Clase: Plantilla que define propiedades y comportamientos de objetos, creando un nuevo tipo de datos.
    • Objeto: Instancia de una clase que representa entidades reales como relojes o coches. Interaccionan mediante mensajes.
    • Atributos: Características de un objeto, como color y velocidad.
    • Estado: Conjunto de datos o atributos y sus valores; incluye la funcionalidad y el comportamiento.
    • Métodos: Funciones asociadas a un objeto o clase que detallan sus acciones (ej. avanzar, parar).
    • Herencia: Permite crear nuevas clases basadas en clases existentes, reutilizando y extendiendo comportamientos.
    • Polimorfismo: Capacidad de los objetos de responder de diferentes maneras a un mismo método (ej. acelerar).
    • Diagramas UML: Lenguaje de modelado visual estandarizado para visualizar y documentar sistemas de software.

    Tipos de Diagramas UML

    Diagramas Estructurales

    • Diagrama de Clases: Representa clases, atributos, métodos y relaciones.
    • Diagrama de Componentes: Muestra componentes físicos y sus interacciones.
    • Diagrama de Objetos: Similar al de clases, enfocado en instancias específicas.
    • Diagrama de Despliegue: Representa la disposición física de nodos y componentes.

    Diagramas de Comportamiento

    • Diagrama de Casos de Uso: Describe interacciones entre actores externos y el sistema.
    • Diagrama de Secuencia: Muestra la interacción entre objetos a través de mensajes en secuencia temporal.
    • Diagrama de Actividades: Representa flujos de trabajo o procesos dentro del sistema.
    • Diagrama de Estados: Muestra estados de un objeto a lo largo del tiempo y las transiciones entre ellos.

    Modelo Estático y Dinámico

    • Modelo Estático: Describe la estructura de clases y objetos, representando relaciones a lo largo del tiempo.
    • Modelo Dinámico: Muestra el comportamiento del sistema a través del tiempo, incluyendo interacciones y estados.

    Diagrama de Secuencia

    • Representa la interacción entre objetos mediante el intercambio de mensajes ordenados temporalmente.
    • Los mensajes se visualizan en un eje vertical, mostrando el flujo de interacción.

    Diagrama de Estados

    • Muestra los estados de un objeto durante su ciclo de vida y eventos que causan cambios de estado.
    • Incluye transiciones que vinculan estados y reflejan acciones realizadas.

    Diagrama de Clases

    • Describe la organización interna del sistema en términos de clases, atributos y relaciones.
    • Establece relaciones como herencia, asociación y agregación.

    Procesos de Desarrollo: Proceso Unificado de Desarrollo (RUP)

    • RUP es una metodología de desarrollo de software iterativa e incremental, enfocado en la arquitectura.
    • Fases del RUP:
      • Inicio: Definición de visión y requisitos, estimación de costos y evaluación de riesgos.
      • Elaboración: Refinamiento de requisitos, diseño de arquitectura base y resolución de riesgos.
      • Construcción: Desarrollo del sistema completo, integración y pruebas.
      • Transición: Preparación del sistema para el usuario final, corrección de errores y capacitación.

    Ventajas y Desventajas del RUP

    • Ventajas: Iterativo, flexible, enfocado en la arquitectura y control de riesgos.
    • Desventajas: Complejidad y necesidad de capacitación extensa, así como documentación considerable.

    Componentes del Modelo de Arquitectura

    • Los modelos visualizan, especifican y documentan la arquitectura mediante un enfoque iterativo.
    • Gestión del Riesgo: Identificación y comprensión de riesgos a través de cada iteración.

    Ciclo de Vida del Desarrollo

    • Diferenciación de fases del ciclo de vida, que incluyen actividades de gestión y desarrollo en paralelo.
    • Hitos son puntos de control para revisar progreso, identificar riesgos y evaluar situaciones.

    Paradigmas de Objetos

    • Clase: Plantilla que define propiedades y comportamientos de objetos, creando un nuevo tipo de datos.
    • Objeto: Instancia de una clase que representa entidades reales como relojes o coches. Interaccionan mediante mensajes.
    • Atributos: Características de un objeto, como color y velocidad.
    • Estado: Conjunto de datos o atributos y sus valores; incluye la funcionalidad y el comportamiento.
    • Métodos: Funciones asociadas a un objeto o clase que detallan sus acciones (ej. avanzar, parar).
    • Herencia: Permite crear nuevas clases basadas en clases existentes, reutilizando y extendiendo comportamientos.
    • Polimorfismo: Capacidad de los objetos de responder de diferentes maneras a un mismo método (ej. acelerar).
    • Diagramas UML: Lenguaje de modelado visual estandarizado para visualizar y documentar sistemas de software.

    Tipos de Diagramas UML

    Diagramas Estructurales

    • Diagrama de Clases: Representa clases, atributos, métodos y relaciones.
    • Diagrama de Componentes: Muestra componentes físicos y sus interacciones.
    • Diagrama de Objetos: Similar al de clases, enfocado en instancias específicas.
    • Diagrama de Despliegue: Representa la disposición física de nodos y componentes.

    Diagramas de Comportamiento

    • Diagrama de Casos de Uso: Describe interacciones entre actores externos y el sistema.
    • Diagrama de Secuencia: Muestra la interacción entre objetos a través de mensajes en secuencia temporal.
    • Diagrama de Actividades: Representa flujos de trabajo o procesos dentro del sistema.
    • Diagrama de Estados: Muestra estados de un objeto a lo largo del tiempo y las transiciones entre ellos.

    Modelo Estático y Dinámico

    • Modelo Estático: Describe la estructura de clases y objetos, representando relaciones a lo largo del tiempo.
    • Modelo Dinámico: Muestra el comportamiento del sistema a través del tiempo, incluyendo interacciones y estados.

    Diagrama de Secuencia

    • Representa la interacción entre objetos mediante el intercambio de mensajes ordenados temporalmente.
    • Los mensajes se visualizan en un eje vertical, mostrando el flujo de interacción.

    Diagrama de Estados

    • Muestra los estados de un objeto durante su ciclo de vida y eventos que causan cambios de estado.
    • Incluye transiciones que vinculan estados y reflejan acciones realizadas.

    Diagrama de Clases

    • Describe la organización interna del sistema en términos de clases, atributos y relaciones.
    • Establece relaciones como herencia, asociación y agregación.

    Procesos de Desarrollo: Proceso Unificado de Desarrollo (RUP)

    • RUP es una metodología de desarrollo de software iterativa e incremental, enfocado en la arquitectura.
    • Fases del RUP:
      • Inicio: Definición de visión y requisitos, estimación de costos y evaluación de riesgos.
      • Elaboración: Refinamiento de requisitos, diseño de arquitectura base y resolución de riesgos.
      • Construcción: Desarrollo del sistema completo, integración y pruebas.
      • Transición: Preparación del sistema para el usuario final, corrección de errores y capacitación.

    Ventajas y Desventajas del RUP

    • Ventajas: Iterativo, flexible, enfocado en la arquitectura y control de riesgos.
    • Desventajas: Complejidad y necesidad de capacitación extensa, así como documentación considerable.

    Componentes del Modelo de Arquitectura

    • Los modelos visualizan, especifican y documentan la arquitectura mediante un enfoque iterativo.
    • Gestión del Riesgo: Identificación y comprensión de riesgos a través de cada iteración.

    Ciclo de Vida del Desarrollo

    • Diferenciación de fases del ciclo de vida, que incluyen actividades de gestión y desarrollo en paralelo.
    • Hitos son puntos de control para revisar progreso, identificar riesgos y evaluar situaciones.

    Studying That Suits You

    Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

    Quiz Team

    Description

    Este cuestionario trata sobre los conceptos básicos de la ingeniería de software, definiendo qué es el software y su importancia en el funcionamiento de los dispositivos. Se exploran las diferencias entre software y hardware, así como las funciones que el software puede ejecutar en diversas aplicaciones.

    More Like This

    Use Quizgecko on...
    Browser
    Browser