Conociendo el contexto del software
Base conceptual/Fundamentos teóricos del software
Software
se puede definir como el
que hacen funcionar y realizar tareas
específicas a una computadora
procedimientos
reglas
datos
pueden ir desde
un sistema operativo
hasta aplicaciones específicas
editores de texto
videojuegos
editores de imágenes
Para generar un producto de software
se requieren de métodos y
técnicas para que
el desarrollo sea de calidad
Algunos problemas identificados en la producción de software incluyen
Retrasos considerables en la entrega
Poca productividad
Elevados costos de producción y cargas de mantenimiento
Baja calidad y fiabilidad del producto
Gran dificultad en el mantenimiento
Ciclo de vida del software
se utiliza para estructurar las actividades
que se llevarán a cabo en el desarrollo de un producto
Existen varios modelos de ciclo de vida
dependiendo de esto serán
las etapas que lo componen
la forma en cómo se lleva a cabo el proyecto
Etapas en común dependiendo del modelo
Análisis
Diseño
Codificación
Pruebas
Mantenimiento
Herramientas CASE
conjunto de
utilidades, métodos y técnicas
empleadas por los profesionales del
desarrollo de software
facilitan y agilizan el ciclo de vida en un sistema
Es útil en tareas como
el diseño del proyecto
cálculo de costos
generación de código a partir del diseño
generación
automática de documentación
características y ventajas de las herramientas CASE
Permiten la comprobación de errores
en etapas tempranas del
desarrollo
Tienen soporte de reusabilidad
Aumentan la calidad del producto
Mejoran la productividad en el
desarrollo
mantenimiento
Reducen el tiempo y el costo de desarrollo
Facilitan el uso de las distintas metodologías
propias de la
Ingeniería del software
Técnicas de implementación de sistemas
La metodología es un
modo sistemático de producir software
Una metodología se puede definir
como
conjunto de procedimientos necesarios para llegar a un objetivo
Tipos de metodologías
Metodología estructurada
Metodología orientada a objetos
Metodología OMT
Metodología UML
Metodología utilizada
Estándares en la construcción del software
Hacen parte de la ingeniería del software
utilización de estándares y metodologías para
el diseño
programación
prueba y análisis
del software desarrollado
objetivo
ofrecer mayor confiabilidad
concordancia con los requisitos exigidos
Normas ISO/IEC
ISO 12207
Modelos de ciclos de vida del software
El estándar se concibe para los interesados en
adquisición de software
Desarrolladores
Proveedores
El estándar indica unos procesos que van
desde la recopilación
de requisitos
hasta la culminación
del software
En total son 17 procesos que se agrupan en
tres categorias
Principales
de apoyo
de organización
Norma ISO/IEC 9126
es la que evalúa los productos de software
esta indica
las características de la calidad y lineamientos para su uso
las características de la calidad y las métricas asociadas
puede ser útil para
evaluar el producto
definir los requerimientos de la calidad
esta definida bajo un marco conceptual basado en
factores como
calidad del proceso
calidad del producto del software
contribuye a
mejorar la calidad en uso
calidad en uso
Estándar ISO/IEC 1598
Es usado como base metodológica
para evaluar el producto del software
esta norma ofrece
métricas y requisitos
para los procesos de evaluación
características del proceso de evaluación
repetitividad
reproducibilidad
imparcialidad
objetividad
medidas concretas que participan
Análisis de los requisitos de evaluación
Evaluación de las especificaciones
Evaluación del diseño y definición del plan de evaluación
Ejecución del plan de evaluación
Evaluación de la conclusión
define el proceso para evaluar un producto del software
consta de seis partes
ISO/IEC 14598-1
Visión General
ISO/IEC 14598-2
Planeamiento y Gestión
ISO/IEC 14598-3
Proceso para desenvolvedores
ISO/IEC 14598-4
Proceso para adquirentes
ISO/IEC 14598-5
Proceso para avaladores
ISO/IEC 14598-6
Documentación de Módulos
Norma ISO/IEC 25000 (SquaRE)
es una nueva serie de normas que se basa en
ISO
9126
ISO 14598
Objetivo principal de la serie SQuaRE
coordinación y
armonización del contenido
de ISO 9126 y de ISO 15939:2002 (Measurement Information Model)
SQuaRE está formada por las divisiones
ISO/IEC 2500n
División de gestión de calidad.
ISO/IEC 2501n.
División del modelo de calidad.
ISO/IEC 2502n
División de mediciones de calidad
ISO/IEC 2503n
División de requisitos de calidad.
ISO/IEC 2504n
División de evaluación de la calidad.
ISO/IEC 25050–25099
Estándares de extensión SQuaRE.
Spice
Apoya el desarrollo de una Norma Internacional
para la
Evaluación de
Procesos de Software
Tiene tres objetivos principales
para
-desarrollar un proyecto de trabajo y generar un estándar
para la evaluación de procesos de software.
llevar a cabo los ensayos de la industria de la norma emergente
promover la transferencia de tecnología de la evaluación de procesos de software en la industria mundial del software a nivel mundial
Es creciente en número de métodos de evaluación disponibles
CMMI
Es un modelo de mejora de los procesos de construcción de software
Provee
elementos necesarios para determinar su
efectividad
puede ser utilizado como guía para mejorar las actividades de
un proyecto
área - organización
Nivel 0: Incompleto
El proceso no se realiza, o no se consiguen los objetivos
Nivel 1
Inicial o ejecutando
el proceso se ejecuta y
se logra su objetivo
Nivel 2 Repetible:
Se da cuando el éxito de los resultados obtenidos se puede repetir
Nivel 3
Definido:
la forma de desarrollar proyectos está
definida, establecida, documentada
existen métricas.
Nivel 4 Administrado:
se usan métricas para gestionar la organización
Nivel 5 Optimizado:
Los procesos de los proyectos y de la organización están orientados a la mejora de las actividades
IEEE (Institute of Electrical and Electronics Engineers)
Su creación se remonta al año 1884
método de establecimiento y mejora del trabajo en equipo
para procesos software
su trabajo es promover
la creatividad
el desarrollo
y la integración
compartir y aplicar los avances en las
tecnologías de la información
produce más del 30%
de la literatura publicada en el mundo sobre ingeniería eléctrica
posee cerca de 900 estándares activos
Algunos de sus estándares son
VHDL
POSIX
IEEE 1394
IEEE 488
IEEE 802
IEEE 802.11
IEEE 754
PSP- Proceso personal del software
método de autoconocimiento
se concentra en las prácticas de trabajo de
los ingenieros en una forma individual
se caracteriza porque
se aplica a programas pequeños de menos de 10.000 líneas de código
sirve para producir software de calidad
TSP-Team Software Process
método de establecimiento y mejora del trabajo en equipo
para procesos de software
Es un
proceso para equipos de software
MOPROSOFT
Está dirigido a
empresas o áreas internas dedicadas al
desarrollo y/o mantenimiento de software
Es una norma Mexicana
sirve para estandarizar
operaciones
prácticas en gestión de ingeniería de software
Métricas de construcción y diseño
según el Instituto de Ingenieros Eléctricos y Electrónicos (IEEE)
la métrica se define como
una medida cualitativa, del grado en que un sistema, componente o proceso posee un atributo determinado
Si se desea conseguí la calidad de un software la medición es esencial
Las métricas sirven para
evaluar
mejorar
clasificar el software final
se recopilan en el transcurso de todos
los proyectos
durante largos períodos
Tipos de métricas
Métricas a nivel de código fuente
conjunto de medidas de software
proporcionan a los programadores
mejor visión del código
se determinan examinando las
líneas de código de los módulos
se determinan examinando los
atributos de calidad
que se encuentran en las líneas de código
Métricas CK Chidamber y Kemerer
métricas orientadas a clases
individuales, herencia y colaboraciones
Es uno de los conjuntos de métricas
más referenciado
Métricas de Li Henry
consideran cinco de las métricas de Chidamber y Kemerer
WMC
DIT
NOC
RFC
LCOM
Métricas de Halstead
conjunto de medidas primitivas
determinan el tamaño del software asumiendo que el programa está compuesto por
un conjunto de elementos
clasificados en
operadores
operandos
Métricas de Lorenz y Kidd (1994)
dividen las métricas basadas en clases
en cuatro categorías
tamaño
herencia
valores internos
valores externos
Líneas de código
atributo más usado para interpretar
el tamaño de un programa
Métricas R. Martin (1994)
Ca: Afferent Couplings:
número de clases de otros paquetes que dependen de las clases del propio paquete
Ce: Efferent Couplings:
número de clases dentro del propio paquete que dependen de clases de otros paquetes
I: Instability = Ce / (Ca + Ce)
métrica comprendida entre [0,1], siendo 0 la máxima estabilidad y 1 máxima inestabilidad
Modelos de construcción de software
Ofrecen un marco de trabajo usado para
controlar el proceso de desarrollo de sistemas de información
Modelos y metodologías del desarrollo de software
Modelo en cascada o Clásico (modelo tradicional)
modelo en el cual se ordenan rigurosamente
las etapas del desarrollo del software
El inicio de una etapa de desarrollo debe esperar el fin de la etapa anterior
cualquier error detectado lleva al
rediseño del área de código afectado
aumentando el costo del desarrollo del proyecto
Modelo de prototipos
Pertenece a los modelos evolutivos
el prototipo debe de ser construido rápidamente
utilización escasa de recursos
El prototipo es construido para
mostrárselo al cliente
obtener criticas y retroalimentación
Las etapas de este modelo son
1. Plan rápido
2. Modelo
4. Entrega y retroalimentación
5. Comunicación
Modelo en espiral
las actividades se desarrollan en espiral
estas se realizan conforme se van seleccionando
de acuerdo al análisis de riesgo
tiene dos formas en las cuales se debe de planificar el proyecto
la forma angular
indica únicamente el avance del software dentro del proyecto
la forma radial
indica el aumento del costo dado que cada iteración conlleva más tiempo de desarrollo.
Desarrollo por etapas
Es similar al modelo por etapas
Al al momento de la crítica o retroalimentación
no se obtendrán completamente las características del software
estas se descubren en el proceso
del avance del software
fases del modelo
1. Especificación conceptual
2. Análisis de requisitos
3. Diseño inicial
4. Codificación y depuración
Desarrollo iterativo y creciente o Iterativo e Incremental
Resuelve los problemas encontrados en el modelo en cascada
ofrece entornos de trabajo con técnicas para su correcta utilización
Es esencial para el método de programación extrema
Se puede dividir en los siguientes procesos
1. Etapa de inicialización
construcción de un producto
obtener retroalimentación de parte del usuario final.
2. Etapa de iteración
análisis, rediseño e implementación del producto
3. Lista de control del proyecto.
Tareas que describen las partes que conforman el proyecto
RAD o desarrollo de aplicaciones rápidas
permite la construcción rápida de sistemas utilizables
compuesto por un grupo reducido de personas
incluye
desarrolladores
testers del sistema
toma en cuenta las características de
usabilidad
utilidad
rapidez de la ejecución de la aplicación
Desarrollo concurrente
Se conoce como ingeniería concurrente
Es utilizado en su mayoría para aplicaciones cliente servidor
Una de las características es
que está orientado a las necesidades del usuario
las decisiones de la gestión
los resultados de las revisiones
Ventajas
está orientado a grupos de trabajo independientes
Desventajas
necesita de grupos de trabajo
condiciones necesarias para su implementación.
Proceso Unificado
se distingue por la utilización de casos de uso
está centrado en la arquitectura y la utilización de iteraciones incrementales
puede ser implementado hacia otros proyectos de distintas organizaciones
es utilizado para evitar problemas legales con el método RUB
características
es iterativo e incremental
dirigido por casos de uso
centrado en la arquitectura
enfocado en los riesgos
RUP o proceso unificado relacional
Es propiedad de IBM
desarrollado por la empresa Rational Software
Es uno de los modelos más utilizado en el
análisis, diseño
e implementación de la documentación de sistemas orientados a objetos
principios básicos de este método
adaptar el proceso
equilibrar prioridades
demostrar valor iterativamente
colaboración entre equipos
elevar el nivel de abstracción
enfoque a la calidad