You are on page 1of 41

~ 1 ~

INSTITUTO TECNOLOGICO SUPERIOR DE TEPEACA


INGENIERIA EN SISTEMAS COMPUTACIONALES

INGENIERIA DE SOFTWARE

6 SEMESTRE FEBRERO-JUNIO

ANTOLOGIA

Luis Meneses Vera

No. CONTROL: 10791061


PROFRSORA: INES LEON FLORES

~ 2 ~

NDICE
Contenido
UNIDAD 1 MODELO DE NEGOCIOS .................................................................................................. 4
1.1 Evolucin del Modelado de Negocios ....................................................................................... 4
1.2 Componentes del Modelado de Negocios ................................................................................ 6
1.3 Orientacin del Modelado de Negocio ................................................................................... 10
1.4 BPMN en el Modelo de Negocio ............................................................................................. 12
UNIDAD 2 METODOLOGA DEL DESARROLLO ................................................................................... 13
2.1 Metodologa Clsica ................................................................................................................ 13
2.1.1 Cascada................................................................................................................................. 13
2.1.2 Incremental .......................................................................................................................... 14
2.1.3 Evolutivo ............................................................................................................................... 14
2.1.4.- Espiral ................................................................................................................................. 15
2.1.5.- Prototipos........................................................................................................................... 16
2.1.6.- DESARROLLO BASADO EN COMPNENTES .......................................................................... 17
2.2.- OTRAS METODOLOGIAS ........................................................................................................ 18
2.2.1.- GANAR-GANAR (WinWin) .................................................................................................. 18
2.2.2.- PROCESO UNIFICADO (UP) ................................................................................................. 18
2.2.3.- INGENIERIA WEB ................................................................................................................ 19
2.2.4.- METODOLOGIAS AGILES .................................................................................................... 20
UNIDAD 3 ARQUITECTURAS DE SOFTWARE ...................................................................................... 21
3.1.- DESCOMPOSICIN MODULAR .............................................................................................. 21
3.2.- ARQUITECTURA DE DOMINO ESPECIFICO ............................................................................ 27
3.3.- DISEO DE SOFTWARE DE ARQUITECTURA DE MULTIPROCESADOR ................................... 29
3.4.- DISEO DE SOFTWARE DE CLIENTE-SERVIDOR ..................................................................... 30
3.5.- DISEO DE SOFTWARE DE ARQUITECTURA DISTRIBUIDA .................................................... 31
3.6.- DISEO DE SOFTWARE DE ARQUITECTURA DE TIEMPO REAL .............................................. 33
UNIDAD 4 SEGURIDAD EN INGENIERA DE SOFTWARE..................................................................... 34
4.1.- SEGURIDAD DEL SOFTWARE ................................................................................................. 34
4.2.- SEGURIDAD EN EL SIGLO DE DESARROLLO DE SOFTWARE. .................................................. 36
4.3.- CONFIABILIDAD DE SOFTWARE. ............................................................................................ 37
~ 3 ~

4.4.- INGENIERA DE SEGURIDAD. ................................................................................................. 39
GLOSARIO .......................................................................................................................................... 40
BIBLIGRAFIA ....................................................................................................................................... 41

Figura 1. 1Los principales componentes del modelo de negocios; el modelo RCOV. (Adaptado de
Lecocq, Demil y Warnier, 2006). ......................................................................................................... 7
Figura 1. 2 Componentes del modelado de negocios (Profit site, Valor al cliente, Alcance,
Estrategias de precios, Fuentes de ingreso(utilidad)). ........................................................................ 8
Figura 1. 3 Componentes del modelado de negocios(negocio tradicional y negocio electrnico). .... 9
~ 4 ~


UNIDAD 1 MODELO DE NEGOCIOS
1.1 Evolucin del Modelado de Negocios

El trmino modelos de negocio ha prosperado en la bibliografa dedicada a las actividades
gerenciales desde finales de la dcada de 1990, especialmente a raz de la aparicin de la era de
Internet y de su adopcin masiva por parte del comercio (Ghaziani y Ventresca, 2005). En los
discursos de los directivos, los modelos de negocio se suelen mencionar para evocar la idea de
cambio, en frases como esta: Tenemos que hacer evolucionar nuestro modelo de negocio
(vase, por ejemplo, Yip, 2004 o Johnson y cols., 2008). Lo que es ms, un modelo de negocio
raras veces se descubre de inmediato. Para crear una coherencia interna o adaptarse al entorno,
es necesario realizar sucesivos ajustes. Como Winter y Szulanski (2001: 731) argumentan: La
frmula o el modelo de negocio, lejos de ser una cantidad de informacin que se revela de una
sola vez, normalmente es un conjunto complejo de rutinas interdependientes que se descubren,
ajustan y matizan mediante la accin. Algunos cambios masivos en el modelo de negocio pueden
incluso transformar radicalmente un sector industrial. Por ejemplo, la aparicin de un sector de
prensa gratuita se describe a menudo como uno de los factores del declive de los medios de
comunicacin tradicionales.
A pesar del inters de una visin dinmica del modelo de negocio, su uso, paradjicamente, suele
ser esttico. Desde luego, a menudo se describe al modelo de negocio como el esquema general
de una actividad empresarial (Magretta, 2002), y ayuda a pensar de forma ms o menos creativa
en la pregunta bsica: Cmo puedo ganar dinero en mi sector? (Afuah, 2004). Segn esta
visin, un modelo de negocio describe y sintetiza la forma de crear valor en un negocio. Ms
concretamente, lleva a los directivos a conceptualizar las diferentes actividades que una empresa
inicia con el fin de generar valor para los clientes y los accionistas. Por ejemplo, el modelo de
negocio de las lneas areas de bajo coste ahora est bien documentado. Esas empresas utilizan
recursos estndar y tipos estndar de aviones, ofrecen vuelos sin conexiones, tienen una gestin
de recursos humanos basada en bajos salarios y poca presencia de los sindicatos, utiliza de forma
intensiva los sistemas de reservas a travs de Internet y establecen contratos con aeropuertos
secundarios. Esos elementos coherentes han reducido de forma drstica la estructura de costes de
dichas empresas. As pues, la visin esttica del modelo de negocio sigue siendo til para insistir
en la coherencia de los diferentes elementos y ayuda a comunicarse y a conseguir el acuerdo
(Osterwalder, 2004), una caracterstica que resulta especialmente importante para los empresarios.
En este artculo, abordamos la paradoja entre la necesidad de coherencia entre los diferentes
componentes de un modelo de negocio, por un lado (visin esttica), y la necesidad de pensar en
la evolucin de un modelo de negocio, por otro (visin dinmica). Para ello, nos basaremos en un
marco de trabajo que permita al mismo tiempo la coherencia y una visin dinmica del modelo de
negocio: el modelo RCOV (Lecocq y cols., 2006). Proporcionamos una visin coherente de la
dinmica del modelo de negocio, al tener en cuenta los cambios entrelazados, voluntarios y
emergentes que afectan a los diferentes componentes de un modelo de negocio y que pueden
influir en su coherencia general. Ilustraremos nuestro entorno de trabajo con el caso del Arsenal
FC, el club de ftbol de la Premier League inglesa cuyo modelo de negocio ha evolucionado
radicalmente a lo largo de los ltimos diez aos. Mediante este breve caso ilustrativo, pretendemos
demostrar que un modelo de negocio es un delicado proceso de ajuste, basado en la construccin
de recursos permite tambin ilustrar cmo los cambios emergentes y voluntarios estn
relacionados entre s. Algunas evoluciones del entorno pueden llevar a acciones voluntarias por
parte de las organizaciones. Por el contrario, las elecciones estratgicas pueden tener conse-
~ 5 ~

cuencias emergentes inesperadas sobre el modelo de negocio. Una consecuencia alentadora de
tales hallazgos es que la sostenibilidad de una organizacin puede estar relacionada con su
capacidad de anticiparse a las consecuencias que los cambios de un determinado componente de
su modelo de negocio pueden conllevar para otros componentes. Tal capacidad permite adaptarse
de forma voluntaria a los cambios que van surgiendo en el entorno, pero adems permite crear
crculos virtuosos que siguen una decisin estratgica que modifica un componente del modelo de
negocio de la organizacin. Por ltimo, una visin semejante de los modelos de negocio promueve
una visin dinmica de la estrategia que es adecuada para el entorno actual. Por supuesto, evita
los lmites, tanto de los enfoques de estrategia en trminos de ventaja competitiva sostenible
(visin basada en la economa y los recursos industriales), que se supone que defienden y
protegen una determinada ventaja competitiva (por ejemplo, ningn gran cambio en el modelo de
negocio), como de los enfoques en trminos de rendimiento no sostenible (hper competencia), que
conllevan cambios casi caticos y permanentes en los componentes del modelo de negocio,
debidos a la permanente presin ambiental. Llamamos coherencia dinmica a la capacidad de
una empresa de construir y mantener un rendimiento sostenible, al tiempo que cambia su modelo
de negocio (es decir, al tiempo que encuentra procesos nuevos pero coherentes que llevan a la
obtencin de beneficios).

~ 6 ~

1.2 Componentes del Modelado de Negocios

Para nosotros, el modelo de negocio abarca las elecciones de una organizacin para generar
ingresos en un sentido amplio: volumen de negocio, pero tambin derechos de propiedad
intelectual, alquileres, intereses, subsidios, transferencias de activos (Afuah, 2004; Lecocq y cols.,
2006). Ms concretamente, vemos el modelo de negocio como la forma en que una organizacin
articula dinmicamente tres componentes principales para generar ingresos y posteriormente
beneficios. Esos tres componentes comprendidos en el modelo RCOV son: recursos y
competencias (RC) para generar valor, organizacin (O) de la empresa dentro de una red de valor
o dentro de los lmites de la empresa (Amit y Zott, 2001; Chesbrough y Rosenbloom, 2002), y la
proposicin de valor (V) para los productos y servicios suministrados.
Los recursos y las competencias se valoran a travs del suministro de productos o servicios en los
mercados. Por ejemplo, American Airlines desarroll internamente el sistema de gestin de
reservas Sabre para su uso interno, antes de considerarlo un recurso que pudiera generar ingresos
por s mismo, al ofrecerlo a terceros. Actualmente, 7.000 personas trabajan en todo el mundo para
Sabre Holdings Corporation, y la empresa tiene un volumen de negocio de 2 mil millones de
dlares por la venta y el mantenimiento del sistema Sabre para 200 lneas areas de distintas
partes del mundo.
Por organizacin se entiende la eleccin de operaciones que una entidad asegura y las
relaciones que establece con otras entidades. Dicho de otra forma, para examinar el componente
organizacin hace falta estudiar la cadena de valor (Porter, 1985) y la red de valor, es decir, la
compleja trama de relaciones que una empresa crea con los participantes externos (proveedores,
clientes, competidores, reguladores...). Implica tambin pensar en la apropiacin de valor dentro de
la red de valor (Chesbrough y Rosenbloom, 2002). Por ejemplo, el sistema de inscripcin de
muchos sitios web en Internet ha transformado a los clientes tradicionales en algo muy similar a
empleados, al ofrecerles un porcentaje de las ventas que generan.
Finalmente, el modelo de negocio consiste tambin en pensar en la proposicin de valor que la
empresa proporciona al cliente a travs de sus productos y servicios por s mismos, y cmo esos
productos y servicios se comercializarn, as como pensar en su frmula de beneficios (Johnson y
cols., 2008). Por ejemplo, en el sector de la biotecnologa, gran cantidad de emprendimientos
aaden servicios a su portafolio de desarrollo de productos. Sus fuentes de ingresos a largo plazo
son los productos, pero para generar recursos rpidos en efectivo, necesitan proponer servicios a
sus clientes. Esta dimensin refleja el contenido de la transaccin (Amit y Zott, 2001) y el desarrollo
idiosincrsico de los recursos que cada organizacin gestiona. Desde luego, como subraya
Penrose (1959: 25): Los servicios prestados por los recursos estn en funcin de la forma en que
se utilizan (...) en combinacin con diferentes tipos o cantidades de otros recursos.

~ 7 ~


Figura 1. 1Los principales componentes del modelo de negocios; el modelo RCOV.
(Adaptado de Lecocq, Demil y Warnier, 2006).
Esos tres componentes bsicos de un modelo de negocio determinan la estructura y el volumen de
costes e ingresos de un negocio y, en ltima instancia, sus beneficios y, por lo tanto, su
sostenibilidad (vase la figura 1). En nuestra opinin, la estructura de costes est impulsada, en
esencia, por los recursos y las competencias que la empresa adquiere y desarrolla, as como por la
organizacin que despliega, con el fin de llevar hacia las diversas actividades de su cadena de
valor y de su red de valor. Estos elementos corresponden al conjunto de recursos y del sistema
administrativo que propuso Penrose (1959). La parte de los ingresos depende, sobre todo, de las
proposiciones de valor realizadas a diversos tipos de clientes.
La concepcin RCOV lleva con moderacin a un enfoque en el que los empresarios tienen que
considerar las cuestiones de organizacin conjuntamente con el valor ofrecido y los recursos
acumulados y combinados. Ms concretamente, el concepto de modelo de negocio debera
comprenderse desde la perspectiva de las interacciones permanentes entre los componentes de
un modelo de negocio y de las repercusiones de un cambio en los otros componentes. Por
ejemplo, elegir quin paga un producto o servicio significa definir los participantes de la empresa y
su poder relativo para negociar. En el sector de la prensa escrita, los participantes no sern los
mismos, segn si los clientes pagan por la informacin, si son las empresas las que pagan la
publicidad, o si el diario se distribuye de forma gratuita a los lectores. Elegir cmo se paga un
producto o un servicio tambin influye en el flujo de efectivo, adems de en la imagen y la
reputacin de la empresa.





~ 8 ~













Figura 1. 2 Componentes del modelado de negocios (Profit site, Valor al cliente, Alcance,
Estrategias de precios, Fuentes de ingreso(utilidad)).


~ 9 ~


Figura 1. 3 Componentes del modelado de negocios(negocio tradicional y negocio
electrnico).

Componente Negocio tradicional Negocio
Electrnico
Actividades
relacionadas
Qu conjunto de
actividades tiene que
desarrollar la empresa para
ofrecer valor? Cmo estn
relacionadas?
Cuntas nuevas actividades se
tienen que desarrollar con el uso
del Internet? En qu mejoran o
ayudan?
Implementacin Cmo es la estructura
organizacional, gente,
sistemas y ambiente
necesarios para
implementar las
actividades?
Cmo afecta el Internet la
estructura organizacional, gente,
sistemas y ambiente?
Capacidades Qu capacidades tiene la
empresa? Cules le falta
llenar? Hay algo diferente
en esas capacidades que
permiten ofrecer mejor
valor o valor poco imitable?
Cul es el origen de esas
capacidades?
Qu nuevas capacidades se
deben desarrollar con el uso del
Internet?
Sustentabilidad Qu hace la empresa para
dificultar que la imiten? La
empresa es constante
generando dinero? Cmo
se mantiene la ventaja
competitiva?
El Internet hace la
sustentabilidad ms fcil o ms
difcil? Esto permite ms o
menos ventaja competitiva?
Costo de
estructura
Cunto cuesta desarrollar
cada elemento del modelo
de negocio?
Qu impacto tiene el Internet en
el costo de cada componente del
modelo de negocio?
~ 10 ~

1.3 Orientacin del Modelado de Negocio

Las estrategias se deben orientar a rentabilidad, alta rotacin de inventarios (los productos deben
mantenerse siempre frescos). Todos los componentes del canal de distribucin son un equipo
(logstica de distribucin), el servicio como un derecho del cliente. Direccin de la compaa como
el cerebro que gua. Ponerse en los zapatos del cliente, mirar de afuera hacia adentro (orientacin
al mercado).
Lealtad (se acta en la empresa como pequeos empresarios / los no leales le hacen daos
irreparables a la compaa), gente con compromiso. Garanta de producto y servicio. Control
sistemtico. Calidad total y mejoramiento continuo.

Control vertical y horizontal a los procesos. Estrategia y planeacin (como una costumbre, algo que
se hace de manera natural). Guerra de mercados (leer y aplicar el arte de la guerra del maestro
Sun Tzu, uno de los mejores libros de marketing aplicado). Posicionamiento de productos (con su
marca), posicionamiento de empresa.
Liderazgo en un nicho (as sea creado por la empresa). Responder a la globalizacin como lderes
en costos, con recursos frescos de capital (no al endeudamiento), con precios en funcin al
mercado internacional, con alta tecnologa.
Hagamos nfasis en la logstica o cadena de abastecimiento. Nos ayuda a encontrar la mayora de
las respuestas que hemos venido buscando. El anlisis logstico permite: Ver al negocio de
comercio de una manera distinta a la habitual, inserto en una sucesin de pasos: Estos eslabones
se inician en el cliente, llegando hacia atrs hasta el punto de consecucin o compra de los
productos al proveedor.
Una estrategia en logstica de distribucin bien diseada es una de las herramientas ms
contundentes para crear lealtad de los clientes, adems que aporta definitivamente en "minimizar"
el costo oculto generado por el agotamiento de un producto. Otro de los beneficios tangibles es el
aumento de la rentabilidad (por disminucin de costos) al prestar un mejor servicio a nuestros
clientes.
El futuro del marketing est completamente ligado a la logstica y no se pueden separar y la
percepcin que tengan los consumidores sobre nuestros productos y servicios en el corto plazo
estar relacionada directamente con esta fusin de mercadeo y logstica.
Como ya lo habamos expresado en ocasiones anteriores, La cadena de abastecimiento es una
estrategia de negocios en las que distribuidores y proveedores se comprometen y trabajan juntos
para lograr mejores valores para los consumidores. Esta estrategia recibe el nombre de "efficient
consumer response", una filosofa que logra reducir los costos de un producto en su camino de la
fbrica al consumidor final.
La visin empresarial de quienes participan en esta cadena es un flujo mas rpido y que responda
mejor, costando menos, en el recorrido productor y comerciantes tanto mayoristas como
minoristas. Una cadena sin interrupciones, en la cual la informacin adems de ser fundamental en
todo este proceso, fluye rpida y oportunamente a todas las partes involucradas en este proceso
va al consumidor final. El punto de partida est motivado por las compras de los consumidores,
esto motiva el movimiento de productos e inventarios.
Una bien diseada cadena de abastecimientos logra reduccin en los costos de fabricacin,
gracias a una mejor y ms eficiente fabricacin, la reduccin de empaques y la compra ms
eficiente de materias primas.
Los costos del marketing y administrativos tambin de reducen significativamente como
consecuencia de un movimiento ms rpido de las mercancas, mejorando sustancialmente la
rotacin.
~ 11 ~

Se consiguen as mismo reducciones importantes de costos en la operacin de los puntos de venta
y una mejor utilizacin del capital de trabajo disponible.
Las cadenas de abastecimiento de apoyan en la informacin rpida y oportuna de
rotacin en la misma cadena, informacin sobre el comportamiento del consumidor, categorizacin
de los productos, segmentacin de los mercados, bases de datos, lectores de barras en las
registradoras, rdenes de compra asistidas por la computadora.
La creacin de las cadenas de abastecimiento implica un cambio profundo en los sistemas
habituales de comercializacin, se rompen esquemas en la manera y cultura de hacer negocios.
Implica una gerencia con mentes abiertas y dispuestas a la innovacin y aplicacin de nuevas
metodologa para lograr unos mejores resultados. Esta reconvencin de la lnea habitual de
suministros de productos al consumidor final obliga a una reingenieria total en el papel actual de
los comerciantes tanto mayoristas como minoristas.
En este caso hay un ahorro muy importante en los costos de almacenar, se mejoran
sustancialmente los ndices de rotacin de inventarios. Consiste en utilizar el inventario disponible
de algunos fabricantes o empresas de distribucin como propio, por medio de una comunicacin
por computadora se ingresa desde el punto de venta al inventario del fabricante y sobre este se
elabora un pedido para ser despachado de manera inmediata y surtido directamente en las
gndolas. El proveedor despacha y factura lo correspondiente a ese pedido. Esta operacin puede
darse varias veces al mes, a la semana o diario. Son importantes entonces en esto de la cadena
de abastecimiento el reintentar de la parte de distribucin y usarlo para enfrentar a los crecientes
desafos de la competencia minorista.

~ 12 ~

1.4 BPMN en el Modelo de Negocio

Es un nuevo estndar de modelado de procesos de negocio, en donde se presentan grficamente las diferentes
etapas del proceso del mismo. La notacin ha sido diseada especficamente para coordinar la secuencia de procesos
y los mensajes que fluyen entre los diferentes procesos participantes.

BPMN
(Business Process Modeling Notacin) y las extensiones de UML que te ayudarn a modelar la situacin actual y
deseada en los procesos de negocio de tu cliente. Ya tienes claro que si no partes de reglas de negocio claramente
establecidas difcilmente podrs desarrollar el sistema adecuado que proporcione un valor real a tu cliente. El mundo
de los procesos de negocio ha cambiado dramticamente en los ltimos aos. Un proceso de este tipo abarca
mltiples participantes, y la coordinacin puede ser compleja. Antes de BPMN no haba una tcnica de modelado
estndar desarrollado para encargarse de estos asuntos. BPMN ha sido desarrollado para proveer a los usuarios de
una notacin de uso libre. Esto beneficiar a los usuarios de la misma forma que UML benefici el mundo de la
ingeniera de software.

A quin est dirigido BPMN? BPMN
Est dirigido a gerentes, directores, dueos de empresas, ingenieros de procesos, analistas de negocios, analistas de
sistemas, administradores de proyectos, responsables de calidad y todo aquel que necesita definir, documentar y
hacer ms eficientes sus procesos de negocio con el estndar ms avanzado y aceptado a nivel internacional.

Qu significa esto para los usuarios de UML?
UML (El lenguaje de modelado unificado) toma un perfil orientado a objetos en el modelado de aplicaciones, mientras
que BPMN toma un perfil orientado a procesos en el modelado de sistemas

BPMN
Tiene un enfoque en procesos de negocio, UML se enfoca al diseo de software y por lo tanto ambas notaciones son
totalmente compatibles entre s. Las extensiones de UML para el modelado de negocio aportan elementos muy
importantes ya que proporcionan algunas otras vistas de la arquitectura de negocio que son ms difciles de observar
usando nicamente.

BPMN
. Por ejemplo, la visualizacin de las responsabilidades de los trabajadores del negocio, la manipulacin de las
entidades del negocio y la comprensin de los estados asociados a las entidades del negocio. Es por eso que en
nuestro exclusivo curso planteamos la coexistencia de ambas notaciones.

~ 13 ~

UNIDAD 2 METODOLOGA DEL DESARROLLO
2.1 Metodologa Clsica
2.1.1 Cascada

Este modelo admite la posibilidad de hacer iteraciones, es decir, durante las modificaciones que se
hacen en el mantenimiento se puede ver por ejemplo la necesidad de cambiar algo en el diseo, lo
cual significa que se harn los cambios necesarios en la codificacin y se tendrn que realizar de
nuevo las pruebas, es decir, si se tiene que volver a una de las etapas anteriores al mantenimiento
hay que recorrer de nuevo el resto de las etapas. Despus de cada etapa se realiza una revisin
para comprobar si se puede pasar a la siguiente
Estructura Modelo en Cascada
Ingeniera y Anlisis del Sistema:
Debido a que el software es siempre parte de un sistema mayor el trabajo comienza estableciendo
los requisitos de todos los elementos del sistema y luego asignando algnsubconjunto de estos
requisitos al software.
Anlisis de los requisitos del software:
El proceso de recopilacin de los requisitos se centra e intensifica especialmente en el software. El
ingeniero de software debe comprender el mbito de la informacin del software, as como la
funcin, el rendimiento y las interfaces requeridas.
Diseo:
El diseo del software se enfoca en cuatro atributos distintos del programa: la estructura de los
datos, la arquitectura del software, el detalle procedimental y la caracterizacin de la interfaz
Codificacin:
El diseo debe traducirse en una forma legible para la mquina. El paso de codificacin realiza
esta tarea.
Prueba: La prueba se centra en la lgica interna del software, y en las funciones externas,
realizando pruebas que aseguren que la entrada definida produce los resultados que realmente se
requieren.
Mantenimiento:
El software sufrir cambios despus de que se entrega al cliente. Los cambios ocurrirn debidos a
que hayan encontrado errores, a que el software deba adaptarse a cambios del entorno externo
(sistema operativo o dispositivos perifricos), o debido a que el cliente requiera ampliaciones
funcionales eso del rendimiento
Caractersticas
Es el ms utilizado.
~ 14 ~

Es una visin del proceso de desarrollo de software como una sucesin de etapas que producen
productos intermedios.
Para que el proyecto tenga xito deben desarrollarse todas las fases.
Las fases continan hasta que los objetivos se han cumplido.
Si se cambia el orden de las fases, el producto final ser de inferior calidad
2.1.2 Incremental

El Modelo Incremental combina elementos del MLS con la filosofa interactiva de construccin de
prototipos.
En una visin genrica, el proceso se divide en 4 partes: Anlisis, Diseo, Cdigo y Prueba. Sin
embargo, para la produccin del Software, se usa el principio de trabajo en cadena o Pipeline,
utilizado en muchas otras formas de programacin. Con esto se mantiene al cliente en constante
contacto con los resultados obtenidos en cada incremento. Es el mismo cliente el que incluye o
desecha elementos al final de cada incremento a fin de que el software se adapte mejor a sus
necesidades reales. El proceso se repite hasta que se elabore el producto completo.
De esta forma el tiempo de entrega se reduce considerablemente.
Al igual que los otros mtodos de modelado, el Modelo Incremental es de naturaleza interactiva
pero se diferencia de aquellos en que al final de cada incremento se entrega un producto
completamente operacional.
Caractersticas- Se evitan proyectos largos y se entrega algo de valor a los usuarios con cierta
frecuencia.- El usuario se involucre ms.- Difcil de evaluar el costo total.- Difcil de aplicar a los
sistemas transaccionales que tienden a ser integrados y a operar como un todo.- Requiere
gestores experimentados.- Los errores en los requisitos se detectan tarde.- El resultado puede ser
muy positivo.

El Modelo Incremental es particularmente til cuando no se cuenta con una dotacin de personal
suficiente. Los primeros pasos los pueden realizar un grupo reducido de personas y en cada
incremento se aadir personal, de ser necesario. Por otro lado los incrementos se pueden planear
para gestionar riesgos tcnicos.
2.1.3 Evolutivo

Es el modelo cuyas etapas consisten en expandir incrementos de un producto de software
operacional donde la direccin de la evolucin la dicta la experiencia con el sistema
El cliente recibe pequeos incrementos del sistema a medida que van siendo desarrollados:
distribucin incremental
Caractersticas:
~ 15 ~

Gestionan bien la naturaleza evolutiva del software
Son iterativos: construyen versiones de software cada vez ms completas
Se adaptan bien:
Los cambios de requisitos del producto
Fechas de entrega estrictas poco realistas
Especificaciones parciales del producto
Ventajas
Es interactivo
Con cada incremento se entrega al cliente un producto operacional, que puede evaluarlo
Personal
Permite variar el personal asignado a cada interaccin
Gestin riesgos tcnicos
Por ejemplo disponibilidad de hardware especifico
Inconvenientes
La primera interaccin puede plantear los mismos problemas que un modelo lineal secuencial

2.1.4.- Espiral

El modelo en espiral, propuesto originalmente por Boehm [BOE88], es un modelo de proceso de
software evolutivo que conjuga la naturaleza iterativa de construccin de prototipos con los
aspectos controlados y sistemticos del modelo lineal secuencial. Proporciona el potencial para el
desarrollo rpido de versiones incrementales del software. En el modelo espiral, el software se
desarrolla en una serie de versiones incrementales. Durante las primeras iteraciones, la versin
incremental podra ser un modelo en papel o un prototipo. Durante las ltimas iteraciones, se
producen versiones cada vez ms completas del sistema diseado.
El modelo en espiral se divide en un nmero de actividades de marco de trabajo. Generalmente,
existen entre tres y seis regiones de tareas. La figura representa un modelo en espiral que contiene
seis regiones de tareas:
Comunicacin con el cliente- las tareas requeridas para establecer comunicacin entre el
desarrollador y el cliente.
~ 16 ~

Planificacin- las tareas requeridas para definir recursos, el tiempo y otra informacin
relacionadas con el proyecto.
Anlisis de riesgos- las tareas requeridas para evaluar riesgos tcnicos y de gestin.
Ingeniera- las tareas requeridas para construir una o ms representaciones de la
aplicacin.
Construccin y accin- las tareas requeridas para construir, probar, instalar y proporcionar
soporte al usuario (por ejemplo: documentacin y prctica)
Evaluacin del cliente- las tareas requeridas para obtener la reaccin del cliente segn la
evaluacin
De las representaciones del software creadas durante la etapa de ingeniera e implementada
durante la etapa de instalacin
2.1.5.- Prototipos

Un cliente, a menudo, define un conjunto de objetivos generales para el software, pero no identifica
los requisitos detallados de entrada, proceso o salida. En otros casos, el responsable del desarrollo
del software puede no estar seguro de la eficacia de un algoritmo, de la capacidad de adaptacin
de un sistema operativo, o de la forma en que debera tomarse la interaccin hombre mquina. En
estas y en otras muchas situaciones, un paradigma de construccin de prototipos puede ofrecer el
mejor enfoque.
El paradigma de construccin de prototipos comienza con la recoleccin de requisitos. El
desarrollador
Y el cliente encuentra y definen los objetivos globales para el software, identifican los requisitos
Conocidos y las reas del esquema en donde es obligatoria ms definicin. Entonces aparece un
diseo rpido. El diseo rpido se centra en una representacin de esos aspectos del software
que sern visibles para el usuario/cliente (por ejemplo: enfoques de entrada y formatos de salida).
El diseo rpido lleva a la construccin de un prototipo. El prototipo lo evala el cliente/usuario y se
utiliza para refinar los requisitos del software a desarrollar. La iteracin ocurre cuando el prototipo
se pone a punto para satisfacer las necesidades del cliente, permitiendo al mismo tiempo que el
desarrollador comprenda mejor lo que se necesita hacer.

Lo ideal sera que el prototipo sirviera como un mecanismo para identificar los requisitos del
software. Si se construye un prototipo de trabajo, el desarrollador intenta hacer uso de los
fragmentos del programa ya existentes o aplica herramientas (por ejemplo: generadores de
informes, gestores de ventanas, etc.) que permiten generar rpidamente programas de trabajo.
~ 17 ~

2.1.6.- DESARROLLO BASADO EN COMPNENTES

En esencia, un componente es una pieza de cdigo pre elaborado que encapsula alguna
funcionalidad expuesta a travs de interfaces estndar (1). Los componentes son los "ingredientes
de las aplicaciones", que se juntan y combinan para llevar a cabo una tarea (2). Es algo muy
similar a lo que podemos observar en el equipo de msica que tenemos en nuestra sala. Cada
componente de aquel aparato ha sido diseado para acoplarse perfectamente con sus pares, las
conexiones son estndar y el protocolo de comunicacin est ya preestablecido. Al unirse las
partes, obtenemos msica para nuestros odos.
El paradigma de ensamblar componentes y escribir cdigo para hacer que estos componentes
funcionen se conoce como Desarrollo de Software Basado en Componentes. El uso de este
paradigma posee algunas ventajas:
Reutilizacin del software. Nos lleva a alcanzar un mayor nivel de reutilizacin de software.
Simplifica las pruebas. Permite que las pruebas sean ejecutadas probando cada uno de los
componentes antes de probar el conjunto completo de componentes ensamblados.
Simplifica el mantenimiento del sistema. Cuando existe un dbil acoplamiento entre componentes,
el desarrollador es libre de actualizar y/o agregar componentes segn sea necesario, sin afectar
otras partes del sistema.
Mayor calidad. Dado que un componente puede ser construido y luego mejorado continuamente
por un experto u organizacin, la calidad de una aplicacin basada en componentes mejorar con
el paso del tiempo.
De la misma manera, el optar por comprar componentes de terceros en lugar de desarrollarlos,
posee algunas ventajas:
Ciclos de desarrollo ms cortos. La adicin de una pieza dada de funcionalidad tomar das en
lugar de meses o aos.
Mejor ROI. Usando correctamente esta estrategia, el retorno sobre la inversin puede ser ms
favorable que desarrollando los componentes uno mismo.
Funcionalidad mejorada. Para usar un componente que contenga una pieza de funcionalidad, solo
se necesita entender su naturaleza, ms no sus detalles internos. As, una funcionalidad que sera
imprctica de implementar en la empresa, se vuelve ahora completamente asequible.

~ 18 ~

2.2.- OTRAS METODOLOGIAS

2.2.1.- GANAR-GANAR (WinWin)
El modelo en espiral tratado sugiere una actividad del marco de trabajo que aborda la
comunicacin con el cliente. El objetivo de esta actividad es mostrar los requisitos del cliente. En
un contexto ideal, el desarrollador simplemente pregunta al cliente lo que se necesita y el cliente
proporciona detalles suficientes para continuar. Desgraciadamente, esto raramente ocurre. En
realidad el cliente y el desarrollador entran en un proceso de negociacin, donde el cliente puede
ser preguntado para sopesar la funcionalidad, rendimiento, y otros productos o caractersticas del
sistema frente al coste y al tiempo de comercializacin.
Las mejores negociaciones se esfuerzan en obtener' victoria-victoria. Esto es, el cliente gana
obteniendo el producto o sistema que satisface la mayor parte de sus necesidades y el
desarrollador gana trabajando para conseguir presupuestos y lograr una fecha de entrega realista.
El modelo en espiral WINWIN de Boehm [BOE98] define un conjunto de actividades de
negociacin al principio de cada paso alrededor de la espiral. Ms que una simple actividad de
comunicacin con el cliente, se definen las siguientes actividades:
1. Identificacin del sistema o subsistemas clave de los directivos8.
2. Determinacin de las condiciones de victoria de los directivos.
3. Negociacin de las condiciones de victoria de los directivos para reunirlas en un conjunto de
condiciones victoria-victoria para todos los afectados (incluyendo el equipo del proyecto de
software).

2.2.2.- PROCESO UNIFICADO (UP)

El Proceso Unificado de Desarrollo Software o simplemente Proceso Unificado es un marco de
desarrollo de software que se caracteriza por estar dirigido por casos de uso, centrado en la
arquitectura y por ser iterativo e incremental. El refinamiento ms conocido y documentado del
Proceso Unificado es el Proceso Unificado de Racional o simplemente RUP.
El Proceso Unificado no es simplemente un proceso, sino un marco de trabajo extensible que
puede ser adaptado a organizaciones o proyectos especficos. De la misma forma, el Proceso
Unificado de Racional, tambin es un marco de trabajo extensible, por lo que muchas veces resulta
~ 19 ~

imposible decir si un refinamiento particular del proceso ha sido derivado del Proceso Unificado o
del RUP. Por dicho motivo, los dos nombres suelen utilizarse para referirse a un mismo concepto.
El nombre Proceso Unificado se usa para describir el proceso genrico que incluye aquellos
elementos que son comunes a la mayora de los refinamientos existentes. Tambin permite evitar
problemas legales ya que Proceso Unificado de Racional o RUP son marcas registradas por IBM
(desde su compra de Racional Software Corporacin en 2003). El primer libro sobre el tema se
denomin, en su versin espaola, El Proceso Unificado de Desarrollo de Software (ISBN 84-7829-
036-2) y fue publicado en 1999 por Ivar Jacobson, Grady Booch y James Rumbaugh, conocidos
tambin por ser los desarrolladores del UML, el Lenguaje Unificado de Modelado. Desde entonces
los autores que publican libros sobre el tema y que no estn afiliados a Racional utilizan el trmino
Proceso Unificado, mientras que los autores que pertenecen a Racional favorecen el nombre de
Proceso Unificado de Racional.

2.2.3.- INGENIERIA WEB

Ofrece una solucin de comercio electrnico a las empresas que han decidido comercializar y
administrar sus productos a travs de Internet mediante una tienda virtual y que adems es la
aplicacin de metodologas sistemticas, disciplinadas y cuantificables al desarrollo eficiente,
operacin y evolucin de aplicaciones de alta calidad en la World Wide Web.
La Ingeniera de la Web no es un clon o subconjunto de la ingeniera de software aunque ambas
incluyen desarrollo de software y programacin, pues a pesar de que la Ingeniera de la Web utiliza
principios de ingeniera de software, incluye nuevos enfoques, metodologas, herramientas,
tcnicas, guas y patrones para cubrir los requisitos nicos de las aplicaciones web. Adems,
existen ciertos aspectos que van ligados a la ingeniera web y que son de mucha utilidad para las
aplicaciones que realicen, aqu los ms importantes para m:
Diseo de procesos de negocio para aplicaciones web
Generacin de cdigo para aplicaciones web
Desarrollo web colaborativo
Ingeniera web emprica
Entornos de desarrollo de aplicaciones web integrados
Pruebas de rendimiento de aplicaciones basadas en web
Personalizacin y adaptacin de aplicaciones web
Modelado de procesos para aplicaciones web
Herramientas y mtodos de prototipo
~ 20 ~

Control de calidad y pruebas de sistemas
Aplicaciones web mviles
Usabilidad de aplicaciones web
Accesibilidad para la web
Metodologas de diseo web
Diseo de interfaces de usuario

2.2.4.- METODOLOGIAS AGILES

Las metodologas giles son sin duda uno de los temas recientes en ingeniera de software que
estn acaparando gran inters. Prueba de ello es que se estn haciendo un espacio destacado en
la mayora de conferencias y workshops celebrados en los ltimos aos. Es tal su impacto que
actualmente existen 4 conferencias internacionales de alto nivel y especficas sobre el tema.
Adems ya es un rea con cabida en prestigiosas revistas internacionales. En la comunidad de la
ingeniera del software, se est viviendo con intensidad un debate abierto entre los partidarios de
las metodologas tradicionales (referidas peyorativamente como "metodologas pesadas") y
aquellos que apoyan las ideas emanadas del "Manifiesto gil". La curiosidad que siente la mayor
parte de ingenieros de software, profesores, e incluso alumnos, sobre las metodologas giles hace
prever una fuerte proyeccin industrial. Por un lado, para muchos equipos de desarrollo el uso de
metodologas tradicionales les resulta muy lejano a su forma de trabajo actual considerando las
dificultades de su introduccin e inversin asociada en formacin y herramientas. Por otro, las
caractersticas de los proyectos para los cuales las metodologas giles han sido especialmente
pensadas se ajustan a un amplio rango de proyectos industriales de desarrollo de software;
aquellos en los cuales los equipos de desarrollo son pequeos, con plazos reducidos, requisitos
voltiles, y/o basados en nuevas tecnologas.
~ 21 ~

UNIDAD 3 ARQUITECTURAS DE SOFTWARE

3.1.- DESCOMPOSICIN MODULAR

Capacidad de descomposicin modular. Si un mtodo de diseo proporciona un mecanismo
sistemtico para descomponer el problema en subproblemas, reducir la complejidad de todo el
problema, consiguiendo de esta manera una solucin modular efectiva.
Capacidad de empleo de componentes modulares. Si un mtodo de diseo permite ensamblar los
componentes de diseo (reusables) existentes en un sistema nuevo, producir una solucin
modular que no inventa nada ya inventado.
Capacidad de comprensin modular. Si un mdulo se puede comprender como una unidad
autnoma (sin referencias a otros mdulos) ser ms fcil de construir y de cambiar.
Continuidad modular. Si pequeos cambios en los requisitos del sistema provocan cambios en los
mdulos individuales, en vez de cambios generalizados en el sistema, se minimizar el impacto de
los efectos secundarios de los cambios.
Proteccin modular. Si dentro de un mdulo se produce una condicin aberrante y sus efectos se
limitan a ese mdulo, se minimizar el impacto de los efectos secundarios inducidos por los
errores.
Finalmente, es importante destacar que un sistema se puede disear modularmente, incluso
aunque su implementacin deba ser monoltica. Existen situaciones (por ejemplo, software en
tiempo real, software empotrado) en donde no es admisible que los subprogramas introduzcan
sobrecargas de memoria y de velocidad por mnimos que sean (por ejemplo, subrutinas,
procedimientos). En tales situaciones el software podr y deber disearse con modularidad como
filosofa predominante.
El cdigo se puede desarrollar en lnea. Aunque el cdigo fuente del programa puede no tener
un aspecto modular a primera vista, se ha mantenido la filosofa y el programa proporcionar los
beneficios de un sistema modular.

DESCOMPOSICION MODULAR
El diseo modular propone dividir el sistema en partes diferenciadas y definir sus interfaces. sus
ventajas: claridad, reduccin de costos y reutilizacin
Los pasos a seguir son:
1. Identificar los mdulos
2. Describir cada mdulo
3. Describir las relaciones entre mdulos
Una descomposicin modular debe poseer ciertas cualidades mnimas para que se pueda
considerar suficiente validad.
1. Independencia funcional
2. Acoplamiento
3. Cohesin
4. Comprensibilidad
5. Adaptabilidad
Descomposicin Modular: Independiente Funcional
~ 22 ~

Al final de los documentos ADD y DDD debe haber una matriz REQUISITOS/COMPONNETES. En
principio, cada funcin ser realizada en un mdulo distinto. Si las funciones son independientes
los mdulos tendrn independencia funcional.
Cada mdulo debe realizar una funcin concreta o un conjunto de funciones afines. Es
recomendable reducir las relaciones entre mdulos al mnimo.
Para medir la independencia funcional hay dos criterios: acoplamiento y cohesin.
Descomposicin Modular: Acoplamiento
El grado de acoplamiento mide la interrelacin entre dos mdulos, segn el tipo de conexin y la
complejidad de la interface:
FUERTEPOR CONTENIDO, cuando desde un mdulo se pueden cambiar datos locales de otro
COMN, se emplea una zona comn de datos a la que tienen acceso varios mdulos
MODERADODE CONTROL, la zona comn es un dispositivo externo al que estn ligados los
mdulos, esto implica que un cambio en el formato de datos afecta a todos estos mdulos
POR ETIQUETA, en intercambio de datos se realiza mediante una referencia a la estructura
completa de datos (vector, pila, rbol, grafo, )
DBILDE DATOS, viene dado por los datos que intercambian los mdulos. Es el mejor posible
SIN ACOPLAMIENTO DIRECTO, es el acoplamiento que no existe
Descomposicin Modular: Cohesin
Es necesario lograr que el contenido de cada mdulo tenga la mxima coherencia. Para que el n
de mdulos no sea demasiado elevado y complique el diseo se tratan de agrupar elementos
afines y relacionados en un mismo mdulo.
ALTACOHESIN ABSTRACCIONAL, se logra cuando se disea el mdulo como tipo abstracto de
datos o como una clase de objetos
COHESIN FUNCIONAL, el mdulo realiza una funcin concreta y especfica
MEDIACOHESIN SECUENCIAL, los elementos del mdulo trabajan de forma secuencial
COHESIN DE COMUNICACIN, elementos que operan con le mismo conjunto de datos de
entrada o de salida
COHESIN TEMPORAL, se agrupan elementos que se ejecutan en el mismo momento. Ej.
Arrancar o parar dispositivos
BAJACOHESIN LGICA, se agrupan elementos que realizan funciones similares. Ejs.: mdulos
de E/S o de tratamiento de errores
COHESIN COINCIDENTAL, es la peor y se produce cuando los elementos de un mdulo no
guardan relacin alguna
La descripcin del comportamiento de un mdulo permite establecer el grado de cohesin:
Si es una frase compuesta y contiene ms de un verbo la cohesin ser MEDIA
Si contiene expresiones secuenciales (primero, entonces, cuando), ser temporal o secuencial
Si la descripcin no se refiere a algo especfico (Ej. Todos los errores), cohesin lgica
Si aparece inicializar, preparar, configurar, probablemente sea temporal.
Descomposicin Modular: Comprensibilidad
Para facilitar los cambios, el mantenimiento y la reutilizacin de mdulos es necesario que cada
uno sea comprensible de forma aislada. Para ello es bueno que posea independencia funcional,
pero adems es deseable:
IDENTIFICACIN, el nombre debe ser adecuado y descriptivo
DOCUMENTACIN, debe aclarar todos los detalles de diseo e implementacin que no queden de
manifiesto en el propio cdigo
SIMPLICIDAD, las soluciones sencillas son siempre las mejores
Descomposicin Modular: Adaptabilidad
~ 23 ~

La adaptacin de un sistema resulta ms difcil cuando no hay independencia funcional, es decir,
con alto acoplamiento y baja cohesin, y cuando el diseo es poco comprensible. Otros factores
para facilitar la adaptabilidad:
PREVISIN, es necesario prever que aspectos del sistema pueden ser susceptibles de cambios en
el futuro, y poner estos elementos en mdulos independientes, de manera que su modificacin
afecte al menor nmero de mdulos posible
ACCESIBILIDAD, debe resultar sencillo el acceso a los documentos de especificacin, diseo, e
implementacin para obtener un conocimiento suficiente del sistema antes de proceder a su
adaptacin
CONSISTENCIA, despus de cualquier adaptacin se debe mantener la consistencia del sistema,
incluidos los documentos afectados.

En 1979 el arquitecto Christopher Alexander aport al mundo de la arquitectura el libro
TheTimelessWay of Building; en l propona el aprendizaje y uso de una serie de patrones para la
construccin de edificios de una mayor calidad.
En palabras de este autor, "Cada patrn describe un problema que ocurre infinidad de veces en
nuestro entorno, as como la solucin al mismo, de tal modo que podemos utilizar esta solucin un
milln de veces ms adelante sin tener que volver a pensarla otra vez."
Los patrones que Christopher Alexander y sus colegas definieron, publicados en un volumen
denominado A PatternLanguage, son un intento de formalizar y plasmar de una forma prctica
generaciones de conocimiento arquitectnico. Los patrones no son principios abstractos que
requieran su redescubrimiento para obtener una aplicacin satisfactoria, ni son especficos a una
situacin particular o cultural; son algo intermedio. Un patrn define una posible solucin correcta
para un problema de diseo dentro de un contexto dado, describiendo las cualidades invariantes
de todas las soluciones.
Ms tarde, en 1987, Ward Cunningham y Kent Beck usaron varias ideas de Alexander para
desarrollar cinco patrones de interaccin hombre-ordenador (HCI) y publicaron un artculo en
OOPSLA-87 titulado UsingPatternLanguagesfor OO Programs.
No obstante, no fue hasta principios de la dcada de 1990 cuando los patrones de diseo tuvieron
un gran xito en el mundo de la informtica a partir de la publicacin del libro DesignPatterns
escrito por el grupo Gang of Four (GoF) compuesto por Erich Gamma, Richard Helm, Ralph
Johnson y John Vlisides, en el que se recogan 23 patrones de diseo comunes.
Objetivos de los patrones
Los patrones de diseo pretenden:
Proporcionar catlogos de elementos reusables en el diseo de sistemas software.
Evitar la reiteracin en la bsqueda de soluciones a problemas ya conocidos y solucionados
anteriormente.
Formalizar un vocabulario comn entre diseadores.
Estandarizar el modo en que se realiza el diseo.
Facilitar el aprendizaje de las nuevas generaciones de diseadores condensando conocimiento ya
existente.
Asimismo, no pretenden:
Imponer ciertas alternativas de diseo frente a otras.
Eliminar la creatividad inherente al proceso de diseo.
No es obligatorio utilizar los patrones, solo es aconsejable en el caso de tener el mismo problema o
similar que soluciona el patrn, siempre teniendo en cuenta que en un caso particular puede no ser
aplicable. "Abusar o forzar el uso de los patrones puede ser un error".
Categoras de patrones
Segn la escala o nivel de abstraccin:
~ 24 ~

Patrones de arquitectura: Aquellos que expresan un esquema organizativo estructural fundamental
para sistemas de software.
Patrones de diseo: Aquellos que expresan esquemas para definir estructuras de diseo (o sus
relaciones) con las que construir sistemas de software.
Dialectos: Patrones de bajo nivel especficos para un lenguaje de programacin o entorno
concreto.
Adems, tambin es importante resear el concepto de "antipatrn de diseo", que con forma
semejante a la de un patrn, intenta prevenir contra errores comunes de diseo en el software. La
idea de los antipatrones es dar a conocer los problemas que acarrean ciertos diseos muy
frecuentes, para intentar evitar que diferentes sistemas acaben una y otra vez en el mismo callejn
sin salida por haber cometido los mismos errores.
Adems de los patrones ya vistos actualmente existen otros patrones como el siguiente:
Interaccin: Son patrones que nos permiten el diseo de interfaces web.
Estructuras o plantillas de patrones
Para describir un patrn se usan plantillas ms o menos estandarizadas, de forma que se expresen
uniformemente y puedan constituir efectivamente un medio de comunicacin uniforme entre
diseadores. Varios autores eminentes en esta rea han propuesto plantillas ligeramente distintas,
si bien la mayora definen los mismos conceptos bsicos.
La plantilla ms comn es la utilizada precisamente por el GoF y consta de los siguientes
apartados:
Nombre del patrn: nombre estndar del patrn por el cual ser reconocido en la comunidad
(normalmente se expresan en ingls).
Clasificacin del patrn: creacional, estructural o de comportamiento.
Intencin: Qu problema pretende resolver el patrn?
Tambin conocido como: Otros nombres de uso comn para el patrn.
Motivacin: Escenario de ejemplo para la aplicacin del patrn.
Aplicabilidad: Usos comunes y criterios de aplicabilidad del patrn.
Estructura: Diagramas de clases oportunos para describir las clases que intervienen en el patrn.
Participantes: Enumeracin y descripcin de las entidades abstractas (y sus roles) que participan
en el patrn.
Colaboraciones: Explicacin de las interrelaciones que se dan entre los participantes.
Consecuencias: Consecuencias positivas y negativas en el diseo derivadas de la aplicacin del
patrn.
Implementacin: Tcnicas o comentarios oportunos de cara a la implementacin del patrn.
Cdigo de ejemplo: Cdigo fuente ejemplo de implementacin del patrn.
Usos conocidos: Ejemplos de sistemas reales que usan el patrn.
Patrones relacionados: Referencias cruzadas con otros patrones.
Relacin de principales patrones GoF (Gang Of Four)
Patrones creacionales
Object Pool (no pertenece a los patrones especificados por GoF): se obtienen objetos nuevos a
travs de la clonacin. Utilizado cuando el costo de crear una clase es mayor que el de clonarla.
Especialmente con objetos muy complejos. Se especifica un tipo de objeto a crear y se utiliza una
interfaz del prototipo para crear un nuevo objeto por clonacin. El proceso de clonacin se inicia
instanciando un tipo de objeto de la clase que queremos clonar.
Abstract Factory (fbrica abstracta): permite trabajar con objetos de distintas familias de manera
que las familias no se mezclen entre s y haciendo transparente el tipo de familia concreta que se
est usando.
Builder (constructor virtual): abstrae el proceso de creacin de un objeto complejo, centralizando
dicho proceso en un nico punto.
~ 25 ~

Factory Method (mtodo de fabricacin): centraliza en una clase constructora la creacin de
objetos de un subtipo de un tipo determinado, ocultando al usuario la casustica, es decir, la
diversidad de casos particulares que se pueden prever, para elegir el subtipo que crear.
Prototype (prototipo): crea nuevos objetos clonndolos de una instancia ya existente.
Singleton (instancia nica): garantiza la existencia de una nica instancia para una clase y la
creacin de un mecanismo de acceso global a dicha instancia.
Patrones estructurales
Adapter (Adaptador): Adapta una interfaz para que pueda ser utilizada por una clase que de otro
modo no podra utilizarla.
Bridge (Puente): Desacopla una abstraccin de su implementacin.
Composite (Objeto compuesto): Permite tratar objetos compuestos como si de uno simple se
tratase.
Decorator (Envoltorio): Aade funcionalidad a una clase dinmicamente.
Facade (Fachada): Provee de una interfaz unificada simple para acceder a una interfaz o grupo de
interfaces de un subsistema.
Flyweight (Peso ligero): Reduce la redundancia cuando gran cantidad de objetos poseen idntica
informacin.
Proxy: Mantiene un representante de un objeto.
Mdulo: Agrupa varios elementos relacionados, como clases, singletons, y mtodos, utilizados
globalmente, en una entidad nica.
Patrones de comportamiento
Chain of Responsibility (Cadena de responsabilidad): Permite establecer la lnea que deben llevar
los mensajes para que los objetos realicen la tarea indicada.
Command (Orden): Encapsula una operacin en un objeto, permitiendo ejecutar dicha operacin
sin necesidad de conocer el contenido de la misma.
Interpreter (Intrprete): Dado un lenguaje, define una gramtica para dicho lenguaje, as como las
herramientas necesarias para interpretarlo.
Iterator (Iterador): Permite realizar recorridos sobre objetos compuestos independientemente de la
implementacin de estos.
Mediator (Mediador): Define un objeto que coordine la comunicacin entre objetos de distintas
clases, pero que funcionan como un conjunto.
Memento (Recuerdo): Permite volver a estados anteriores del sistema.
Observer (Observador): Define una dependencia de uno-a-muchos entre objetos, de forma que
cuando un objeto cambie de estado se notifique y actualicen automticamente todos los objetos
que dependen de l.
State (Estado): Permite que un objeto modifique su comportamiento cada vez que cambie su
estado interno.
Strategy (Estrategia): Permite disponer de varios mtodos para resolver un problema y elegir cul
utilizar en tiempo de ejecucin.
TemplateMethod (Mtodo plantilla): Define en una operacin el esqueleto de un algoritmo,
delegando en las subclases algunos de sus pasos, esto permite que las subclases redefinan
ciertos pasos de un algoritmo sin cambiar su estructura.
Visitor (Visitante): Permite definir nuevas operaciones sobre una jerarqua de clases sin modificar
las clases sobre las que opera.
Patrones de interaccin
El primer intento por aplicar este concepto en el diseo de las interfaces de usuario se dio por
Ward Cummingham y Kent Beck quienes adaptaron la propuesta de C. Alexander y crearon cinco
patrones de interfaz: Window per task, Few panes, Standard panes, Nouns and verbs, y Short
Menu. En aos ms recientes investigadores como Martin Van Welie, Jennifer Tidwell, Jaime
~ 26 ~

Muoz han desarrollado colecciones de patrones de interaccin para la World Wide Web. En
dichas colecciones captan la experiencia de programadores y diseadores expertos en el
desarrollo de interfaces usables y condensan esta experiencia en una serie de guas o
recomendaciones, que puedan ser usadas por los desarrolladores novatos con el propsito de que
en poco tiempo adquieran la habilidad de disear interfaces que incidan en la satisfaccin de los
usuarios. Los patrones de interaccin buscan la reutilizacin de interfaces eficaces y un manejo
ptimo de los recursos de las pginas web, haciendo ms eficaz el consumo de tiempo en el
diseo del sitio web y permitiendo a los programadores novatos adquirir ms experiencia.
Aplicacin en mbitos concretos
Adems de su aplicacin directa en la construccin de software en general, y derivado
precisamente del gran xito que han tenido, los patrones de diseo han sido aplicados a mltiples
mbitos concretos producindose "lenguajes de patrones" y extensos "catlogos" de la mano de
diversos autores.
En particular son notorios los esfuerzos en los siguientes mbitos:
Patrones de interfaces de usuario, esto es, aquellos que intentan definir las mejores formas de
construir interfaces hombre-mquina (vase Interaccin persona-computador, Interfaz grfica de
usuario).
Patrones para la construccin de sistemas empresariales, en donde se requieren especiales
esfuerzos en infraestructuras de software y un nivel de abstraccin importante para maximizar
factores como la escalabilidad o el mantenimiento del sistema.
Patrones para la integracin de sistemas (vase Integracin de aplicaciones empresariales), es
decir, para la intercomunicacin y coordinacin de sistemas heterogneos.
Patrones de flujos de trabajo, esto es para la definicin, construccin e integracin de sistemas
abstractos de gestin de flujos de trabajo y procesos con sistemas empresariales. Vase tambin
BPM.


~ 27 ~

3.2.- ARQUITECTURA DE DOMINO ESPECIFICO

El reto para el diseo es disear el software y hardware para proporcionar caractersticas
deseables a los sistemas distribuidos y, al mismo tiempo, minimizar los problemas propios a estos
sistemas. Es necesario comprender las ventajas y desventajas de las diferentes arquitecturas de
sistemas distribuidos. Aqu se tratan dos tipos genricos de arquitecturas de sistemas distribuidos:
Arquitectura cliente-servidor. En este caso el sistema puede ser visto como un conjunto de
servicios que se proporcionan a los clientes que hacen uso de dichos servicios. Los servidores y
los clientes se tratan de forma diferente en estos sistemas.
Arquitecturas de objetos distribuidos. Para esta arquitectura no hay distincin entre servidores y
clientes, y el sistema puede ser visto como un conjunto de objetos que interaccionan cuya
localizacin es irrelevante. No hay distincin entre un proveedor de servicios y el usuario de estos
servicios
Ambas arquitecturas se usan ampliamente en la industria, pero la distribucin de las aplicaciones
generalmente tiene lugar dentro de una nica organizacin. La distribucin soportada es, por lo
tanto, intraorganizacional. Tambin se pueden tomar dos tipos ms de arquitecturas distribuidas
que son ms adecuadas para la distribucin interorganizacional: arquitectura de sistemas peer-to-
peer (p2p) y arquitecturas orientadas a servicios. Los sistemas peer-to-peer han sido usados
principalmente para sistemas personales, pero estn comenzando a usarse para aplicaciones de
empresa.
Los componentes en un sistema distribuido pueden implementarse en diferentes lenguajes de
programacin y pueden ejecutarse en tipos de procesadores completamente diferentes. Los
modelos de datos, la representacin de la informacin y los protocolos de comunicacin pueden
ser todos diferentes.
Un sistema distribuido, por lo tanto, requiere software que pueda gestionar estas partes distintas, y
asegurar que dichas partes se puedan comunicar e intercambiar datos. El trmino middleware se
usa para hacer referencia a ese software; se ubica en medio de los diferentes componentes
distribuidos del sistema.
Bernstein (Bernstein, 1996) resume los tipos de middleware disponibles para soportar computacin
distribuida. El middleware es un software de propsito general que normalmente se compra como
un componente comercial ms que escribirse especialmente por los desarrolladores de la
aplicacin. Ejemplos de middleware son software para gestionar comunicaciones con bases de
datos, administradores de transacciones, convertidores de datos y controladores de comunicacin.
Los sistemas distribuidos se desarrollan normalmente utilizando una aproximacin orientada a
objetos. Estos sistemas estn formados por partes independientes pobremente integradas, cada
una de las cuales puede interaccionar directamente con los usuarios o con otras partes del
sistema. Algunas partes del sistema pueden tener que responder a eventos independientes. Los
objetos software reflejan estas caractersticas; por lo tanto, son abstracciones naturales para los
componentes de sistemas distribuidos.

Existen dos modelos de dominio especfico:

1. Modelos genricos que son abstracciones de varios sistemas reales.

2. Modelos de referencia que son modelos abstractos y describen a una clase mayor de sistemas.

Modelo genrico: flujo de datos de un compilador Modelo de Referencia: La arquitectura OSI.
~ 28 ~



~ 29 ~

3.3.- DISEO DE SOFTWARE DE ARQUITECTURA DE
MULTIPROCESADOR

Un sistema multiproceso o multitarea es aquel que permite ejecutar varios procesos de forma
concurrente, la razn es porque actualmente la mayora de las CPUs slo pueden ejecutar un
proceso cada vez. La nica forma de que se ejecuten de forma simultnea varios procesos es
tener varias CPUs (ya sea en una mquina o en varias, en un sistema distribuido.
La ventaja de un sistema multiproceso reside en la operacin llamada cambio de contexto. Esta
operacin consiste en quitar a un proceso de la CPU, ejecutar otro proceso y volver a colocar el
primero sin que se entere de nada.
El multiproceso no es algo difcil de entender: ms procesadores significa ms potencia
computacional. Un conjunto de tareas puede ser completado ms rpidamente si hay varias
unidades de proceso ejecutndolas en paralelo. Esa es la teora, pero otra historia es la prctica,
como hacer funcionar el multiproceso, lo que requiere unos profundos conocimientos tanto del
hardware como del software.

Es necesario conocer ampliamente como estn interconectados dichos procesadores, y la forma
en que el cdigo que se ejecuta en los mismos ha sido escrito para escribir aplicaciones y software
que aproveche al mximo sus prestaciones.






figura 1. Ejemplo de multiprocesos




~ 30 ~

3.4.- DISEO DE SOFTWARE DE CLIENTE-SERVIDOR

La arquitectura cliente-servidor es una forma de dividir las responsabilidades de un Sistema de
Informacin separando la interfaz de usuario (Nivel de presentacin) de la gestin de la
informacin (Nivel de gestin de datos).
Esta arquitectura consiste bsicamente en que un programa, el Cliente informtico realiza
peticiones a otro programa, el servidor, que les da respuesta.
Aunque esta idea se puede aplicar a programas que se ejecutan sobre una sola computadora es
ms ventajosa en un sistema multiusuario distribuido a travs de una red de computadoras.
La arquitectura cliente-servidor sustituye a la arquitectura monoltica en la que no hay distribucin,
tanto a nivel fsico como a nivel lgico.
Ventajas de la arquitectura cliente-servidor

Centralizacin del control: los accesos, recursos y la integridad de los datos son controlados por
el servidor de forma que un programa cliente defectuoso o no autorizado no pueda daar el
sistema.

Escalabilidad: se puede aumentar la capacidad de clientes y servidores por separado.

Se reduce el trfico de red considerablemente. Idealmente, el cliente se comunica con el servidor
utilizando un protocolo de alto nivel de abstraccin como por ejemplo SQL.








figura 2. Modelo cliente- Servidor
~ 31 ~

3.5.- DISEO DE SOFTWARE DE ARQUITECTURA DISTRIBUIDA


Estos recursos tcnicos suelen catalogarse en:
- Infraestructura.
-Plataforma.
-Comunicaciones.
-Datos.
- Software:
- Aplicaciones.
-Interfaces.
-Servicios.
- Seguridad.
Pero no olvidemos que detrs del sistema operativo hay personas que lo usan y los gestionan. El
factor humano ser fundamental como nos cuidaremos de recordar a lo largo del todo el diseo.

Disear un sistema distribuido es crear aplicaciones de software que, utilizando servicios y
ayudndose de la conectividad, participen y se integren en este entorno de forma transparente a
las plataformas de proceso y de almacenamiento de datos, dotndolas de los recursos necesarios
para gestionarse de forma integrada con el resto del sistema distribuido.
Los servicios permitirn usar todos los recursos tcnicos y el sistema distribuido resulto ante no
ser nada ms, ni nada menos, que un conjunto de servicios que interpelan entre ellos
colaborando para cumplir los objetivos que se han establecido para el sistema.

Los sistemas distribuidos que se diseen y construyan deben estar alineados con los objetivos de
negocio de la empresa, aumentar la eficacia y eficiencia operacional de la compaa y permitir el
mayor rendimiento con el menor coste en las estructuras informticas que dan soporte.

Sistemas cuyos componentes hardware y software, que estn en ordenadores conectados en red,
se comunican y coordinan sus acciones mediante el paso de mensajes, para el logro de un
objetivo. Se establece la comunicacin mediante un protocolo prefijado por un esquema cliente-
servidor.
Caractersticas:
Concurrencia.- Esta caracterstica de los sistemas distribuidos permite que los
recursosdisponibles en la red puedan ser utilizados simultneamente por los usuarios y/o agentes
que interactan en la red.
Carencia de reloj global.- Las coordinaciones para la transferencia de mensajes entre los
diferentes componentes para la realizacin de una tarea, no tienen una temporizacin general, esta
ms bien distribuida a los componentes.

Fallos independientes de los componentes.- Cada componente del sistemapuede fallar
independientemente, con lo cual los dems pueden continuar ejecutando sus acciones. Esto
permite el logro de las tareas con mayor efectividad, pues el sistema en su conjunto continua
trabajando.
Evolucin:
Procesamiento central (Host).- Uno de los primeros modelos de ordenadores interconectados,
llamados centralizados, donde todo el procesamiento de la organizacin se llevaba a cabo en una
~ 32 ~

sola computadora, normalmente un Mainframe, y los usuarios empleaban sencillos ordenadores
personales.
Los problemas de este modelo son:
Cuando la carga de procesamiento aumentaba se tena que cambiar el hardware del Mainframe,
lo cual es ms costoso que aadir ms computadores personales clientes o servidores que
aumenten las capacidades.

El otro problema que surgi son las modernas interfases grficas de usuario, las cuales podan
conllevar a un gran aumento de trfico en los medios de comunicacin y por consiguiente podan
colapsar.

~ 33 ~

3.6.- DISEO DE SOFTWARE DE ARQUITECTURA DE TIEMPO REAL

El software de tiempo real est muy acoplado con el mundo externo, esto es, el software de tiempo
real debe responder al mbito del problema en un tiempo dictado por el mbito del problema.
Debido a que el software de tiempo real debe operar bajo restricciones de rendimiento muy
rigurosas, el diseo del software esta conducido frecuentemente, tanto por la arquitectura del
hardware como por la del software, por las caractersticas del sistema operativo, por los requisitos
de la aplicacin y tanto por los extras del lenguaje de programacin como prospectos de diseo.

La computadora digital se ha convertido en una maquina omnipresente en al vida diaria de todos
nosotros. Las computadoras nos permiten ver juegos, as como contar el tiempo, optimizar el gasto
de gasolina de nuestras ultimas generaciones de coches y programar a nuestros aparatos.

Todas estas interacciones con las computadoras sean tiles o intrusivas son ejemplos de
computacin de tiempo real. La computadora esta controlando algo que interactua con la realidad
sobre una base de tiempo de hecho, el tiempo es la esencia de la interaccin.

Los sistemas de tiempo real generan alguna accin en respuesta a sucesos externos. Para realizar
esta funcin, ejecutan una adquisicin y control de datos a alta velocidad bajo varias ligaduras de
tiempo y fiabilidad. Debido a que estas ligaduras son muy rigurosas, los sistemas de tiempo real
estn frecuentemente dedicados a una nica aplicacin.
Durante muchos aos, los principales consumidores de sistemas de tiempo real eran militares.
Sin embargo, hoy la significativa reduccin del coste del hardware ha hecho posible para la
mayora de las compaas, proporcionar sistemas (y productos) de tiempo real para diversas
aplicaciones, que incluyen control de procesos, automatizacin industrial, investigacin medica y
cientfica, grficos de computadoras, comunicaciones locales y de largo alcance, sistemas
aeroespaciales, prueba asistida por computadora y un vasto abanico de instrumentacin industrial.
Consideraciones Sobre los Sistemas Como cualquier sistema basado en computadora, un sistema
de tiempo real debe integrar hardware, software, hombres y elementos de una base de datos, par
conseguir adecuadamente un conjunto de requisitos funcionales y de rendimiento.
El problema para los sistemas de tiempo real es realzar la asignacin importante como la funcin,
pero las decisiones de asignacin relativas al rendimiento son frecuentemente difciles de hacer
con seguridad.

Puede un algoritmo de procesamiento cumplir varias ligaduras de tiempo o debe construirse un
hardware especial para hacer el trabajo?

Puede un sistema operativo cumplir nuestras necesidades para un manejo eficiente de
interrupciones multitareas y comunicaciones, o especificado, acoplado con el software propuesto,
cumplir los criterios de rendimiento? Estas y otras muchas preguntas deben ser respondidas por el
ingeniero de sistemas de tiempo real.
~ 34 ~

UNIDAD 4 SEGURIDAD EN INGENIERA DE SOFTWARE

4.1.- SEGURIDAD DEL SOFTWARE

La Ingeniera del Software todava no es capaz de brindar un mecanismo para implementar
adecuadamente la seguridad: los lenguajes tienen primitivas inseguras, el cdigo relativo a la
seguridad es siempre un cdigo confuso y complejo debido a tcnicas de abstraccin insuficientes,
etc. Estos problemas son los objetivos que promete satisfacer el nuevo paradigma de
Programacin Orientada a Aspectos (POA). Por lo tanto, en este trabajo, analizamos la aplicacin
de la POA como solucin a los problemas de la seguridad en el software.

El concepto de la seguridad en los sistemas de software es un rea de investigacin que ha
pasado a ser vital dentro de la Ingeniera de Software. Con el crecimiento de Internet, y otras
aplicaciones sobre redes, como el comercio electrnico, correo electrnico, etc., la posibilidad de
ataques se ha incrementado notablemente, como tambin lo han hecho las consecuencias
negativas de estos ataques.

En este sentido, existe un nuevo paradigma de programacin, la programacin orientada a
aspectos (POA), el cual al permitir encapsular requerimientos o conceptos tpicamente no
funcionales, como la seguridad, se convierte en una herramienta atractiva para el desarrollo de
software seguro. La POA nos permitira encapsular las polticas de seguridad de forma separada e
independiente del resto del sistema, con las consecuentes ventajas que esto implica.

Nuestro trabajo apunta entonces a investigar la aplicabilidad de la POA a la seguridad en software,
al considerarlo como la alternativa ms viable y prometedora en pos de lograr software seguro.


Problemtica actual de la seguridad en el software.

Los puntos dbiles ms importantes de la Ingeniera de Software con respecto a la seguridad
pueden ser clasificados en dos grandes categoras:

Fallas para implementar software seguro.
Fallas para implementar seguridad en el software.


Fallas para implementar seguridad en el software

En la actualidad, el desarrollador de software que quiera incorporar seguridad a su sistema se
enfrentar con la difcil realidad de las tcnicas de programacin tradicionales, y tambin, con una
Ingeniera de Software que recin est aprendiendo sobre la seguridad.

Tpicamente la seguridad es considerada como un requerimiento no funcional. Luego, debido a los
problemas de planificacin y presupuesto, la seguridad slo es tenida en cuenta una vez que los
requerimientos funcionales son obtenidos. Esto conduce a que la seguridad sea considerada como
un concepto afterthougth, y que se incorpore tardamente al sistema. Esto lleva a una
implementacin pobre, ineficiente, e inadecuada de la seguridad. Tambin, la mayora de las
metodologas de diseo y herramientas dedicadas a la seguridad trabajan de esta forma, como
herramientas afterthougth (ver seccin de Trabajo Relacionado).


~ 35 ~

Objetivos para un software seguro

En pos de conseguir un software seguro, se debe dejar claro qu se entiende por seguridad, para
as luego poder establecer requisitos mnimos que debe satisfacer un sistema que pretenda ser
considerado seguro.















Figura 4. 1. Software de seguridad.

~ 36 ~

4.2.- SEGURIDAD EN EL SIGLO DE DESARROLLO DE SOFTWARE.

Est comprobado que cunto ms temprano se encuentre una falla de seguridad en el ciclo de vida
del desarrollo de software, ms rpida y econmica ser su mitigacin. Cul es el rumbo a
seguir?
Las buenas prcticas indican la conveniencia de incluir seguridad de la informacin desde el
principio y a lo largo de todas las etapas del ciclo de vida de desarrollo, conocido como SDLC por
ser las siglas en ingls de Software Development Life Cicle.

Estas etapas pueden variar segn la modalidad de cada organizacin, pero a grandes rasgos son
las siguientes: anlisis de requerimientos, diseo funcional y detallado, codificacin, testing/QA,
implementacin/puesta en produccin.

Seguridad en el anlisis de requerimientos

En esta etapa, se deben identificar aquellos requerimientos funcionales que tendrn impacto en los
aspectos de seguridad de la aplicacin. Algunos de ellos son: requerimientos de complace con
normativas locales o internacionales (ej.: PCI, SOX, A 4609, etc.), tipo de informacin que se
transmitir o procesar (ej: Informacin pblica o confidencial, datos personales, datos financieros,
contraseas, datos de pago electrnico, etc.) y requerimientos de registros de auditora (ej: Qu
debe registrar la aplicacin en sus Logs).


Seguridad en el diseo

Antes de comenzar a escribir lneas de cdigo, hay numerosos aspectos de seguridad que deben
ser tenidos en cuenta durante el diseo de la aplicacin. Algunos de ellos son: diseo de
autorizacin
(ej.: Definir los roles, permisos y privilegios de la aplicacin), diseo de autenticacin (aqu se debe
disear el modo en el que los usuarios se van a autenticar, contemplando aspectos tales como los
mecanismos o factores de autenticacin con contraseas, tokens, certificados, etc. posibilidades
de integrar la autenticacin con servicios externos como LDAP, Radius o Active Directory y los
mecanismos que tendr la aplicacin para evitar ataques de diccionario o de fuerza bruta (ej.:
bloqueo de cuentas, implementacin de captchas, etc.), diseo de los mensajes de error y
advertencia, para evitar que los mismos brinden demasiada informacin y que sta sea utilizada
por atacantes y diseo de los mecanismos de proteccin de datos (aqu se debe contemplar el
modo en el que se proteger la informacin sensible en trnsito o almacenada; segn el caso, se
puede definir la implementacin de encripcin, hashes o truncamiento de la informacin).

Una vez que se cuenta con el diseo detallado de la aplicacin, una prctica interesante es la de
realizar sobre el mismo un anlisis de riesgo orientado a software. Existen tcnicas documentadas
al respecto, tales como Threat Modeling. Estas tcnicas permiten definir un marco para identificar
debilidades de seguridad en el software, antes de la etapa de codificacin. Como valor agregado,
del anlisis de riesgo orientado a software se pueden obtener casos de prueba para ser utilizados
en la etapa de Testing/QA.

Seguridad en la codificacin

Una vez concluido el diseo, le toca a los desarrolladores el turno de codificar los distintos
componentes de la aplicacin. Es en este punto en donde suelen incorporarse, por error u omisin,
distintos
Por Pablo Milano, Consultor Cybsec tipos de vulnerabilidades. Estas vulnerabilidades podramos
dividirlas en dos grandes grupos a saber: vulnerabilidades clsicas y vulnerabilidades funcionales.
Las primeras son bien conocidas y categorizadas.
~ 37 ~


Ejemplo de estas vulnerabilidades son las presentes en el OWASP Top 10 (Vulnerabilidades de
inyeccin, Cross Site Scripting, errores en manejo de sesiones, etc.) como as tambin otras
vulnerabilidades no ligadas directamente con las aplicaciones WEB, como desbordamiento de
buffer, denegacin de servicio, etc. Los Frameworks de desarrollo de aplicaciones son una buena
ayuda en este punto, ya que ofician de intermediario entre el programador y el cdigo, y permiten
prevenir la mayora de las vulnerabilidades conocidas. Ejemplos de estos frameworks son Struts,
Ruby on Rails y Zope.

Vulnerabilidades funcionales son aquellas ligadas especficamente a la funcionalidad de negocio
que posee la aplicacin, por lo que no estn previamente categorizadas. Algunos ejemplos
ilustrativos de este tipo de vulnerabilidad son los siguientes: una aplicacin de banca electrnica
que permite realizar transferencias con valores negativos, un sistema de subastas que permite ver
los valores de otros oferentes, un sistema de venta de entradas para espectculos que no impone
lmites adecuados a la cantidad de reservas que un usuario puede hacer.

Testing / QA de seguridad

Tradicionalmente, la labor del equipo de Testing/QA fue la de encontrar y reportar errores
funcionales de la aplicacin. Para esto, se desarrollan casos de test basados en la funcionalidad
esperada.
A esto denominamos testing funcional y bsicamente consiste en validar que la aplicacin haga lo
que se esperaba que hiciera. Sucede que habitualmente hay un desfasaje entre el diseo original
de la aplicacin (lo que se espera que haga) y la implementacin real (lo que realmente hace).
Aqu surgen 3 reas bien definidas: lo que fue definido y la aplicacin hace, lo que fue definido y la
aplicacin no hace (errores funcionales) y lo que no fue definido pero la aplicacin hace.

Es en este ltimo grupo, en donde habitualmente estn las vulnerabilidades, y el testing funcional
clsico no es capaz de encontrarlas. Por este motivo se necesitan nuevas tcnicas para explorar lo
desconocido. El testing de seguridad se basa principalmente en probar la aplicacin con
escenarios no planificados, incluyendo valores mutados, fuera de rango, de tipo incorrecto o
malformados, acciones fuera de orden, etc.

Existen herramientas automticas que pueden ayudar al analista de QA en la bsqueda de errores.
Las mismas son tiles por su velocidad y capacidad de automatizacin, pero pueden causar falsos
positivos, y por lo general no son buenas detectando vulnerabilidades funcionales. Es por esto que
los mejores resultados resultan de la combinacin de tcnicas automticas y manuales.


Implementacin / Puesta en produccin

Una mala configuracin al momento de implementar la aplicacin podra echar por tierra toda la
seguridad de las capas anteriores. Tanto la aplicacin como el software de base deben
configurarse de manera segura al momento de poner el software en produccin. En este punto se
deben contemplar tareas tales como: cambio de usuarios y contraseas iniciales o por defecto,
borrado de datos de prueba y cambio de permisos de acceso. Es tambin importante mantener
una correcta separacin de los ambientes de desarrollo, testing y produccin y procedimientos de
traspaso seguro de uno a otro de estos ambientes.



4.3.- CONFIABILIDAD DE SOFTWARE.

~ 38 ~

La confiabilidad de software significa que un programa particular debe de seguir funcionando en la
presencia de errores. Los errores pueden ser relacionados al diseo, a la implementacin, a la
programacin, o el uso de errores. As como los sistemas llegan a ser cada vez ms complejos,
aumenta la probabilidad de errores. Como mencionamos, es increblemente difcil demonstrar que
un sistema sea seguro. Ross Anderson dice que la seguridad de computacin es como programar
la computadora del Satn. Software seguro debe de funcionar abajo de un ataque. Aunque casi
todo el software tenga errores, la mayora de los errores nunca sern revelados debajo de
circunstancias normales. Un atacante busca esta debilidad para atacar un sistema.

La confiabilidad del software se refiere a la precisin con la que una aplicacin proporciona, sin
errores, los servicios que se establecieron en las especificaciones originales. El diseo para
favorecer la confiabilidad, adems de referirse al tiempo de funcionamiento de la aplicacin antes
de que se produzca algn error, est relacionado tambin con la consecucin de resultados
correctos y con el control de la deteccin de errores y de la recuperacin para evitar que se
produzcan errores. Se producen errores en la aplicacin por distintos motivos: Comprobacin
inadecuada, Problemas relacionados con cambios en la administracin, Falta de control y anlisis
continuados. Errores en las operaciones, Cdigo poco consistente, Ausencia de procesos de
diseo de software de calidad, Interaccin con aplicaciones o servicios externos. Condiciones de
funcionamiento distintas (cambios en el nivel de uso, sobrecargas mximas), Sucesos inusuales
(errores de seguridad, desbordamientos en la difusin), Errores de hardware (discos,
controladores, dispositivos de red, servidores, fuentes de alimentacin, memoria, CPU).
Problemas de entorno (red elctrica, refrigeracin, incendios, inundaciones, polvo, catstrofes
naturales).


~ 39 ~


4.4.- INGENIERA DE SEGURIDAD.

La Ingeniera de la seguridad es una rama de la ingeniera, que usa todo tipo de ciencias para
desarrollar los procesos y diseos en cuanto a las caractersticas de seguridad, controles y
sistemas de seguridad. La principal motivacin de esta ingeniera ha de ser el dar soporte de tal
manera que impidan comportamientos malintencionados.
El campo de esta ingeniera puede ser muy amplio, podra desarrollarse en muchas tcnicas:
Equipos: Como el diseo de cerraduras, cmaras, sensores,...
Procesos: polticas de control, procedimientos de acceso,...
Informtico: control de passwords, criptografa,...
Uno de los pioneros en la Ingeniera de seguridad como un campo de estudio es Ross Anderson.

En tanto el e-business se expande en el mercado, el aumento en los puntos de acceso de las
redes de las compaas las hace ms vulnerables a los ataques y las posibilidades de robo y
sabotaje de los activos digitales se vuelve ms factible. Si a ello agregamos un marco legal poco
claro, la participacin de terceros en los proyectos, el desarrollo de aplicaciones con cada vez
mayor distribucin de la capacidad de procesamiento y el deseo de los usuarios finales de
desarrollar y operar sus propios sitios web, los potenciales problemas de seguridad y control
aumentan notoriamente.


Los profesionales de e-business de Price wter house Coopers combinan experiencia en control y
seguridad con un extenso conocimiento de las tecnologas emergentes. Ofrecemos a las
compaas soluciones que ayudan a proteger sus activos digitales y operaciones internas
apoyndolas en el diseo, construccin, testeo e implantacin de los controles que se requieran, a
la vez que con aplicaciones seguras (correo, servidores de web apoyados por procesos de back
office de un ERP, y tecnologas informticas seguras para procesamiento distribuido),
proporcionamos seguridad en todos los procesos de la cadena de valor del e-business.


~ 40 ~

GLOSARIO
Un modelo de negocio es un delicado proceso de ajuste, basado en la construccin de
recursos estratgicos que permiten generar ms ofertas e ingresos.

BPMN: Business Process Modeling Notacion.


~ 41 ~

BIBLIGRAFIA

Benot Demil
1

Institut d Administration des Entreprises de Lille

benoit.demil@iae.univ-lille1.fr

Xavier Lecocq
Institut d Administration des Entreprises de Lille
IESEG School of Management

Xavier.Lecocq@iae.univ-lille1.fr
Fecha de recepcin y acuse de recibo: 19 de mayo de 2009. Fecha inicio proceso de evaluacin:
19 de mayo de 2009. Fecha primera evaluacin: 2 de junio de 2009. Fecha de aceptacin: 6 de
julio de 2009.

You might also like