Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Elizabeth Aduen
SolicitudDePermisoDeConducir FormularioParaSolicitudDeCredito
$$
$$ $$
Elizabeth Aduen
• Distribuido
•
recién fundada que desarrollan
La gestión automática de procedimientos sistemas para hacer oficinas
virtuales orientada a los
implica posiblemente técnicas de IA clientes que usan grandes
cantidades de papel, como
compañías de seguros, bancos,
gobierno.
La crisis del software
3%
19% Pagados sin ser suministrados
Suministrados pero sin utilizarse
2% 47% Usado tal como se suministró
Abandonado o reformado
29% Utilizado después de cambios
Desencanto de
los clientes
Desencanto de Bancarrota de
los clientes la empresa
Desgracia
Desencanto de Bancarrota de
personal de
los clientes la empresa
Elizabeth
Se exceden los
presupuestos
No se alcanzan los
Síntomas objetivos en los Cancelación
fatales plazos establecidos y desgracia
Falta coltrol
Baja calidad
La crisis del software
El HW no es un problema, porque
que HW actual es capaz de admitir
sistemas de este tipo, y más
La crisis del software
código
Nuestro enemigo: El cambio
código
Nuestro enemigo: El cambio
código diseño
Nuestro enemigo: El cambio
• Elizabeth¿Esto
debería empezar
es una por seleccionar los
arquitectura?
componetes de hardware
Este sistema debe su nombre a André Maginot, quien fue su promotor, un veterano
mutilado durante la Primera Guerra Mundial y murio en 1932 sin ver terminada la
obra.
Error de estrategia
¿Cuál es la solución?
La línea de defensa Manigot
El software
No se parece a la madera
No se parece al acero
No se astilla
No se pudre
No se oxida
Que el lenguaje de
programación sea legible (lo
que sea que signifique)
La línea de defensa Manigot
Que el lenguaje de
programación sea legible (lo
que sea que signifique)
Que el lenguaje de
programación sea legible (lo
que sea que signifique)
Que el lenguaje de
programación sea legible (lo
que sea que signifique)
Que el lenguaje de
programación sea legible (lo
que sea que signifique)
Pero, ¿afectaría realmente hacer todas estas cosas a la viabilidad técnica de este sistema?
La línea de defensa Manigot
cambios
sistemas de software
La defensa Suiza
El plan de negocios de la
empresa de Elizabeth equivale a
rechazar explícitamente la
defensa de la Línea Manigot.
Tienen la intención de
construir un producto como
prototipo, y lo utilizarán para
atraer clientes, que serán
quienes les paguen para cambiar
su prototipo de modo que
resuelva sus necesidades. La
empresa de Elizabeth no puede
proscribir el cambio, ni
despachárselo a un grupo de
mantenimiento. Su plan requiere
una visión radicalmente
distinta acerca del proceso de
desarrollo de softwareñ se
trata de una visión que trata
el cambio como parte vital e
inteligente del proceso global
de desarrollo de software.
La defensa Suiza
¡Advertencia!
¡Advertencia!
¡Advertencia!
sistemas de software
eficientes
(pero frágiles)
La defensa híbrida
estructuras estáticas de
defensa que los protegen
de los cambios
estructuras estáticas de estructuras estáticas de
defensa que los protegen defensa que los protegen
de los cambios de los cambios
sistemas de software
eficientes
rodeados por (pero frágiles)
• La encapsulación es el
fundamento de todo este
enfoque. Su contribución
No intentaremos dar una
consiste en restringir los
solución que vaya a eliminar
efectos del cambio,
por arte de magia problemas de
situando un muro de código
esta magnitud. Pero sí vamos a
en torno a cada dato. Todo
proponer varios conceptos y
el acceso a los datos está
herramientas, que pueden
gestionado mediante
ayudarnos a producir un
procedimientos, que se han
software que sea mucho más
puesto allí para hacer de
tolerante con respecto al
mediadores en el acceso a
cambio:
los datos. Olvidarse del
“cómo hacer” y ahora
especificar el “qué hacer”.
Programación orientada a objetos
Ejemplo:
Ejemplo:
muestraResumenMemorando: muestraResumenSobre:
muestraResumenCarpeta:
mostrarResumenDe(objetoSiguiente)
struct objeto *objetoSiguiente;
{
switch(objetoSiguiente->codigoTipo)
{
case MEMORANDO:mostrarResumenMemo(objetoSiguiente);break;
case CARPETA:mostrarResumenCarpeta(objetoSiguiente);break;
case NOTAMIENTRASESTABASFUERA:mostrarResumenNota(objetoSiguiente);break;
case SOBRE:mostrarResumenSobre(objetoSiguiente);break;
}
...
}
mostrarResumenDe(objetoSiguiente)
struct objeto *objetoSiguiente;
{
switch(objetoSiguiente->codigoTipo)
{
case MEMORANDO:mostrarResumenMemo(objetoSiguiente);break;
case CARPETA:mostrarResumenCarpeta(objetoSiguiente);break;
case NOTAMIENTRASESTABASFUERA:mostrarResumenNota(objetoSiguiente);break;
case SOBRE:mostrarResumenSobre(objetoSiguiente);break;
}
...
}
mostrarResumenDe(objetoSiguiente)
struct objeto *objetoSiguiente;
{
switch(objetoSiguiente->codigoTipo)
{
case MEMORANDO:mostrarResumenMemo(objetoSiguiente);break;
case CARPETA:mostrarResumenCarpeta(objetoSiguiente);break;
case NOTAMIENTRASESTABASFUERA:mostrarResumenNota(objetoSiguiente);break;
case SOBRE:mostrarResumenSobre(objetoSiguiente);break;
}
...
}
mostrarResumenDe(objetoSiguiente)
struct objeto *objetoSiguiente;
{
[objetoSiguente mostrarResumen];
...
}
Programación orientada a objetos
Esto ordena al
objeto llamado
objetoSiguiente que
lleve a cabo la
orden denominada
mostrarResumen.
mostrarResumenDe(objetoSiguiente)
struct objeto *objetoSiguiente;
{
[objetoSiguente mostrarResumen];
...
}
Programación orientada a objetos
mostrarResumenDe(objetoSiguiente)
struct objeto *objetoSiguiente;
{
[objetoSiguente mostrarResumen];
...
}
Programación orientada a objetos
Contenedor
característica_A:
Contenedor
característica_A:
acaceres@computacion.cs.cinvestav.mx
abdiel@mazatlan.udo.mx