Upload
wilson-alvarez
View
217
Download
4
Tags:
Embed Size (px)
DESCRIPTION
calidad de los software informaticos
Citation preview
1
Acerca de Acerca de
la Ingeniería de software la Ingeniería de software
(IS)(IS)
IntroducciónIntroducción
2
¿Qué es software?¿Qué es software?
• Programas y su documentación asociada
• Los productos de software pueden ser:– De propósito general: desarrollados
para un amplio mercado compuesto de clientes diversos
– De propósitos específicos: desarrollados para dominios restringidos con clientes específicos.
3
¿ Que es la IS ?¿ Que es la IS ?
Disciplina que trata los aspectos concernientes al desarrollo de sistemas de software complejos y de calidad, que requiere para su construcción de :
• un equipo de personas• procesos rigurosos, sistemáticos y
controlables (modelos y métodos)• la utilización de herramientas.
4
Mediante un proceso ....• Soportado por un método riguroso,
sistemático• basado en principios reconocidos • con actividades que se estructuren de
acuerdo a un modelo • facilitado por el uso de herramientas.
¿Cómo obtener software de ¿Cómo obtener software de calidad?calidad?
5
Software de calidadSoftware de calidad
¿Cuáles son las características que deseamos al elaborar un software?
6
• Correcto
• Confiable
• Robusto
Se comporta acorde a su especificación
Se comporta de acuerdo a lo esperado por el usuario
Se comporta razonablemente aún en cirscunstancias no contempladas (tolerante a fallas).
Confiabilidad, correctitud y Confiabilidad, correctitud y robustezrobustez
7
Confiabilidad, correctitud y Confiabilidad, correctitud y robustezrobustez• construcciones correctas si ellas satisfacen las especificaciones• en un movimiento sísmico unas colapsan (no son robustas)• otras construcciones sufren pequeños daños tolerables o previsibles (son confiables).
8
Confiabilidad, correctitud y Confiabilidad, correctitud y robustezrobustez
¿correcto => confiable?•Si, en el caso que la especificación capture los requerimientos del sistema¿confiable => correcto?• No necesariamente
Correcto
confiable
¿correcto => robusto?¿robusto => correcto?
¿confiable => robusto?¿robusto => confiable?
•Tarea 2
9
Cualidades del software: Cualidades del software: reusabilidadreusabilidad• Reusable
Componentes reusables:– Librerías científicas– Librerías para el desarrollo de
interfaces (MFC de Windows)– Patrones– Especificaciones– Clases.
Puede integrarse como componente de otros sistemas de software
10
ReusabilidadReusabilidad
factor clave para determinar la madurez de cualquier industria
“....la IS debe aún evolucionar para alcanzar su madurez como una disciplina de ingeniería..”
“....en el futuro las aplicaciones
serán construídas ensamblando
componentes..”
11
Cualidades del software: Cualidades del software: portabilidadportabilidad
• Portable
– Rango de portabilidad
– Portabilidad en diferentes plataformas de hardware (UNIX)
– Portabilidad en diferentes sistemas operativos (Java).
Puede ser utilizado en diferentes Puede ser utilizado en diferentes plataformasplataformas
12
Cualidades del software: Cualidades del software: interoperabilidadinteroperabilidad• Interoperable
– Las herramientas de ambientes integrados son interoperables
– Sistemas abiertos.
Puede coexistir y cooperar con otros sistemas de software.
13
– Se mide mediante técnicas clásicas:
• complejidad de algoritmos• evaluación de la eficiencia
(monitoreo, simulación,..).
Cualidades del software: Cualidades del software: eficienciaeficiencia•Eficiente
Usa los recursos computacionales económicamente
14
Cualidades del software: Cualidades del software: comprensibilidadcomprensibilidad• Comprensible
– Como cualidad interna: • documentos de análisis y diseño fáciles de
entender• código “descifrable”
– Como cualidad externa:• relacionado con la usabilidad.
15
Cualidades del software: Cualidades del software: usabilidadusabilidad• Usable
– La usabilidad de un producto de software está determinada por la satisfacción del usuario al utilizar el producto
– Fundamentalmente relacionada con las características de la interfaz de usuario
– Diversas cualidades inciden en la usabilidad (eficiencia, confiablidad,...).
16
¿ Qué es Usabilidad ?¿ Qué es Usabilidad ?
Usabilidad es una cualidad del software que tiene múltiples componentes y tradicionalmente es asociado con:• Aprendizaje • Eficiencia • Memorización• Baja rata de errores• Satisfacción
17
Cualidades del software: Cualidades del software: manteniblemantenible• Mantenible
– Mantenimiento correctivo(remoción de errores)
– Manteniendo adaptativo(cambios para adecuarlo a modificaciones de su ambiente)
– Mantenimiento perfectivo(cambios para mejorar la calidad -satisfacer nuevos requerimientos, aumentar la eficiencia, modificar funcionalidades, etc.)
20%
20%
60%
Fácil de modificar
Importancia de:•Documentación del proceso•Proceso orientado a facilitar los cambios
18
Medición de cualidadesMedición de cualidades
Métricas:• No existen standares aceptados para
medir algunas cualidades• Area de investigación muy activa
19
Importancia de las Importancia de las cualidadescualidades
• Al equipo de desarrollo le interesa que el software sea eficiente, comprensible, portable, ...
•Al usuario le interesa que el software sea fácil de usar, confiable, ...
20
Interrelación de cualidadesInterrelación de cualidades
Si se quiere que un software tenga la cualidad X ¿qué otras cualidades ayudan a ello?
Confiable
Correcto
Robusto
X
- Correcto- robusto- confiable- eficiente- mantenible- verificable- usable- reusable- interoperable- portable- comprensible- incrementable- .....
.
21
Interrelación de cualidadesInterrelación de cualidades
Si se quiere que un software tenga la cualidad X ¿cuáles otras cualidades ayudan a ello?
Reusable
Correcto
Comprensible
X
- Correcto- robusto- confiable- eficiente- mantenible- verificable- usable- reusable- amigable- interoperable- portable- comprensible- incrementable- .....
Eficiente
• Tarea 3
22
Interrelación de cualidadesInterrelación de cualidades
Si se quiere que un software tenga la cualidad X ¿cuáles otras cualidades ayudan a ello?
Eficiente
X
- Correcto- robusto- confiable- eficiente- mantenible- verificable- usable- reusable- amigable- interoperable- portable- comprensible- incrementable- .....
23
Interrelación de cualidadesInterrelación de cualidades
Si se quiere que un software tenga la cualidad X ¿cuáles otras cualidades ayudan a ello?
Mantenible
Comprensible
Incrementable
X
- Correcto- robusto- confiable- eficiente- mantenible- verificable- usable- reusable- interoperable- portable- amigable- comprensible- incrementable- .....
• Tarea 4
24
Interrelación de cualidadesInterrelación de cualidades
Si se quiere que un software tenga la cualidad X ¿cuáles otras cualidades ayudan a ello?
Usable
Confiable
Eficiente
X
- Correcto- robusto- confiable- eficiente- mantenible- verificable- usable- reusable- interoperable- portable- amigable- comprensible- .....
Amigable
...
25
Cualidades claves Cualidades claves (Sommerville Ian)
El software debe ser:• Mantenible
los cambios puedan ser hechos con bajos costos
• Confiablese ejecute de acuerdo a las expectativas
• Eficienteno haga uso excesivo de recursos y no sea lento
• Usableinterfaz ajustada a las capacidades y background del usuario.
26
¿Cómo obtener software de ¿Cómo obtener software de calidad?calidad?
•Mediante un proceso •soportado por un método sistemático, •que esté basado en principios reconocidos •facilitado con el uso de herramientas •y cuyas actividades se estructuren •de acuerdo a un modelo.
27
Para construir software de calidad se aplica un método basado en principios y se utilizan herramientas adecuadas
Principios
Metodología(métodos/técnicas)
Herramientas
Métodos:normas sistemáticas que gobiernan la ejecución de una actividad
Técnicas:procesos basados en los métodos
Principio:“Concepto, idea fundamental que sirve de base a un orden determinado de conocimientos o sobre la que se apoya un razonamiento”
28
Principios en la ISPrincipios en la IS
1. Rigor y formalidad2. Abstracción3. Modularidad4. Anticipación al cambio5. Generalidad6. Incrementalidad.
29
Principios: Rigor y Principios: Rigor y FormalidadFormalidad
• Significa ...seguir procesos sistemáticos y verificables en el proceso de desarrollo de software
IMPLICACIONES:
• La formalidad es la base de automatización de procesos
• Principio esencial para obtener productos reusables
30
Principios: AbstracciónPrincipios: Abstracción
• Significa...Aplicar un proceso mental o intelectual que permite identificar lo relevante e ignorar los detalles
IMPLICACIONES: • percepción del qué/cómo (la
separación de intereses )• percepción del todo/partes
(modularidad)
31
Principios: Principios: AbstracciAbstracciónón
Tomado de : « Object-Oriented Analysis and Design ». Grady Booch. 1994
32
Principios: ModularidadPrincipios: Modularidad
Significa:• descomponer en partes un sistema complejo
(descomposición) • componer el sistema a partir de sus partes
(composición)
Comprender el sistema y las partes (comprensión)
33
Principios: ModularidadPrincipios: Modularidad
• Alta Cohesión del módulo• Bajo Acoplamiento entre módulos
modularidad adecuada
34
DescomposiciónDescomposición- análisis -- análisis -
Problema
Subprob. 4
Subprob. 2
Subprob. 1 Subprob. 3
solución. 4solución. 2
Solución. 1
solución. 3
Solución
ComposiciónComposición- síntesis -- síntesis -
35
Principios: Principios: Anticipación de cambioAnticipación de cambio
• Significa:La capacidad de prever cómo y dónde pueden ocurrir los cambios
•La aplicación de este principio es altamente apreciado en la etapa de mantenimiento
•Es un principio relevante para el desarrollo de componentes reusables
36
Principios: GeneralidadPrincipios: Generalidad
Significa:buscar la solución más amplia (que englobe los casos específicos)
• Busca la solución más amplia para problemas específicos
• La solución general puede ser menos eficiente o más costosa
• Principio importante para desarrollar productos reusables.
37
Principios: IncrementalidadPrincipios: Incrementalidad
Significa:Construcción del producto por aproximaciones sucesivas y/o por componentes (partes)
• Desarrollo de prototipos para los componentes críticos
• Útil para desarrollo de aplicaciones no precisas, donde no están bien definidos los requerimientos.
38
Actividades en el proceso de Actividades en el proceso de desarrollo de softwaredesarrollo de software
• Para desarrollar un producto de software se realizan diversas actividades que se estructuran y relacionan de acuerdo a un modelo y se desarrollan siguiendo un método.
Los modelosencadenan las diversas
actividades
39
Un método integra diversas actividades: • análisis, diseño, .......
Principios
Métodos y técnicas
Herramientas