Parcial 1 Flashcards
Software
Instrucciones (programas de computadora) que cuando son ejecutadas proveen características, funciones y desempeño deseado; estructuras de datos que permite a los programas manejar adecuadamente la información;
Categorías de software
-Software de Base
-Software de Aplicación
-Software Inteligente
Sistema
Conjunto de componentes que interactúan entre si para lograr uno o mas objetivos en común
Componente
Cualquier persona, cosa o proceso que tiene alguna función dentro del sistema
Crisis de software
Término acuñado en 1968 para describir problemas como la baja calidad de software, tiempos y presupuestos excedidos y la confiabilidad cuestionable de los sistemas de software
Ingeniería de Software según Bohem 1976
Es la aplicación práctica del conocimiento cientifico al diseño y construcción de programas de computadora; y a la documentación asociada requerida para desarrollar, operar y mantenerlos. Se conoce también como desarrollo de SW o Producción de SW
Ingeniería de Software según Ian Sommerville
Es una disciplina que comprende todos los aspectos de la producción de software desde las etapas iniciales de la especificación del sistema, hasta el mantenimiento de éste después de que se utiliza. (
Ingeniería de software segun IEEE93a
Es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento de software; es decir, la aplicación de la ingeniería al software
Importancia de la Ingeniería de Software:
- Terminar los proyectos de desarrollo de sw en tiempo y presupuesto.
- Optimizar el uso de recursos; tiempo, dinero y esfuerzo humano.
- Puede ser la única forma en que se pueda competir en un mercado globalizado.
- Es el paso natural en el desarrollo de sistemas de software, de procesos empíricos a
procesos sistematizados. - Desarrollar Software con calidad
Software como un Producto (SaaP):
Es el producto que construyen los programadores profesionales y al que después le dan mantenimiento durante un largo tiempo.
Se considera todo el software que instalamos en nuestros dispositivos, o que compramos en caja.
Unidad de Software:
Código fuente, código objeto, código de control, datos de control o una colección de todos ellos. (ISO/IEC 12207)
Software como un Servicio (SaaS)
Software funcional sobre demanda (on-demand), el cual se provee a usuarios finales, generalmente por medio de infraestructura externa de Tecnologías de Información
Propiedades esenciales del software
Complejidad, conformidad, modificable invisible
Producto de Software
Es el Software que se crea para un conjunto de usuarios en particular.
Un producto de software completo consiste en mucho más que el código objeto y el código fuente, también incluye documentación, resultados de las pruebas y medidas de productividad.
Sistemas de Información:
Entidad abstracta que muestra la forma en que los datos fluyen de una persona o departamento hacia otros y puede ser cualquier cosa, desde la comunicación interna entre los diferentes componentes de la organización y líneas telefónicas, hasta sistemas de cómputo que generan reportes para varios usuarios
Características de los proyectos de sw
Invisibilidad, complejidad, conformidad, flexibilidad
Proceso de Software
Conjunto de actividades cuya meta es el desarrollo o evolución del software
Ejemplo de Proceso de software
Proceso Unificado, PSP, TSP, Espiral, Scrum
Proceso
es un conjunto de actividades, acciones y tareas que se ejecutan cuando va a
crearse algún producto del trabajo.
Actividad
busca lograr objetivo amplio y se desarrolla sin importar el dominio de la
aplicación, tamaño del proyecto, complejidad del esfuerzo o grado de rigor con que se
usará la ingeniería de software
Acción
es un conjunto de tareas que producen un producto importante del trabajo.
Tarea
Se centra en un objetivo pequeño pero bien definido que produce un resultado
tangible.
cuatro actividades fundamentales de procesos de software
-Especificación del Software.- Definición de funcionalidad y restricciones.
* Desarrollo de Software.- Producción del Software.
* Validación del Software.- Asegurarse sobre las necesidades del cliente.
* Evolución del Software.- Cumplir con los cambios requeridos por el cliente.
Marco de Trabajo Proceso de Cascada
- Definición de Requerimientos
- Diseño del sistema y del software
- Implementación y prueba de unidades
- Integración y prueba del sistema
- Operación y Mantenimiento
Actividades de Definición de Requerimientos:
Investigación Preliminar
* Entrevistas con Usuarios y cliente
* Especificación y descripción de requerimientos
* Validar requerimientos
Tareas Investigación Preliminar
Entrevista con el Cliente
* Conocer a la organización
* Determinar la problemática u oportunidad de mejora.
* Realizar y entregar reporte
* Puntos de Aseguramiento de Calidad de Softeare (SQA):
* Verificar planeación, tiempos de entrega y entregable
Actividades de protección:
Administración del proyecto:
* Planeación
* Control presupuestal
* Administración de persona
PROBLEMAS DE LOS PROCESOS DE
SW
- No se sigue un proceso o método formal de SW.
- Se usa un proceso o método formal de desarrollo de SW pero no es el adecuado.
- Se usa un proceso o método formal de SW pero no se sigue a
detalle. - Mala Administración del Proyecto de SW.
- Estimación no adecuada de tiempos y esfuerzos.
- Falta de parámetros de calidad
Producto de Software:
- Es el Software que se crea para un conjunto de usuarios en particular.
- Es el resultado de un Proceso de Software
Características del producto de SW
Fácil de mantener, confiable, eficiente, usabilidad
Problemas de los productos de SW
- No mantenibles (difícil de dar mantenimiento)
- No confiables ( no confía en el producto)
- Ineficiente (malgasta recursos)
- Difícil de Usar
Problema de Calidad
El software contiene
defectos que causan mal funcionamiento y produce
debilidades arquitectónicas en seguridad,
escalabilidad, mantenimiento, interoperatividad,
desempeño, etc
Problema de Alcance
El software liberado o
instalado no incluye todas las funciones acordadas.
Problema de Tiempo (planeación)
El software
acordado se libera en fechas posteriores a lo
planeado.
Problema de Costo
: El software acordado se
libera con un costo mucho mayor al presupuestado.
Solución a las problemáticas de sw
Utilizar ingenieria de software
TQM
Administración Total de Calidad
(Total Quality Management)
Proceso riguroso
Un proceso riguros de
software es una
composición de fases,
actividades, artefactos de
entrada y salida y roles,
así como de personas y
herramientas que
desarrollan las actividades
RUP
proceso unificado racional
Marco de Prácticas Ágiles
composición de objetivos, valores, atributos, principios y prácticas para entregar un producto de software de forma ágil
SCRUM
Método
conjunto de etapas y actividades propuestas en orden
coherente y lógico que nos guían hacia el logro de objetivos.
Un buen método debe contener
- Propósito: razón de usarlo.
- Función: que se realizara?
- Etapas/actividades: que y como se realizara?
- Recurso: que elementos se necesitarán (material, humano, $, tiempo)
- Productos: que bienes se obtendrán en cada etapa/actividad?
Desarrollo Convencional:
Años 50
* Desarrollo Artesanal y sin Métodos
* Enfoque en la tarea de programación
* Inconvenientes:
* Los resultados finales son impredecibles
* No hay forma de controlar lo que está sucediendo en el proyecto
* Los cambios organizativos afectan negativamente al proceso de
desarrollo
Desarrollo Estructurado:
Años 60’s, entorno académico; mediados 70’s, industria.
* Se empiezan a utilizar métodos de desarrollo de SW.
* Evolución:
* Programación Estructurada:
* Facilitar comprensión de programas
* Normas para la aplicación de estructuras de datos y de control.
* Diseño Estructurado:
* Mayor nivel de abstracción, independiente del lenguaje de
programación.
* Elementos básicos de diseño, Módulos.
* Modularidad y medidas de calidad de programas
Metodología
Es el conjunto de métodos por los cuales se regirá una investigación
científica o trabajo
ELEMENTOS DE LA INGENIERÍA DE
SOFTWARE
- Personas – Quien lo hace
- Proyecto – La realización
- Proceso – La manera en que se hace
- Producto – Artefactos generados
Procesos de desarrollo de software riguroso
- Proceso de cascada
- Proceso espiral ganar-ganar
-Iterativo e Incremental (RUP)
Procesos de desarrollo de sw hibridos
- Desarrollo Rápido de Aplicaciones (RAD)
-Prototipo
Procesos de desarrollo de sw Ágiless
-Frameworks ágiles (XP, Scrum)
- DevOps
¿Cuáles son las fases del modelo de desarrollo en cascada?
Definición de requerimientos, diseño del sistema y software, implementación y prueba de unidades, integración y prueba del sistema, operación y mantenimiento.
Qué componentes tiene un proceso de software?
Actividades, acciones y tareas que buscan crear un producto de software con calidad, realizadas por ingenieros de software.
¿Cuáles son las actividades básicas del desarrollo ágil de software?
Comunicación con el cliente, planeación, modelado, construcción, entrega y evolución.
Qué es el modelo en espiral de desarrollo de software?
Es un modelo que se basa en la iteración y el análisis de riesgos en cada etapa del desarrollo, con fases de definición de objetivos, evaluación de riesgos, desarrollo y validación, y planeación de nuevas iteraciones.
Cuáles son los cuatro perfiles de ISO/IEC 29110 para Entidades Muy Pequeñas (VSE)?
Entrada, Básico, Intermedio y Avanzado.
¿Qué es el modelo de desarrollo RAD?
RAD (Desarrollo Rápido de Aplicaciones) es una adaptación del modelo en cascada, enfocada en la construcción rápida de aplicaciones mediante componentes y desarrollos paralelos, adecuada para proyectos con requerimientos bien definidos.
¿Cuáles son las principales fases de un Proceso Unificado de desarrollo de software?
Requerimientos, análisis y diseño, implementación, pruebas, entrega e implantación, y mantenimiento.
¿Qué principios básicos caracterizan al desarrollo orientado a objetos?
Abstracción, ocultación de información y modularidad.
Cuál es la importancia de seguir un proceso riguroso en el desarrollo de software?
Un proceso riguroso mejora la calidad del software, optimiza recursos y asegura que el desarrollo cumpla con los tiempos y presupuestos establecidos.
¿Qué diferencia al proceso iterativo e incremental del modelo en cascada?
En el proceso iterativo e incremental, se desarrollan ciclos que producen versiones ejecutables del sistema en cada iteración, lo que permite ajustes y mejoras continuas, a diferencia del flujo lineal del modelo en cascada.
¿Qué aspectos críticos deben gestionarse en un proyecto de desarrollo de software?
tiempo, costo, calidad y alcance.
¿Qué define la calidad del software?
El cumplimiento de los requisitos de funcionalidad y desempeño, estándares de desarrollo documentados y las características implícitas esperadas de un software profesional.
¿Qué es el desarrollo estructurado y cuándo surgió?
El desarrollo estructurado surgió en los años 60 y 70 y se basa en el uso de métodos para facilitar la comprensión y diseño de programas, incluyendo la programación y análisis estructurados.
¿Cuáles son las ventajas del modelo en espiral en el desarrollo de software?
Permite incrementos, análisis de riesgos en cada etapa y disminuye los riesgos generales del proyecto.
Sectores del modelo en espiral
- Definición de objetivos
- Evaluación y reducción de riesgos
- Desarrollo y validación
- Planeación
CONSTRUCCIÓN DE PROTOTIPOS
Pertenece a los Modelos Evolutivos
Más Interacción con el Client
Usa ciclos de vida cortos
Unido con Chicle y alambres
DESARROLLO RÁPIDO DE APLICACIONES
Si se entienden bien los requisitos y se limita el ámbito del proyecto
se puede desarrollar un sistema completamente funcional en un
periodo de 60 a 90 días
CALIDAD
características mensurables:
cosas que se pueden comparar con estándares conocidos
como longitud, color, propiedades eléctricas, maleabilidad,
etc
Calidad de diseño
- Se refiere a las características que especifícan los ingenieros de software para un
artículo. - La calidad de diseño en un producto aumenta, si el producto se fabrica de acuerdo
a las especificaciones.
Calidad de concordancia:
- Es el grado de cumplimiento de las especificaciones de diseño durante su
realización. - Cuanto mayor sea el grado de cumplimiento, más alto será el nivel de calidad de
concordancia
Calidad del Software:
- Los requisitos de funcionalidad y desempeño explícitamente establecidos
- Los estándares de desarrollo explicitamente documentados
- Las características implícitas que se esperan de todo software desarrollado
profesionalmente
Marcos de Referencia para Asegurar la Calidad de Procesos de Software
CMMI-DEV (Capability Maturity Model Integration for Development)
Estándares internacionales para Asegurar la Calidad de Procesos de Software
- ISO/IEC 29110 (Software Engineering – Lifecycle profiles forVery Small Entities (VSEs))
- ISO/IEC 12207 (Systems an Software Engineering – Software lice cycle processes
CMMI-DEV:
- Es un modelo de referencia para productos de desarrollo de software, servicios y
sistemas. - Contiene cuatro categorías de áreas de procesos:
- Administración de Procesos
- Soporte
- Administración de Proyectos
- Ingeniería
- Tiene 22 áreas de procesos:
- 5 de Administración de Procesos
- 5 de Soporte
- 7 de Administración de Proyectos
- 5 de Ingenierí
Niveles de Madurez
Nivel 1 inicial
Nivel 2 Administrado
Nivel 3 Definido
Nivel 4 Administrado Cuantitativamente
Nivel 5 Optimizado
NIVELES DE CAPACIDAD
Nivel 0 incompleto
Nivel 1 ejecutado
Nivel 2 administrado
Nivel 3 definido
Nivel 4 administrado cuantitativamente
Nivel 5 optimizado
ISO/IEC 29110
Es un conjunto de estándares y reportes técnicos que proveen el ciclo de vida para
el desarrollo de sistemas y software de Entidades Muy Pequeñas (VSE)