Ingeniería de Software
Consiste en conocer y aplicar herramientas para solucionar sistemas de información a través de software aplicando métodos y técnicas.
Características
Es una aplicación multicapa
El fundamento de la ingeniería de software es el proceso del software.
Capas de la Ingeniería de Software
Herramientas
Métodos
Proceso
Calidad
Proceso del software:
Marco de Trabajo de las tareas que se requieren para construir software de alta calidad.
Fases de la Ingeniería de Software
- Definición
Interfaces a ser establecidas
Qué función y rendimiento se desea
Comportamiento deseado del sistema
Identificar informaciones a ser procesadas
Restricciones y criterios de validación del sistema
Método:
Ingeniería de sistemas o de información
Planificación del proyecto de software
- Desarrollo
Detalles procedimentales
Implementación en una arquitectura del software
Definir cómo ha de diseñarse las estructuras de datos
Traducción de un diseño a un lenguaje de programación
Cómo ha de realizarse las pruebas
Método
Diseño de software
Generación de código
Prueba de software
- Mantenimiento
Correcciones de errores
Adaptaciones requeridas
Mejoras producidas
Prevenciones
Informática
Ciencia que estudia los métodos y mecanismos para el tratamiento racional y automático de la información.
Dato
Representación simbólica. No afecta el comportamiento de quién lo recibe.
Una información es significativa cuando se puede tomar decisiones a través de ella.
Información
Conjunto de datos que relacionados entre sí obtienen un valor adicional.
La información debe ser:
- Precisa
- Completa
- Económica
- Oportuna
- Verificable
Sistema
Conjunto de partes o elementos que interactúan entre sí para lograr un objetivo
Características
- Tiene un propósito
- Pueden tener subsistemas
- Controlable
- Adaptable
Sistema de Información
Es la acción de dar entrada de datos de manera ordenada para darle a la persona adecuada en el momento oportuno como información para que sirva de base en la toma de decisiones.
Características del Software
- El software se desarrolla o modifica con el intelecto
- El Software no se desgasta
- El software se construye a la medida
Metodologías Tradicionales
- Cascada
Bases
- Es el paradigma más antiguo y más extensamente utilizado
- Ciclo de vida clásico o modelo en cascada
- Sugiere un enfoque sistemático
- Actualmente se pone en duda su eficacia
- Pese a tener debilidades, es significativamente mejor que un enfoque hecho al azar.
Desventajas
- No se saltan fases
- El cliente no va poder ver el producto antes
- Prototipo
Propone identificar requisitos básicos del proyecto, para luego construir un modelo prototipo, en base al prototipo, desechar el mismo y volver a construir.
DRA
Es un modelo de proceso del desarrollo del software lineal secuencial enfatiza un ciclo de desarrollo del software lineal secuencia extremadamente corto.
Metodologías Ágiles
Son un conjunto de metodologías, a veces denominadas livianas o ligeras, que utilizan
prácticas similares, basadas en los resultados, la gente y la interacción.
Manifiesto Ágil (4 Criterios)
- A los individuos y su interacción, por encima de los procesos y las herramientas.
- El software que funciona, por encima de la documentación exhaustiva.
- La colaboración con el cliente, por encima de la negociación contractual.
- La respuesta al cambio, por encima del seguimiento de un plan.
- XP Extreme Programming Explained
Está orientado al desarrollador, al usuario y a la rápida funcionalidad
Características
- Desarrollo iterativo(cíclico) e incremental. A medida que se repita crece.
- Pruebas unitarias. Sería por fase, a cada versión.
- Programación en parejas. Dos personas trabajan, tipo rally.
- Frecuente integración del equipo de programación con el usuario.
- Corrección de todos los errores antes de añadir nueva funcionalidad. Hacer entregas frecuentes.
- Refactorización del código, reescribir partes del código para aumentar la legibilidad y mantenibilidad.
- Propiedad del código compartido, donde todo el personal pueda corregir y extender cualquier parte del código.
- Simplicidad en el código.
- Se logra el desarrollo rápido utilizando un enfoque de construcción basado en componentes.
- SCRUM
Proceso para desarrollo que apunta al trabajo en equipo. Proceso iterativo e incremental.
Hirotaka Takeuchi e Ikujijo Nonaka
Pilares
- Entregas periódicas
- Relación con el cliente
- Alta capacitación del personal.
Conformación
- Roles
Scrum Master(persona intermediaria entre el equipo y el cliente)
Team(equipo de desarrollo)
Product Owner
- Artefactos
Product Backlog(Tabla de procesos)
Sprint Backlog (prueba)
Burn Down (diagrama que permite ver procesos pendientes y la velocidad de avance)
Incremento(parte del producto terminada y probada)
- Actividades
Sprint Planning
Sprint
Scrum Daily Testing
Sprint Demostración
Retrospective
Replanificación
- RUP
Rational Unified Process
Características
- Centrado en la arquitectura
La arquitectura de un sistema es la organización de sus partes más relevantes, lo que permite tener una visión común entre todos los involucrados (desarrolladores y usuarios) y una perspectiva clara del sistema completo, necesaria para controlar el desarrollo.
- Iterativo e Incremental
4 Fases
Inicio
Elaboración
Construcción
Transición
- Dirigido de casos de uso
RUP utiliza UML como complemento y, por lo tanto, muchas de las herramientas de este lenguaje pasan a ser eje en la metodología.
Diferencias entre las metodologías
Metodologías Ágiles | Metodologías Tradicionales |
|
|
Gestión de Calidad del Software
Son aquellas actividades de planificación y control a fin de garantizar y mejorar la calidad del software.
Gestión de calidad de software: tareas que se realizan en el ámbito del software desde el punto de vista desarrollo técnico.
Política de calidad: Conjunto de directrices generales de una organización referidas a la calidad.
CMM
Modelo completo que se basa en un conjunto de funciones de ingeniería del software que deberían estar presentes conforme las organizaciones alcanzan diferentes niveles de madurez del proceso.
Niveles de la CMM
- Nivel 1: Inicial
El proceso del software se caracteriza según el caso, y ocasionalmente incluso de forma caótica. Se definen pocos procesos, y el éxito depende del esfuerzo individual.
- Nivel 2: Repetible
Se establecen los procesos de gestión del proyecto para hacer seguimiento del coste, de la planificación y de la funcionalidad.
- Nivel 3: Definido
El proceso del software de las actividades de gestión y de ingeniería se documenta, se estandariza y se integra dentro de un proceso de software de toda una organización.
- Nivel 4: Gestionado
Mediante la utilización de medidas detalladas, se comprenden y se controlan cuantitativamente tanto los productos como el proceso del software.
- Nivel 5: Optimizado
Mediante un resultado cuantitativo del proceso y de las ideas y tecnologías innovadoras se posibilita una mejora en el proceso.
CMMI vs CMM
El modelo CMM y el modelo CMMI (Capability Maturity Model Integration) se diferencian básicamente en que el primero se enfoca principalmente a las organizaciones o áreas de Tecnologías de información en cambio el modelo CMMI como su nombre lo indica es un modelo integrado y mejorado que se puede aplicar a un número mayor de organizaciones de diferentes sectores.
ISO 9000
Es un conjunto de normas sobre calidad y gestión de calidad, establecidas por la Organización Internacional de Normalización (ISO).
Específica la manera en que una organización opera sus estándares de calidad, tiempos de entrega y niveles de servicio.
Certificación del Software
La calidad de software no se certifica, lo que se certifica son los procedimientos para construir un software de calidad, los procedimientos deben ser correctos y estar en función de la normalización.
Parámetros para la Medición de Calidad del Software
- Operaciones del producto
- Corrección
- Fiabilidad
- Eficiencia
- Integridad
- Facilidad de Uso
- Revisión del producto
- Transición del producto