0% encontró este documento útil (0 votos)
39 vistas65 páginas

Evolución y Principios de Ingeniería de Software

estar siempre actualizado

Cargado por

Yoheny Caripe
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
39 vistas65 páginas

Evolución y Principios de Ingeniería de Software

estar siempre actualizado

Cargado por

Yoheny Caripe
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

La Ingeniería de software (IS) y Calidad del

Software

Material compilado por:


MSc. Joanna Chirinos
Doct. Computación en el Área de Ingeniería
del Software

1
Contenido

1. Evolución de la Ingeniería de Software

2. Problemática del desarrollo de software

3. Principios en la IS

4. Software de calidad

2
Ingeniería de Software
Estructuración del Conocimiento
(IEEE/ACM Stone-man Version 0.9 February 2001)…
SWEBOK 2004

Software Software Software Software Software Software Software Software Software SoftwareQuality
Requirements Design Construction Test Maintenance Configuration Engineering Engineering Engineering
Management Management Process Tools&Methods

SWEBOK V3 Review elimina una y añade nuevas KA

Modelos y
Ingeniería de Práctica
Fundamentos Fundamentos métodos en
Software Profesional
Computacionales Matemáticos Ingeniería de
Económicas en IS
Software

[Link]

3
Ingeniería de Software
Estructuración del Conocimiento

SWEBOK V4 Review

La versión más reciente de la Guía SWEBOK incluye nuevas áreas


temáticas, descripciones de temas actualizadas y la eliminación de
temas que ya no son relevantes. Agile y DevOps se han
incorporado especialmente en muchas áreas de conocimiento (KA)
porque estos modelos han sido ampliamente aceptados desde la
última publicación de la Guía SWEBOK. Tres nuevas áreas de
conocimiento (es decir, arquitectura de software, operaciones de
ingeniería de software y seguridad de software) guían el
conocimiento fundamental en ingeniería de software.

Centro ISYS. Esc. Computación. 4


UCV/2007
Ingeniería de Software
Estructuración del Conocimiento
SWEBOK V4 Review

Centro ISYS. Esc. Computación. 5


UCV/2007
Evolución – Década de los 50
CONTEXTO EVOLUCION
 Hardware: mainframes,  Desarrollo de software
cintas magnéticas. = desarrollo de
Costos altos programas
 Lenguajes:  Actividad individual
ensambladores,
 Desarrollador = usuario
Fortran.
 Aplicaciones con
 Primeros
distribución reducida
compiladores
 Resolver problemas
(segunda mitad)
científicos y de ingeniería
 Interfaces: Bach.
6
Evolución – Década de los 60
CONTEXTO EVOLUCION
 Hardware:  Actividad de grupo
mainframes  Desarrollador ‡ usuario
comerciales,
 Desarrollo de
almacenamiento en
software para
discos magnéticos,
mercadeo
minicomputadores.
Costos altos  Resolver problemas
complejos en diferentes
 Sistemas
dominios, además de
operativos
científicos y de
multiprogramación
ingeniería
 Lenguajes: Cobol, PL/I
 Programación orientada
 Interfaces: Bach.
a función.
7
Evolución – Década de los 70
CONTEXTO EVOLUCION
 Hardware:  Desarrollo de
mainframes, la tecnología
minicomputadores,
microcomputadores,  Actividad de grupo
surgen los PC
 Desarrollador ‡ usuario
 Lenguajes: COBOL,
PL/I, Pascal, Prolog  Desarrollo de
software para
 Métodos: programación mercadeo
estructurada,refinamient
o paso a paso,  Diversidad del
semánticas formales dominio de
aplicaciones
 Computación
distribuida, Interfaces  Programación orientada
basadas en Lenguajes a módulos
de Comando.
 Modelo de la cascada .
8
¿Qué ocurre en la década 80?
Crisis del
software!!

9
Evolución: década de los 80
primera mitad – segunda mitad

 Hardware: computadores  Hardware: Aumento


personales, primeras
estaciones de trabajo,
considerable de la venta y
redes locales uso de computadores
 Lenguajes: C, Ada personales, estaciones de
 Paradigma de trabajo, redes locales y
programación: globales, Internet,
programación arquitecturas avanzadas
estructurada, modular,  Lenguajes: C++, Standard ML
tipos de datos abstractos
 Paradigma de
 Herramientas
interactivas, interfaces programación: irrumpe la
gráficas (GUI) programación OO
 Computación cliente-
servidor 10
Evolución de la IS (década 80)

 El usuario se incorpora al proceso de


desarrollo de software
 Relevancia de las interfaces de usuario
 Aumento exponencial del número y tipo
de usuarios
 Demanda creciente de aplicaciones
 Resolver problemas en todos los dominios
 Inicio de las aplicaciones basadas en la
tecnología Internet .

11
Evolución – Década de los 90
CONTEXTO  Crecimiento de Internet y
el Web
 Hardware: masificación
del uso de los
computadores
personales,
arquitecturas paralelas,
multimedia
 Redes de
computadoras (LAN,
WAN..)
 Lenguajes: Orientados
a objetos, paralelos,
visuales, de scripting
(Java, VisualC++,
HTML,..)
 Paradigma de
programación: OO,
patrones y
framework
EVOLUCION
 Los productos se
insertan en la
globalización
 El ciberespacio
introduce nuevos tipos
de aplicaciones:
comercio electrónico,
educación a distancia,...
 Ambientes colaborativos
(Groupware).
 El Web como
infraestructura de las
aplicaciones
corporativas (Intranets)

12
Contexto : nuevo milenio
 Hardware: dispositivos móviles,
computación ubicua
 Redes de computadoras (inalámbricas..)
 Paradigma de programación: modelos
basados en componentes
 Crecimiento de Internet y la Web
 Programación orientada a aspectos
 Ingeniería orientada a modelos
 Arquitecturas orientadas a modelos

13
Se resaltan características o sucesos relevantes
Evolución en la IS: cambios de
paradigmas

Metodología de desarrollo de software:

Innovación Madurez Convención


Crecimiento

interés

1950 1973 1980 1988

Tiempo

14
Fucional Moddular
Declarativo Objeto Framework Servicio

15
Contenido

1. Evolución de la Ingeniería de Software

2. Problemática del desarrollo de software

3. Principios en la IS

4. Software de calidad

16
Problemática del desarrollo de
software Desde la década 70

 Crecimiento de la demanda de nuevos productos


 Incumplimiento en los tiempos de entrega de los
productos de software
 Incumplimiento de los presupuestos asignados a los
proyectos
 Falta de métodos para la producción de software
complejo
 Dificultad y altos costos para el mantenimiento del
software existente
 Carencia de buenas especificaciones de requerimientos
.....
17
Los requerimientos no son estables

 El mercado cambia - constantemente.


 La tecnología cambia
 Las metas de los usuarios cambian

18
Factores que influyen en los cambios
en IS

Redes de
Tecnologías Computadores
Emergentes

Masificación y variedad de los


microcomputadores y accesorios Interfaces de usuario.

Costos Tiempo de desarrollo 19


La IS en la computación actual
• Psicología
• Otras d• iAsdcmipinliisntarasción
• Ingeniería • Ciencias de la
Comunicación • ......
de software
• Interacción
Humano
Computador • Bases de Datos
• Computación
en la nube • •siLsetnemguaasjecsol
daeborativos
• Computación • Redes y Programación
• aplicaciones Web
Comunicaciones • Sistemas operativos
Móvil • Sistemas distribuídos
• Bases de Datos
• ..........
• Inteligencia Artificial
Nombramos otros dominios,
Computación fuera
centrada del campo de la
en Red
Informática 20
Contenido

1. Definición de la Ingeniería de Software

2. Evolución de la Ingeniería de Software

3. Problemática del desarrollo de software

4. Principios en la IS

5. Software de calidad

21
Principios en la IS

 Los principios forman la base de


métodos, técnicas, metodologías y
herramientas
 Seis principios que pueden ser usados
en todas las fases del desarrollo de
software
 Modularidad es el principio clave que
soporta el diseño del software

22
Principios en la IS

1. Rigor y formalidad
2. Abstracción
3. Modularidad
4. Anticipación al cambio
5. Generalidad
6. Incrementalidad.

Principios aplica al proceso y al producto


23
Principios: Rigor y Formalidad

 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 24
Rigor y formalidad

IS es una actividad creativa de diseño,


pero....
 Debe ser practicada sistemáticamente
 Rigor es un complemento a la
creatividad que incrementa la
confianza en nuestros desarrollos
 Formalidad es rigor en alto grado

25
Ejemplos:
Producto
 Analisis matemático de correctitud de
programas
 Test sistemático y riguroso
Proceso
 Rigurosa documentación ayuda a la
gestión del proyecto y asegura los
tiempos de respuesta

26
Principios: 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)
27
Abstracción produce modelos
 Cuando los requerimientos son
analizados se produce un modelo de la
aplicacion propuesta
 El modelo puede ser una descripción
formal o informal
 Es posible razonar acerca del sistema
razonando acerca del modelo

28
Principios. Modularidad

Significa...
 Un sistema complejo puede ser dividido
en piezas más simples llamadas módulos
 Un sistema que está conformado por
módulos se dice que es modular

29
Principios: Modularidad

modularidad adecuada

 Alta Cohesión del módulo


(el módulo es una unidad significativa)
 Bajo Acoplamiento entre módulos
(mínimas interacciones entre ellos)

30
Una representación visual

(a)
(b)

Alto acoplamiento Bajo acoplamiento


31
Principios: Modularidad
permite:
 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)

32
Descomposición Composición
- análisis - - síntesis -

Problema
Solución. 1 solución. solución. solución. 4
2 3

1 b. 3

Subprob. 2
Subprob. Subpro
S
Subprob. 4 ol
u
ci
ó
n

33
Principios:
Anticipación al 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
34
Anticipación al cambio

 Habilidad para soportar la evolución


del software requiere anticipar
posibles cambios

 Es la base para el software evolutivo

35
Principios: 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.
36
Generalidad
 Mientras resolvemos un problema,
tratamos de descubrir si es una
instancia de un problema más general,
cuya solución puede ser reusada en
otros casos.
 La generalidad debe balancearse
cuidadosamente entre performance y
costos.
 Algunas veces es mas facil resolver un
problema general que un caso especial

37
Principios: 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
Incrementalidad
 Ejemplos
 Liberar subconjuntos de un sistema
muy tempranamente para encontar el
feedback del usuario, y luego agregar
incrementalmente nuevas
características
 Tratar primero las funcionalidades y
luego el performance.
 Liberar un primer prototipo e
incrementalmente ir transformando el
prototipo en el producto.

39
Contenido

1. Definición de la Ingeniería de Software

2. Evolución de la Ingeniería de Software

3. Problemática del desarrollo de software

4. Principios en la IS

5. Software de calidad

40
Calidad
 Conjunto de características y propiedades de
un producto o servicio que tiene influencia
sobre la capacidad de satisfacer necesidades
definidas o implicadas (ISO 8402).

 Descrita por un conjunto de factores:


 Externos: detectables por usuarios de un
producto. (perspectiva desde el consumidor)

 Internos: detectables por arquitectos de SW,


ingenieros de SW, personal técnico (perspectiva
desde el productor)

41
¿ Cómo obtener software de Calidad ?

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.

42
Factores de Calidad
 Correctitud:
 el producto hace exactamente lo que definen los
requerimientos y la especificación.
 Robustez:
 el producto funciona aún bajo condiciones
anormales, no ocurren eventos catastróficos y
finaliza limpiamente.
 Extensibilidad:
 facilidad con la cual el producto puede ser
adaptado a requerimientos cambiantes.
 Reutilización:
 explotar elementos comunes y evitar reinventar
soluciones existentes.

43
Factores de Calidad
 Compatibilidad:
 facilidad con la que un producto puede ser
combinado con otros.
 Eficiencia:
 buen uso de recursos
 Portabilidad:
 facilidad con la cual un producto puede ser
transferido a otros ambientes.
 Verificabilidad:
 facilidad con la que pueden prepararse
procedimientos de aceptación.

44
Factores de Calidad
 Integridad:
 protección contra accesos y modificaciones no
autorizadas.
 Facilidad de uso:
 de aprendizaje, operación, preparación de datos,
interpretación de resultados, recuperación de
errores.

45
Proceso – Producto - Efecto

Proceso Producto Efecto

Influye

Proceso de Calidad Calidad Calidad de


Calidad Interna Externa Uso

Depende

Proveedor Usuario
46
Características Internas
 Propiedades internas
Aplicables a productos de trabajo no
ejecutables: código fuente, documentos de
análisis, especificaciones de diseño.
 Tamaño
 Complejidad de flujo de control
 Acoplamiento intermodular
 Cohesión modular

47
Características Externas
 Propiedades externas
Propiedades observables: código ejecutable,
ejecución de pruebas, percepción normal de
operación, historia operativa.
• Comprensibilidad
• Complejidad
• Modificabilidad
• Verificabilidad
• Mantenibilidad

48
Norma ISO 9126
 Provee un framework para la evaluación de
calidad de software.

 ISO/IEC 9126 no presenta requerimientos de


software.

 Define un modelo de calidad aplicable a todo


tipo de software.

 Define seis características de producto y


sugiere sub características de calidad

49
Norma ISO 9126

50
Norma ISO 9126
 Funcionalidad
 Adecuacidad: presencia de un conjunto
de funciones para tareas específicas.
 Exactitud: provisión de resultados o
efectos correctos o acordados.
 Interoperabilidad: habilidad de
interactuar con sistemas
específicos
 Adherencia a estándares, convenciones
o regulaciones.
 Seguridad: habilidad de prevenir accesos
no autorizados
51
Norma ISO 9126
 Confiabilidad
 Madurez: relacionada con la frecuencia
de fallas de software.
 Tolerancia a fallas: habilidad de
mantener un nivel determinado de
rendimiento en caso de fallas de
software o infracción de interfaz
especificada.
 Recuperabilidad: capacidad de
reestablecer un nivel de rendimiento y
recuperar data afectada en caso de falla
y el tiempo / esfuerzo necesario.
52
Norma ISO 9126
 Usabilidad
 Comprensibilidad: esfuerzo necesario
para reconocer el concepto lógico y
su aplicabilidad.
 Operatividad: esfuerzo de usuario en
operar y controlar la operación
 Facilidad de Aprendizaje: esfuerzo de
usuario en aprender su aplicación

53
Norma ISO 9126
 Eficiencia
 Comportamiento en tiempo: relativo a
tiempos de respuesta y de proceso
así como tasas de rendimiento de su
función.
 Comportamiento en recursos: cantidad
de recursos utilizados y duración de uso
en la realización de su función.

54
Norma ISO 9126
 Mantenibilidad
 Analizable: esfuerzo requerido para el
diagnóstico de deficiencias o causas de
fallas o identificación de partes a modificar.
 Modificable: esfuerzo requerido en
modificar, corregir o cambiar de ambiente.
 Facilidad de Prueba: esfuerzo requerido en
validar modificaciones al software
 Estabilidad: riesgo de efectos no
esperados de modificaciones.

55
Norma ISO 9126
 Portabilidad
 Adaptabilidad: oportunidad de adaptación a
diferentes ambientes específicos aplicando
solo acciones o medios provistos para este
propósito en el software considerado.
 Instalación: esfuerzo necesario para instalar
el software en un ambiente específico.
 Reemplazo: oportunidad y esfuerzo de usarlo
en lugar de otro software en el ambiente de
éste.
 Conformación o adherencia a estándares o
convenciones relacionadas con portabilidad.

56
Actividad

•Revisar Swebok: Práctica Profesional en IS

•Revisar el Código de ética y Practica


Profesional de la IS redactado por redactado
por la IEEE- CS/ACM
[Link]
57

También podría gustarte