Вы находитесь на странице: 1из 43

Factores que

afectan la
Calidad del
Software
CIENCIA VS INGENIERÍA
Factores que afectan la Calidad del
Software

Algunas deficiencias comunes en el desarrollo de software son:

1. Escasa o tardía validación con el cliente.


2. Inadecuada gestión de los requisitos.
3. No existe medición del proceso ni registro de datos
históricos.
4. Estimaciones imprevistas de plazos y costos.
5. Excesiva e irracional presión en los plazos.
6. Escaso o deficiente control en el progreso del proceso de
desarrollo.
7. No se hace gestión de riesgos formalmente.
8. No se realiza un proceso formal de pruebas.
9. No se realizan revisiones técnicas formales e inspecciones
de código.
Factores que afectan la Calidad del
Software
Complejidad
• El sistema es tan complejo que ningún programador puede entenderlo.
• La introducción de una solo corrección de error puede hacer que otro se
genere

Cambios
• La "Entropía" de un sistema de software se incrementa con cada cambio:
Cada cambio implementado erosiona la estructura del sistema lo cual hace
que el siguiente cambio sea aún más costoso ("Segunda Ley de la Dinámica
de Software").
• Conforme pasa el tiempo, el costo de implementar un cambio será
demasiado alto, y el sistema entonces no podrá soportar la tarea prevista.
Por que el software es tan complejo
El dominio del problema es difícil
El dominio del problema es a veces difícil, simplemente
porque no somos expertos en ello.

1. Es decir, puede que no sea un desafío intelectual, sino


porque usted no es un experto en ella, hay que
aprenderlo.

2. Si unimos esto con el aprendizaje de varios dominios de


problemas, y eso es lo que usted tendrá que hacer como
ingeniero de software, y el problema se hace evidente.
Por que el software es tan complejo
El proceso de desarrollo es muy difícil de
gestionar
Uno de los supuestos que los administradores han hecho en el
pasado, es que el desarrollo de software puede ser gestionado
como un conjunto de pasos en forma lineal, por ejemplo:
Especificación de Requisitos, seguido de Diseño de Sistemas seguido
de Ejecución seguido de pruebas y de entrega.

En realidad esto no es tan fácil. Desarrollo de software no se sigue


un proceso lineal. Es altamente no lineal. Hay dependencias entre la
forma en que se diseña un sistema y la funcionalidad. Por otra
parte, y eso hace que sea muy difícil, algunas de estas dependencias
no se pueden formular a menos que pruebe el diseño.
Por que el software es tan complejo

El software ofrece una flexibilidad extrema

Podemos cambiar casi todo lo que hemos


diseñado en el software.

Si bien es difícil de cambiar el diseño de una


lavadora, es muy fácil de cambiar el programa
antes de ejecutarlo.
Por que el software es tan complejo
El software es un sistema discreto (formas particulares
de codificación)

Cuando usted está sentado en un avión en un


asiento de la ventana, y oprime un botón para
llamar a la azafata para tomar una bebida, no
espera que el sistema de un giro y usted termine
en la tierra.
Por que el software es tan complejo
El software es un sistema discreto (formas particulares
de codificación)
Esto puede suceder con los sistemas digitales. Una de
las razones:
1. Si bien se puede descomponer el sistema en
subsistemas (Azafata, Control de Vuelo), si usted no
sigue las buenas reglas de diseño, que podrían haber
utilizado alguna variable global para cada uno de
estos subsistemas.
2. Una de estas variables utilizadas por el subsistema de
control de vuelo podrían haber sido sobrescritos por
el módulo de Azafata.
El proceso de software
Propósito: producción eficaz y eficiente de un
producto software que reúna los requisitos del
cliente.

Este proceso es intensamente intelectual, afectado


por la creatividad y juicio de las personas
involucradas.
El proceso
de
software
El proceso de software
El proceso de software no es único. No existe un
proceso de software universal que sea efectivo
para todos los contextos de proyectos de
desarrollo.

Debido a esta diversidad, es difícil automatizar


todo un proceso de desarrollo de software.
El proceso de software
A pesar de la variedad de propuestas de proceso de software, existe un conjunto
de actividades fundamentales que se encuentran presentes en todos ellos:

1. Especificación de software: Se debe definir la funcionalidad y restricciones


operacionales que debe cumplir el software.

2. Diseño e Implementación: Se diseña y construye el software de acuerdo a la


especificación.

3. Validación: El software debe validarse, para asegurar que cumpla con lo que
quiere el cliente.

4. Evolución: El software debe evolucionar, para adaptarse a las necesidades


del cliente.
El proceso de software
Además de estas actividades fundamentales, Pressman
menciona un conjunto de “actividades protectoras”, que
se aplican a lo largo de todo el proceso del software. Ellas
se señalan a continuación:

1. Seguimiento y control de proyecto de software.


2. Revisiones técnicas formales.
3. Garantía de calidad del software.
4. Gestión de configuración del software.
5. Preparación y producción de documentos.
6. Gestión de reutilización.
7. Mediciones.
8. Gestión de riesgos.
El proceso de software
Pressman caracteriza un proceso de desarrollo de software
con los siguientes elementos:
Pressman caracteriza un proceso de desarrollo de software con los
siguientes elementos:

1. Un marco común del proceso: actividades que son aplicables a


todos los proyectos de software, con independencia del
tamaño o complejidad.

2. Un conjunto de tareas: colección de tareas de ingeniería del


software, hitos de proyectos, entregas y productos de trabajo
del software, y puntos de garantía de calidad, que permiten
que las actividades del marco de trabajo se adapten a las
características del proyecto de software y los requisitos del
equipo del proyecto.

3. Las actividades de protección, tales como garantía de calidad


del software, gestión de configuración del software y medición,
abarcan el modelo del proceso. Las actividades de protección
son independientes de cualquier actividad del marco de trabajo
y aparecen durante todo el proceso.
Modelos de proceso software
Sommerville define el modelo de proceso de software
como:
“Una representación simplificada de un proceso de
software, representada desde una perspectiva
específica. Por su naturaleza los modelos son
simplificados, por lo tanto un modelo de procesos del
software es una abstracción de un proceso real.”

Los modelos genéricos no son descripciones definitivas


de procesos de software; sin embargo, son
abstracciones útiles que pueden ser utilizadas para
explicar diferentes enfoques del desarrollo de software.
Modelos de proceso
software
Algunos modelos son:

1. Codificar y corregir
2. Modelo en cascada
3. Desarrollo evolutivo
4. Desarrollo formal de
sistemas
5. Desarrollo basado en
reutilización
6. Desarrollo incremental
7. Desarrollo en espiral
Métodos de Ingeniería de software
Enfoques estructurados para el desarrollo de
software que incluyen modelos de sistema,
notaciones, reglas, consejos de diseño y
orientación de procesos.

1. Descripción del Modelo


2. Reglas
3. Recomendaciones
4. Proceso de orientación
The evolution of the laws of software
evolution

Software evolution deals with the process by


which programs are modified and adapted
to their changing environment.

Meir M. Lehman
Programas de Tipos de
Software
tipo S ("determinable"):
1. Problema puede
plantearse formalmente
y completamente.
2. Aceptación: Es el
programa correcto de
acuerdo a sus
especificaciones?
3. Este software no
evoluciona.
4. Un cambio a la
especificación define un
nuevo problema, por lo
tanto, un nuevo
programa
Tipos de Software

Programas de tipo P ("solución de


problemas")
1. Declaración imprecisa de un
problema del mundo real
2. Aceptación: Es el programa de una
solución aceptable al problema?
3. Este software es probable que
evolucione continuamente porque
la solución no es nunca perfecta, y
se puede mejorar debido a los
cambios del mundo real y por lo
tanto los cambios de problemas
Tipos de Software

Programas de tipo E
("Embedded")

1. Un sistema que se
convierte en parte del
mundo que modela
2. Aceptación: depende
totalmente de opinión y
el juicio
3. Este software es
inherentemente evolutivo
4. Cambios en el software y
en el mundo se afectan
entre sí
Modelo de procesos de software
Para resolver los problemas reales de una industria, un ingeniero del
software o un equipo de ingenieros debe incorporar una estrategia de
desarrollo que acompañe al proceso, métodos y capas de herramientas.

Esta estrategia se llama modelo de proceso o paradigma de


ingeniería del software.
Se selecciona un modelo de proceso para la ingeniería del software
según la naturaleza del proyecto y de la aplicación, los métodos y las
herramientas a utilizarse, los controles y entregas que se requieren.
Todo el desarrollo del software se puede caracterizar como bucle de resolución de
problemas en el que se encuentran cuatro etapas distintas:

DEFINICION DE
PROBLEMAS

ESTADO DESARROLLO
ACTUAL TECNICO

INTEGRACION
DE SOLUCIONES
Modelos del Proceso del Software
Es una representación abstracta de un proceso del software que pueden
utilizar para explicar diferentes enfoques para el desarrollo del software.
Los modelos del proceso son:
Modelo lineal secuencial o Cascada
 Es la secuencia de actividades, donde la estrategia
principal es seguir el progreso del desarrollo de software
hacia puntos de revisión bien definidos.
 Describe el orden de las actividades del desarrollo de
software.
 Toma demasiado tiempo en ver resultados, lo que
retrasa la detección de errores hasta el final.
MODELO EN CASCADA
DEFINICION
ANALISIS
DISEÑO
DESARROLLO
PRUEBAS
 Definición de requisitos: MANTENIMIENTO
Las restricciones y metas del sistema se definen a partir de la interacción con el
interesado.
 Análisis
Se comprende la naturaleza de la aplicación y el dominio de información, así como su
funcionalidad, rendimiento e interconexión
Se reúnen todos los requisitos que debe cumplir el software
 Diseño
se traducen los requisitos a una representación que permita evaluar la calidad del software que
se va a construir antes de comenzar la implementación
 Desarrollo
Se llama también Implementación
Generación de código entendible por la máquina.
El paso de codificación realiza esta tarea.
 Pruebas
Proceso de depuración de programas
Checar la validez de las sentencias
Pruebas para detectar errores, asegurando que a partir de los datos de entrada si se genere la salida
deseada
 Mantenimiento
Corrección de errores no detectados en la etapa de pruebas
Posibles mejoras funcionales debidas a nuevos requerimientos del cliente
En esta fase se vuelven a aplicar todas las etapas anteriores sobre el software existente
MODELO EN CASCADA
VENTAJAS:
 Se tiene todo bien organizado y no se mezclan las fases.
 Es perfecto para proyectos que son rígidos.
 Ideal para proyectos donde se especifiquen muy bien los requerimientos.
 Ideal para proyectos en que se conozca muy bien la herramienta a utilizar.
DESVENTAJAS
 Difícilmente un cliente va a establecer al principio todos los
requerimientos necesarios.
 No permite movilizarse entre fases.
 Los resultados y/o mejoras no son visibles, el producto se ve recién
cuando este, esté finalizado.
MODELO EN ESPIRAL
Se basa en una estrategia para
reducir el riesgo del proyecto en
áreas de incertidumbre, como
requerimientos iniciales incompletos
e inestables. El modelo enfatiza
ciclos de trabajo, cada uno de los
cuales estudia el riesgo antes de
proceder al siguiente ciclo.
MODELO EN ESPIRAL
Cada ciclo comienza con la identificación de los objetivos, soluciones
alternativas, restricciones asociadas con cada alternativa y, finalmente, se
procede a su evolución. Cuando se identifica incertidumbre, se utilizan
diversas técnicas para reducir el riesgo de las distintas alternativas. Cada
ciclo termina con una revisión que discute los logros actuales y los planes
para el siguiente ciclo.
Se crea un diseño preliminar para el nuevo sistema. Esta fase es la más
importante del modelo de espiral.
Se construye un primer prototipo del nuevo sistema tomando como
referencia el diseño preliminar.
MODELO EN ESPIRAL
MODELO EN ESPIRAL
Un segundo prototipo es evolucionado de un procedimiento de cuatro fases:

Evaluación del primer prototipo en términos de sus fortalezas,


debilidades y riesgos
Definición de los requerimientos del segundo prototipo
Planeación y diseño del segundo prototipo
Construcción y pruebas del segundo prototipo
MODELO EN ESPIRAL
VENTAJAS:
 El análisis del riesgo se hace de forma explícita y clara. Une los mejores
elementos de los restantes modelos.
 Reduce riesgos del proyecto
 Incorpora objetivos de calidad
 Integra el desarrollo con el mantenimiento, etc.
 Además es posible tener en cuenta mejoras y nuevos requerimientos sin
romper con la metodología, ya que este ciclo de vida no es rígido ni
estático.
DESVENTAJAS
 Genera mucho tiempo en el desarrollo del sistema.
 Modelo costoso.
 Requiere experiencia en la identificación de riesgos.
MODELO INCREMENTAL O ITERATIVO

Es un desarrollo inicial de la arquitectura completa del sistema,


seguido de incrementos y versiones parciales del mismo. Cada
incremento tiene su propio ciclo de vida. Cada incremento agrega
funcionalidad adicional o mejorada sobre el sistema. Conforme se
completa una etapa, se verifica e integra la versión con las demás
versiones ya completadas del sistema.
MODELO INCREMENTAL
Ventajas MODELO INCREMENTAL
Si un error importante es realizado, sólo la última iteración necesita ser
descartada y utilizar el incremento previo.
Al ir desarrollando parte de las funcionalidades, es más fácil determinar si los
requerimientos planeados para los niveles subsiguientes son correctos.
 Construir un sistema pequeño es siempre menos riesgoso que construir un
sistema grande.
Desventajas
Se requiere de una experiencia importante para definir los incrementos de forma
de distribuir en ellos las tareas en forma proporcional
Si el sistema a desarrollar es de gran magnitud y se cuenta con un único grupo
para construirlo se corre el riesgo que el desarrollo se prolongue demasiado en
tiempo
Se presupone que todos los requisitos se han definido al inicio.
PROCESO DE SOFTWARE PERSONAL
También conocido como PSP se concentra en las prácticas de
trabajo de los ingenieros en una forma individual. Sirve para
producir software de calidad, cada ingeniero debe trabajar en la
necesidad de realizar trabajo de calidad. PSP se diseñó para
ayudar a profesionales del software para que utilicen
constantemente prácticas sanas de ingeniería de software.
PROCESO DE SOFTWARE PERSONAL

Вам также может понравиться