03 Mar

Concepto de Software

Software: programas de cómputo y documentación asociada. Se desarrolló para un cliente particular o mercado general.

Software: conjuntos de programas que permiten ejecutar distintas tareas.

Software: conjunto de instrucciones que una computadora debe seguir.

Los ingenieros desarrollan productos software.

  • Producto genéricos: desarrollo para empresa para mercado libre
  • Productos personalizados: desarrollo para un cliente particular.

Características del Software

CaracterísticasDescripción
MantenimientoEl software debe escribirse de forma que pueda evolucionar con las necesidades del cliente.
Confiabilidad y SeguridadFiabilidad, seguridad y protección. No debe causar daño.
EficienciaNo debe desperdiciar recursos. Capacidad de respuestas, memoria, etc.
AceptaciónDebe ser aceptable para el usuario y compatible con los sistemas que usan ellos.

Ingeniería de Software

Se interesa por todos los aspectos de la producción de software, de la primera etapa hasta su mantenimiento.

Fases claves:

  • Disciplina de ingeniería
  • Aspectos asociados a la producción de software

Proceso de Software

  • Especificación de software, cliente e ingeniero definen el software que se producirá y las restricciones.
  • Desarrollo del software, se diseña y programa el software.
  • Validación del software, se verifica el software para asegurar lo que requiere el cliente.
  • Evolución de software, se modifica el software que refleja los requerimientos cambiantes del cliente.

Diversidad de la Ingeniería de Software

  • Es un enfoque sistemático para la producción de software, que cuenta los temas de costos, fecha y confiabilidad, así como las necesidades del cliente.
  • No existen métodos y técnicas universales adecuadas para todos los sistemas y compañías.

Factores de Determinación de Métodos

  • Aplicaciones independientes.
  • Aplicaciones interactivas basadas en transacción.
  • Sistema de control embebido.
  • Sistemas de procesamiento en lotes.
  • Sistemas de entretenimiento.
  • Sistema de modelado y simulación.
  • Sistemas de adquisición de datos.
  • Sistemas de sistemas.

Fundamentos Aplicados a Todos los Sistemas

  • Deben llevarse a cabo utilizando un proceso de desarrollo administrado y comprendido.
  • Confiabilidad y desempeño.
  • Comprender y gestionar los requerimientos.
  • Uso efectivo de recursos.

Ingeniería de Software y la Web

  • Desarrollo orientado a web.
  • Desarrollo de servicios.
  • Software como servicio o SaaS.
  • Cambios en la ingeniería de software
    • Reutilización de software.
    • Desarrollo progresivo.
    • Interfaces de usuario.

Ética en la Ingeniería de Software

  • Aspecto importantes a considerar
    • Confiabilidad.
    • Competencia.
    • Derechos de propiedad intelectual.
    • Mal uso de recursos.

Código de Ética y Práctica Profesional

  • Público: deben actuar consecuente con el interés público.
  • Cliente y empleador: tienen que comportarse de tal forma que fomente el mejor interés para cliente y empleador.
  • Productos: deben garantizar que sus productos y modificaciones satisfagan los estándares más altos posibles.
  • Juicio: mantener integridad e independencia en sus juicios personales.
  • Gestión: los administradores y líderes de ingeniería deben promover un enfoque ético a la gestión y mantenimiento del software.
  • Profesión: fomentar la integridad y la reputación de la profesión al interés públicos.
  • Colegas: deben ser justos con sus colegas y apoyarlos.
  • Uno mismo: tienen que intervenir en el aprendizaje para toda la vida, cuento en la práctica y promover la ética.

Proceso de Software

Es una serie de actividades que conducen a la elaboración de un producto de software.

Está contempla cuatro actividades básicas:

-Especificación

-Diseño

-Validación

-Evolución

Las descripciones incluyen:

-Productos

-Roles

-Precondiciones

-Postcondiciones

Consideración

-No hay software ideal.

-Algunas organizaciones tienen sus propios diseños.

-Evolucionan dependiendo de las capacidades de las personas y de las características del sistema en desarrollo.

-Estructurado.

-Flexible.

Modelos de Proceso de Desarrollo

-Cascada(waterfall)

-Incremental

-Orientada a reutilización

Cascada:

Definición → Diseño → Implementación y prueba de la unidad → Integración y prueba del sistema → Operación y mantenimiento

Principales características:

Análisis y definición de requerimientos.

Diseño del sistema y software.

Implementación y prueba.

Integración y prueba.

Operación y mantenimiento.

Consideraciones del modelo:

-El resultado de cada fase consiste en uno o más documentos que se autorizaron.

-La siguiente fase no comienza hasta que termine la anterior.

-Las etapas se traslapan o retroalimentan.

-En sus fases se descubren errores y omisiones en los requerimientos.

Desarrollo Incremental

Bosquejo

  1. Especificación
    1. Versión inicial
  2. Desarrollo
    1. Versión intermedia
  3. Validación
    1. Versión Final

-Es fundamental de los enfoques ágiles.

– Es barato y fácil.

-Cada incorporación agrega algo.

-La primera versión es importante.

-Se evalúa el desarrollo de cada versión.

Tres Beneficios Importantes:

Reduce costes al adaptar los cambios del cliente.

Feedback sencillo de obtener.

Entregas útiles rápidas.

Desventajas:

El proceso no es visible.

La estructura no tiende a degradarse.

Reutilización de Software

Especificación de req. → Análisis de componentes → Modificación de req. → Diseño de sistema → Desarrollo e integración → Validación del sistema

Etapas intermedias que difieren de otros:

-Análisis de componentes.

-Modificación de req.

-Diseño de sistema con reutilización.

-Desarrollo e integración.

Existen 3 Tipos de Componentes que se Pueden Usar

-Servicios web se desarrollan conforme para atender los servicios estándares y para la invocación remota.

-Colección de objetos que se desarrollan como paquete para integrarse como un marco de paquete.

-El software independiente se configura para su uso de manera particular.

Especificación de Software

Corresponde a la ingeniería de requerimientos, comprender y definir los servicios, restricciones y desarrollo que requiere el sistema.

-Estudio de factibilidad

  • Tecnologías de software
  • Costo-beneficio
  • Presupuesto

-Obtención y análisis de requerimientos.

-Especificación de req.

-Validación de req.

Proceso:

Estudio de Factibilidad:

  • Informe de fact.
  • Obtención y análisis de req.
    • Especificación de req. → Obtención …… req.
      • Validación del sistema → Especi……..req.
        • Doc. de req
      • Requerimiento del usuario y sistema
        • Doc. de req.
    • Modelos del sistema
      • Doc. de req.

Actividades del Proceso

  • D. Arquitectónico
  • D. Interfaz
  • D. Componente.
  • D. Base de datos.

Entradas de Diseño:

  • Plataforma de info.
  • Especificación de req.
  • Descripción de datos.

Actividades de Diseño

  • D. Arquitectónico →
  • D. de interfaz. → -D. Base de datos.
  • D. de componentes. →

Salida de Diseño

  • Arq. del sistema.
  • Especificación de bd
  • Especi. de interfaz
  • Especifi. de compo.

Actividades para Demostrar que Funciona:

  • Ejecución de pruebas.
  • Procesos de comprobación

Etapas del Proceso de Pruebas

  • P. de desarrollo.
  • P. Sistema.
  • P. Aceptación.

Resumen del Proceso

Servicios

Especificación de req. → ⬆

↡ 〉 Plan de pruebas → Prueba de aceptación

Especificación del sistema → ⬆

↡ 〉 Plan de prueba de integración → Prueba de integración

Diseño del sistema → ⬆

↡ 〉Plan prueba integra de subsistemas → plan de integración del subsistema

Diseño detallado →

↳ Modulo de código de unidad y prueba ⤴

Enfrentar el Cambio:

  • El cambio como factor es inevitable.
  • No se pueden prever los cambios de las tecnologías.
  • Aumenta los costos.
  • Enfoques a la administración del cambio
    • Evitar el cambio mediante actividades que lo anticipen como prototipos.
    • Tolerar el cambio a modo que los cambios sean de bajo costo.

Prototipo

Versión inicial del sistema.

Su uso permite anticipar cambios.

  • Ayuda en la validación de req. y selección.
  • Ayuda para buscar soluciones específicas.

Características:

  • Permite obtener ideas nuevas de req.
  • Pueden revelar errores y omisiones de req.
  • Permiten visualizar el desarrollo de interfaces.
  • Validan los requerimientos funcionales.
  • Demuestran la factibilidad de la app.

Establecer objetivos del prototipo. → P. de creación del prototipo

Def. de funcionalidad del prototipo → Bosquejo de def.

Desarrollo del prototipo → Proto ejecutable

Evaluación de proto → Reporte de proto

Entrega Incremental

Durante el proceso:

  • Los clientes identifican los servicios que provee el sistema.
  • Los servicios más importantes y menos significativos.

Esto permite:

  • Definir número de incrementos.
  • LAS FUNCIONALIDADES DE CADA INCREMENTO.
  • Priorizar “ ” en las primeras entregas.
  • Los clientes usan incrementos como prototipos para los informes de req pos incrementos del sistema.
  • Los clientes no deben esperar hasta la entrega completa del sistema.
  • Es difícil identificar recursos comunes a todos los incrementos.
  • Los clientes no usan un sistema incompleto.
  • No existe una espe. completa.

Modelo Espiral

Sectores

  • Establecer objetivos.
  • Valoración y reducción del riesgo.
  • Desarrollo y validación.
  • Validación.

RUP

Derivado del UML y el proceso de software unificado.

Híbrido.

Está estrechamente vinculada con preocupaciones técnicas.

Se describen 3 perspectivas:

  • Dinámica que muestra el modelo a través del tiempo.
  • Estática presenta las actividades del proceso que se establece.
  • La práctica sugiere buenas prácticas a usar durante el proceso.

Visión Dinámica

  • Concepción.
  • Elaboración.
  • Construcción.
  • Transición.

Flujos de Trabajo Estáticos

  • Modelado del negocio: Utiliza casos de uso de la empresa

  • requerimientos: identificación de interacción del sistema y su desarrollo de de casos de uso para los requerimientos.

  • Análisis y diseño: creación y documentación de modelos arquitectónicos, componentes, objetos y secuencias.

  • Implementación: Implementación y estructuración de los componentes del sistema en subsistemas de implementación.

  • Pruebas: proceso iterativo en conjunto con la implementación

  • Despliegue: liberación del producto para su uso en el lugar de trabajo.

  • Administración de configuración de cambio: flujo que gestiona los cambios del sistema

  • Admin. del proyecto: Flujo de apoyo que gestiona el desarrollo del sistema

  • Entorno: se dispone el equipo de desarrollo y las herramientas.                                                                                                                                                                                                                         

Deja un comentario