revista de ingenieria de software

37
INGENIERÍA DE SOFTWARE 1 INGENIERÍA DE SISTEMAS 2012 Universidad San Francisco de Asís Ingeniería de Sistemas Revista Conceptual Ing. de Software Este segundo número nos entrega información de Ingeniería de Software.

Upload: elizabeth-patricia-pommier-gallo

Post on 08-Mar-2016

280 views

Category:

Documents


7 download

DESCRIPTION

Articulos de Ingenieria de Software

TRANSCRIPT

Page 1: Revista de Ingenieria de Software

] INGENIERIacuteA DE SOFTWARE

1

INGENIERIacuteA DE SISTEMAS

2012

Universidad San Francisco de Asiacutes

Ingenieriacutea de Sistemas

Revista Conceptual Ing de Software Este segundo nuacutemero nos entrega informacioacuten de Ingenieriacutea de Software

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

2

EDITORIAL

El emprendimiento para realizar la revista es hacer nacer el intereacutes a los alumnos en el aacutembito de

la investigacioacuten daacutendoles paraacutemetros para que ellos en su futuro proyecten sus propias

investigacioacuten de temas de intereacutes personal con referencia a la carrera incentivando al resto del

alumnado para la creacioacuten de nuevos nuacutemeros de revistas en futuro

Se quiere realizar una directriz de la parte investigativa juntamente con la parte educativa

despertando a nuevas adquisiciones de saberes que nos brindaraacute a futuro estudiantes con una

visioacuten maacutes amplia en la parte de la investigacioacuten que es lo que debemos fomentar

Se felicita y conmina a los autores de los artiacuteculos a seguir por este camino que les llevaraacute a

grandes logros en su vida profesional

Tomen en cuenta siempre ldquoEL SABER ES PODERrdquo

MSc Elizabeth Pommier Gallo

] INGENIERIacuteA DE SOFTWARE

3

INGENIERIacuteA DE SISTEMAS

INDICE Tom DeMarco Ingenieria de Software y Control de

Proyectoshelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip4

Adictos al helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip6

Skinput Una pantalla taacutectil en tu pielhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip11

Mini

computadorashelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip14

Estudio de redes

GNOPhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

7

La suacuteper caacutemara que lo ve

todohelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip20

Des-

impresioacuten helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

helliphelliphelliphelliphelliphelliphelliphelliphelliphellip23

Cloud

Computinghelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

helliphelliphelliphelliphelliphelliphelliphelliphellip26

Nano- celular

solareshelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

helliphelliphelliphelliphellip29

Memorias USB en

moacuteduloshelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

hellip32

Teleacutefonos moacuteviles de ultima

generacioacutenhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

My

coachhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip37

Factores del Cableado en el Centro de Coacutemputohelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip40

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

4

Tom DeMarco

Ingenieriacutea de Software

y Control de Proyectos Joe Luis Aramayo Blanco

Ingenieriacutea de Sistemas Universidad San Francisco de Asiacutes

20 de Octubre Esq Belisario Salinas

La Paz - Bolivia jlaramayousfaeduboResumen- En este artiacuteculo

haremos algunas observaciones sobre un artiacuteculo

que escribioacute hace un tiempo atraacutes Tom DeMarco

sobre meacutetricas control de proyectos e

ingenieriacutea de software donde en general podemos

encontrar frases que claramente contradicen su

postura de hace unas deacutecadas

Palabras clave- Ingenieriacutea de Software Control de Proyectos

Meacutetricas No puedes controlar lo que no puedes medir Desarrollo

de Software

I INTRODUCCIOacuteN

Todos comprendemos que las meacutetricas de software cuestan

dinero y tiempo y que deben ser usadas con moderacioacuten

El desarrollo de software es inherentemente diferente de las

ciencias naturales tales como la fiacutesica por lo que sus meacutetricas

son mucho menos precisas para capturar lo que deben describir

La frase ―No puedes controlar lo que no puedes medir lleva

impliacutecita que el control es un aspecto importante quizaacutes el maacutes

importante de cualquier proyecto de software Pero no lo es

Fig 1 Ejemplo de ―No puedes controlar lo que no puedes medir

Muchos proyectos se han realizado sin demasiado control pero

han generado productos maravillosos tales como Google Earth o

la Wikipedia

Esto nos lleva a la desagradable conclusioacuten que el control

estricto es algo que importa mucho en proyectos relativamente

inuacutetiles y mucho menos en proyectos uacutetiles

iquestEstoy diciendo que estaacute bien ejecutar proyecto sin control o

con un control relativamente menor Casi Estoy sugiriendo que

deberiacuteamos seleccionar primero a los proyectos cuyo control

preciso no importe demasiado

En los uacuteltimos 40 antildeos nos hemos torturado por nuestra

ineptitud en acabar proyectos a tiempo y con el presupuesto

previsto Pero como sugeriacute antes no deberiacutea haber sido el

objetivo supremo

El objetivo maacutes importante es la transformacioacuten crear software

que cambie el mundo o que transforme una empresa o la forma

en que hace negocios

El desarrollo de software es y seraacute siempre algo experimental

La construccioacuten real de software no es necesariamente

experimental pero siacute lo es su concepcioacuten Alliacute deberiacuteamos

enfocar nuestros esfuerzos Alliacute es donde deberiacuteamos haberlo

hecho siempre Estaacute claro que es mucho maacutes faacutecil criticar un

artiacuteculo que hacer uno nuevo pero dada la trascendencia que estaacute

teniendo este escrito en particular voy a expresar mi opinioacuten

Creo que DeMarco sabe venderse Creo que cuando era maacutes

joven se supo posicionar como guruacute de la Ingenieriacutea de Software

y el control de proyectos y creo que ahora estaacute en la edad en que

puede decir que parte de lo que dijo estaacute mal e igual quedar bien

porque su posicioacuten coincide con la de muchos guruacutees actuales

Sin embargo me parece que el artiacuteculo estaacute lleno de frases

impactantes pero que no salen de un anaacutelisis profundo Me voy

a explayar

] INGENIERIacuteA DE SOFTWARE

5

INGENIERIacuteA DE SISTEMAS

Fig 3 Referencia a las Meacutetricas cuestan dinero

Que las meacutetricas cuestan dinero en cierto sentido es cierto

Tambieacuten es cierto que ahora es mucho maacutes faacutecil llevar algunas

meacutetricas que hace unos antildeos dado que ahora utilizamos

herramientas que las generan de manera automaacutetica Podriacuteamos

decir que en el presente es mucho menos costoso tener la misma

informacioacuten que hace unas deacutecadas DeMarco consideraba

importante

Que el desarrollo de software es inherentemente diferente de las

ciencias naturales como la fiacutesica tambieacuten es verdad Lo que no

se termina de entender es por queacute nos comparamos con las

Fiacutesicas y no con las Ingenieriacuteas

El disentildeo de una planta de gas en situaciones extremas tambieacuten

es uacutenico y con resultados impredecibles la construccioacuten de una

torre en Dubai alguacuten nuevo prototipo de avioacuten un nuevo

celular etc tambieacuten son inherentemente diferentes de las

ciencias naturales y sin embargo cuentan con presupuestos

meacutetricas de avance de defectos etc O sea es una verdad pero

que no aplica a la conclusioacuten a la que llega

Donde puedo estar maacutes de acuerdo es cuando hablamos del

control de proyectos de software aunque maacutes adelante voy a

definir mi posicioacuten En este caso en mi opinioacuten tambieacuten escribe

algo cierto ―El control no es lo maacutes importante de un proyecto

de software pero cuando toma ejemplos elije dos proyectos en

los que las desviaciones admitidas eran del orden de entre 100

y 1000 ya que o el objetivo era otro o los resultados

esperados eran mucho mayores a una desviacioacuten de 500 en

costos

Fig 1 Referencia de Google Earth

Ambos proyectos (Wikipedia que surge de NuPedia) y

GoogleEarth fueron proyectos en los que hubo inversores

poniendo su dinero durante antildeos sin ver resultados Se puede

buscar en Internet acerca de la historia de NuPedia antecesora

de Wikipedia y a Jimi Wales explicando que despueacutes de haber

gastado 250000 doacutelares solo habiacutea logrado 16 artiacuteculos en su

nueva Enciclopedia Lo mismo pasoacute con GoogleEarth

anteriormente en manos de KeyHole con inversores como Sony

y otros Fondos de Capital En este tipo de proyectos se pueden

asumir peacuterdidas durante antildeos hasta lograr un producto que

puede romper con el mercado o tambieacuten se puede perder todo lo

invertido Se trata de proyectos de inversioacuten de alto riesgo y

determinan proyectos de desarrollo que claramente son poco

comunes

Fig 3 Referencia de WIKIPEDIA

Al menos en mi entorno la mayoriacutea de los proyectos son

internos o externos (para un cliente) Los proyectos externos

tienen presupuestos o se crean luego de llamados a licitacioacuten

Es decir costo fijo tiempo fijo alcance fijo maacutes menos alguna

que otra variacioacuten Es claro que si no contamos con un miacutenimo

de control en estos proyectos la empresa no sabe si estaacute siendo

rentable o no Tampoco sabe si el producto que es desarrollado

le puede traer problemas a futuro por alguna cuestioacuten de calidad

No poner un miacutenimo eacutenfasis en el control de estos proyectos

puede llevar a la empresa a la quiebra sin que esta sea

consciente salvo por los nuacutemeros rojos que aparecen en sus

balances Por lo tanto explicar que un proyecto de software no

hace falta controlarlo mucho y poner como ejemplo dos casos

muy poco relevantes no parece muy serio

Por uacuteltimo cuando dice el desarrollo de software es y siempre

seraacute algo experimental vuelve a caer en las afirmaciones de las

que en 40 antildeos (en caso de estar vivo claro) podriacutea volver a

arrepentirse Es cierto que todaviacutea estamos en una etapa inicial

de la que llamamos ingenieriacutea de software Es cierto que no es

faacutecil gestionar proyectos de software por sus caracteriacutesticas

intriacutensecas (intangibilidad maleabilidad etc) pero cada

ingenieriacutea tiene sus problemas particulares y cada una supo

evolucionar a lo que son ahora Seguramente la ingenieriacutea de

Software con el tiempo encontraraacute su camino

Ahora bien aparte de criticar un poco a DeMarco (que era lo

maacutes faacutecil) vamos a retomar la frase

―No puedes controlar lo que no puedes medir lleva impliacutecita

que el control es un aspecto importante quizaacutes el maacutes

importante de cualquier proyecto de software Pero no lo es

En cierta medida explicaba arriba estoy de acuerdo con esta

afirmacioacuten Un buen proyecto de software con mucho control

pero malos programadores lleva al fracaso inevitablemente (lo

he vivido personalmente y por experiencias de terceros) Por el

contrario un buen equipo de programadores (pero de los

buenos) puede terminar el proyecto maacutes complejo haciendo que

ninguacuten indicador tenga sentido ya que la diferencia de calidad

del producto y la eficiencia del trabajo de este tipo de gente

multiplica por 10 o por 100 la de un equipo estaacutendar

Este tipo de gente piensa las cosas de manera diferente tiene la

calidad incorporada como meacutetodo de trabajo y la capacidad de

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

6

generar soluciones a las distintas situaciones hace que el

esfuerzo estimado pueda acortarse en oacuterdenes de magnitud

Estuve dentro equipos de este estilo y lo que se puede lograr en

un ambiente hiperproductivo difiacutecilmente se logre en una

empresa de desarrollo comuacuten y corriente El problema es que la

gente que tiene estas cualidades escasea y el mercado estaacute lleno

de trabajadores ―estaacutendar que requieren definiciones procesos

un aacuterea de calidad que verifique sus entregables y un PM que le

indique queacute es lo que tiene que hacer De a poco estimo yo la

industria iraacute decantando por rendimiento aquellos profesionales

que hacen la diferencia y los estaacutendares de productividad

calidad base teoacuterica requerida para un puesto iraacuten aumentando

Fue pasando durante estas deacutecadas y seguiraacute pasando en el

futuro

II CONCLUSIONES

En siacutentesis y para terminar con este artiacuteculo medir y controlar

importa importa maacutes en las empresas con gente estaacutendar

importa maacutes en las empresas con proyectos estaacutendar y siempre

que estemos dentro de una empresa algo vamos a tener que

medir pero el control no es condicioacuten necesaria ni menos

suficiente para lograr un proyecto exitoso No es algo

fundamental como tener un buen equipo de programadores

como tener gente que sepa interpretar lo que se pide y

transformarlo de manera natural en la solucioacuten que el cliente

necesita Por eso cuando veo gente que se preocupa por

aumentar el control o aumentar los procesos creo que estaacute

perdiendo el foco cuando lo que deberiacutea buscar es coacutemo hacer

para encontrar y hacer rendir a los verdaderos profesionales del

software

III REFERENCIAS

[1] Software Engenieering an idea whose time has come and gone por Tom

DeMarco [2] CyS Ingenieria de Software El blog del aacuterea de Ingenieriacutea de Software de

CyS Informaacutetica SA

] INGENIERIacuteA DE SOFTWARE

7

INGENIERIacuteA DE SISTEMAS

EXTREME PROGRAMMING PARA DESARROLLO

DE SOFTWARE

Erwin Adaacuten Choque Ulloa Ingenieriacutea de Sistemas

Universidad San Francisco de Asiacutes

Plaza Avaroa esq Belisario Salinas

La paz ndash Bolivia adan_ekinghotmailcom

Resumen

En este articulo se describiraacute algunas de las metodologiacuteas

agiles de desarrollo de software puesto que para asegurar el

eacutexito durante el desarrollo de un software es importante

saber la metodologiacutea de desarrollo la cual nos provee una

guiacutea para la correcta aplicacioacuten y desarrollo de Software

La metodologiacutea Extreme Programming XP que es una de las

metodologiacuteas aacutegiles maacutes extendidas y populares ademaacutes es

considerada como una metodologiacutea posmoderna donde

grandes capacidades se generan a traveacutes de procesos

emergentes

Palabras claves Extreme Programming metodologiacutea software

usuario

1 INTRODUCCION

El esquema tradicional para abordar el desarrollo de

software ha demostrado ser efectivo y necesario en

proyectos de gran tamantildeo respecto a tiempo y recursos

Sin embargo este enfoque no resulta ser el maacutes adecuado

para muchos de los proyectos actuales donde el entorno

del sistema es muy cambiante y en donde se exige

reducir draacutesticamente los tiempos de desarrollo pero

manteniendo una alta calidad Ante este problema las

metodologiacuteas aacutegiles son una posible respuesta para llenar

ese vaciacuteo metodoloacutegico Orientadas para proyectos

pequentildeos las metodologiacuteas aacutegiles constituyen una

solucioacuten

A continuacioacuten se describiraacute cada una de las

metodologiacuteas de desarrollo de software

2 EXTREME PROGRAMMING XP

La metodologiacutea de desarrollo de software XP es la

primera metodologiacutea aacutegil y la que le dio conciencia al

movimiento actual de metodologiacuteas aacutegiles Kent Beck el

padre de la metodologiacutea XP se basa en realimentacioacuten

continua entre el cliente y el equipo de desarrollo

comunicacioacuten fluida entre todos los participantes

simplicidad en las soluciones implementadas y facilidad

para enfrentar los cambios XP se define como

especialmente adecuada para proyectos con requisitos

imprecisos y muy cambiantes y donde existe un alto

riesgo teacutecnico Ahora se describiraacute las caracteriacutesticas

esenciales del Extreme Programming

21 LAS HISTORIAS DEL USUARIO

La red Las historias del usuario es la teacutecnica utilizada

para especificar los requisitos de software son tarjetas de

papel donde el cliente especifica de manera simplificada

las caracteriacutesticas que el sistema debe poseer ya sean

requisitos funcionales o requisitos no funcionales Se

caracteriza por ser dinaacutemica y flexible cada historia de

usuario debe ser comprensible y delimitada para que los

programadores puedan implementarla en pocas semanas

22 ROLES XP

Seguacuten Kent Beck los roles son

Programador El programador se encarga de escribir las

pruebas unitarias y tambieacuten estaacute encargado de producir el

coacutedigo del sistema

Cliente Encargado de escribir las historias de usuario y

los requisitos funcionales y selecciona las historias por

prioridad de conveniencia al negocio

Encargado de pruebas Encargado de ayudar al cliente a

escribir las pruebas funcionales ademaacutes de ejecutar las

pruebas constantemente encargado de de las

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

8

herramientas de soporte de pruebas como tambieacuten

difundir los resultados de dicha prueba

Encargado de seguimiento Es el encargado de la

realimentacioacuten al equipo y realiza el seguimiento del

proceso de cada iteracioacuten

Entrenador Es el encargado de prever guiacuteas al equipo

basadas en XP y de seguir el proceso correctamente

Consultor Es el que posee un conocimiento especifico

en alguacuten tema necesario para el proyecto para solucionar

problemas

Gestor Es la interaccioacuten entre clientes y programadores

ayudando a trabajar de forma adecuada y de esta manera

coordinar de forma correcta

23 PROCESO XP

El ciclo de desarrollo XP consiste en

El cliente define el valor del negocio a implementar

El programador estima el esfuerzo necesario para su

implementacioacuten

El cliente selecciona que construir de acuerdo con sus

propiedades y las restricciones del tiempo

El programador construye ese valor de negocio

Vuelve al principio

En todas las iteraciones de este ciclo tanto el cliente como

el programador aprenden No se debe presionar al

programador a realizar maacutes trabajo que el estimado ya

que se perderaacute calidad en el software o no se cumpliraacuten

los plazos

El ciclo de vida ideal de XP consiste de seis fases

Exploracioacuten

Planificacioacuten de la Entrega (Release)

Iteraciones

Produccioacuten

Mantenimiento y Muerte del Proyecto

24 PRACTICAS XP

Las siguientes praacutecticas ayudan al desarrollo de software

El juego de la planificacioacuten Hay una comunicacioacuten

frecuente el cliente y los programadores El equipo

teacutecnico realiza una estimacioacuten del esfuerzo requerido para

la implementacioacuten de las historias de usuario y los

clientes deciden sobre el aacutembito y el tiempo de entregas y

de cada iteracioacuten

Entregas pequentildeas Producir raacutepidamente versiones del

sistema que sean operativas aunque no cuenten con toda

la funcionalidad del sistema Esta versioacuten ya constituye

un resultado de valor para el negocio Una entrega no

deberiacutea tardar maacutes de tres meses

Metaacutefora El sistema es definido mediante un conjunto

de metaacuteforas compartidas por el cliente y el equipo de

desarrollo Una metaacutefora es una historia compartida que

describe como deberiacutea funcionar el sistema

Disentildeo simple Se disentildea la solucioacuten maacutes simple que

pueda funcionar y ser implementada en un determinado

momento del proyecto

Pruebas La produccioacuten de coacutedigo estaacute dirigida para las

pruebas unitarias Estas son establecidas por el cliente

antes de escribirse el coacutedigo y son ejecutadas

continuamente ante cada modificacioacuten del sistema

Pruebas Es una actividad constante de reestructuracioacuten

del coacutedigo con el objetivo de remover duplicacioacuten de

coacutedigo mejorar su legibilidad simplificarlo y hacerlo

maacutes flexible para facilitar los cambios Se mejora la

estructura interna del coacutedigo sin alterar su

comportamiento externo

Programacioacuten en parejas Toda la produccioacuten del

coacutedigo debe realizarse con trabajo en parejas de

programadores Para tener ventajas como menor tasa de

errores mejor disentildeo etc

Propiedad colectiva del coacutedigo Cualquier programador

puede cambiar cualquier parte del coacutedigo en cualquier

instante

Integracioacuten continua Cada pieza del coacutedigo es

integrada en el sistema una vez que este listaasi el

sistema puede ser integrado y construido varias veces en

un mismo diacutea

40 horas por semana Se debe trabajar un maacuteximo de 40

horas por semana no se trabajan horas extras en dos

semanas seguidas Si esto ocurre estaacute existe un problema

porque el trabajo extra desmotiva al equipo

Cliente in-situ El cliente tiene que estar presente y

disponible todo el tiempo para el equipo este es uno de

los principales factores de eacutexito para el proyecto XP Y

asiacute guiar y disipar cualquier duda de los programadores

donde la comunicacioacuten es maacutes efectiva que la escrita

Estaacutendares de programacioacuten XP enfatiza que la

comunicacioacuten de los programadores es a traveacutes del

coacutedigo por lo que es importante que se sigan estaacutendares

de programacioacuten para mantener el coacutedigo legible

3 CONCLUCIONES

] INGENIERIacuteA DE SOFTWARE

9

INGENIERIacuteA DE SISTEMAS

Las metodologiacuteas aacutegiles ofrecen una solucioacuten casi a

medida para una gran cantidad de proyectos

La metodologiacutea XP es una de las metodologiacuteas aacutegiles maacutes

extendidas y populares ademaacutes es considerada como una

metodologiacutea posmoderna cuyas grandes capacidades se

generan a traveacutes de procesos emergentes

4 REFERENCIAS

httpwwwmetodologiasSoftcomdesarrolloagil

httpwwwwikipediacommetodologiaXP

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

10

Desarrollo de Scrum

Sergio J Guzmaacuten L Ingenieriacutea de Sistemas

Universidad San Francisco de Asiacutes

20 Octubre Esq Belisario Salinas

La Paz - Bolivia

sjguzmanusfaedubo

Resumenmdash Scrum es una metodologiacutea aacutegil de desarrollo de

proyectos que toma su nombre y principios de los estudios

realizados sobre nuevas praacutecticas de produccioacuten por

Hirotaka Takeuchi e Ikujijo Nonaka a mediados de los 80

En 1996 se definioacute por primera vez un patroacuten para aplicar

esos principios de desarrollo en ldquocampos de scrumrdquo al

software

Palabras clave mdash scrum metodologiacutea patroacuten software

sprint rol

I Que es Scrum

Scrum es una metodologiacutea aacutegil de desarrollo de proyectos

que toma su nombre y principios de los estudios

realizados sobre nuevas praacutecticas de produccioacuten por

Hirotaka Takeuchi e Ikujijo Nonaka a mediados de los 80

En 1996 se definioacute por primera vez un patroacuten para aplicar

esos principios de desarrollo en ―campos de scrum al

software

Esta fue la primera definicioacuten de un patroacuten Scrum aplicado

al software disentildeada por Jeff Sutherland y Ken Schwaber y

presentada en Object-Oriented Programming Systems

Languages amp Applications OOPSLA en 1996

II iquestCoacutemo incorporarla

La competitividad del mercado de desarrollo de Software y

la necesidad de los clientes de reducir el tiempo de

mercado obligan a las organizaciones de desarrollo de

software a ser agresivas en sus calendarios de entrega Esto

ha hecho que hayan surgido metodologiacuteas para la gestioacuten y

desarrollo de software basadas en un proceso iterativo e

incremental Su estructura estaacute basada en corto tiempo los

cuales son iteraciones de 1 a 4 semanas Scrum se usa en

proyectos de entorno complejos donde se desea obtener

resultados raacutepidos y la productividad es lo maacutes importante

En los proyectos basados en Scrum se consideran tres

roles

Duentildeo del producto Es quien determina las propiedades de

los entregables

Maestro de Scrum Administra y facilita la ejecucioacuten del

proceso

Equipo de Trabajo Trabajan en conjunto para entregar

resultados en cada sprint

Fig 1 El flujo de Scrum

Como se puede observar en medio de los participantes del

proceso no quedan claras las responsabilidades del

arquitecto de software Sin embargo como comenta

Charlie Alfred ―la arquitectura es al aceite y el filtro que

lubrica adecuadamente a Scrum

Fig 2 El flujo de Scrum

] INGENIERIacuteA DE SOFTWARE

11

INGENIERIacuteA DE SISTEMAS

Si se compara el rol del arquitecto de edificaciones con el

del arquitecto de software se puede observar que ambos

modelan las construcciones a un alto nivel de abstraccioacuten

proveen posibles soluciones mejoran la comunicacioacuten con

los miembros del equipo de construccioacuten a traveacutes de

modelos visualizan las generalidades del problema

definen los roles y las interacciones entre los componentes

de construccioacuten entre otras tareas Al igual que es

imposible pensar que un rascacielos puede ser construido

sin una arquitectura soacutelida es imposible pensar que

productos de software empresariales puedan ser

implementados sin una arquitectura bien pensada

Seguacuten Bass Clements y Kasman ―La arquitectura de

software de un programa o sistema informaacutetico es la

estructura o estructuras del sistema que incluyen elementos

de software las propiedades externamente visibles de esos

elementos y las relaciones entre ellos Esta definicioacuten nos

lleva a concluir que la arquitectura de software garantiza el

buen desarrollo del software y a tener un sistema que

cumpla con los requerimientos funcionales y no

funcionales del cliente Ademaacutes la arquitectura es clave en

la reutilizacioacuten de artefactos de software en sistemas de

liacutenea de productos de software

Viendo la importancia de la arquitectura en el desarrollo

del software en eacuteste artiacuteculo se presenta una propuesta para

gestionar la arquitectura de Software en Scrum En el

primer capiacutetulo se trata el tema de la localizacioacuten de la

arquitectura de software en el ciclo de desarrollo de Scrum

en el segundo capiacutetulo se describen las tareas del arquitecto

de software en Scrum finalmente se presentan las

conclusiones y el trabajo futuro

III Arquitectura de Software en el ciclo de desarrollo de

Scrum

La idea fundamental de la presente propuesta es adicionar

un sprint inicial llamado ―Sprint 0Prime al inicio del ciclo de

desarrollo El objetivo principal del arquitecto en el Sprint

0 es analizar y disentildear la generalidad del sistema que

satisfaga los requisitos y sea entendible por los miembros

del equipo desde sus diferentes puntos de vista durante el

desarrollo Un punto clave es reutilizar artefactos de

software creados a partir de la arquitectura para ser maacutes

aacutegiles en el desarrollo de productos especiacuteficos

El Sprint 0 comprende tres fases que fueron tomadas del

ciclo de vida de entregas evolutivas En el Sprint 0 se

construye la arquitectura de forma iterativa mediante un

anaacutelisis preliminar de los conductores arquitectoacutenicos

(requisitos funcionales de calidad y del negocio) y de un

estudio de factibilidad del proyecto No se necesita tener

todos los requisitos claros para comenzar la fase de disentildeo

arquitectoacutenico

Para determinar los conductores arquitectoacutenicos se debe

identificar los objetivos del negocio de maacutes alta prioridad

que son pocos Estos objetivos del negocio se convierten en

los escenarios de calidad o casos de uso De esta lista se

deben escoger los que tendraacuten un mayor impacto sobre la

arquitectura El disentildeo arquitectoacutenico puede comenzar una

vez que se encuentran definidos los conductores

arquitectoacutenicos El proceso de anaacutelisis de requisitos seraacute

entonces influenciado por las preguntas generadas durante

el disentildeo arquitectoacutenico

El resultado del Srpint 0 es un documento inicial que

explica la arquitectura El documento puede basarse en los

pasos definidos por el meacutetodo ADD (Attrbute Driver

Design) Este meacutetodo ha sido probado exitosamente en

proyectos anteriores Con ADD se puede definir una

arquitectura de software mediante un proceso de

descomposicioacuten basado en los atributos de calidad de

Software

El documento inicial de la arquitectura se debe avaluar con

el fin de saber si la arquitectura cumple con los requisitos

de calidad Para realizar esta evaluacioacuten se propone el

meacutetodo ATAM (Architecture Tradeoff Analysis Method)

El ATAM revela cuaacuten bien una arquitectura satisface los

objetivos particulares de calidad y provee una

aproximacioacuten de coacutemo los objetivos de calidad interactuacutean

Si la evaluacioacuten de la arquitectura se encuentra que se

deben realizar cambios a la misma entonces eacutesta se debe

refinar hasta llegar a tener como resultado del Sprint 0 el

documento puacuteblico de la arquitectura junto con el sistema

esqueleto Finalmente la arquitectura creada en el Sprint 0

beneficiaraacute el desarrollo en los siguientes sprints

IV Rol del arquitecto de Software en Scrum

El rol y actividades del arquitecto de software cambian de

enfoque dependiendo de si se estaacute en el Sprint 0 o en

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

12

sprints subsecuentes

Fig 3 La Comunicacioacuten

Sprint 0 En sistemas complejos una persona difiacutecilmente

puede cubrir con amplitud teacutecnica las decisiones

arquitectoacutenicas y dar credibilidad a la arquitectura de

software Esto quiere decir que la participacioacuten del equipo

es de vital importancia para la creacioacuten y el mantenimiento

de la arquitectura Un equipo de arquitectos de software

que se aiacutesle del equipo de Scrum puede producir una

arquitectura que corra el riesgo de ser rechazada Es por

esto que recomendamos que el arquitecto o los arquitectos

se software sean miembros del equipo de Scrum Una de

las actividades que se debe realizar en equipo es la

evaluacioacuten de la arquitectura Especiacuteficamente en el

meacutetodo ATAM se requiere la participacioacuten mutua de tres

equipos que trabajan en conjunto con los arquitectos de

software el de evaluacioacuten el de tomadores de decisiones

del proyecto y el de los involucrados en la arquitectura

Sprints subsecuentes El arquitecto de software asegura que

el equipo de Scrum entienda el enfoque y los retos

arquitectoacutenicos maacutes importantes en casa sprint Los

equipos de Scrum realizan construcciones cortas guiados

por las estrategias de la arquitectura A continuacioacuten se

nombran algunas de las responsabilidades del arquitecto de

software desde el Sprint 1 en adelante

El duentildeo del producto y el maestro del Scrum trabajan con

el arquitecto para priorizar los requisitos a implementar en

cada iteracioacuten

El arquitecto comunica las decisiones y facilita las

conversaciones arquitectoacutenicas de distintos puntos de vista

en cada sprint

El arquitecto asegura que haya conformidad entre las

entregas en cada sprint y la arquitectura

El arquitecto responde preguntas y da orientacioacuten

arquitectoacutenica cuando sea necesario

Junto con el maestro de Scrum coordina a los miembros

del equipo para adaptarse a la arquitectura previa

El arquitecto junto con el duentildeo del producto y los

miembros del equipo preparan el Product Backlog

V Conclusioacuten

En el presente artiacuteculo ofrecimos una propuesta para incluir

la arquitectura de software en Scrum En el Sprint 0 se

realizan las actividades concernientes al anaacutelisis y disentildeo

de la arquitectura de software y el sistema esqueleto En

los siguientes sprints el arquitecto de software se asegura

de que la implementacioacuten cumpla con la arquitectura

REFERENCIAS

[3] httpwwwsafecreativeorgwork

[4] Hirotaka Takeuchi es decano de la Graduate School of International

Corporate Strategy en la Universidad Hitotsubashi en Tokio y fue profesor visitante en la Escuela de Negocios Harvard entre 1989 y 1990

[5] Ikujiro NonakaNo soy un guruacute porque me falta carisma

] INGENIERIacuteA DE SOFTWARE

13

INGENIERIacuteA DE SISTEMAS

El futuro de la ingenieriacutea de software Luis E Aguirre

Ingenieriacutea de Sistemas

Universidad San Francisco de Asiacutes

20 de Octubre esq Belisario Salinas

La Paz - Bolivia leaguirreusfaedubo

Resumen El disentildeo de programas a partir de informacioacuten binaria

significoacute un paso sustantivo para la industria desarrolladora de

software Desde ese hallazgo ocurrido en la deacutecada de los

cincuenta hasta hoy el crecimiento de metodologiacuteas para su

desarrollo ha subido notablemente en complejidad Sin embargo

los ciacuterculos viciosos que acusa hoy la confeccioacuten de programas

informaacuteticos impiden conceptualizar el objeto a un nivel

superior de abstraccioacuten tal y como lo exige el avance tecnoloacutegico

y los procesos de negocios

Palabras clave mdash futuro software ingenieriacutea programador y

desarrollo

I Introduccioacuten

La calidad de los sistemas informaacuteticos satisfaccioacuten de sus

usuarios y clientes son temas ampliamente conocidos

recurrentes y de constante preocupacioacuten por parte de los

practicantes de la Ingenieriacutea de software

Esta joven y dinaacutemica ingenieriacutea siempre estaacute en busca de

mejoras en el desarrollo de sistemas aumento de

productividad del ingeniero de software mayor control del

proceso de desarrollo establecimiento de nuevos meacutetodos de

desarrollo

Fig 1 Primeros programas computacionales en formato de tarjeta perforada

Estos elementos combinados y aplicados de buena forma

logran un buen proceso de desarrollo y en definitiva un buen

producto

Identificar los pasos que ha recorrido esta ingenieriacutea analizar

su contexto actual y finalmente proyectar hacia doacutende se

dirige es el pilar de este artiacuteculo

II iquestSe aplica actualmente la ingenieriacutea del software

La investigacioacuten y el desarrollo de teacutecnicas y meacuteto

dos de ingenieriacutea del software son constantes y suelen suponer

interesantes avances en la resolucioacuten de problemas de

desarrollo de software Sin embargo es habitual que en la

praacutectica diaria profesional no se incluya praacutecticamente

ninguna de las recomendaciones maacutes elementales de la

ingenieriacutea del software En efecto es habitual que el

desarrollo de software se parezca maacutes al descontrol del cuento

de laquosi los programadores fueran albantildeilesraquo ([Novatica

1996]) que a una idiacutelica y bien organizada factoriacutea de

software (concepto de gran vigencia a finales de los ochenta

[Nunamaker et al 1988])

De hecho las evaluaciones de los procesos productivos de

software realizadas a raiacutez de los modelo de procesos de

software (por ejemplo con CMM [Paulk et al 1993])

confirman que el desarrollo de software suele estar

baacutesicamente en estado caoacutetico

Y no soacutelo en como uno podriacutea pensar pequentildeas

organizaciones de un paiacutes mediterraacuteneo como el nuestro sino

en tambieacuten en las empresas adjudicatarias de interesantes

contratos de defensa de paiacuteses laquoavanzadosraquo como EEUU o

Japoacuten Si bien estos modelos de evaluacioacuten auacuten acumulan

distintas acusaciones de rigidez o falta de contraste empiacuterico

los resultados obtenidos en sus evaluaciones resultan

consistentes con la sensacioacuten de constante laquoapagafuegosraquo que

suelen sufrir los profesionales del software Tambieacuten suelen

revelar la praacutectica despreocupacioacuten de los responsables de las

organizaciones de software por la mejora de la calidad de sus

procesos de trabajo o de sus productos bien sea por contar con

una situacioacuten interna de empresa poco propicia porque el

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

14

ambiente del mercado no fomenta la preocupacioacuten por estos

temas o bien por su poco intereacutes real en la buacutesqueda de la

calidad

III La actualidad

La gran mayoriacutea de los sistemas de software creados hoy en

diacutea son los llamados sistemas corporativos es decir son

orientados a formar una parte importante de los negocios de

las grandes empresas

Continuando en nuestro contexto se identifica un nuevo

enfoque del problema de desarrollo el apoyo en la

sincronizacioacuten de los procesos de negocio estructuras

complejas de informacioacuten manejada por el negocio todo esto

entrelazado por restricciones dadas por las reglas del negocio

La tecnologiacutea actual por otro lado ha alejado maacutes todaviacutea los

ingenieros de las maacutequinas sistemas operativos incluso de

las tareas de programacioacuten

El enfoque de la mayoriacutea de los equipos de desarrollo e

ingenieros participes en proyectos sigue siendo con un bajo

nivel de abstraccioacuten cerca de la codificacioacuten Se tiende a

pensar en la base de datos a utilizar establecer la navegacioacuten

de las paacuteginas programar los protocolos de comunicacioacuten etc

Esto lleva a utilizar las tareas de programacioacuten y de pruebas

para validar el entendimiento y cumplimiento de la

funcionalidad de los sistemas

Lo anteriormente expuesto muestra un problema

metodoloacutegico consecuencia de un desfase entre el enfoque

teoacuterico oacuteptimo (anaacutelisis de negocio) y el enfoque praacutectico real

(programacioacuten y pruebas) en los proyectos de hoy En otras

palabras la metodologiacutea actualmente usada estaacute atrasada con

respecto al avance tecnoloacutegico

Desarrollando maacutes esta idea se identifican algunos

problemas concretos de las metodologiacuteas

Ellas no obligan a sus ejecutores a respetar todas las

normas y los procedimientos establecidos especialmente

en las etapas tempranas del proyecto Es muy faacutecil y

tentador ―saltar una o maacutes de estas etapas uno o maacutes

documentos o modelos pasando directamente a

implementacioacuten produccioacuten y posterior correccioacuten de los

sistemas desarrollados

Control de calidad del producto final La codificacioacuten y

complejidad del programa es demasiada para ser revisada

y verificada fehacientemente Por otro lado los coacutedigos

fuentes y los ejecutables actualmente son los uacutenicos

entregables eficientemente verificables

Estos dos problemas al parecer forman una situacioacuten

contradictoria la metodologiacutea tradicional no permite validar

eficientemente la calidad de los sistemas antes de llegar al

coacutedigo fuente y por otro lado tampoco permite llegar

eficientemente a coacutedigos fuentes de calidad

IV Futuro

La salida de este ―ciacuterculo vicioso que se propone es

bastante natural analizar la situacioacuten actual de la ingenieriacutea

de software en la luz de sus tendencias histoacutericas

La primera de ellas relacionada con los problemas que

resuelven los sistemas obviamente presente y muy utilizada

en nuestra realidad los sistemas de hoy no soacutelo resuelven los

problemas del mundo real sino que estaacuten fuertemente influen-

ciando el desarrollo del mundo real

Fig2 Modela

El enfoque de los ingenieros desde hace unos antildeos no se ha

movido significativamente por el camino del aumento de

abstraccioacuten establecido histoacutericamente Se han hecho ciertos

avances en temas puntuales (como arquitecturas de

componentes patrones de disentildeo nuevos lenguajes de

programacioacuten etc) pero conceptualmente

metodoloacutegicamente la tarea de programacioacuten sigue siendo

ejecutada de la misma forma escribiendo coacutedigos fuentes en

forma de los programas textuales

Eacuteste es justamente el ―atraso metodoloacutegico que se

mencionoacute Para disminuir la brecha entre las tendencias

histoacutericas es necesario ajustar la metodologiacutea en teacuterminos de

aumentar la abstraccioacuten del enfoque de los ingenieros de

software y acercarlo a la abstraccioacuten del problema

El aumento de la abstraccioacuten del proceso de desarrollo del

software hace pensar que la proacutexima generacioacuten de meacutetodos

de desarrollo se perfila en un conceptualmente nuevo con-

] INGENIERIacuteA DE SOFTWARE

15

INGENIERIacuteA DE SISTEMAS

junto de herramientas que permitan aumentar en un mayor

grado al actual la abstraccioacuten escondiendo los detalles de maacutes

bajo nivel

Fig3 Probable modelo a futuro

Las nuevas herramientas permitiraacuten ―programar en nivel

de anaacutelisis generando coacutedigos en un lenguaje de

programacioacuten tradicional de forma automaacutetica tal como hoy

los compiladores generan el lenguaje maacutequina a partir del

coacutedigo fuente Nuevos ―lenguajes de programacioacuten

naturalmente seriacutean visuales y se pareceriacutean a las

especificaciones de software en uno de los lenguajes de

modelamiento por ejemplo UML

V Conclusioacuten

Es muy probable que estemos proacuteximos a ver un nuevo

paso evolutivo en la ingenieriacutea de software Tan grande como

el invento de lenguajes de alto nivel o anaacutelisis y disentildeo

orientado a objetos Una nueva generacioacuten que absorberaacute a la

actual automatizando la mayoriacutea de las buenas praacutecticas

usadas actualmente

Una pregunta natural es si una maacutequina puede llegar a

generar programas tan buenos como los hechos por un pro-

gramador experto En vez de ―romper la cabeza con esta

pregunta ahora quizaacutes seriacutea suficiente recordarse otra vez de

la historia Los primeros compiladores de ninguna generacioacuten

alcanzaban de inmediato lo deseable y oacuteptimo Sin embargo

con el paso del tiempo apoyados en la experiencia de los

ingenieros y en el avance tecnoloacutegico se mejoraban hasta el

nivel de superar significativamente las generaciones

anteriores

Es poco factible que hoy en diacutea alguien cuestione la calidad

de los compiladores de por ejemplo Java y la calidad del

coacutedigo de maacutequina generado por ellos

VI Referencias [6] Website [Online]

httpwwwenterpriseanalystnetdownloadmda_informaticap

df

[7] httpwwwslidesharenetamrrochafuturo-del-software-impacto-en-las-organizaciones-y-en-los-profesionales

[8] httpwwwdcubaareventseci2008conferenciasIngSoftHexacta

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

16

Ingenieriacutea de Software para

Desarrolladores de juegos Huascar Huanca Orozco

Ingenieria de Sistemas San francisco de Asis

Av20 de Octubre esq Belisario Salinas

hhuncausfaedubo

ResumenmdashEn este artiacuteculo veremos una lo que es ldquoIS para

Desarrolladores de juegosrdquo si crees que un juego es facil pues

te equivocas en este articulo mostramos el uso de la IS en la

cracion de juegos que metodos utilizan y la complejidad que

representa para el equipo de desarrollo

1) Palabras clave mdash UMLRequisitosjuegoequipo de trabajo motor del juego

IV INTRODUCCIOacuteN

En la ingenieriacutea de software (IS) el desarrollo

de videojuegos es uacutenico pero similares a los

esfuerzos de software Es la uacutenica que combina el

trabajo de los equipos que cubren muacuteltiples

disciplinas (arte muacutesica actuacioacuten

programacioacuten etc) y que el juego de

acoplamiento que se busca a traveacutes del uso de

prototipos e iteraciones Con ello el desarrollo

del juego se enfrenta a desafiacuteos que pueden ser

abordadas mediante las praacutecticas tradicionales de

SE La industria tiene que adoptar buenas

praacutecticas de SE para sus distintas necesidades

tales como la gestioacuten de activos multimedia y

encontrar el fundamento en el juego La industria

debe asumir los retos por la evolucioacuten de los

meacutetodos de SE para satisfacer sus necesidades

Este trabajo investiga estos desafiacuteos y praacutecticas

de ingenieriacutea destaca para mitigar estos

problemas

V ENTRA EN EL JUEGO

Lo que la IS para desarrolladores de juegos hace

es

Mezcla de ingenieriacutea y el arte El software como

una praacutectica como una preocupacioacuten profesional

Meacutetodos para aprender a disentildear y fabricar un

producto El desarrollo del personaje e ingenieriacutea

de software Estrategias para hacer el mejor uso

de la ingenieriacutea del conocimiento formalizado El

aprendizaje de las habilidades que se pueden

aplicar en cualquier lugar

VI REQUISITOS

Esta parte ofrece una visioacuten general de los

conceptos y herramientas necesarias para la

obtencioacuten de requisitos

IDENTIFICAR LO QUE SE CONSIDERA UN REQUISITO DE SOFTWARE

ESTABLECER LOS CRITERIOS PARA DAR SENTIDO A LOS REQUISITOS Y LA

ESCRITURA DETERMINAR LA MANERA DE REUNIR LOS REQUISITOS O DESCUBRIR

EXPLORAR COacuteMO EMPLEAR CASOS DE USO PARA PERFECCIONAR Y

ANALIZAR LAS NECESIDADES ENCONTRAR TEacuteCNICAS PARA CONFIRMAR QUE LOS REQUISITOS ESTEacuteN

COMPLETOS

VERIFICAR LA EXACTITUD DE LOS REQUISITOS TRACE CAMBIOS EN LOS REQUISITOS

VII PROGRAMADOR DEL MOTOR DEL JUEGO

Fig 1 Juego RPG

] INGENIERIacuteA DE SOFTWARE

17

INGENIERIacuteA DE SISTEMAS

Los programadores de juegos motores crear el

motor de base del juego incluyendo la fiacutesica de

simulacioacuten y disciplinas graacuteficas

A Fiacutesica del motor del programador

Programador de un juego de la fiacutesica se dedica

al desarrollo de las fiacutesica de un juego se emplean

Por lo general un juego de soacutelo simular algunos

aspectos de la fiacutesica del mundo real Por ejemplo

un juego de espacio puede necesitar simulada

gravedad pero no tendriacutea ninguna necesidad

para simular agua viscosidad

Para un juego de rol como World of Warcraft

soacutelo un programador de la fiacutesica puede ser

necesaria Para un juego de combate complejo

como Battlefield 1942 los equipos de

programadores de la fiacutesica pueden ser necesarias

B motor de graacuteficos del programador

A pesar de todos los programadores antildeadir

tanto los contenidos y la experiencia que ofrece

un juego un programador de juego se centra maacutes

en la estrategia de un juego la aplicacioacuten de la

mecaacutenica del juego y la loacutegica y la sensacioacuten

de un juego

Esto no suele ser una disciplina independiente

como lo que este programador es por lo general

se diferencia de un juego a otro y que

inevitablemente se veraacute involucrado con las aacutereas

maacutes especializadas de desarrollo del juego como

los graacuteficos o el sonido

VIII EQUIPO DE TRABAJO

Fig 2 Grupo de trabajo

Un equipo de desarrollo en una organizacioacuten de

ingenieriacutea de software se compone de un grupo

de personas que trabajan en funciones

especializadas para lograr un objetivo comuacuten El

objetivo es la realizacioacuten de un proyecto Un

proyecto se define como un esfuerzo temporal

emprendido para crear un producto uacutenico

servicio o resultado

Aquiacute una pequentildea lista incompleta de algunos de

los componentes de un equipo de trabajo para

Desarrollo de juegos

Analista de requerimientos recopilar y analizar

los requisitos para el software

Arquitecto de software determinar la mejor

arquitectura para el software Seleccionar

Los componentes del proveedor para su inclusioacuten

en el esfuerzo de desarrollo

Disentildeador de software acotar el software para

lograr un rendimiento y otros

Objetivos

Prueba de software probador del software para

garantizar que funcione de acuerdo a la

Requisitos

Programador senior desarrollar bajo nivel de

documentacioacuten de disentildeo sirven como una

tecno-

Ventaja teacutecnica para los demaacutes e implementar el

software de acuerdo

Para el disentildeo

Programador implementar el software de acuerdo

al disentildeo

Trabajos de mantenimiento en el programador de

software creado durante el desarrollo anterior

Los esfuerzos para agregar funcionalidad o

eliminar errores de trabajo con

Atencioacuten al cliente

IX LENGUAJE UNIFICADO DE MODELADO (UML)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

18

Tomando en cuenta que el UML es un estaacutendar

muy flexible Nos da razoacuten que podemos pensar

en el diagrama

como herramientas que permiten realizar

diferentes tipos de trabajo Para revisar un poco

Use un diagrama de casos de uso para reunir y estudiar los requisitos para los propoacutesitos de disentildeo o pruebas

Use un diagrama de actividades para explorar los escenarios de casos de uso

Use un diagrama de clases para identificar las clases y ver coacutemo las

clases se relacionan entre siacute Use un diagrama de objetos para ver coacutemo un objeto se comunica con

otro

Use un diagrama de estado para explorar los atributos de cambio de objeto

Use un diagrama de secuencia para explorar a fondo un caso de uso

mediante el trazado de la orden en el que los objetos enviar mensajes a siacute mismos o entre siacute

Use un diagrama de colaboracioacuten para ver la loacutegica del sistema y la

forma en que los objetos envian mensajes entre siacute Use un diagrama de componentes para explorar y si existen los

subsistemas dentro de su juego

Use un diagrama de implementacioacuten para encontrar la manera de

configurar el paquete de instalacioacuten para su juego

X CONCLUSIONES

El desarrollo de los juegos se han vueltos mas

complejos con el pasar del tiempo y para el

desarrollo de un juego que este a la vanguardia

de la competencia se debe trabajar con la IS es

una forma eficaz de conseguir un juego de

calidad internacional

Referencias [9] Software Engineering for Game Developers by john P Flynt with Omar

Salem [10] httpieeexploreieeeorgxplloginjsptp=amparnumber=5070627ampurl=http

3A2F2Fieeexploreieeeorg2Fiel52F50705742F50705752F05

070627pdf3Farnumber

[11] httpgamedevstackexchangecomquestions19934abstract-game-engine-design

] INGENIERIacuteA DE SOFTWARE

19

INGENIERIacuteA DE SISTEMAS

Estrategias de Prueba del Software Miguel Angel Callisaya Quispe Universidad San Francisco de Asiacutes Av 20 de Octubre La Paz Bolivia

maccc19hotmailcom

Resumen Una estrategia de software es un mecanismo que

proporciona una guiacutea o base pasa ver la forma como se debe

desarrollar la aplicacioacuten en cuanto a meacutetodos esfuerzo

tiempo y recursos que son necesarios para lograr un producto

exitoso

La frecuencia con las que realicen las pruebas es de gran

importancia ya que de estaacute manera se pueda la en encontrar

los errores antes de que se conviertan en errores para la

aplicacioacuten si no se lleva un orden de aplicacioacuten de las pruebas

se va a perder tiempo recurso y sobre todo esfuerzo

Durante las primeras etapas de las pruebas es importante

concentrar toda la atencioacuten en un pequentildeo grupo de

componentes o en un componente que se considere importante

para el desarrollo tanto en los datos como en la parte loacutegica de

la aplicacioacuten

El objetivo final de las estrategias de prueba es documentar la

forma en el que equipo ha hecho el desarrollo y el seguimiento

que se le ha hecho a cada una de las etapas durante las etapas

de desarrollo e implementacioacuten

Palabras clave Calidad Prueba Estrategias Sistema

I INTRODUCCIOacuteN

Durante este articulo es importante mencionar algunos

aspectos que determinan el eacutexito de la aplicacioacuten de las

estrategias de prueba como lo son el enfoque estrateacutegico

para la prueba de software aspectos estrateacutegicos

estrategias de prueba para software convencional

estrategias de prueba para software orientado a objeto

estrategia de prueba para webapps pruebas de validacioacuten y

por uacuteltimo las pruebas del sistema

IIESTRATEGIAS DE PRUEBA DEL SOFTWARE

Verificacioacuten Estamos construyendo el producto

correctamente

Validacioacuten Estamos construyendo el producto correcto

Integracioacuten descendente

La integracioacuten descendente es un planteamiento

incremental a la construccioacuten de la estructura de programas

Se integran los moacutedulos movieacutendose hacia abajo por la

jerarquiacutea de control comenzando por el moacutedulo de control

principal (programa principal) Los moacutedulos subordinados

(de cualquier modo subordinados) al moacutedulo de control

principal se van incorporando en la estructura bien de

forma primero-en-profundidad o bien de forma primero-en-

anchura Fig1

Integracioacuten ascendente

La prueba de la integracioacuten ascendente como su nombre

indica empieza la construccioacuten y la prueba con los

moacutedulos atoacutemicos (es decir moacutedulos de los niveles maacutes

bajos de la estructura del programa) Dado que los moacutedulos

se integran de abajo hacia arriba el proceso requerido de

los moacutedulos subordinados a un nivel dado siempre estaacuten

disponibles y se elimina la necesidad de resguardos Fig2

Fig 1 Integracioacuten descendente

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

20

Fig 3 Integracioacuten Ascendente

Aspectos Estrateacutegicos

Tom Gilb plantea que se deben abordar los

siguientes puntos si se desea implementar con

eacutexito una estrategia de prueba del software

Especificar los requisitos del producto de manera

cuantificable mucho antes de que comiencen las pruebas

-Establecer los objetivos de la prueba de manera expliacutecita (teacuterminos

medibles)

-Comprender queacute usuarios va a tener el software y desarrollar un perfil

-Desarrollar un plan de prueba que haga hincapieacute en la prueba de ciclo

raacutepido

-Construir un software ―robusto disentildeado para probarse a siacute mismo

-Usar revisiones teacutecnicas formales efectivas como filtro antes de la

prueba

Llevar a cabo revisiones teacutecnicas formales para evaluar la

estrategia de prueba y los propios casos de prueba

Desarrollar un enfoque de mejora continua al proceso de

prueba Deberiacutea medirse la estrategia de prueba

Prueba de Unidad

La prueba de unidad centra el proceso de

verificacioacuten en la menor unidad del disentildeo del

software el moacutedulo La prueba de unidad siempre

esta orientada a caja blanca y este paso se suele

llevar a cabo en paralelo para muacuteltiples moacutedulos

Pruebas de Alfa y Beta

C u a n d o s e c o n s t r u y e s o f t w a r e a m e d i d a s e

l l e v a n a c a b o u n a s e r i e d e p r u e b a s d e

a c e p t a c i oacute n p a r a permitir que el cliente valide todos

los requisitos La prueba alfa se lleva a cabo en el

lugar del desarrollo pero por un cliente Se usa el

software en forma normal con el desarrollador como

observador del usuario y registrando los errores y

problemas de uso(entorno controlado)La prueba beta se

lleva a cabo por los usuarios finales en los lugares

de trabajo de los clientes El cliente registra los

problemas y los informa a intervalos regulare

Pruebas del sistema

La prueba del sistema estaacute constituida por una

serie de pruebas diferentes cuyo propoacutesito es

ejercitar profundamente el sistema

Prueba de recuperacioacuten

E s l a p r u e b a d e l s i s t e m a q u e f u e r z a a l

f a l l o d e l s o f t w a r e d e m u c h a s f o r m a s y

v e r i f i c a q u e l a recuperacioacuten se lleva a cabo

apropiadamente Recuperacioacuten automaacutetica o manual

Prueba de seguridad

Intenta verificar que los mecanismos de proteccioacuten

incorporados en el sistema lo protegeraacute de hecho de

accesos impropios

Pruebas de Resistencia

Estaacuten disentildeadas para enfrentar a los programas con

situaciones anormales Una variante de la prueba de

resistencia es una teacutecnica denominada prueba de

sensibilidad intenta descubrir combinaciones de datos

dentro de una clase de entrada valida que pueda producir

inestabilidad o un proceso incorrecto

El arte de la depuracioacuten

La depuracioacuten ocurre como consecuencia de una

prueba efectiva Cuando un caso de prueba

descubre u n e r r o r l a d e p u r a c i oacute n e s e l

p r o c e s o q u e p r o v o c a l a e l i m i n a c i oacute n d e l

e r r o r E l p r o c e s o m e n t a l q u e conecta un siacutentoma

con una causa es la depuracioacuten

El proceso de la depuracioacuten

E l p r o c e s o d e d e p u r a c i oacute n i n t e n t a h a c e r

c o r r e s p o n d e r e l s iacute n t o m a c o n u n a c a u s a

l l e v a n d o a s iacute a l a correccioacuten del error El proceso de

depuracioacuten siempre tiene uno de los dos resultados

siguientes

(1)se encuentra la causa se corrige y se elimina

o

(2)no se encuentra la causa En eacuteste uacuteltimo caso la persona

que realiza la depuracioacuten debe sospechar la causa disentildear

un caso de prueba que ayude a confirmar sus sospechas y el

trabajo vuelve hacia atraacutes a la correccioacuten del error de una

forma iterativa iquestPor queacute es tan difiacutecil la depuracioacuten

Varias caracteriacutesticas de los errores nos dan algunas

] INGENIERIacuteA DE SOFTWARE

21

INGENIERIacuteA DE SISTEMAS

pistas1El siacutentoma y la causa pueden ser

geograacuteficamente remotos entre siacute2El siacutentoma

puede desaparecer (temporalmente) al corregir

otro error

3 E l s iacute n t o m a p u e d e r e a l m e n t e e s t a r

p r o d u c i d o p o r a l g o q u e n o e s u n e r r o r

( i n e x a c t i t u d d e l o s redondeos)

4El siacutentoma puede estar causado por un error

humano que no sea faacutecilmente detectado

5El siacutentoma puede ser el resultado de problemas

de temporizacioacuten en vez de problema s de proceso

6Puede ser difiacutecil reproducir exactamente las

condiciones de entrada

7 E l s iacute n t o m a p u e d e a p a r e c e r e n f o r m a

i n t e r m i t e n t e

8 E l s iacute n t o m a p u e d e s e r d e b i d o a c a u s a s q u e

s e d i s t r i b u y e n p o r u n a s e r i e d e t a r e a s

e j e c u t aacute n d o s e e n diferentes procesadores

IIICONCLUCIONES

Las estrategias de prueba del software es un mecanismo

que proporciona una guiacutea o base pasa ver la forma como se

debe desarrollar la aplicacioacuten en cuanto a meacutetodos para

logra un producto exitoso

IVREFERENCIAS

httpbuenastareascomensayosEstategias-de-prueba-de-

software3752643html

httpwwwestrategiascompruebaagil

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

22

Ingenieriacutea Inversa Juan Carlos Zenteno Sanga

1

Departamento de Ingenieriacutea de Sistemas Universidad San Francisco de Asiacutes

Direccioacuten Incluyendo el Paiacutes 1juanka_58hotmailcom

Resumenmdash La ingenieriacutea de Software es parte del modelo de

proceso de reingenieriacutea de software es el proceso de analizar

un programa con la finalidad de crear una representacioacuten del

programa en un grado mayor de abstraccioacuten del coacutedigo

fuente las herramientas de ingenieriacutea inversa obtienen

informacioacuten del disentildeo de datos arquitectoacutenico y de

procedimientos a partir de un programa existente

En el siguiente artiacuteculo se veraacuten los conceptos baacutesicos y se

denotara un ejemplo praacutectico para una mayor comprensioacuten

del tema

Palabras clave mdash Ingenieriacutea de Software Reingenieriacutea

Linux Ingenieriacutea Inversa

XI INTRODUCCIOacuteN

Inmersa en el aacuterea de conocimiento de la

ingenieriacutea de software se encuentra la ingenieriacutea

inversa como punto de apoyo para los procesos

de anaacutelisis y disentildeo propuestos en diferentes

meacutetodos de desarrollo

La ingenieriacutea inversa permite subsanar esta

deficiencia al documentar los productos de

software a partir del coacutedigo ejecutable con el fin

de obtener los artefactos de anaacutelisis y disentildeo

La ingenieriacutea inversa es ademaacutes una

herramienta uacutetil que ayuda en el proceso de

aseguramiento de la calidad del software

mediante la comparacioacuten de diagramas de fases

de anaacutelisis y desarrollo se apoya comuacutenmente en

la generacioacuten del diagrama de clases debido a la

importancia de este diagrama en la fase de disentildeo

y su facilidad de generacioacuten Existen tambieacuten

otros diagramas de intereacutes como el de

comunicacioacuten y el de secuencias que modelan

las caracteriacutesticas dinaacutemicas de un producto de

software

Hoy en diacutea los productos maacutes comuacutenmente

sometidos a la Ingenieriacutea Inversa son los

productos de Hardware y Software pero

cualquier producto puede ser sometido a este

proceso

Aplicar ingenieriacutea Inversa a algo supone

profundizar el estudio de su funcionamiento

En el caso concreto del Software se conoce

por ingenieriacutea de software a la actividad que se

ocupa de describir coacutemo funciona un programa

de cuyo coacutedigo no se dispone hasta el punto de

generar coacutedigo propio que cumpla con las

mismas funciones Un ejemplo claacutesico del uso de

esta teacutecnica es el software de pago donde las

empresas utilizan esta teacutecnica para proteger sus

productos contra posibles acceso no autorizados

o examinar el producto final para encontrar

posibles bugs inesperados en la ejecucioacuten de

dicho sistema

Existe una gran variedad de software

desensamblador y depurador para aplicar esta

teacutecnica

En resumen la idea general al aplicar

ingenieriacutea inversa es

Conocer a fondo la aplicacioacuten y generar un

mejor coacutedigo

Migrar la aplicacioacuten a un nuevo sistema operativo

Hacer o completar la documentacioacuten

] INGENIERIacuteA DE SOFTWARE

23

INGENIERIacuteA DE SISTEMAS

Verificar que el coacutedigo en estudio cumple las

especificaciones del disentildeo estaacutendar

La informacioacuten extraiacuteda de la lectura del

coacutedigo fuente son las especificaciones de disentildeo

modelos de flujo de control diagramas de disentildeo

documentos de especificacioacuten de disentildeo

pudiendo tomarse estas especificaciones como

nuevo punto de partida para aplicar ingenieriacutea

inversa y obtener informacioacuten a mayor nivel de

abstraccioacuten

Dado que es una labor estrateacutegica es

conveniente conocer cuando conviene realizar la

tarea de Ingenieriacutea inversa para una aplicacioacuten y

cuaacutendo es maacutes rentable sustituirla e implementar

una nueva Las aplicaciones para el primer paso

son aquellas en la que se produce las siguientes

situaciones

bull Fallos frecuentes que son difiacuteciles de

localizar

bull Son poco eficientes pero realizan la funcioacuten

esperada

bull Dificultades en la integracioacuten con otros

sistemas

bull Calidad pobre del software final

bull Resistencia a introducir cambios

bull Pocas personas capacitadas para realizar

modificaciones

bull Dificultades para realizar pruebas

bull El mantenimiento consume muchos recursos

XII LAS BASES DE LA INGENIERIA INVERSA

Los ejemplos maacutes trascendentes sobre los

inicios de la ingenieriacutea inversa son claramente las

investigaciones realizadas sobre antiguos

artefactos creados por humanos ancestrales con

el fin de descubrir la manera en que funcionaban

Uno de los maacutes conocidos es el llamado

mecanismo de Antikythera (Fig 1) el cual se

piensa que fue disentildeado para fines astronoacutemicos

por los griegos siendo uno de los primeros

artefactos que funcionaban con ruedas de

engranes

Figura 1 Antikythera (mecanismo presuntamente creado para fines astronoacutemicos)

Podemos entonces implantar un paralelo en aquella

mitoloacutegica buacutesqueda de descubrimiento sobre el

funcionamiento de esos artefactos y la ingenieriacutea inversa

actual usada en ingenieriacutea de software estableciendo un

importante factor en comuacuten la falta de documentacioacuten En

este ambiente es muy comuacuten contar con una especie de caja

negra en donde sabemos lo que ingresamos y el resultado

que obtenemos pero desconocemos el procedimiento con la

precisioacuten que necesitariacuteamos para replicarlo

Esta falta de documentacioacuten es el impulso

principal de toda la ingenieriacutea inversa las

finalidades de la misma pueden variar pero este

factor inicial nunca lo haraacute

XIII INGENIERIA INVERSA COMO UN PROCESO DE

REINGENIERIA

La ingenieriacutea inversa tiene la misioacuten de

desentrantildear los misterios y secretos de los

sistemas en uso

Baacutesicamente recupera el disentildeo de la

aplicacioacuten a partir del coacutedigo esto se realiza

mediante herramientas que extraen la

informacioacuten de los datos procedimientos y

arquitecturas del sistema

Es aplicable a sistemas con las siguientes

caracteriacutesticas

Documentacioacuten inexistente o totalmente obsoleta

Programacioacuten en bloque de coacutedigos muy grandes

yo sin estructural

La aplicacioacuten cubre gran parte de los requisitos

y el rendimiento esperado

A Nivel de abstraccioacuten

El nivel de Abstraccioacuten de un proceso de

Ingenieriacutea Inversa y las herramientas que se

utilizan para realizarlo aluden la sofisticacioacuten de

la informacioacuten de disentildeo que se puede extraer del

coacutedigo fuente Este proceso deberiacutea ser capaz de

derivar

Sus representaciones de disentildeo de procedimiento

(con un bajo nivel de abstraccioacuten)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

24

La informacioacuten de las estructuras de datos de

procedimiento (con un nivel de abstraccioacuten

ligeramente maacutes elevado)

Modelos de flujo de datos de control (un nivel de

abstraccioacuten relativamente alto)

Modelos de entidades y de relaciones (un elevado

nivel de abstraccioacuten)

B Completitud

En la mayoriacutea de los casos la completitud

decrece a medida que aumenta el grado de

abstraccioacuten

La completitud mejora en proporcioacuten directa a

la cantidad de anaacutelisis efectuado por la persona

que estaacute efectuando la ingenieriacutea inversa

C Interactividad

La interactividad alude al grado con el cual el

ser humano se integra con las herramientas

automatizadas para crear un proceso de

ingenieriacutea inversa efectivo

D Proceso

El Proceso de ingenieriacutea inversa (Fig 2) es el encargado

de reestructurar el coacutedigo fuente para que solamente

contenga instrucciones de programacioacuten estructurada Lo

que hace que el coacutedigo sea maacutes faacutecil de leer y proporciona

la base para las subsiguientes actividades de ingenieriacutea

inversa

Figura 2 Diagrama de Proceso de la Ingenieriacutea Inversa

E Reestructuracioacuten

La reestructuracioacuten del software modifica el

coacutedigo fuente y los datos en un intento adecuado

a futuros cambios esta no modifica la

arquitectura global del programa Tiene a

centrarse en los detalles de disentildeo de moacutedulos

individuales y en estructuras de datos locales

definidas dentro de los moacutedulos

Estos son algunos de los beneficios que se

pueden lograr cuando se reestructura el software

Programas de mayor calidad

Reduce el esfuerzo requerido para llevar a cabo

las actividades de mantenimiento

Hace el software maacutes sencillo para comprobar y

depurar

F Re documentacioacuten

Es el proceso mediante el cual se produce

documentacioacuten retroactivamente desde un

sistema existente

Es considerada una forma de ingenieriacutea inversa

porque la documentacioacuten reconstruida es usada

para ayudar al conocimiento del programa

XIV UTILIZANDO EL METODO CIENTIFICO EN LA

INGENIERIA INVERSA

Ante cualquier dificultad tecnoloacutegica el

meacutetodo cientiacutefico siempre es y seraacute nuestra maacutes

preciada arma Partamos imaginando un pequentildeo

dilema relacionado con el tema de ingenieriacutea de

software especiacuteficamente con un sencillo

programa (Fig 3)

Figura 3 Pantalla de aplicacioacuten que nos serviraacute de ejemplo

Esta sencilla aplicacioacuten mostraraacute un mensaje con cierto

resultado y aun siendo un problema demasiado sencillo

para considerarlo como un reto el objetivo es soacutelo describir

] INGENIERIacuteA DE SOFTWARE

25

INGENIERIacuteA DE SISTEMAS

las acciones usuales del proceso las cuales son aplicables

en escalas muy superiores

El resultado mostrado por el programa dentro del mensaje

emergente se basa en nuestra entrada pero nosotros

desconocemos en lo absoluto los procedimientos utilizados

sobre esta entrada para producir aquella respuesta

A La Observacioacuten es Trascendental

Primero es importante observar el problema su

comportamiento Es substancial tratar de lograr

un pensamiento inductivo en donde logremos

identificar el principio particular del problema

para poder llegar a extrapolarlo a una solucioacuten

general

El punto de quiebre se produce en este instante

Ya al haber observado la aplicacioacuten podriacuteamos

decidir procesar los datos que nos entrega y

lograr crear un coacutedigo equivalente o investigar el

funcionamiento interno

B Dentro de la aplicacioacuten

Luego de la formulacioacuten de una hipoacutetesis sobre

su funcionamiento necesitamos algunas

herramientas para comenzar con la investigacioacuten

En el caso de esta aplicacioacuten con un poco de

conocimientos del lenguaje ensamblador de

programacioacuten tradicional y un descompilador es

suficiente

Es importante emprender de buena forma

nuestro sondeo ser ordenados y metoacutedicos en la

tarea En este momento las capacidades analiacuteticas

y loacutegicas son muy importantes para alivianar

nuestra faena

Lo fundamental es conocer muy bien el

entorno en que nos desenvolveremos En este es

punto indispensable saber que una aplicacioacuten

para Windows necesita invocar internamente al

punto de entrada MessageBox o MessageBoxEx

de la libreriacutea de sistema user32dll para poder

desplegar un mensaje (Fig 4)

Figura 4 Resultado de la Aplicacioacuten

Ya con esa pista es sencillo encontrar el

fragmento de coacutedigo relacionado con las

operaciones relacionadas a nuestro nuacutemero de

entrada que tendriacutea una forma similar a la

mostrada a continuacioacuten en nuestro

descompilador (Fig 5)

Figura 5 Vista del Programa en Ensamblador

Cualquier programador intuiriacutea faacutecilmente lo

que hacen las liacuteneas superiores de esta aplicacioacuten

en especial sprintf es parte de la libreriacutea estaacutendar

de C++ Claramente vemos tambieacuten el tiacutetulo de la

ventana en el coacutedigo estos valores son

interpretados de forma inteligente por este

descompilador en especial y en particular nos

asiste de sobremanera a comprender el coacutedigo

Lo siguiente es sencillamente explorar paso a

paso las acciones superiores de caacutelculo del

resultado En esta instancia seraacute ideal realizar

numerosas pruebas para estar completamente

seguros de que logramos develar el secreto tras la

funcionalidad objetivo (Fig 6)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

26

Figura 6 Inicio del coacutedigo al que aplicaremos ingenieriacutea inversa

Hay que detenerse algunos segundos a

individualizar algunos procedimientos del

anaacutelisis que a simple vista pueden parecer

inconcebibles con el fin de poder generar una

tesis concluyente

Cabe destacar que se omitiraacuten pasos

intermedios de asignaciones de memoria y otros

formalismos propios de ensamblador para

favorecer el entendimiento del lector

Inicialmente tenemos el valor de entrada

supuestamente ya leiacutedo desde el cuadro de

diaacutelogo del programa ahora nos enfocamos en la

primera accioacuten importante Asumiremos el valor

de entrada como una incoacutegnita

En el siguiente trozo de coacutedigo la liacutenea

destacada antildeadioacute siete a nuestra incoacutegnita (Fig 7)

Figura 7 Coacutedigo donde se denota la adicioacuten de 7 a nuestra ecuacioacuten

A continuacioacuten se multiplica ese valor

resultante de la suma por el mismo (Fig 8)

Figura 8 Coacutedigo donde se denota la multiplicacioacuten del valor por la suma

Nuevamente multiplicamos el resultado por el

anterior proporcionado tras la suma En esta

segunda vez ya podemos expresar la operacioacuten

simplemente elevando al cubo la suma anterior

(Fig 9)

Figura 9 Coacutedigo que denota una nueva multiplicacioacuten del resultante

Ahora le restamos diez al resultado

El procedimiento que viene a continuacioacuten

propone un mayor desafiacuteo intelectual Un nuacutemero

constante en este caso el cargado al registro

EAX (Fig 10)

Figura 10 ubicacioacuten del nuacutemero constante EAX

Generalmente la divisioacuten es algo maacutes costosa

en tiempo de procesador que otras operaciones

por lo que ciertos compiladores incluyen tablas

de constantes las cuales son llamadas ―nuacutemeros

maacutegicos para la divisioacuten entera

d Con signo Sin signo

m (hex) s m (hex) a s

-5 99999999 1

-3 55555555 1

-2k 7FFFFFFF k-

1

1 mdash mdash 0 1 0

2k 80000001 k-

1 232-k 0 0

3 55555556 0 AAAAAAAB 0 1

5 66666667 1 CCCCCCCD 0 2

6 2AAAAAAB 0 AAAAAAAB 0 2

7 92492493 2 24924925 1 3

9 38E38E39 1 38E38E39 0 1

10 66666667 2 CCCCCCCD 0 3

11 2E8BA2E9 1 BA2E8BA3 0 3

] INGENIERIacuteA DE SOFTWARE

27

INGENIERIacuteA DE SISTEMAS

12 2AAAAAAB 1 AAAAAAAB 0 3

25 51EB851F 3 51EB851F 0 3

125 10624DD3 3 10624DD3 0 3

Tabla 1 Algunos nuacutemeros maacutegicos (32 bits)

Ahora bien conociendo la tabla 1 sabiendo

que el nuacutemero cargado en esta ocasioacuten

corresponde al once lo que hace el coacutedigo es

multiplicar el resultado de la salida temporal por

aquel nuacutemero (Fig 11)

Figura 11 Multiplicacioacuten del resultante por el numero 11

Naturalmente la multiplicacioacuten por un nuacutemero

tan grande produce una especie de

desbordamiento en el registro contenedor del

resultado al exceder el tamantildeo de palabra del

procesador (en este caso de 32 bits) Estos bits

sobrantes se almacenan naturalmente en el

registro EDX registro que es contiguo a ECX

dentro de la memoria de los registros del

procesador

Ahora desplazamos un bit del registro EDX

(equivalente a una divisioacuten entera por dos) para

obtener la solucioacuten de la divisioacuten por once

generando una sencilla ecuacioacuten

Figura 12 Desplazamiento del bit de registro EDX

El uacuteltimo paso luego de documentar estos

resultados seraacute crear una aplicacioacuten que recree

esta foacutermula soacutelo en caso de tener intenciones de

re-codificacioacuten del desarrollo Consumando este

punto es sencillo confeccionar un diagrama con

todo el proceso anteriormente visto

XV CONCLUSIONES

Queda claro que el tema de la ingenieriacutea

inversa es uno de los toacutepicos maacutes interesantes a

los que podriacutea afrontarse un profesional de la

tecnologiacutea y en general disfrutar el largo proceso

involucrado gracias al desafiacuteo poco predecible

que presenta

En general podemos darnos cuenta de que no

existen muchas metodologiacuteas y teoriacuteas estrictas

sobre coacutemo aplicar las teacutecnicas de ingenieriacutea

inversa Afortunadamente un ingeniero estaacute

preparado para afrentar desafiacuteos de este tipo

Adicionalmente podemos deducir tambieacuten el

aspecto bidireccional de la ingenieriacutea inversa

pues como ya lo comprobamos no solo es un

desafiacuteo aplicarla sino que tambieacuten lo es tener que

dificultar el proceso o incluso tratar de impedirlo

si la situacioacuten lo requiere

REFERENCIAS

[12] Roger Pressman Ingenieriacutea de Software ―Un Enfoque Moderno 6th ed

MC Graw Hill [13] httpeswikipediaorgwikiIngenieria_inversa

[14] httpwwwinfosecwritersconntext_resourcespdfsoftware_security_and_r

everse_engineeringpdf [15] httperwinriedclmodo=visorampelemento=239

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

28

METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO Univ Alejandro Meacutendez Escobar

Universidad San Francisco de Asiacutes

Ingenieriacutea de Sistemas

Ingenieriacutea de Software I

La Paz - Bolivia

amendezusfaedubo

Resumenmdash Al adquirir el software educativo dentro del campo de

desarrollo de software una gran importancia y siendo este

inspiracioacuten de propuestas de innumerables metodologiacuteas que buscan

la elaboracioacuten de un software de calidad

Tomaremos la metodologiacutea Aacutencora enfocada a la fase de

requerimientos y que ofrece elementos que indican las actividades

que deben realizarse los artefactos que se producen y la forma de

obtenerlos

Usando al desarrollo de software educativo como ejemplo de una

mejor comprensioacuten de dicha metodologiacutea analizando la aplicacioacuten

del Aacutencora en un trabajo propuesto para el Instituto Tecnoloacutegico de

Orizaba Meacutexico

Palabras clave mdash Aacutencora Metodologiacutea Desarrollo de Software

Educativo Requerimientos Calidad

XVI INTRODUCCIOacuteN

Hoy en diacutea la tecnologiacutea esta dentro de las

actividades que realizamos es asiacute que la educacioacuten no

queda exenta de ella por o cual es necesario adaptarse

al movimiento tecnoloacutegico que nos trae grandes

ventajas en la transmisioacuten de conocimientos de una

manera sencilla y dinaacutemica

De esta manera han surgido infinidad de

metodologiacuteas de desarrollo de software educativo el

cual tiene como objetivo ser el apoyo para docentes

alumnos y toda persona que este dentro del proceso de

aprendizaje

Tomando en cuenta este ramillete infinito de

metodologiacuteas surge en el ejemplo propuesto la

adaptacioacuten del Aacutencora en el desarrollo de software

educativo teniendo como objetivo principal la

comprensioacuten de los elementos y conceptos de la

metodologiacutea Aacutencora

Aacutencora es una metodologiacutea enfocada a la

adquisicioacuten de requerimientos para software que

ofrece guiacuteas y elementos de apoyo para la obtencioacuten de

estos requerimientos Al mismo tiempo permite pasar a

la fase de disentildeo de manera sencilla Aprovechando las

ventajas que presenta Aacutencora se le hicieron algunas

adaptaciones con el fin de cubrir algunas

caracteriacutesticas del disentildeo instruccional y enriquecer

Aacutencora habilitaacutendola para la adquisicioacuten de

requerimientos de software educativo

XVII APLICACIOacuteN DE LA METODOLOGIacuteA AacuteNCORA

Como es el objetivo principal la comprensioacuten de la

aplicacioacuten de la metodologiacutea Aacutencora dentro del

desarrollo de software educativo de calidad solo

describiremos los meacutetodos del meacutetodo y los resultados

obtenidos

Claro esta que para ahondar maacutes en tema del

software educativo en si el lector puede recurrir a los

siguientes autores Metodologiacutea de desarrollo de

sistemas multimedia (Vaughan 2006) Propuesta de

metodologiacutea para el disentildeo desarrollo y evaluacioacuten

de software educativo (Reyes 2009) Ingenieriacutea de

software educativo con modelaje orientado por objetos

(Goacutemez 1998) asi como tambieacuten los siguientes

modelos ADDIE (Anaacutelisis Disentildeo Desarrollo

Implantacioacuten y Evaluacioacuten) de (McGriff 2000) y el

disentildeo instruccional aplicado al desarrollo de software

educativo EISE (Especificacioacuten Instruccional de

Software Educativo) de (Hernaacutendez 2005)

] INGENIERIacuteA DE SOFTWARE

29

INGENIERIacuteA DE SISTEMAS

Quienes tienen el mismo objetivo de crear software

educativo de calidad podemos sintetizar de ellos los

siguientes puntos

Anaacutelisis del puacuteblico al que se dirigiraacute el software

Problema oacute necesidad educativa a atender

Anaacutelisis de contenido (Tema a tratar actividades

para alcanzar el objetivo de ensentildeanza y forma de

evaluarlo)

Actividades oacute forma actual de llevar a cabo la

ensentildeanza del tema en cuestioacuten

Elaboracioacuten de guiones metaacuteforas escenarios

Creacioacuten de prototipo oacute Storyboard

Disentildeo de interfaz

Mapas de navegacioacuten

Modelos de datos

Elaboracioacuten de diagramas de contexto diagramas

de flujo o diagramas de casos de uso

Ahora enfocaacutendonos en el aacutencora se establece la

propuesta de seleccionar las actividades de Aacutencora que

permitan obtener los requerimientos de un software

educativo

La Tabla 1 presenta las actividades y artefactos

producidos en las fases de Aacutencora para la elaboracioacuten

de software educativo

TABLA 1 ACTIVIDADES Y ARTEFACTOS DE LA METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO

Metodologiacutea Aacutencora

Fases Actividades y artefactos

Anaacutelisis de

Requerimientos

A traveacutes de entrevistas con los clientes

(maestros y pedagogos) y de la lectura

del respectivo material proporcionado

por ellos se definiraacute la asignatura a la

que se enfocaraacute el software el tema a

tratar y la forma en que se abordaraacute y

evaluaraacute Tambieacuten se estableceraacute el

objetivo general de aprendizaje la

metaacutefora que se emplearaacute y se

determinaraacute el puacuteblico al que se

dirigiraacute el software

Artefactos

Documento que define la asignatura

contenido objetivo general de

aprendizaje metaacutefora y puacuteblico al que

se dirigiraacute el software Guion de la

situacioacuten actual

Recoleccioacuten y

clasificacioacuten de

requerimientos

El guion de la propuesta

computacional reflejaraacute la metaacutefora

que se sigue el ambiente de cada

escena

La bitaacutecora de desarrollo permitiraacute ver

coacutemo el sistema responderaacute a las

diversas acciones que realice el

usuario

En lugar del prototipo raacutepido se

elaboraraacute un Storyboard para presentar

graacuteficamente la estructura de sistema

propuesto

Artefactos

Guion de propuesta computacional

bitaacutecora de desarrollo Storyboard

Resolucioacuten de

conflictos

jerarquizacioacuten y

validacioacuten de

requerimientos

Modificaciones al guion de la

propuesta computacional de acuerdo a

los cambios propuestos por los

maestros y pedagogos

Artefactos

Guion de propuesta computacional e

Storyboard con adecuaciones sentildealas

Cierre

Trasladar los guiones a casos de uso

Artefactos

Casos de uso

Se agregaron algunas caracteriacutesticas a ciertos

artefactos de Aacutencora para poder cubrir los

requerimientos de software educativo Uno de estos

elementos es el guion de la propuesta computacional

al que se propone agregar lo siguiente

Conocimientos previos del usuario Se refiere a los

conocimientos baacutesicos o miacutenimos que debe tener el

alumno para poder interactuar con el moacutedulo

Objetivo de aprendizaje Es el aprendizaje que

debe obtener el alumno despueacutes de haber interactuado

con el moacutedulo

La Figura 1 se presenta la estructura sugerida para el

guion de la propuesta computacional En la bitaacutecora de

desarrollo se propone antildeadir una fila al final de cada

pista donde se describan las situaciones favorables y

no favorables para el cumplimiento del objetivo de

aprendizaje para esa pista en particular Por otra parte

en lugar del prototipo se sugiere utilizar el Storyboard

ya que permite mostrar de manera maacutes completa la

estructura del guion de la propuesta computacional La

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

30

Figura 2 muestra el formato para la elaboracioacuten del

Storyboard

Figura 1 Estructura del guion para la propuesta computacional

Figura 2 Formato para la elaboracioacuten del Storyboard

XVIII RESULTADOS

Aplicando Aacutencora en un ejemplo para la parte de

requerimientos se obtuvo la siguiente informacioacuten

Asignatura Matemaacuteticas

Contenido Estaacute articulado con base en seis ejes

con sus respectivos temas y subtemas que variacutean de

acuerdo al grado escolar Considerando lo anterior se

tiene lo siguiente

a) Grado escolar De segundo hasta quinto grado de

primaria

b) Temas Nuacutemeros naturales capacidad peso

tiempo y ubicacioacuten espacial planteamiento y

resolucioacuten de problemas sencillos en los que se

requiera recolectar y registrar informacioacuten

perioacutedicamente representacioacuten de informacioacuten en

tablas de frecuencia y graacuteficas de barras registros de

los resultados de experimentos aleatorios

representacioacuten de los resultados de un experimento

aleatorio en tablas y graacuteficas

c) Subtemas Planteamiento y resolucioacuten de

problemas que impliquen dos o maacutes operaciones con

nuacutemeros naturales

d) Ejes Introduccioacuten del kiloacutemetro como la unidad

que permite medir grandes distancias y recorridos

largos capacidad peso y tiempo uso del reloj y el

calendario los nuacutemeros sus relaciones y sus

operaciones medicioacuten la prediccioacuten y el azar

tratamiento de la informacioacuten

Objetivo general de aprendizaje Ejercitar las

operaciones aritmeacuteticas baacutesicas interpretar la

informacioacuten y los resultados de la informacioacuten dada

aplicada en situaciones de la vida cotidiana

Con las actividades hasta ahora realizadas se ha

observado que los artefactos de Aacutencora son flexibles y

pueden por lo tanto adaptarse de acuerdo a las

necesidades que implican la adquisicioacuten de

requerimientos de un software educativo Tambieacuten se

aprecian las ventajas de algunos artefactos como la

bitaacutecora de desarrollo que permite determinar las

respuestas del sistema ante las acciones del usuario y

estimar tambieacuten el tiempo que llevaraacute implementar

cada quinteta

La estimacioacuten del tiempo ayuda a tener un valor

aproximado del tiempo de desarrollo de software

Agregar el objetivo de aprendizaje a la bitaacutecora de

desarrollo puede parecer repetitivo despueacutes de

incluirlo en el Storyboard pero esto nos permite ver las

situaciones u obstaacuteculos que pueden impedir que el

objetivo de aprendizaje se alcance y por tanto tenerlos

presente durante el disentildeo A pesar de las ventajas de

la bitaacutecora de desarrollo un inconveniente hasta ahora

encontrado es lo tedioso al manejar muchas quintetas

] INGENIERIacuteA DE SOFTWARE

31

INGENIERIacuteA DE SISTEMAS

cuando por la naturaleza del guion se tienen varios

avisos y mensajes para el usuario Por otra parte los

guiones han ayudado a realizar de manera sencilla el

modelo de casos de uso

En lo referente a la presentacioacuten con los clientes el

guion es un artefacto que pude dar un panorama

general del software que se va a elaborar y queda

reforzada a traveacutes de los Storyboard Cuando se

requieren cambios solicitados por los clientes las

modificaciones a estos artefactos no han sido muy

complicadas dado que por su estructura es faacutecil de

ubicar las secciones y respectivos elementos

XIX CONCLUSIONES

Con los resultados hasta ahora obtenidos se puede

decir que la propuesta permite a los desarrolladores

con poca experiencia en desarrollo de software

educativo obtener los requerimientos de una manera

sencilla

Permite realizar un mejor relevamiento de informacioacuten

de los requerimientos del cliente enfocaacutendonos mas en

este

Es tambieacuten importante mencionar los avances que

tiene y seguiraacute teniendo el software educativo aplicado

no solo a nivel escolar sino tambieacuten al superior

Habiendo revisado el concepto y la aplicacioacuten de la

metodologiacutea Aacutencora en el desarrollo de software

educativo se llegoacute a una comprensioacuten mas extensa de

dicho meacutetodo el cual es de gran importancia dentro de

la ingenieriacutea de Software ya que nos

REFERENCIAS

httpwwwuvmxmisproductividaddocumentsCarmenChay_CIIM2010pdf

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 2: Revista de Ingenieria de Software

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

2

EDITORIAL

El emprendimiento para realizar la revista es hacer nacer el intereacutes a los alumnos en el aacutembito de

la investigacioacuten daacutendoles paraacutemetros para que ellos en su futuro proyecten sus propias

investigacioacuten de temas de intereacutes personal con referencia a la carrera incentivando al resto del

alumnado para la creacioacuten de nuevos nuacutemeros de revistas en futuro

Se quiere realizar una directriz de la parte investigativa juntamente con la parte educativa

despertando a nuevas adquisiciones de saberes que nos brindaraacute a futuro estudiantes con una

visioacuten maacutes amplia en la parte de la investigacioacuten que es lo que debemos fomentar

Se felicita y conmina a los autores de los artiacuteculos a seguir por este camino que les llevaraacute a

grandes logros en su vida profesional

Tomen en cuenta siempre ldquoEL SABER ES PODERrdquo

MSc Elizabeth Pommier Gallo

] INGENIERIacuteA DE SOFTWARE

3

INGENIERIacuteA DE SISTEMAS

INDICE Tom DeMarco Ingenieria de Software y Control de

Proyectoshelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip4

Adictos al helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip6

Skinput Una pantalla taacutectil en tu pielhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip11

Mini

computadorashelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip14

Estudio de redes

GNOPhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

7

La suacuteper caacutemara que lo ve

todohelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip20

Des-

impresioacuten helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

helliphelliphelliphelliphelliphelliphelliphelliphelliphellip23

Cloud

Computinghelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

helliphelliphelliphelliphelliphelliphelliphelliphellip26

Nano- celular

solareshelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

helliphelliphelliphelliphellip29

Memorias USB en

moacuteduloshelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

hellip32

Teleacutefonos moacuteviles de ultima

generacioacutenhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

My

coachhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip37

Factores del Cableado en el Centro de Coacutemputohelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip40

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

4

Tom DeMarco

Ingenieriacutea de Software

y Control de Proyectos Joe Luis Aramayo Blanco

Ingenieriacutea de Sistemas Universidad San Francisco de Asiacutes

20 de Octubre Esq Belisario Salinas

La Paz - Bolivia jlaramayousfaeduboResumen- En este artiacuteculo

haremos algunas observaciones sobre un artiacuteculo

que escribioacute hace un tiempo atraacutes Tom DeMarco

sobre meacutetricas control de proyectos e

ingenieriacutea de software donde en general podemos

encontrar frases que claramente contradicen su

postura de hace unas deacutecadas

Palabras clave- Ingenieriacutea de Software Control de Proyectos

Meacutetricas No puedes controlar lo que no puedes medir Desarrollo

de Software

I INTRODUCCIOacuteN

Todos comprendemos que las meacutetricas de software cuestan

dinero y tiempo y que deben ser usadas con moderacioacuten

El desarrollo de software es inherentemente diferente de las

ciencias naturales tales como la fiacutesica por lo que sus meacutetricas

son mucho menos precisas para capturar lo que deben describir

La frase ―No puedes controlar lo que no puedes medir lleva

impliacutecita que el control es un aspecto importante quizaacutes el maacutes

importante de cualquier proyecto de software Pero no lo es

Fig 1 Ejemplo de ―No puedes controlar lo que no puedes medir

Muchos proyectos se han realizado sin demasiado control pero

han generado productos maravillosos tales como Google Earth o

la Wikipedia

Esto nos lleva a la desagradable conclusioacuten que el control

estricto es algo que importa mucho en proyectos relativamente

inuacutetiles y mucho menos en proyectos uacutetiles

iquestEstoy diciendo que estaacute bien ejecutar proyecto sin control o

con un control relativamente menor Casi Estoy sugiriendo que

deberiacuteamos seleccionar primero a los proyectos cuyo control

preciso no importe demasiado

En los uacuteltimos 40 antildeos nos hemos torturado por nuestra

ineptitud en acabar proyectos a tiempo y con el presupuesto

previsto Pero como sugeriacute antes no deberiacutea haber sido el

objetivo supremo

El objetivo maacutes importante es la transformacioacuten crear software

que cambie el mundo o que transforme una empresa o la forma

en que hace negocios

El desarrollo de software es y seraacute siempre algo experimental

La construccioacuten real de software no es necesariamente

experimental pero siacute lo es su concepcioacuten Alliacute deberiacuteamos

enfocar nuestros esfuerzos Alliacute es donde deberiacuteamos haberlo

hecho siempre Estaacute claro que es mucho maacutes faacutecil criticar un

artiacuteculo que hacer uno nuevo pero dada la trascendencia que estaacute

teniendo este escrito en particular voy a expresar mi opinioacuten

Creo que DeMarco sabe venderse Creo que cuando era maacutes

joven se supo posicionar como guruacute de la Ingenieriacutea de Software

y el control de proyectos y creo que ahora estaacute en la edad en que

puede decir que parte de lo que dijo estaacute mal e igual quedar bien

porque su posicioacuten coincide con la de muchos guruacutees actuales

Sin embargo me parece que el artiacuteculo estaacute lleno de frases

impactantes pero que no salen de un anaacutelisis profundo Me voy

a explayar

] INGENIERIacuteA DE SOFTWARE

5

INGENIERIacuteA DE SISTEMAS

Fig 3 Referencia a las Meacutetricas cuestan dinero

Que las meacutetricas cuestan dinero en cierto sentido es cierto

Tambieacuten es cierto que ahora es mucho maacutes faacutecil llevar algunas

meacutetricas que hace unos antildeos dado que ahora utilizamos

herramientas que las generan de manera automaacutetica Podriacuteamos

decir que en el presente es mucho menos costoso tener la misma

informacioacuten que hace unas deacutecadas DeMarco consideraba

importante

Que el desarrollo de software es inherentemente diferente de las

ciencias naturales como la fiacutesica tambieacuten es verdad Lo que no

se termina de entender es por queacute nos comparamos con las

Fiacutesicas y no con las Ingenieriacuteas

El disentildeo de una planta de gas en situaciones extremas tambieacuten

es uacutenico y con resultados impredecibles la construccioacuten de una

torre en Dubai alguacuten nuevo prototipo de avioacuten un nuevo

celular etc tambieacuten son inherentemente diferentes de las

ciencias naturales y sin embargo cuentan con presupuestos

meacutetricas de avance de defectos etc O sea es una verdad pero

que no aplica a la conclusioacuten a la que llega

Donde puedo estar maacutes de acuerdo es cuando hablamos del

control de proyectos de software aunque maacutes adelante voy a

definir mi posicioacuten En este caso en mi opinioacuten tambieacuten escribe

algo cierto ―El control no es lo maacutes importante de un proyecto

de software pero cuando toma ejemplos elije dos proyectos en

los que las desviaciones admitidas eran del orden de entre 100

y 1000 ya que o el objetivo era otro o los resultados

esperados eran mucho mayores a una desviacioacuten de 500 en

costos

Fig 1 Referencia de Google Earth

Ambos proyectos (Wikipedia que surge de NuPedia) y

GoogleEarth fueron proyectos en los que hubo inversores

poniendo su dinero durante antildeos sin ver resultados Se puede

buscar en Internet acerca de la historia de NuPedia antecesora

de Wikipedia y a Jimi Wales explicando que despueacutes de haber

gastado 250000 doacutelares solo habiacutea logrado 16 artiacuteculos en su

nueva Enciclopedia Lo mismo pasoacute con GoogleEarth

anteriormente en manos de KeyHole con inversores como Sony

y otros Fondos de Capital En este tipo de proyectos se pueden

asumir peacuterdidas durante antildeos hasta lograr un producto que

puede romper con el mercado o tambieacuten se puede perder todo lo

invertido Se trata de proyectos de inversioacuten de alto riesgo y

determinan proyectos de desarrollo que claramente son poco

comunes

Fig 3 Referencia de WIKIPEDIA

Al menos en mi entorno la mayoriacutea de los proyectos son

internos o externos (para un cliente) Los proyectos externos

tienen presupuestos o se crean luego de llamados a licitacioacuten

Es decir costo fijo tiempo fijo alcance fijo maacutes menos alguna

que otra variacioacuten Es claro que si no contamos con un miacutenimo

de control en estos proyectos la empresa no sabe si estaacute siendo

rentable o no Tampoco sabe si el producto que es desarrollado

le puede traer problemas a futuro por alguna cuestioacuten de calidad

No poner un miacutenimo eacutenfasis en el control de estos proyectos

puede llevar a la empresa a la quiebra sin que esta sea

consciente salvo por los nuacutemeros rojos que aparecen en sus

balances Por lo tanto explicar que un proyecto de software no

hace falta controlarlo mucho y poner como ejemplo dos casos

muy poco relevantes no parece muy serio

Por uacuteltimo cuando dice el desarrollo de software es y siempre

seraacute algo experimental vuelve a caer en las afirmaciones de las

que en 40 antildeos (en caso de estar vivo claro) podriacutea volver a

arrepentirse Es cierto que todaviacutea estamos en una etapa inicial

de la que llamamos ingenieriacutea de software Es cierto que no es

faacutecil gestionar proyectos de software por sus caracteriacutesticas

intriacutensecas (intangibilidad maleabilidad etc) pero cada

ingenieriacutea tiene sus problemas particulares y cada una supo

evolucionar a lo que son ahora Seguramente la ingenieriacutea de

Software con el tiempo encontraraacute su camino

Ahora bien aparte de criticar un poco a DeMarco (que era lo

maacutes faacutecil) vamos a retomar la frase

―No puedes controlar lo que no puedes medir lleva impliacutecita

que el control es un aspecto importante quizaacutes el maacutes

importante de cualquier proyecto de software Pero no lo es

En cierta medida explicaba arriba estoy de acuerdo con esta

afirmacioacuten Un buen proyecto de software con mucho control

pero malos programadores lleva al fracaso inevitablemente (lo

he vivido personalmente y por experiencias de terceros) Por el

contrario un buen equipo de programadores (pero de los

buenos) puede terminar el proyecto maacutes complejo haciendo que

ninguacuten indicador tenga sentido ya que la diferencia de calidad

del producto y la eficiencia del trabajo de este tipo de gente

multiplica por 10 o por 100 la de un equipo estaacutendar

Este tipo de gente piensa las cosas de manera diferente tiene la

calidad incorporada como meacutetodo de trabajo y la capacidad de

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

6

generar soluciones a las distintas situaciones hace que el

esfuerzo estimado pueda acortarse en oacuterdenes de magnitud

Estuve dentro equipos de este estilo y lo que se puede lograr en

un ambiente hiperproductivo difiacutecilmente se logre en una

empresa de desarrollo comuacuten y corriente El problema es que la

gente que tiene estas cualidades escasea y el mercado estaacute lleno

de trabajadores ―estaacutendar que requieren definiciones procesos

un aacuterea de calidad que verifique sus entregables y un PM que le

indique queacute es lo que tiene que hacer De a poco estimo yo la

industria iraacute decantando por rendimiento aquellos profesionales

que hacen la diferencia y los estaacutendares de productividad

calidad base teoacuterica requerida para un puesto iraacuten aumentando

Fue pasando durante estas deacutecadas y seguiraacute pasando en el

futuro

II CONCLUSIONES

En siacutentesis y para terminar con este artiacuteculo medir y controlar

importa importa maacutes en las empresas con gente estaacutendar

importa maacutes en las empresas con proyectos estaacutendar y siempre

que estemos dentro de una empresa algo vamos a tener que

medir pero el control no es condicioacuten necesaria ni menos

suficiente para lograr un proyecto exitoso No es algo

fundamental como tener un buen equipo de programadores

como tener gente que sepa interpretar lo que se pide y

transformarlo de manera natural en la solucioacuten que el cliente

necesita Por eso cuando veo gente que se preocupa por

aumentar el control o aumentar los procesos creo que estaacute

perdiendo el foco cuando lo que deberiacutea buscar es coacutemo hacer

para encontrar y hacer rendir a los verdaderos profesionales del

software

III REFERENCIAS

[1] Software Engenieering an idea whose time has come and gone por Tom

DeMarco [2] CyS Ingenieria de Software El blog del aacuterea de Ingenieriacutea de Software de

CyS Informaacutetica SA

] INGENIERIacuteA DE SOFTWARE

7

INGENIERIacuteA DE SISTEMAS

EXTREME PROGRAMMING PARA DESARROLLO

DE SOFTWARE

Erwin Adaacuten Choque Ulloa Ingenieriacutea de Sistemas

Universidad San Francisco de Asiacutes

Plaza Avaroa esq Belisario Salinas

La paz ndash Bolivia adan_ekinghotmailcom

Resumen

En este articulo se describiraacute algunas de las metodologiacuteas

agiles de desarrollo de software puesto que para asegurar el

eacutexito durante el desarrollo de un software es importante

saber la metodologiacutea de desarrollo la cual nos provee una

guiacutea para la correcta aplicacioacuten y desarrollo de Software

La metodologiacutea Extreme Programming XP que es una de las

metodologiacuteas aacutegiles maacutes extendidas y populares ademaacutes es

considerada como una metodologiacutea posmoderna donde

grandes capacidades se generan a traveacutes de procesos

emergentes

Palabras claves Extreme Programming metodologiacutea software

usuario

1 INTRODUCCION

El esquema tradicional para abordar el desarrollo de

software ha demostrado ser efectivo y necesario en

proyectos de gran tamantildeo respecto a tiempo y recursos

Sin embargo este enfoque no resulta ser el maacutes adecuado

para muchos de los proyectos actuales donde el entorno

del sistema es muy cambiante y en donde se exige

reducir draacutesticamente los tiempos de desarrollo pero

manteniendo una alta calidad Ante este problema las

metodologiacuteas aacutegiles son una posible respuesta para llenar

ese vaciacuteo metodoloacutegico Orientadas para proyectos

pequentildeos las metodologiacuteas aacutegiles constituyen una

solucioacuten

A continuacioacuten se describiraacute cada una de las

metodologiacuteas de desarrollo de software

2 EXTREME PROGRAMMING XP

La metodologiacutea de desarrollo de software XP es la

primera metodologiacutea aacutegil y la que le dio conciencia al

movimiento actual de metodologiacuteas aacutegiles Kent Beck el

padre de la metodologiacutea XP se basa en realimentacioacuten

continua entre el cliente y el equipo de desarrollo

comunicacioacuten fluida entre todos los participantes

simplicidad en las soluciones implementadas y facilidad

para enfrentar los cambios XP se define como

especialmente adecuada para proyectos con requisitos

imprecisos y muy cambiantes y donde existe un alto

riesgo teacutecnico Ahora se describiraacute las caracteriacutesticas

esenciales del Extreme Programming

21 LAS HISTORIAS DEL USUARIO

La red Las historias del usuario es la teacutecnica utilizada

para especificar los requisitos de software son tarjetas de

papel donde el cliente especifica de manera simplificada

las caracteriacutesticas que el sistema debe poseer ya sean

requisitos funcionales o requisitos no funcionales Se

caracteriza por ser dinaacutemica y flexible cada historia de

usuario debe ser comprensible y delimitada para que los

programadores puedan implementarla en pocas semanas

22 ROLES XP

Seguacuten Kent Beck los roles son

Programador El programador se encarga de escribir las

pruebas unitarias y tambieacuten estaacute encargado de producir el

coacutedigo del sistema

Cliente Encargado de escribir las historias de usuario y

los requisitos funcionales y selecciona las historias por

prioridad de conveniencia al negocio

Encargado de pruebas Encargado de ayudar al cliente a

escribir las pruebas funcionales ademaacutes de ejecutar las

pruebas constantemente encargado de de las

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

8

herramientas de soporte de pruebas como tambieacuten

difundir los resultados de dicha prueba

Encargado de seguimiento Es el encargado de la

realimentacioacuten al equipo y realiza el seguimiento del

proceso de cada iteracioacuten

Entrenador Es el encargado de prever guiacuteas al equipo

basadas en XP y de seguir el proceso correctamente

Consultor Es el que posee un conocimiento especifico

en alguacuten tema necesario para el proyecto para solucionar

problemas

Gestor Es la interaccioacuten entre clientes y programadores

ayudando a trabajar de forma adecuada y de esta manera

coordinar de forma correcta

23 PROCESO XP

El ciclo de desarrollo XP consiste en

El cliente define el valor del negocio a implementar

El programador estima el esfuerzo necesario para su

implementacioacuten

El cliente selecciona que construir de acuerdo con sus

propiedades y las restricciones del tiempo

El programador construye ese valor de negocio

Vuelve al principio

En todas las iteraciones de este ciclo tanto el cliente como

el programador aprenden No se debe presionar al

programador a realizar maacutes trabajo que el estimado ya

que se perderaacute calidad en el software o no se cumpliraacuten

los plazos

El ciclo de vida ideal de XP consiste de seis fases

Exploracioacuten

Planificacioacuten de la Entrega (Release)

Iteraciones

Produccioacuten

Mantenimiento y Muerte del Proyecto

24 PRACTICAS XP

Las siguientes praacutecticas ayudan al desarrollo de software

El juego de la planificacioacuten Hay una comunicacioacuten

frecuente el cliente y los programadores El equipo

teacutecnico realiza una estimacioacuten del esfuerzo requerido para

la implementacioacuten de las historias de usuario y los

clientes deciden sobre el aacutembito y el tiempo de entregas y

de cada iteracioacuten

Entregas pequentildeas Producir raacutepidamente versiones del

sistema que sean operativas aunque no cuenten con toda

la funcionalidad del sistema Esta versioacuten ya constituye

un resultado de valor para el negocio Una entrega no

deberiacutea tardar maacutes de tres meses

Metaacutefora El sistema es definido mediante un conjunto

de metaacuteforas compartidas por el cliente y el equipo de

desarrollo Una metaacutefora es una historia compartida que

describe como deberiacutea funcionar el sistema

Disentildeo simple Se disentildea la solucioacuten maacutes simple que

pueda funcionar y ser implementada en un determinado

momento del proyecto

Pruebas La produccioacuten de coacutedigo estaacute dirigida para las

pruebas unitarias Estas son establecidas por el cliente

antes de escribirse el coacutedigo y son ejecutadas

continuamente ante cada modificacioacuten del sistema

Pruebas Es una actividad constante de reestructuracioacuten

del coacutedigo con el objetivo de remover duplicacioacuten de

coacutedigo mejorar su legibilidad simplificarlo y hacerlo

maacutes flexible para facilitar los cambios Se mejora la

estructura interna del coacutedigo sin alterar su

comportamiento externo

Programacioacuten en parejas Toda la produccioacuten del

coacutedigo debe realizarse con trabajo en parejas de

programadores Para tener ventajas como menor tasa de

errores mejor disentildeo etc

Propiedad colectiva del coacutedigo Cualquier programador

puede cambiar cualquier parte del coacutedigo en cualquier

instante

Integracioacuten continua Cada pieza del coacutedigo es

integrada en el sistema una vez que este listaasi el

sistema puede ser integrado y construido varias veces en

un mismo diacutea

40 horas por semana Se debe trabajar un maacuteximo de 40

horas por semana no se trabajan horas extras en dos

semanas seguidas Si esto ocurre estaacute existe un problema

porque el trabajo extra desmotiva al equipo

Cliente in-situ El cliente tiene que estar presente y

disponible todo el tiempo para el equipo este es uno de

los principales factores de eacutexito para el proyecto XP Y

asiacute guiar y disipar cualquier duda de los programadores

donde la comunicacioacuten es maacutes efectiva que la escrita

Estaacutendares de programacioacuten XP enfatiza que la

comunicacioacuten de los programadores es a traveacutes del

coacutedigo por lo que es importante que se sigan estaacutendares

de programacioacuten para mantener el coacutedigo legible

3 CONCLUCIONES

] INGENIERIacuteA DE SOFTWARE

9

INGENIERIacuteA DE SISTEMAS

Las metodologiacuteas aacutegiles ofrecen una solucioacuten casi a

medida para una gran cantidad de proyectos

La metodologiacutea XP es una de las metodologiacuteas aacutegiles maacutes

extendidas y populares ademaacutes es considerada como una

metodologiacutea posmoderna cuyas grandes capacidades se

generan a traveacutes de procesos emergentes

4 REFERENCIAS

httpwwwmetodologiasSoftcomdesarrolloagil

httpwwwwikipediacommetodologiaXP

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

10

Desarrollo de Scrum

Sergio J Guzmaacuten L Ingenieriacutea de Sistemas

Universidad San Francisco de Asiacutes

20 Octubre Esq Belisario Salinas

La Paz - Bolivia

sjguzmanusfaedubo

Resumenmdash Scrum es una metodologiacutea aacutegil de desarrollo de

proyectos que toma su nombre y principios de los estudios

realizados sobre nuevas praacutecticas de produccioacuten por

Hirotaka Takeuchi e Ikujijo Nonaka a mediados de los 80

En 1996 se definioacute por primera vez un patroacuten para aplicar

esos principios de desarrollo en ldquocampos de scrumrdquo al

software

Palabras clave mdash scrum metodologiacutea patroacuten software

sprint rol

I Que es Scrum

Scrum es una metodologiacutea aacutegil de desarrollo de proyectos

que toma su nombre y principios de los estudios

realizados sobre nuevas praacutecticas de produccioacuten por

Hirotaka Takeuchi e Ikujijo Nonaka a mediados de los 80

En 1996 se definioacute por primera vez un patroacuten para aplicar

esos principios de desarrollo en ―campos de scrum al

software

Esta fue la primera definicioacuten de un patroacuten Scrum aplicado

al software disentildeada por Jeff Sutherland y Ken Schwaber y

presentada en Object-Oriented Programming Systems

Languages amp Applications OOPSLA en 1996

II iquestCoacutemo incorporarla

La competitividad del mercado de desarrollo de Software y

la necesidad de los clientes de reducir el tiempo de

mercado obligan a las organizaciones de desarrollo de

software a ser agresivas en sus calendarios de entrega Esto

ha hecho que hayan surgido metodologiacuteas para la gestioacuten y

desarrollo de software basadas en un proceso iterativo e

incremental Su estructura estaacute basada en corto tiempo los

cuales son iteraciones de 1 a 4 semanas Scrum se usa en

proyectos de entorno complejos donde se desea obtener

resultados raacutepidos y la productividad es lo maacutes importante

En los proyectos basados en Scrum se consideran tres

roles

Duentildeo del producto Es quien determina las propiedades de

los entregables

Maestro de Scrum Administra y facilita la ejecucioacuten del

proceso

Equipo de Trabajo Trabajan en conjunto para entregar

resultados en cada sprint

Fig 1 El flujo de Scrum

Como se puede observar en medio de los participantes del

proceso no quedan claras las responsabilidades del

arquitecto de software Sin embargo como comenta

Charlie Alfred ―la arquitectura es al aceite y el filtro que

lubrica adecuadamente a Scrum

Fig 2 El flujo de Scrum

] INGENIERIacuteA DE SOFTWARE

11

INGENIERIacuteA DE SISTEMAS

Si se compara el rol del arquitecto de edificaciones con el

del arquitecto de software se puede observar que ambos

modelan las construcciones a un alto nivel de abstraccioacuten

proveen posibles soluciones mejoran la comunicacioacuten con

los miembros del equipo de construccioacuten a traveacutes de

modelos visualizan las generalidades del problema

definen los roles y las interacciones entre los componentes

de construccioacuten entre otras tareas Al igual que es

imposible pensar que un rascacielos puede ser construido

sin una arquitectura soacutelida es imposible pensar que

productos de software empresariales puedan ser

implementados sin una arquitectura bien pensada

Seguacuten Bass Clements y Kasman ―La arquitectura de

software de un programa o sistema informaacutetico es la

estructura o estructuras del sistema que incluyen elementos

de software las propiedades externamente visibles de esos

elementos y las relaciones entre ellos Esta definicioacuten nos

lleva a concluir que la arquitectura de software garantiza el

buen desarrollo del software y a tener un sistema que

cumpla con los requerimientos funcionales y no

funcionales del cliente Ademaacutes la arquitectura es clave en

la reutilizacioacuten de artefactos de software en sistemas de

liacutenea de productos de software

Viendo la importancia de la arquitectura en el desarrollo

del software en eacuteste artiacuteculo se presenta una propuesta para

gestionar la arquitectura de Software en Scrum En el

primer capiacutetulo se trata el tema de la localizacioacuten de la

arquitectura de software en el ciclo de desarrollo de Scrum

en el segundo capiacutetulo se describen las tareas del arquitecto

de software en Scrum finalmente se presentan las

conclusiones y el trabajo futuro

III Arquitectura de Software en el ciclo de desarrollo de

Scrum

La idea fundamental de la presente propuesta es adicionar

un sprint inicial llamado ―Sprint 0Prime al inicio del ciclo de

desarrollo El objetivo principal del arquitecto en el Sprint

0 es analizar y disentildear la generalidad del sistema que

satisfaga los requisitos y sea entendible por los miembros

del equipo desde sus diferentes puntos de vista durante el

desarrollo Un punto clave es reutilizar artefactos de

software creados a partir de la arquitectura para ser maacutes

aacutegiles en el desarrollo de productos especiacuteficos

El Sprint 0 comprende tres fases que fueron tomadas del

ciclo de vida de entregas evolutivas En el Sprint 0 se

construye la arquitectura de forma iterativa mediante un

anaacutelisis preliminar de los conductores arquitectoacutenicos

(requisitos funcionales de calidad y del negocio) y de un

estudio de factibilidad del proyecto No se necesita tener

todos los requisitos claros para comenzar la fase de disentildeo

arquitectoacutenico

Para determinar los conductores arquitectoacutenicos se debe

identificar los objetivos del negocio de maacutes alta prioridad

que son pocos Estos objetivos del negocio se convierten en

los escenarios de calidad o casos de uso De esta lista se

deben escoger los que tendraacuten un mayor impacto sobre la

arquitectura El disentildeo arquitectoacutenico puede comenzar una

vez que se encuentran definidos los conductores

arquitectoacutenicos El proceso de anaacutelisis de requisitos seraacute

entonces influenciado por las preguntas generadas durante

el disentildeo arquitectoacutenico

El resultado del Srpint 0 es un documento inicial que

explica la arquitectura El documento puede basarse en los

pasos definidos por el meacutetodo ADD (Attrbute Driver

Design) Este meacutetodo ha sido probado exitosamente en

proyectos anteriores Con ADD se puede definir una

arquitectura de software mediante un proceso de

descomposicioacuten basado en los atributos de calidad de

Software

El documento inicial de la arquitectura se debe avaluar con

el fin de saber si la arquitectura cumple con los requisitos

de calidad Para realizar esta evaluacioacuten se propone el

meacutetodo ATAM (Architecture Tradeoff Analysis Method)

El ATAM revela cuaacuten bien una arquitectura satisface los

objetivos particulares de calidad y provee una

aproximacioacuten de coacutemo los objetivos de calidad interactuacutean

Si la evaluacioacuten de la arquitectura se encuentra que se

deben realizar cambios a la misma entonces eacutesta se debe

refinar hasta llegar a tener como resultado del Sprint 0 el

documento puacuteblico de la arquitectura junto con el sistema

esqueleto Finalmente la arquitectura creada en el Sprint 0

beneficiaraacute el desarrollo en los siguientes sprints

IV Rol del arquitecto de Software en Scrum

El rol y actividades del arquitecto de software cambian de

enfoque dependiendo de si se estaacute en el Sprint 0 o en

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

12

sprints subsecuentes

Fig 3 La Comunicacioacuten

Sprint 0 En sistemas complejos una persona difiacutecilmente

puede cubrir con amplitud teacutecnica las decisiones

arquitectoacutenicas y dar credibilidad a la arquitectura de

software Esto quiere decir que la participacioacuten del equipo

es de vital importancia para la creacioacuten y el mantenimiento

de la arquitectura Un equipo de arquitectos de software

que se aiacutesle del equipo de Scrum puede producir una

arquitectura que corra el riesgo de ser rechazada Es por

esto que recomendamos que el arquitecto o los arquitectos

se software sean miembros del equipo de Scrum Una de

las actividades que se debe realizar en equipo es la

evaluacioacuten de la arquitectura Especiacuteficamente en el

meacutetodo ATAM se requiere la participacioacuten mutua de tres

equipos que trabajan en conjunto con los arquitectos de

software el de evaluacioacuten el de tomadores de decisiones

del proyecto y el de los involucrados en la arquitectura

Sprints subsecuentes El arquitecto de software asegura que

el equipo de Scrum entienda el enfoque y los retos

arquitectoacutenicos maacutes importantes en casa sprint Los

equipos de Scrum realizan construcciones cortas guiados

por las estrategias de la arquitectura A continuacioacuten se

nombran algunas de las responsabilidades del arquitecto de

software desde el Sprint 1 en adelante

El duentildeo del producto y el maestro del Scrum trabajan con

el arquitecto para priorizar los requisitos a implementar en

cada iteracioacuten

El arquitecto comunica las decisiones y facilita las

conversaciones arquitectoacutenicas de distintos puntos de vista

en cada sprint

El arquitecto asegura que haya conformidad entre las

entregas en cada sprint y la arquitectura

El arquitecto responde preguntas y da orientacioacuten

arquitectoacutenica cuando sea necesario

Junto con el maestro de Scrum coordina a los miembros

del equipo para adaptarse a la arquitectura previa

El arquitecto junto con el duentildeo del producto y los

miembros del equipo preparan el Product Backlog

V Conclusioacuten

En el presente artiacuteculo ofrecimos una propuesta para incluir

la arquitectura de software en Scrum En el Sprint 0 se

realizan las actividades concernientes al anaacutelisis y disentildeo

de la arquitectura de software y el sistema esqueleto En

los siguientes sprints el arquitecto de software se asegura

de que la implementacioacuten cumpla con la arquitectura

REFERENCIAS

[3] httpwwwsafecreativeorgwork

[4] Hirotaka Takeuchi es decano de la Graduate School of International

Corporate Strategy en la Universidad Hitotsubashi en Tokio y fue profesor visitante en la Escuela de Negocios Harvard entre 1989 y 1990

[5] Ikujiro NonakaNo soy un guruacute porque me falta carisma

] INGENIERIacuteA DE SOFTWARE

13

INGENIERIacuteA DE SISTEMAS

El futuro de la ingenieriacutea de software Luis E Aguirre

Ingenieriacutea de Sistemas

Universidad San Francisco de Asiacutes

20 de Octubre esq Belisario Salinas

La Paz - Bolivia leaguirreusfaedubo

Resumen El disentildeo de programas a partir de informacioacuten binaria

significoacute un paso sustantivo para la industria desarrolladora de

software Desde ese hallazgo ocurrido en la deacutecada de los

cincuenta hasta hoy el crecimiento de metodologiacuteas para su

desarrollo ha subido notablemente en complejidad Sin embargo

los ciacuterculos viciosos que acusa hoy la confeccioacuten de programas

informaacuteticos impiden conceptualizar el objeto a un nivel

superior de abstraccioacuten tal y como lo exige el avance tecnoloacutegico

y los procesos de negocios

Palabras clave mdash futuro software ingenieriacutea programador y

desarrollo

I Introduccioacuten

La calidad de los sistemas informaacuteticos satisfaccioacuten de sus

usuarios y clientes son temas ampliamente conocidos

recurrentes y de constante preocupacioacuten por parte de los

practicantes de la Ingenieriacutea de software

Esta joven y dinaacutemica ingenieriacutea siempre estaacute en busca de

mejoras en el desarrollo de sistemas aumento de

productividad del ingeniero de software mayor control del

proceso de desarrollo establecimiento de nuevos meacutetodos de

desarrollo

Fig 1 Primeros programas computacionales en formato de tarjeta perforada

Estos elementos combinados y aplicados de buena forma

logran un buen proceso de desarrollo y en definitiva un buen

producto

Identificar los pasos que ha recorrido esta ingenieriacutea analizar

su contexto actual y finalmente proyectar hacia doacutende se

dirige es el pilar de este artiacuteculo

II iquestSe aplica actualmente la ingenieriacutea del software

La investigacioacuten y el desarrollo de teacutecnicas y meacuteto

dos de ingenieriacutea del software son constantes y suelen suponer

interesantes avances en la resolucioacuten de problemas de

desarrollo de software Sin embargo es habitual que en la

praacutectica diaria profesional no se incluya praacutecticamente

ninguna de las recomendaciones maacutes elementales de la

ingenieriacutea del software En efecto es habitual que el

desarrollo de software se parezca maacutes al descontrol del cuento

de laquosi los programadores fueran albantildeilesraquo ([Novatica

1996]) que a una idiacutelica y bien organizada factoriacutea de

software (concepto de gran vigencia a finales de los ochenta

[Nunamaker et al 1988])

De hecho las evaluaciones de los procesos productivos de

software realizadas a raiacutez de los modelo de procesos de

software (por ejemplo con CMM [Paulk et al 1993])

confirman que el desarrollo de software suele estar

baacutesicamente en estado caoacutetico

Y no soacutelo en como uno podriacutea pensar pequentildeas

organizaciones de un paiacutes mediterraacuteneo como el nuestro sino

en tambieacuten en las empresas adjudicatarias de interesantes

contratos de defensa de paiacuteses laquoavanzadosraquo como EEUU o

Japoacuten Si bien estos modelos de evaluacioacuten auacuten acumulan

distintas acusaciones de rigidez o falta de contraste empiacuterico

los resultados obtenidos en sus evaluaciones resultan

consistentes con la sensacioacuten de constante laquoapagafuegosraquo que

suelen sufrir los profesionales del software Tambieacuten suelen

revelar la praacutectica despreocupacioacuten de los responsables de las

organizaciones de software por la mejora de la calidad de sus

procesos de trabajo o de sus productos bien sea por contar con

una situacioacuten interna de empresa poco propicia porque el

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

14

ambiente del mercado no fomenta la preocupacioacuten por estos

temas o bien por su poco intereacutes real en la buacutesqueda de la

calidad

III La actualidad

La gran mayoriacutea de los sistemas de software creados hoy en

diacutea son los llamados sistemas corporativos es decir son

orientados a formar una parte importante de los negocios de

las grandes empresas

Continuando en nuestro contexto se identifica un nuevo

enfoque del problema de desarrollo el apoyo en la

sincronizacioacuten de los procesos de negocio estructuras

complejas de informacioacuten manejada por el negocio todo esto

entrelazado por restricciones dadas por las reglas del negocio

La tecnologiacutea actual por otro lado ha alejado maacutes todaviacutea los

ingenieros de las maacutequinas sistemas operativos incluso de

las tareas de programacioacuten

El enfoque de la mayoriacutea de los equipos de desarrollo e

ingenieros participes en proyectos sigue siendo con un bajo

nivel de abstraccioacuten cerca de la codificacioacuten Se tiende a

pensar en la base de datos a utilizar establecer la navegacioacuten

de las paacuteginas programar los protocolos de comunicacioacuten etc

Esto lleva a utilizar las tareas de programacioacuten y de pruebas

para validar el entendimiento y cumplimiento de la

funcionalidad de los sistemas

Lo anteriormente expuesto muestra un problema

metodoloacutegico consecuencia de un desfase entre el enfoque

teoacuterico oacuteptimo (anaacutelisis de negocio) y el enfoque praacutectico real

(programacioacuten y pruebas) en los proyectos de hoy En otras

palabras la metodologiacutea actualmente usada estaacute atrasada con

respecto al avance tecnoloacutegico

Desarrollando maacutes esta idea se identifican algunos

problemas concretos de las metodologiacuteas

Ellas no obligan a sus ejecutores a respetar todas las

normas y los procedimientos establecidos especialmente

en las etapas tempranas del proyecto Es muy faacutecil y

tentador ―saltar una o maacutes de estas etapas uno o maacutes

documentos o modelos pasando directamente a

implementacioacuten produccioacuten y posterior correccioacuten de los

sistemas desarrollados

Control de calidad del producto final La codificacioacuten y

complejidad del programa es demasiada para ser revisada

y verificada fehacientemente Por otro lado los coacutedigos

fuentes y los ejecutables actualmente son los uacutenicos

entregables eficientemente verificables

Estos dos problemas al parecer forman una situacioacuten

contradictoria la metodologiacutea tradicional no permite validar

eficientemente la calidad de los sistemas antes de llegar al

coacutedigo fuente y por otro lado tampoco permite llegar

eficientemente a coacutedigos fuentes de calidad

IV Futuro

La salida de este ―ciacuterculo vicioso que se propone es

bastante natural analizar la situacioacuten actual de la ingenieriacutea

de software en la luz de sus tendencias histoacutericas

La primera de ellas relacionada con los problemas que

resuelven los sistemas obviamente presente y muy utilizada

en nuestra realidad los sistemas de hoy no soacutelo resuelven los

problemas del mundo real sino que estaacuten fuertemente influen-

ciando el desarrollo del mundo real

Fig2 Modela

El enfoque de los ingenieros desde hace unos antildeos no se ha

movido significativamente por el camino del aumento de

abstraccioacuten establecido histoacutericamente Se han hecho ciertos

avances en temas puntuales (como arquitecturas de

componentes patrones de disentildeo nuevos lenguajes de

programacioacuten etc) pero conceptualmente

metodoloacutegicamente la tarea de programacioacuten sigue siendo

ejecutada de la misma forma escribiendo coacutedigos fuentes en

forma de los programas textuales

Eacuteste es justamente el ―atraso metodoloacutegico que se

mencionoacute Para disminuir la brecha entre las tendencias

histoacutericas es necesario ajustar la metodologiacutea en teacuterminos de

aumentar la abstraccioacuten del enfoque de los ingenieros de

software y acercarlo a la abstraccioacuten del problema

El aumento de la abstraccioacuten del proceso de desarrollo del

software hace pensar que la proacutexima generacioacuten de meacutetodos

de desarrollo se perfila en un conceptualmente nuevo con-

] INGENIERIacuteA DE SOFTWARE

15

INGENIERIacuteA DE SISTEMAS

junto de herramientas que permitan aumentar en un mayor

grado al actual la abstraccioacuten escondiendo los detalles de maacutes

bajo nivel

Fig3 Probable modelo a futuro

Las nuevas herramientas permitiraacuten ―programar en nivel

de anaacutelisis generando coacutedigos en un lenguaje de

programacioacuten tradicional de forma automaacutetica tal como hoy

los compiladores generan el lenguaje maacutequina a partir del

coacutedigo fuente Nuevos ―lenguajes de programacioacuten

naturalmente seriacutean visuales y se pareceriacutean a las

especificaciones de software en uno de los lenguajes de

modelamiento por ejemplo UML

V Conclusioacuten

Es muy probable que estemos proacuteximos a ver un nuevo

paso evolutivo en la ingenieriacutea de software Tan grande como

el invento de lenguajes de alto nivel o anaacutelisis y disentildeo

orientado a objetos Una nueva generacioacuten que absorberaacute a la

actual automatizando la mayoriacutea de las buenas praacutecticas

usadas actualmente

Una pregunta natural es si una maacutequina puede llegar a

generar programas tan buenos como los hechos por un pro-

gramador experto En vez de ―romper la cabeza con esta

pregunta ahora quizaacutes seriacutea suficiente recordarse otra vez de

la historia Los primeros compiladores de ninguna generacioacuten

alcanzaban de inmediato lo deseable y oacuteptimo Sin embargo

con el paso del tiempo apoyados en la experiencia de los

ingenieros y en el avance tecnoloacutegico se mejoraban hasta el

nivel de superar significativamente las generaciones

anteriores

Es poco factible que hoy en diacutea alguien cuestione la calidad

de los compiladores de por ejemplo Java y la calidad del

coacutedigo de maacutequina generado por ellos

VI Referencias [6] Website [Online]

httpwwwenterpriseanalystnetdownloadmda_informaticap

df

[7] httpwwwslidesharenetamrrochafuturo-del-software-impacto-en-las-organizaciones-y-en-los-profesionales

[8] httpwwwdcubaareventseci2008conferenciasIngSoftHexacta

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

16

Ingenieriacutea de Software para

Desarrolladores de juegos Huascar Huanca Orozco

Ingenieria de Sistemas San francisco de Asis

Av20 de Octubre esq Belisario Salinas

hhuncausfaedubo

ResumenmdashEn este artiacuteculo veremos una lo que es ldquoIS para

Desarrolladores de juegosrdquo si crees que un juego es facil pues

te equivocas en este articulo mostramos el uso de la IS en la

cracion de juegos que metodos utilizan y la complejidad que

representa para el equipo de desarrollo

1) Palabras clave mdash UMLRequisitosjuegoequipo de trabajo motor del juego

IV INTRODUCCIOacuteN

En la ingenieriacutea de software (IS) el desarrollo

de videojuegos es uacutenico pero similares a los

esfuerzos de software Es la uacutenica que combina el

trabajo de los equipos que cubren muacuteltiples

disciplinas (arte muacutesica actuacioacuten

programacioacuten etc) y que el juego de

acoplamiento que se busca a traveacutes del uso de

prototipos e iteraciones Con ello el desarrollo

del juego se enfrenta a desafiacuteos que pueden ser

abordadas mediante las praacutecticas tradicionales de

SE La industria tiene que adoptar buenas

praacutecticas de SE para sus distintas necesidades

tales como la gestioacuten de activos multimedia y

encontrar el fundamento en el juego La industria

debe asumir los retos por la evolucioacuten de los

meacutetodos de SE para satisfacer sus necesidades

Este trabajo investiga estos desafiacuteos y praacutecticas

de ingenieriacutea destaca para mitigar estos

problemas

V ENTRA EN EL JUEGO

Lo que la IS para desarrolladores de juegos hace

es

Mezcla de ingenieriacutea y el arte El software como

una praacutectica como una preocupacioacuten profesional

Meacutetodos para aprender a disentildear y fabricar un

producto El desarrollo del personaje e ingenieriacutea

de software Estrategias para hacer el mejor uso

de la ingenieriacutea del conocimiento formalizado El

aprendizaje de las habilidades que se pueden

aplicar en cualquier lugar

VI REQUISITOS

Esta parte ofrece una visioacuten general de los

conceptos y herramientas necesarias para la

obtencioacuten de requisitos

IDENTIFICAR LO QUE SE CONSIDERA UN REQUISITO DE SOFTWARE

ESTABLECER LOS CRITERIOS PARA DAR SENTIDO A LOS REQUISITOS Y LA

ESCRITURA DETERMINAR LA MANERA DE REUNIR LOS REQUISITOS O DESCUBRIR

EXPLORAR COacuteMO EMPLEAR CASOS DE USO PARA PERFECCIONAR Y

ANALIZAR LAS NECESIDADES ENCONTRAR TEacuteCNICAS PARA CONFIRMAR QUE LOS REQUISITOS ESTEacuteN

COMPLETOS

VERIFICAR LA EXACTITUD DE LOS REQUISITOS TRACE CAMBIOS EN LOS REQUISITOS

VII PROGRAMADOR DEL MOTOR DEL JUEGO

Fig 1 Juego RPG

] INGENIERIacuteA DE SOFTWARE

17

INGENIERIacuteA DE SISTEMAS

Los programadores de juegos motores crear el

motor de base del juego incluyendo la fiacutesica de

simulacioacuten y disciplinas graacuteficas

A Fiacutesica del motor del programador

Programador de un juego de la fiacutesica se dedica

al desarrollo de las fiacutesica de un juego se emplean

Por lo general un juego de soacutelo simular algunos

aspectos de la fiacutesica del mundo real Por ejemplo

un juego de espacio puede necesitar simulada

gravedad pero no tendriacutea ninguna necesidad

para simular agua viscosidad

Para un juego de rol como World of Warcraft

soacutelo un programador de la fiacutesica puede ser

necesaria Para un juego de combate complejo

como Battlefield 1942 los equipos de

programadores de la fiacutesica pueden ser necesarias

B motor de graacuteficos del programador

A pesar de todos los programadores antildeadir

tanto los contenidos y la experiencia que ofrece

un juego un programador de juego se centra maacutes

en la estrategia de un juego la aplicacioacuten de la

mecaacutenica del juego y la loacutegica y la sensacioacuten

de un juego

Esto no suele ser una disciplina independiente

como lo que este programador es por lo general

se diferencia de un juego a otro y que

inevitablemente se veraacute involucrado con las aacutereas

maacutes especializadas de desarrollo del juego como

los graacuteficos o el sonido

VIII EQUIPO DE TRABAJO

Fig 2 Grupo de trabajo

Un equipo de desarrollo en una organizacioacuten de

ingenieriacutea de software se compone de un grupo

de personas que trabajan en funciones

especializadas para lograr un objetivo comuacuten El

objetivo es la realizacioacuten de un proyecto Un

proyecto se define como un esfuerzo temporal

emprendido para crear un producto uacutenico

servicio o resultado

Aquiacute una pequentildea lista incompleta de algunos de

los componentes de un equipo de trabajo para

Desarrollo de juegos

Analista de requerimientos recopilar y analizar

los requisitos para el software

Arquitecto de software determinar la mejor

arquitectura para el software Seleccionar

Los componentes del proveedor para su inclusioacuten

en el esfuerzo de desarrollo

Disentildeador de software acotar el software para

lograr un rendimiento y otros

Objetivos

Prueba de software probador del software para

garantizar que funcione de acuerdo a la

Requisitos

Programador senior desarrollar bajo nivel de

documentacioacuten de disentildeo sirven como una

tecno-

Ventaja teacutecnica para los demaacutes e implementar el

software de acuerdo

Para el disentildeo

Programador implementar el software de acuerdo

al disentildeo

Trabajos de mantenimiento en el programador de

software creado durante el desarrollo anterior

Los esfuerzos para agregar funcionalidad o

eliminar errores de trabajo con

Atencioacuten al cliente

IX LENGUAJE UNIFICADO DE MODELADO (UML)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

18

Tomando en cuenta que el UML es un estaacutendar

muy flexible Nos da razoacuten que podemos pensar

en el diagrama

como herramientas que permiten realizar

diferentes tipos de trabajo Para revisar un poco

Use un diagrama de casos de uso para reunir y estudiar los requisitos para los propoacutesitos de disentildeo o pruebas

Use un diagrama de actividades para explorar los escenarios de casos de uso

Use un diagrama de clases para identificar las clases y ver coacutemo las

clases se relacionan entre siacute Use un diagrama de objetos para ver coacutemo un objeto se comunica con

otro

Use un diagrama de estado para explorar los atributos de cambio de objeto

Use un diagrama de secuencia para explorar a fondo un caso de uso

mediante el trazado de la orden en el que los objetos enviar mensajes a siacute mismos o entre siacute

Use un diagrama de colaboracioacuten para ver la loacutegica del sistema y la

forma en que los objetos envian mensajes entre siacute Use un diagrama de componentes para explorar y si existen los

subsistemas dentro de su juego

Use un diagrama de implementacioacuten para encontrar la manera de

configurar el paquete de instalacioacuten para su juego

X CONCLUSIONES

El desarrollo de los juegos se han vueltos mas

complejos con el pasar del tiempo y para el

desarrollo de un juego que este a la vanguardia

de la competencia se debe trabajar con la IS es

una forma eficaz de conseguir un juego de

calidad internacional

Referencias [9] Software Engineering for Game Developers by john P Flynt with Omar

Salem [10] httpieeexploreieeeorgxplloginjsptp=amparnumber=5070627ampurl=http

3A2F2Fieeexploreieeeorg2Fiel52F50705742F50705752F05

070627pdf3Farnumber

[11] httpgamedevstackexchangecomquestions19934abstract-game-engine-design

] INGENIERIacuteA DE SOFTWARE

19

INGENIERIacuteA DE SISTEMAS

Estrategias de Prueba del Software Miguel Angel Callisaya Quispe Universidad San Francisco de Asiacutes Av 20 de Octubre La Paz Bolivia

maccc19hotmailcom

Resumen Una estrategia de software es un mecanismo que

proporciona una guiacutea o base pasa ver la forma como se debe

desarrollar la aplicacioacuten en cuanto a meacutetodos esfuerzo

tiempo y recursos que son necesarios para lograr un producto

exitoso

La frecuencia con las que realicen las pruebas es de gran

importancia ya que de estaacute manera se pueda la en encontrar

los errores antes de que se conviertan en errores para la

aplicacioacuten si no se lleva un orden de aplicacioacuten de las pruebas

se va a perder tiempo recurso y sobre todo esfuerzo

Durante las primeras etapas de las pruebas es importante

concentrar toda la atencioacuten en un pequentildeo grupo de

componentes o en un componente que se considere importante

para el desarrollo tanto en los datos como en la parte loacutegica de

la aplicacioacuten

El objetivo final de las estrategias de prueba es documentar la

forma en el que equipo ha hecho el desarrollo y el seguimiento

que se le ha hecho a cada una de las etapas durante las etapas

de desarrollo e implementacioacuten

Palabras clave Calidad Prueba Estrategias Sistema

I INTRODUCCIOacuteN

Durante este articulo es importante mencionar algunos

aspectos que determinan el eacutexito de la aplicacioacuten de las

estrategias de prueba como lo son el enfoque estrateacutegico

para la prueba de software aspectos estrateacutegicos

estrategias de prueba para software convencional

estrategias de prueba para software orientado a objeto

estrategia de prueba para webapps pruebas de validacioacuten y

por uacuteltimo las pruebas del sistema

IIESTRATEGIAS DE PRUEBA DEL SOFTWARE

Verificacioacuten Estamos construyendo el producto

correctamente

Validacioacuten Estamos construyendo el producto correcto

Integracioacuten descendente

La integracioacuten descendente es un planteamiento

incremental a la construccioacuten de la estructura de programas

Se integran los moacutedulos movieacutendose hacia abajo por la

jerarquiacutea de control comenzando por el moacutedulo de control

principal (programa principal) Los moacutedulos subordinados

(de cualquier modo subordinados) al moacutedulo de control

principal se van incorporando en la estructura bien de

forma primero-en-profundidad o bien de forma primero-en-

anchura Fig1

Integracioacuten ascendente

La prueba de la integracioacuten ascendente como su nombre

indica empieza la construccioacuten y la prueba con los

moacutedulos atoacutemicos (es decir moacutedulos de los niveles maacutes

bajos de la estructura del programa) Dado que los moacutedulos

se integran de abajo hacia arriba el proceso requerido de

los moacutedulos subordinados a un nivel dado siempre estaacuten

disponibles y se elimina la necesidad de resguardos Fig2

Fig 1 Integracioacuten descendente

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

20

Fig 3 Integracioacuten Ascendente

Aspectos Estrateacutegicos

Tom Gilb plantea que se deben abordar los

siguientes puntos si se desea implementar con

eacutexito una estrategia de prueba del software

Especificar los requisitos del producto de manera

cuantificable mucho antes de que comiencen las pruebas

-Establecer los objetivos de la prueba de manera expliacutecita (teacuterminos

medibles)

-Comprender queacute usuarios va a tener el software y desarrollar un perfil

-Desarrollar un plan de prueba que haga hincapieacute en la prueba de ciclo

raacutepido

-Construir un software ―robusto disentildeado para probarse a siacute mismo

-Usar revisiones teacutecnicas formales efectivas como filtro antes de la

prueba

Llevar a cabo revisiones teacutecnicas formales para evaluar la

estrategia de prueba y los propios casos de prueba

Desarrollar un enfoque de mejora continua al proceso de

prueba Deberiacutea medirse la estrategia de prueba

Prueba de Unidad

La prueba de unidad centra el proceso de

verificacioacuten en la menor unidad del disentildeo del

software el moacutedulo La prueba de unidad siempre

esta orientada a caja blanca y este paso se suele

llevar a cabo en paralelo para muacuteltiples moacutedulos

Pruebas de Alfa y Beta

C u a n d o s e c o n s t r u y e s o f t w a r e a m e d i d a s e

l l e v a n a c a b o u n a s e r i e d e p r u e b a s d e

a c e p t a c i oacute n p a r a permitir que el cliente valide todos

los requisitos La prueba alfa se lleva a cabo en el

lugar del desarrollo pero por un cliente Se usa el

software en forma normal con el desarrollador como

observador del usuario y registrando los errores y

problemas de uso(entorno controlado)La prueba beta se

lleva a cabo por los usuarios finales en los lugares

de trabajo de los clientes El cliente registra los

problemas y los informa a intervalos regulare

Pruebas del sistema

La prueba del sistema estaacute constituida por una

serie de pruebas diferentes cuyo propoacutesito es

ejercitar profundamente el sistema

Prueba de recuperacioacuten

E s l a p r u e b a d e l s i s t e m a q u e f u e r z a a l

f a l l o d e l s o f t w a r e d e m u c h a s f o r m a s y

v e r i f i c a q u e l a recuperacioacuten se lleva a cabo

apropiadamente Recuperacioacuten automaacutetica o manual

Prueba de seguridad

Intenta verificar que los mecanismos de proteccioacuten

incorporados en el sistema lo protegeraacute de hecho de

accesos impropios

Pruebas de Resistencia

Estaacuten disentildeadas para enfrentar a los programas con

situaciones anormales Una variante de la prueba de

resistencia es una teacutecnica denominada prueba de

sensibilidad intenta descubrir combinaciones de datos

dentro de una clase de entrada valida que pueda producir

inestabilidad o un proceso incorrecto

El arte de la depuracioacuten

La depuracioacuten ocurre como consecuencia de una

prueba efectiva Cuando un caso de prueba

descubre u n e r r o r l a d e p u r a c i oacute n e s e l

p r o c e s o q u e p r o v o c a l a e l i m i n a c i oacute n d e l

e r r o r E l p r o c e s o m e n t a l q u e conecta un siacutentoma

con una causa es la depuracioacuten

El proceso de la depuracioacuten

E l p r o c e s o d e d e p u r a c i oacute n i n t e n t a h a c e r

c o r r e s p o n d e r e l s iacute n t o m a c o n u n a c a u s a

l l e v a n d o a s iacute a l a correccioacuten del error El proceso de

depuracioacuten siempre tiene uno de los dos resultados

siguientes

(1)se encuentra la causa se corrige y se elimina

o

(2)no se encuentra la causa En eacuteste uacuteltimo caso la persona

que realiza la depuracioacuten debe sospechar la causa disentildear

un caso de prueba que ayude a confirmar sus sospechas y el

trabajo vuelve hacia atraacutes a la correccioacuten del error de una

forma iterativa iquestPor queacute es tan difiacutecil la depuracioacuten

Varias caracteriacutesticas de los errores nos dan algunas

] INGENIERIacuteA DE SOFTWARE

21

INGENIERIacuteA DE SISTEMAS

pistas1El siacutentoma y la causa pueden ser

geograacuteficamente remotos entre siacute2El siacutentoma

puede desaparecer (temporalmente) al corregir

otro error

3 E l s iacute n t o m a p u e d e r e a l m e n t e e s t a r

p r o d u c i d o p o r a l g o q u e n o e s u n e r r o r

( i n e x a c t i t u d d e l o s redondeos)

4El siacutentoma puede estar causado por un error

humano que no sea faacutecilmente detectado

5El siacutentoma puede ser el resultado de problemas

de temporizacioacuten en vez de problema s de proceso

6Puede ser difiacutecil reproducir exactamente las

condiciones de entrada

7 E l s iacute n t o m a p u e d e a p a r e c e r e n f o r m a

i n t e r m i t e n t e

8 E l s iacute n t o m a p u e d e s e r d e b i d o a c a u s a s q u e

s e d i s t r i b u y e n p o r u n a s e r i e d e t a r e a s

e j e c u t aacute n d o s e e n diferentes procesadores

IIICONCLUCIONES

Las estrategias de prueba del software es un mecanismo

que proporciona una guiacutea o base pasa ver la forma como se

debe desarrollar la aplicacioacuten en cuanto a meacutetodos para

logra un producto exitoso

IVREFERENCIAS

httpbuenastareascomensayosEstategias-de-prueba-de-

software3752643html

httpwwwestrategiascompruebaagil

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

22

Ingenieriacutea Inversa Juan Carlos Zenteno Sanga

1

Departamento de Ingenieriacutea de Sistemas Universidad San Francisco de Asiacutes

Direccioacuten Incluyendo el Paiacutes 1juanka_58hotmailcom

Resumenmdash La ingenieriacutea de Software es parte del modelo de

proceso de reingenieriacutea de software es el proceso de analizar

un programa con la finalidad de crear una representacioacuten del

programa en un grado mayor de abstraccioacuten del coacutedigo

fuente las herramientas de ingenieriacutea inversa obtienen

informacioacuten del disentildeo de datos arquitectoacutenico y de

procedimientos a partir de un programa existente

En el siguiente artiacuteculo se veraacuten los conceptos baacutesicos y se

denotara un ejemplo praacutectico para una mayor comprensioacuten

del tema

Palabras clave mdash Ingenieriacutea de Software Reingenieriacutea

Linux Ingenieriacutea Inversa

XI INTRODUCCIOacuteN

Inmersa en el aacuterea de conocimiento de la

ingenieriacutea de software se encuentra la ingenieriacutea

inversa como punto de apoyo para los procesos

de anaacutelisis y disentildeo propuestos en diferentes

meacutetodos de desarrollo

La ingenieriacutea inversa permite subsanar esta

deficiencia al documentar los productos de

software a partir del coacutedigo ejecutable con el fin

de obtener los artefactos de anaacutelisis y disentildeo

La ingenieriacutea inversa es ademaacutes una

herramienta uacutetil que ayuda en el proceso de

aseguramiento de la calidad del software

mediante la comparacioacuten de diagramas de fases

de anaacutelisis y desarrollo se apoya comuacutenmente en

la generacioacuten del diagrama de clases debido a la

importancia de este diagrama en la fase de disentildeo

y su facilidad de generacioacuten Existen tambieacuten

otros diagramas de intereacutes como el de

comunicacioacuten y el de secuencias que modelan

las caracteriacutesticas dinaacutemicas de un producto de

software

Hoy en diacutea los productos maacutes comuacutenmente

sometidos a la Ingenieriacutea Inversa son los

productos de Hardware y Software pero

cualquier producto puede ser sometido a este

proceso

Aplicar ingenieriacutea Inversa a algo supone

profundizar el estudio de su funcionamiento

En el caso concreto del Software se conoce

por ingenieriacutea de software a la actividad que se

ocupa de describir coacutemo funciona un programa

de cuyo coacutedigo no se dispone hasta el punto de

generar coacutedigo propio que cumpla con las

mismas funciones Un ejemplo claacutesico del uso de

esta teacutecnica es el software de pago donde las

empresas utilizan esta teacutecnica para proteger sus

productos contra posibles acceso no autorizados

o examinar el producto final para encontrar

posibles bugs inesperados en la ejecucioacuten de

dicho sistema

Existe una gran variedad de software

desensamblador y depurador para aplicar esta

teacutecnica

En resumen la idea general al aplicar

ingenieriacutea inversa es

Conocer a fondo la aplicacioacuten y generar un

mejor coacutedigo

Migrar la aplicacioacuten a un nuevo sistema operativo

Hacer o completar la documentacioacuten

] INGENIERIacuteA DE SOFTWARE

23

INGENIERIacuteA DE SISTEMAS

Verificar que el coacutedigo en estudio cumple las

especificaciones del disentildeo estaacutendar

La informacioacuten extraiacuteda de la lectura del

coacutedigo fuente son las especificaciones de disentildeo

modelos de flujo de control diagramas de disentildeo

documentos de especificacioacuten de disentildeo

pudiendo tomarse estas especificaciones como

nuevo punto de partida para aplicar ingenieriacutea

inversa y obtener informacioacuten a mayor nivel de

abstraccioacuten

Dado que es una labor estrateacutegica es

conveniente conocer cuando conviene realizar la

tarea de Ingenieriacutea inversa para una aplicacioacuten y

cuaacutendo es maacutes rentable sustituirla e implementar

una nueva Las aplicaciones para el primer paso

son aquellas en la que se produce las siguientes

situaciones

bull Fallos frecuentes que son difiacuteciles de

localizar

bull Son poco eficientes pero realizan la funcioacuten

esperada

bull Dificultades en la integracioacuten con otros

sistemas

bull Calidad pobre del software final

bull Resistencia a introducir cambios

bull Pocas personas capacitadas para realizar

modificaciones

bull Dificultades para realizar pruebas

bull El mantenimiento consume muchos recursos

XII LAS BASES DE LA INGENIERIA INVERSA

Los ejemplos maacutes trascendentes sobre los

inicios de la ingenieriacutea inversa son claramente las

investigaciones realizadas sobre antiguos

artefactos creados por humanos ancestrales con

el fin de descubrir la manera en que funcionaban

Uno de los maacutes conocidos es el llamado

mecanismo de Antikythera (Fig 1) el cual se

piensa que fue disentildeado para fines astronoacutemicos

por los griegos siendo uno de los primeros

artefactos que funcionaban con ruedas de

engranes

Figura 1 Antikythera (mecanismo presuntamente creado para fines astronoacutemicos)

Podemos entonces implantar un paralelo en aquella

mitoloacutegica buacutesqueda de descubrimiento sobre el

funcionamiento de esos artefactos y la ingenieriacutea inversa

actual usada en ingenieriacutea de software estableciendo un

importante factor en comuacuten la falta de documentacioacuten En

este ambiente es muy comuacuten contar con una especie de caja

negra en donde sabemos lo que ingresamos y el resultado

que obtenemos pero desconocemos el procedimiento con la

precisioacuten que necesitariacuteamos para replicarlo

Esta falta de documentacioacuten es el impulso

principal de toda la ingenieriacutea inversa las

finalidades de la misma pueden variar pero este

factor inicial nunca lo haraacute

XIII INGENIERIA INVERSA COMO UN PROCESO DE

REINGENIERIA

La ingenieriacutea inversa tiene la misioacuten de

desentrantildear los misterios y secretos de los

sistemas en uso

Baacutesicamente recupera el disentildeo de la

aplicacioacuten a partir del coacutedigo esto se realiza

mediante herramientas que extraen la

informacioacuten de los datos procedimientos y

arquitecturas del sistema

Es aplicable a sistemas con las siguientes

caracteriacutesticas

Documentacioacuten inexistente o totalmente obsoleta

Programacioacuten en bloque de coacutedigos muy grandes

yo sin estructural

La aplicacioacuten cubre gran parte de los requisitos

y el rendimiento esperado

A Nivel de abstraccioacuten

El nivel de Abstraccioacuten de un proceso de

Ingenieriacutea Inversa y las herramientas que se

utilizan para realizarlo aluden la sofisticacioacuten de

la informacioacuten de disentildeo que se puede extraer del

coacutedigo fuente Este proceso deberiacutea ser capaz de

derivar

Sus representaciones de disentildeo de procedimiento

(con un bajo nivel de abstraccioacuten)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

24

La informacioacuten de las estructuras de datos de

procedimiento (con un nivel de abstraccioacuten

ligeramente maacutes elevado)

Modelos de flujo de datos de control (un nivel de

abstraccioacuten relativamente alto)

Modelos de entidades y de relaciones (un elevado

nivel de abstraccioacuten)

B Completitud

En la mayoriacutea de los casos la completitud

decrece a medida que aumenta el grado de

abstraccioacuten

La completitud mejora en proporcioacuten directa a

la cantidad de anaacutelisis efectuado por la persona

que estaacute efectuando la ingenieriacutea inversa

C Interactividad

La interactividad alude al grado con el cual el

ser humano se integra con las herramientas

automatizadas para crear un proceso de

ingenieriacutea inversa efectivo

D Proceso

El Proceso de ingenieriacutea inversa (Fig 2) es el encargado

de reestructurar el coacutedigo fuente para que solamente

contenga instrucciones de programacioacuten estructurada Lo

que hace que el coacutedigo sea maacutes faacutecil de leer y proporciona

la base para las subsiguientes actividades de ingenieriacutea

inversa

Figura 2 Diagrama de Proceso de la Ingenieriacutea Inversa

E Reestructuracioacuten

La reestructuracioacuten del software modifica el

coacutedigo fuente y los datos en un intento adecuado

a futuros cambios esta no modifica la

arquitectura global del programa Tiene a

centrarse en los detalles de disentildeo de moacutedulos

individuales y en estructuras de datos locales

definidas dentro de los moacutedulos

Estos son algunos de los beneficios que se

pueden lograr cuando se reestructura el software

Programas de mayor calidad

Reduce el esfuerzo requerido para llevar a cabo

las actividades de mantenimiento

Hace el software maacutes sencillo para comprobar y

depurar

F Re documentacioacuten

Es el proceso mediante el cual se produce

documentacioacuten retroactivamente desde un

sistema existente

Es considerada una forma de ingenieriacutea inversa

porque la documentacioacuten reconstruida es usada

para ayudar al conocimiento del programa

XIV UTILIZANDO EL METODO CIENTIFICO EN LA

INGENIERIA INVERSA

Ante cualquier dificultad tecnoloacutegica el

meacutetodo cientiacutefico siempre es y seraacute nuestra maacutes

preciada arma Partamos imaginando un pequentildeo

dilema relacionado con el tema de ingenieriacutea de

software especiacuteficamente con un sencillo

programa (Fig 3)

Figura 3 Pantalla de aplicacioacuten que nos serviraacute de ejemplo

Esta sencilla aplicacioacuten mostraraacute un mensaje con cierto

resultado y aun siendo un problema demasiado sencillo

para considerarlo como un reto el objetivo es soacutelo describir

] INGENIERIacuteA DE SOFTWARE

25

INGENIERIacuteA DE SISTEMAS

las acciones usuales del proceso las cuales son aplicables

en escalas muy superiores

El resultado mostrado por el programa dentro del mensaje

emergente se basa en nuestra entrada pero nosotros

desconocemos en lo absoluto los procedimientos utilizados

sobre esta entrada para producir aquella respuesta

A La Observacioacuten es Trascendental

Primero es importante observar el problema su

comportamiento Es substancial tratar de lograr

un pensamiento inductivo en donde logremos

identificar el principio particular del problema

para poder llegar a extrapolarlo a una solucioacuten

general

El punto de quiebre se produce en este instante

Ya al haber observado la aplicacioacuten podriacuteamos

decidir procesar los datos que nos entrega y

lograr crear un coacutedigo equivalente o investigar el

funcionamiento interno

B Dentro de la aplicacioacuten

Luego de la formulacioacuten de una hipoacutetesis sobre

su funcionamiento necesitamos algunas

herramientas para comenzar con la investigacioacuten

En el caso de esta aplicacioacuten con un poco de

conocimientos del lenguaje ensamblador de

programacioacuten tradicional y un descompilador es

suficiente

Es importante emprender de buena forma

nuestro sondeo ser ordenados y metoacutedicos en la

tarea En este momento las capacidades analiacuteticas

y loacutegicas son muy importantes para alivianar

nuestra faena

Lo fundamental es conocer muy bien el

entorno en que nos desenvolveremos En este es

punto indispensable saber que una aplicacioacuten

para Windows necesita invocar internamente al

punto de entrada MessageBox o MessageBoxEx

de la libreriacutea de sistema user32dll para poder

desplegar un mensaje (Fig 4)

Figura 4 Resultado de la Aplicacioacuten

Ya con esa pista es sencillo encontrar el

fragmento de coacutedigo relacionado con las

operaciones relacionadas a nuestro nuacutemero de

entrada que tendriacutea una forma similar a la

mostrada a continuacioacuten en nuestro

descompilador (Fig 5)

Figura 5 Vista del Programa en Ensamblador

Cualquier programador intuiriacutea faacutecilmente lo

que hacen las liacuteneas superiores de esta aplicacioacuten

en especial sprintf es parte de la libreriacutea estaacutendar

de C++ Claramente vemos tambieacuten el tiacutetulo de la

ventana en el coacutedigo estos valores son

interpretados de forma inteligente por este

descompilador en especial y en particular nos

asiste de sobremanera a comprender el coacutedigo

Lo siguiente es sencillamente explorar paso a

paso las acciones superiores de caacutelculo del

resultado En esta instancia seraacute ideal realizar

numerosas pruebas para estar completamente

seguros de que logramos develar el secreto tras la

funcionalidad objetivo (Fig 6)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

26

Figura 6 Inicio del coacutedigo al que aplicaremos ingenieriacutea inversa

Hay que detenerse algunos segundos a

individualizar algunos procedimientos del

anaacutelisis que a simple vista pueden parecer

inconcebibles con el fin de poder generar una

tesis concluyente

Cabe destacar que se omitiraacuten pasos

intermedios de asignaciones de memoria y otros

formalismos propios de ensamblador para

favorecer el entendimiento del lector

Inicialmente tenemos el valor de entrada

supuestamente ya leiacutedo desde el cuadro de

diaacutelogo del programa ahora nos enfocamos en la

primera accioacuten importante Asumiremos el valor

de entrada como una incoacutegnita

En el siguiente trozo de coacutedigo la liacutenea

destacada antildeadioacute siete a nuestra incoacutegnita (Fig 7)

Figura 7 Coacutedigo donde se denota la adicioacuten de 7 a nuestra ecuacioacuten

A continuacioacuten se multiplica ese valor

resultante de la suma por el mismo (Fig 8)

Figura 8 Coacutedigo donde se denota la multiplicacioacuten del valor por la suma

Nuevamente multiplicamos el resultado por el

anterior proporcionado tras la suma En esta

segunda vez ya podemos expresar la operacioacuten

simplemente elevando al cubo la suma anterior

(Fig 9)

Figura 9 Coacutedigo que denota una nueva multiplicacioacuten del resultante

Ahora le restamos diez al resultado

El procedimiento que viene a continuacioacuten

propone un mayor desafiacuteo intelectual Un nuacutemero

constante en este caso el cargado al registro

EAX (Fig 10)

Figura 10 ubicacioacuten del nuacutemero constante EAX

Generalmente la divisioacuten es algo maacutes costosa

en tiempo de procesador que otras operaciones

por lo que ciertos compiladores incluyen tablas

de constantes las cuales son llamadas ―nuacutemeros

maacutegicos para la divisioacuten entera

d Con signo Sin signo

m (hex) s m (hex) a s

-5 99999999 1

-3 55555555 1

-2k 7FFFFFFF k-

1

1 mdash mdash 0 1 0

2k 80000001 k-

1 232-k 0 0

3 55555556 0 AAAAAAAB 0 1

5 66666667 1 CCCCCCCD 0 2

6 2AAAAAAB 0 AAAAAAAB 0 2

7 92492493 2 24924925 1 3

9 38E38E39 1 38E38E39 0 1

10 66666667 2 CCCCCCCD 0 3

11 2E8BA2E9 1 BA2E8BA3 0 3

] INGENIERIacuteA DE SOFTWARE

27

INGENIERIacuteA DE SISTEMAS

12 2AAAAAAB 1 AAAAAAAB 0 3

25 51EB851F 3 51EB851F 0 3

125 10624DD3 3 10624DD3 0 3

Tabla 1 Algunos nuacutemeros maacutegicos (32 bits)

Ahora bien conociendo la tabla 1 sabiendo

que el nuacutemero cargado en esta ocasioacuten

corresponde al once lo que hace el coacutedigo es

multiplicar el resultado de la salida temporal por

aquel nuacutemero (Fig 11)

Figura 11 Multiplicacioacuten del resultante por el numero 11

Naturalmente la multiplicacioacuten por un nuacutemero

tan grande produce una especie de

desbordamiento en el registro contenedor del

resultado al exceder el tamantildeo de palabra del

procesador (en este caso de 32 bits) Estos bits

sobrantes se almacenan naturalmente en el

registro EDX registro que es contiguo a ECX

dentro de la memoria de los registros del

procesador

Ahora desplazamos un bit del registro EDX

(equivalente a una divisioacuten entera por dos) para

obtener la solucioacuten de la divisioacuten por once

generando una sencilla ecuacioacuten

Figura 12 Desplazamiento del bit de registro EDX

El uacuteltimo paso luego de documentar estos

resultados seraacute crear una aplicacioacuten que recree

esta foacutermula soacutelo en caso de tener intenciones de

re-codificacioacuten del desarrollo Consumando este

punto es sencillo confeccionar un diagrama con

todo el proceso anteriormente visto

XV CONCLUSIONES

Queda claro que el tema de la ingenieriacutea

inversa es uno de los toacutepicos maacutes interesantes a

los que podriacutea afrontarse un profesional de la

tecnologiacutea y en general disfrutar el largo proceso

involucrado gracias al desafiacuteo poco predecible

que presenta

En general podemos darnos cuenta de que no

existen muchas metodologiacuteas y teoriacuteas estrictas

sobre coacutemo aplicar las teacutecnicas de ingenieriacutea

inversa Afortunadamente un ingeniero estaacute

preparado para afrentar desafiacuteos de este tipo

Adicionalmente podemos deducir tambieacuten el

aspecto bidireccional de la ingenieriacutea inversa

pues como ya lo comprobamos no solo es un

desafiacuteo aplicarla sino que tambieacuten lo es tener que

dificultar el proceso o incluso tratar de impedirlo

si la situacioacuten lo requiere

REFERENCIAS

[12] Roger Pressman Ingenieriacutea de Software ―Un Enfoque Moderno 6th ed

MC Graw Hill [13] httpeswikipediaorgwikiIngenieria_inversa

[14] httpwwwinfosecwritersconntext_resourcespdfsoftware_security_and_r

everse_engineeringpdf [15] httperwinriedclmodo=visorampelemento=239

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

28

METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO Univ Alejandro Meacutendez Escobar

Universidad San Francisco de Asiacutes

Ingenieriacutea de Sistemas

Ingenieriacutea de Software I

La Paz - Bolivia

amendezusfaedubo

Resumenmdash Al adquirir el software educativo dentro del campo de

desarrollo de software una gran importancia y siendo este

inspiracioacuten de propuestas de innumerables metodologiacuteas que buscan

la elaboracioacuten de un software de calidad

Tomaremos la metodologiacutea Aacutencora enfocada a la fase de

requerimientos y que ofrece elementos que indican las actividades

que deben realizarse los artefactos que se producen y la forma de

obtenerlos

Usando al desarrollo de software educativo como ejemplo de una

mejor comprensioacuten de dicha metodologiacutea analizando la aplicacioacuten

del Aacutencora en un trabajo propuesto para el Instituto Tecnoloacutegico de

Orizaba Meacutexico

Palabras clave mdash Aacutencora Metodologiacutea Desarrollo de Software

Educativo Requerimientos Calidad

XVI INTRODUCCIOacuteN

Hoy en diacutea la tecnologiacutea esta dentro de las

actividades que realizamos es asiacute que la educacioacuten no

queda exenta de ella por o cual es necesario adaptarse

al movimiento tecnoloacutegico que nos trae grandes

ventajas en la transmisioacuten de conocimientos de una

manera sencilla y dinaacutemica

De esta manera han surgido infinidad de

metodologiacuteas de desarrollo de software educativo el

cual tiene como objetivo ser el apoyo para docentes

alumnos y toda persona que este dentro del proceso de

aprendizaje

Tomando en cuenta este ramillete infinito de

metodologiacuteas surge en el ejemplo propuesto la

adaptacioacuten del Aacutencora en el desarrollo de software

educativo teniendo como objetivo principal la

comprensioacuten de los elementos y conceptos de la

metodologiacutea Aacutencora

Aacutencora es una metodologiacutea enfocada a la

adquisicioacuten de requerimientos para software que

ofrece guiacuteas y elementos de apoyo para la obtencioacuten de

estos requerimientos Al mismo tiempo permite pasar a

la fase de disentildeo de manera sencilla Aprovechando las

ventajas que presenta Aacutencora se le hicieron algunas

adaptaciones con el fin de cubrir algunas

caracteriacutesticas del disentildeo instruccional y enriquecer

Aacutencora habilitaacutendola para la adquisicioacuten de

requerimientos de software educativo

XVII APLICACIOacuteN DE LA METODOLOGIacuteA AacuteNCORA

Como es el objetivo principal la comprensioacuten de la

aplicacioacuten de la metodologiacutea Aacutencora dentro del

desarrollo de software educativo de calidad solo

describiremos los meacutetodos del meacutetodo y los resultados

obtenidos

Claro esta que para ahondar maacutes en tema del

software educativo en si el lector puede recurrir a los

siguientes autores Metodologiacutea de desarrollo de

sistemas multimedia (Vaughan 2006) Propuesta de

metodologiacutea para el disentildeo desarrollo y evaluacioacuten

de software educativo (Reyes 2009) Ingenieriacutea de

software educativo con modelaje orientado por objetos

(Goacutemez 1998) asi como tambieacuten los siguientes

modelos ADDIE (Anaacutelisis Disentildeo Desarrollo

Implantacioacuten y Evaluacioacuten) de (McGriff 2000) y el

disentildeo instruccional aplicado al desarrollo de software

educativo EISE (Especificacioacuten Instruccional de

Software Educativo) de (Hernaacutendez 2005)

] INGENIERIacuteA DE SOFTWARE

29

INGENIERIacuteA DE SISTEMAS

Quienes tienen el mismo objetivo de crear software

educativo de calidad podemos sintetizar de ellos los

siguientes puntos

Anaacutelisis del puacuteblico al que se dirigiraacute el software

Problema oacute necesidad educativa a atender

Anaacutelisis de contenido (Tema a tratar actividades

para alcanzar el objetivo de ensentildeanza y forma de

evaluarlo)

Actividades oacute forma actual de llevar a cabo la

ensentildeanza del tema en cuestioacuten

Elaboracioacuten de guiones metaacuteforas escenarios

Creacioacuten de prototipo oacute Storyboard

Disentildeo de interfaz

Mapas de navegacioacuten

Modelos de datos

Elaboracioacuten de diagramas de contexto diagramas

de flujo o diagramas de casos de uso

Ahora enfocaacutendonos en el aacutencora se establece la

propuesta de seleccionar las actividades de Aacutencora que

permitan obtener los requerimientos de un software

educativo

La Tabla 1 presenta las actividades y artefactos

producidos en las fases de Aacutencora para la elaboracioacuten

de software educativo

TABLA 1 ACTIVIDADES Y ARTEFACTOS DE LA METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO

Metodologiacutea Aacutencora

Fases Actividades y artefactos

Anaacutelisis de

Requerimientos

A traveacutes de entrevistas con los clientes

(maestros y pedagogos) y de la lectura

del respectivo material proporcionado

por ellos se definiraacute la asignatura a la

que se enfocaraacute el software el tema a

tratar y la forma en que se abordaraacute y

evaluaraacute Tambieacuten se estableceraacute el

objetivo general de aprendizaje la

metaacutefora que se emplearaacute y se

determinaraacute el puacuteblico al que se

dirigiraacute el software

Artefactos

Documento que define la asignatura

contenido objetivo general de

aprendizaje metaacutefora y puacuteblico al que

se dirigiraacute el software Guion de la

situacioacuten actual

Recoleccioacuten y

clasificacioacuten de

requerimientos

El guion de la propuesta

computacional reflejaraacute la metaacutefora

que se sigue el ambiente de cada

escena

La bitaacutecora de desarrollo permitiraacute ver

coacutemo el sistema responderaacute a las

diversas acciones que realice el

usuario

En lugar del prototipo raacutepido se

elaboraraacute un Storyboard para presentar

graacuteficamente la estructura de sistema

propuesto

Artefactos

Guion de propuesta computacional

bitaacutecora de desarrollo Storyboard

Resolucioacuten de

conflictos

jerarquizacioacuten y

validacioacuten de

requerimientos

Modificaciones al guion de la

propuesta computacional de acuerdo a

los cambios propuestos por los

maestros y pedagogos

Artefactos

Guion de propuesta computacional e

Storyboard con adecuaciones sentildealas

Cierre

Trasladar los guiones a casos de uso

Artefactos

Casos de uso

Se agregaron algunas caracteriacutesticas a ciertos

artefactos de Aacutencora para poder cubrir los

requerimientos de software educativo Uno de estos

elementos es el guion de la propuesta computacional

al que se propone agregar lo siguiente

Conocimientos previos del usuario Se refiere a los

conocimientos baacutesicos o miacutenimos que debe tener el

alumno para poder interactuar con el moacutedulo

Objetivo de aprendizaje Es el aprendizaje que

debe obtener el alumno despueacutes de haber interactuado

con el moacutedulo

La Figura 1 se presenta la estructura sugerida para el

guion de la propuesta computacional En la bitaacutecora de

desarrollo se propone antildeadir una fila al final de cada

pista donde se describan las situaciones favorables y

no favorables para el cumplimiento del objetivo de

aprendizaje para esa pista en particular Por otra parte

en lugar del prototipo se sugiere utilizar el Storyboard

ya que permite mostrar de manera maacutes completa la

estructura del guion de la propuesta computacional La

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

30

Figura 2 muestra el formato para la elaboracioacuten del

Storyboard

Figura 1 Estructura del guion para la propuesta computacional

Figura 2 Formato para la elaboracioacuten del Storyboard

XVIII RESULTADOS

Aplicando Aacutencora en un ejemplo para la parte de

requerimientos se obtuvo la siguiente informacioacuten

Asignatura Matemaacuteticas

Contenido Estaacute articulado con base en seis ejes

con sus respectivos temas y subtemas que variacutean de

acuerdo al grado escolar Considerando lo anterior se

tiene lo siguiente

a) Grado escolar De segundo hasta quinto grado de

primaria

b) Temas Nuacutemeros naturales capacidad peso

tiempo y ubicacioacuten espacial planteamiento y

resolucioacuten de problemas sencillos en los que se

requiera recolectar y registrar informacioacuten

perioacutedicamente representacioacuten de informacioacuten en

tablas de frecuencia y graacuteficas de barras registros de

los resultados de experimentos aleatorios

representacioacuten de los resultados de un experimento

aleatorio en tablas y graacuteficas

c) Subtemas Planteamiento y resolucioacuten de

problemas que impliquen dos o maacutes operaciones con

nuacutemeros naturales

d) Ejes Introduccioacuten del kiloacutemetro como la unidad

que permite medir grandes distancias y recorridos

largos capacidad peso y tiempo uso del reloj y el

calendario los nuacutemeros sus relaciones y sus

operaciones medicioacuten la prediccioacuten y el azar

tratamiento de la informacioacuten

Objetivo general de aprendizaje Ejercitar las

operaciones aritmeacuteticas baacutesicas interpretar la

informacioacuten y los resultados de la informacioacuten dada

aplicada en situaciones de la vida cotidiana

Con las actividades hasta ahora realizadas se ha

observado que los artefactos de Aacutencora son flexibles y

pueden por lo tanto adaptarse de acuerdo a las

necesidades que implican la adquisicioacuten de

requerimientos de un software educativo Tambieacuten se

aprecian las ventajas de algunos artefactos como la

bitaacutecora de desarrollo que permite determinar las

respuestas del sistema ante las acciones del usuario y

estimar tambieacuten el tiempo que llevaraacute implementar

cada quinteta

La estimacioacuten del tiempo ayuda a tener un valor

aproximado del tiempo de desarrollo de software

Agregar el objetivo de aprendizaje a la bitaacutecora de

desarrollo puede parecer repetitivo despueacutes de

incluirlo en el Storyboard pero esto nos permite ver las

situaciones u obstaacuteculos que pueden impedir que el

objetivo de aprendizaje se alcance y por tanto tenerlos

presente durante el disentildeo A pesar de las ventajas de

la bitaacutecora de desarrollo un inconveniente hasta ahora

encontrado es lo tedioso al manejar muchas quintetas

] INGENIERIacuteA DE SOFTWARE

31

INGENIERIacuteA DE SISTEMAS

cuando por la naturaleza del guion se tienen varios

avisos y mensajes para el usuario Por otra parte los

guiones han ayudado a realizar de manera sencilla el

modelo de casos de uso

En lo referente a la presentacioacuten con los clientes el

guion es un artefacto que pude dar un panorama

general del software que se va a elaborar y queda

reforzada a traveacutes de los Storyboard Cuando se

requieren cambios solicitados por los clientes las

modificaciones a estos artefactos no han sido muy

complicadas dado que por su estructura es faacutecil de

ubicar las secciones y respectivos elementos

XIX CONCLUSIONES

Con los resultados hasta ahora obtenidos se puede

decir que la propuesta permite a los desarrolladores

con poca experiencia en desarrollo de software

educativo obtener los requerimientos de una manera

sencilla

Permite realizar un mejor relevamiento de informacioacuten

de los requerimientos del cliente enfocaacutendonos mas en

este

Es tambieacuten importante mencionar los avances que

tiene y seguiraacute teniendo el software educativo aplicado

no solo a nivel escolar sino tambieacuten al superior

Habiendo revisado el concepto y la aplicacioacuten de la

metodologiacutea Aacutencora en el desarrollo de software

educativo se llegoacute a una comprensioacuten mas extensa de

dicho meacutetodo el cual es de gran importancia dentro de

la ingenieriacutea de Software ya que nos

REFERENCIAS

httpwwwuvmxmisproductividaddocumentsCarmenChay_CIIM2010pdf

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 3: Revista de Ingenieria de Software

] INGENIERIacuteA DE SOFTWARE

3

INGENIERIacuteA DE SISTEMAS

INDICE Tom DeMarco Ingenieria de Software y Control de

Proyectoshelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip4

Adictos al helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip6

Skinput Una pantalla taacutectil en tu pielhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip11

Mini

computadorashelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip14

Estudio de redes

GNOPhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

7

La suacuteper caacutemara que lo ve

todohelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip20

Des-

impresioacuten helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

helliphelliphelliphelliphelliphelliphelliphelliphelliphellip23

Cloud

Computinghelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

helliphelliphelliphelliphelliphelliphelliphelliphellip26

Nano- celular

solareshelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

helliphelliphelliphelliphellip29

Memorias USB en

moacuteduloshelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

hellip32

Teleacutefonos moacuteviles de ultima

generacioacutenhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

My

coachhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip37

Factores del Cableado en el Centro de Coacutemputohelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip40

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

4

Tom DeMarco

Ingenieriacutea de Software

y Control de Proyectos Joe Luis Aramayo Blanco

Ingenieriacutea de Sistemas Universidad San Francisco de Asiacutes

20 de Octubre Esq Belisario Salinas

La Paz - Bolivia jlaramayousfaeduboResumen- En este artiacuteculo

haremos algunas observaciones sobre un artiacuteculo

que escribioacute hace un tiempo atraacutes Tom DeMarco

sobre meacutetricas control de proyectos e

ingenieriacutea de software donde en general podemos

encontrar frases que claramente contradicen su

postura de hace unas deacutecadas

Palabras clave- Ingenieriacutea de Software Control de Proyectos

Meacutetricas No puedes controlar lo que no puedes medir Desarrollo

de Software

I INTRODUCCIOacuteN

Todos comprendemos que las meacutetricas de software cuestan

dinero y tiempo y que deben ser usadas con moderacioacuten

El desarrollo de software es inherentemente diferente de las

ciencias naturales tales como la fiacutesica por lo que sus meacutetricas

son mucho menos precisas para capturar lo que deben describir

La frase ―No puedes controlar lo que no puedes medir lleva

impliacutecita que el control es un aspecto importante quizaacutes el maacutes

importante de cualquier proyecto de software Pero no lo es

Fig 1 Ejemplo de ―No puedes controlar lo que no puedes medir

Muchos proyectos se han realizado sin demasiado control pero

han generado productos maravillosos tales como Google Earth o

la Wikipedia

Esto nos lleva a la desagradable conclusioacuten que el control

estricto es algo que importa mucho en proyectos relativamente

inuacutetiles y mucho menos en proyectos uacutetiles

iquestEstoy diciendo que estaacute bien ejecutar proyecto sin control o

con un control relativamente menor Casi Estoy sugiriendo que

deberiacuteamos seleccionar primero a los proyectos cuyo control

preciso no importe demasiado

En los uacuteltimos 40 antildeos nos hemos torturado por nuestra

ineptitud en acabar proyectos a tiempo y con el presupuesto

previsto Pero como sugeriacute antes no deberiacutea haber sido el

objetivo supremo

El objetivo maacutes importante es la transformacioacuten crear software

que cambie el mundo o que transforme una empresa o la forma

en que hace negocios

El desarrollo de software es y seraacute siempre algo experimental

La construccioacuten real de software no es necesariamente

experimental pero siacute lo es su concepcioacuten Alliacute deberiacuteamos

enfocar nuestros esfuerzos Alliacute es donde deberiacuteamos haberlo

hecho siempre Estaacute claro que es mucho maacutes faacutecil criticar un

artiacuteculo que hacer uno nuevo pero dada la trascendencia que estaacute

teniendo este escrito en particular voy a expresar mi opinioacuten

Creo que DeMarco sabe venderse Creo que cuando era maacutes

joven se supo posicionar como guruacute de la Ingenieriacutea de Software

y el control de proyectos y creo que ahora estaacute en la edad en que

puede decir que parte de lo que dijo estaacute mal e igual quedar bien

porque su posicioacuten coincide con la de muchos guruacutees actuales

Sin embargo me parece que el artiacuteculo estaacute lleno de frases

impactantes pero que no salen de un anaacutelisis profundo Me voy

a explayar

] INGENIERIacuteA DE SOFTWARE

5

INGENIERIacuteA DE SISTEMAS

Fig 3 Referencia a las Meacutetricas cuestan dinero

Que las meacutetricas cuestan dinero en cierto sentido es cierto

Tambieacuten es cierto que ahora es mucho maacutes faacutecil llevar algunas

meacutetricas que hace unos antildeos dado que ahora utilizamos

herramientas que las generan de manera automaacutetica Podriacuteamos

decir que en el presente es mucho menos costoso tener la misma

informacioacuten que hace unas deacutecadas DeMarco consideraba

importante

Que el desarrollo de software es inherentemente diferente de las

ciencias naturales como la fiacutesica tambieacuten es verdad Lo que no

se termina de entender es por queacute nos comparamos con las

Fiacutesicas y no con las Ingenieriacuteas

El disentildeo de una planta de gas en situaciones extremas tambieacuten

es uacutenico y con resultados impredecibles la construccioacuten de una

torre en Dubai alguacuten nuevo prototipo de avioacuten un nuevo

celular etc tambieacuten son inherentemente diferentes de las

ciencias naturales y sin embargo cuentan con presupuestos

meacutetricas de avance de defectos etc O sea es una verdad pero

que no aplica a la conclusioacuten a la que llega

Donde puedo estar maacutes de acuerdo es cuando hablamos del

control de proyectos de software aunque maacutes adelante voy a

definir mi posicioacuten En este caso en mi opinioacuten tambieacuten escribe

algo cierto ―El control no es lo maacutes importante de un proyecto

de software pero cuando toma ejemplos elije dos proyectos en

los que las desviaciones admitidas eran del orden de entre 100

y 1000 ya que o el objetivo era otro o los resultados

esperados eran mucho mayores a una desviacioacuten de 500 en

costos

Fig 1 Referencia de Google Earth

Ambos proyectos (Wikipedia que surge de NuPedia) y

GoogleEarth fueron proyectos en los que hubo inversores

poniendo su dinero durante antildeos sin ver resultados Se puede

buscar en Internet acerca de la historia de NuPedia antecesora

de Wikipedia y a Jimi Wales explicando que despueacutes de haber

gastado 250000 doacutelares solo habiacutea logrado 16 artiacuteculos en su

nueva Enciclopedia Lo mismo pasoacute con GoogleEarth

anteriormente en manos de KeyHole con inversores como Sony

y otros Fondos de Capital En este tipo de proyectos se pueden

asumir peacuterdidas durante antildeos hasta lograr un producto que

puede romper con el mercado o tambieacuten se puede perder todo lo

invertido Se trata de proyectos de inversioacuten de alto riesgo y

determinan proyectos de desarrollo que claramente son poco

comunes

Fig 3 Referencia de WIKIPEDIA

Al menos en mi entorno la mayoriacutea de los proyectos son

internos o externos (para un cliente) Los proyectos externos

tienen presupuestos o se crean luego de llamados a licitacioacuten

Es decir costo fijo tiempo fijo alcance fijo maacutes menos alguna

que otra variacioacuten Es claro que si no contamos con un miacutenimo

de control en estos proyectos la empresa no sabe si estaacute siendo

rentable o no Tampoco sabe si el producto que es desarrollado

le puede traer problemas a futuro por alguna cuestioacuten de calidad

No poner un miacutenimo eacutenfasis en el control de estos proyectos

puede llevar a la empresa a la quiebra sin que esta sea

consciente salvo por los nuacutemeros rojos que aparecen en sus

balances Por lo tanto explicar que un proyecto de software no

hace falta controlarlo mucho y poner como ejemplo dos casos

muy poco relevantes no parece muy serio

Por uacuteltimo cuando dice el desarrollo de software es y siempre

seraacute algo experimental vuelve a caer en las afirmaciones de las

que en 40 antildeos (en caso de estar vivo claro) podriacutea volver a

arrepentirse Es cierto que todaviacutea estamos en una etapa inicial

de la que llamamos ingenieriacutea de software Es cierto que no es

faacutecil gestionar proyectos de software por sus caracteriacutesticas

intriacutensecas (intangibilidad maleabilidad etc) pero cada

ingenieriacutea tiene sus problemas particulares y cada una supo

evolucionar a lo que son ahora Seguramente la ingenieriacutea de

Software con el tiempo encontraraacute su camino

Ahora bien aparte de criticar un poco a DeMarco (que era lo

maacutes faacutecil) vamos a retomar la frase

―No puedes controlar lo que no puedes medir lleva impliacutecita

que el control es un aspecto importante quizaacutes el maacutes

importante de cualquier proyecto de software Pero no lo es

En cierta medida explicaba arriba estoy de acuerdo con esta

afirmacioacuten Un buen proyecto de software con mucho control

pero malos programadores lleva al fracaso inevitablemente (lo

he vivido personalmente y por experiencias de terceros) Por el

contrario un buen equipo de programadores (pero de los

buenos) puede terminar el proyecto maacutes complejo haciendo que

ninguacuten indicador tenga sentido ya que la diferencia de calidad

del producto y la eficiencia del trabajo de este tipo de gente

multiplica por 10 o por 100 la de un equipo estaacutendar

Este tipo de gente piensa las cosas de manera diferente tiene la

calidad incorporada como meacutetodo de trabajo y la capacidad de

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

6

generar soluciones a las distintas situaciones hace que el

esfuerzo estimado pueda acortarse en oacuterdenes de magnitud

Estuve dentro equipos de este estilo y lo que se puede lograr en

un ambiente hiperproductivo difiacutecilmente se logre en una

empresa de desarrollo comuacuten y corriente El problema es que la

gente que tiene estas cualidades escasea y el mercado estaacute lleno

de trabajadores ―estaacutendar que requieren definiciones procesos

un aacuterea de calidad que verifique sus entregables y un PM que le

indique queacute es lo que tiene que hacer De a poco estimo yo la

industria iraacute decantando por rendimiento aquellos profesionales

que hacen la diferencia y los estaacutendares de productividad

calidad base teoacuterica requerida para un puesto iraacuten aumentando

Fue pasando durante estas deacutecadas y seguiraacute pasando en el

futuro

II CONCLUSIONES

En siacutentesis y para terminar con este artiacuteculo medir y controlar

importa importa maacutes en las empresas con gente estaacutendar

importa maacutes en las empresas con proyectos estaacutendar y siempre

que estemos dentro de una empresa algo vamos a tener que

medir pero el control no es condicioacuten necesaria ni menos

suficiente para lograr un proyecto exitoso No es algo

fundamental como tener un buen equipo de programadores

como tener gente que sepa interpretar lo que se pide y

transformarlo de manera natural en la solucioacuten que el cliente

necesita Por eso cuando veo gente que se preocupa por

aumentar el control o aumentar los procesos creo que estaacute

perdiendo el foco cuando lo que deberiacutea buscar es coacutemo hacer

para encontrar y hacer rendir a los verdaderos profesionales del

software

III REFERENCIAS

[1] Software Engenieering an idea whose time has come and gone por Tom

DeMarco [2] CyS Ingenieria de Software El blog del aacuterea de Ingenieriacutea de Software de

CyS Informaacutetica SA

] INGENIERIacuteA DE SOFTWARE

7

INGENIERIacuteA DE SISTEMAS

EXTREME PROGRAMMING PARA DESARROLLO

DE SOFTWARE

Erwin Adaacuten Choque Ulloa Ingenieriacutea de Sistemas

Universidad San Francisco de Asiacutes

Plaza Avaroa esq Belisario Salinas

La paz ndash Bolivia adan_ekinghotmailcom

Resumen

En este articulo se describiraacute algunas de las metodologiacuteas

agiles de desarrollo de software puesto que para asegurar el

eacutexito durante el desarrollo de un software es importante

saber la metodologiacutea de desarrollo la cual nos provee una

guiacutea para la correcta aplicacioacuten y desarrollo de Software

La metodologiacutea Extreme Programming XP que es una de las

metodologiacuteas aacutegiles maacutes extendidas y populares ademaacutes es

considerada como una metodologiacutea posmoderna donde

grandes capacidades se generan a traveacutes de procesos

emergentes

Palabras claves Extreme Programming metodologiacutea software

usuario

1 INTRODUCCION

El esquema tradicional para abordar el desarrollo de

software ha demostrado ser efectivo y necesario en

proyectos de gran tamantildeo respecto a tiempo y recursos

Sin embargo este enfoque no resulta ser el maacutes adecuado

para muchos de los proyectos actuales donde el entorno

del sistema es muy cambiante y en donde se exige

reducir draacutesticamente los tiempos de desarrollo pero

manteniendo una alta calidad Ante este problema las

metodologiacuteas aacutegiles son una posible respuesta para llenar

ese vaciacuteo metodoloacutegico Orientadas para proyectos

pequentildeos las metodologiacuteas aacutegiles constituyen una

solucioacuten

A continuacioacuten se describiraacute cada una de las

metodologiacuteas de desarrollo de software

2 EXTREME PROGRAMMING XP

La metodologiacutea de desarrollo de software XP es la

primera metodologiacutea aacutegil y la que le dio conciencia al

movimiento actual de metodologiacuteas aacutegiles Kent Beck el

padre de la metodologiacutea XP se basa en realimentacioacuten

continua entre el cliente y el equipo de desarrollo

comunicacioacuten fluida entre todos los participantes

simplicidad en las soluciones implementadas y facilidad

para enfrentar los cambios XP se define como

especialmente adecuada para proyectos con requisitos

imprecisos y muy cambiantes y donde existe un alto

riesgo teacutecnico Ahora se describiraacute las caracteriacutesticas

esenciales del Extreme Programming

21 LAS HISTORIAS DEL USUARIO

La red Las historias del usuario es la teacutecnica utilizada

para especificar los requisitos de software son tarjetas de

papel donde el cliente especifica de manera simplificada

las caracteriacutesticas que el sistema debe poseer ya sean

requisitos funcionales o requisitos no funcionales Se

caracteriza por ser dinaacutemica y flexible cada historia de

usuario debe ser comprensible y delimitada para que los

programadores puedan implementarla en pocas semanas

22 ROLES XP

Seguacuten Kent Beck los roles son

Programador El programador se encarga de escribir las

pruebas unitarias y tambieacuten estaacute encargado de producir el

coacutedigo del sistema

Cliente Encargado de escribir las historias de usuario y

los requisitos funcionales y selecciona las historias por

prioridad de conveniencia al negocio

Encargado de pruebas Encargado de ayudar al cliente a

escribir las pruebas funcionales ademaacutes de ejecutar las

pruebas constantemente encargado de de las

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

8

herramientas de soporte de pruebas como tambieacuten

difundir los resultados de dicha prueba

Encargado de seguimiento Es el encargado de la

realimentacioacuten al equipo y realiza el seguimiento del

proceso de cada iteracioacuten

Entrenador Es el encargado de prever guiacuteas al equipo

basadas en XP y de seguir el proceso correctamente

Consultor Es el que posee un conocimiento especifico

en alguacuten tema necesario para el proyecto para solucionar

problemas

Gestor Es la interaccioacuten entre clientes y programadores

ayudando a trabajar de forma adecuada y de esta manera

coordinar de forma correcta

23 PROCESO XP

El ciclo de desarrollo XP consiste en

El cliente define el valor del negocio a implementar

El programador estima el esfuerzo necesario para su

implementacioacuten

El cliente selecciona que construir de acuerdo con sus

propiedades y las restricciones del tiempo

El programador construye ese valor de negocio

Vuelve al principio

En todas las iteraciones de este ciclo tanto el cliente como

el programador aprenden No se debe presionar al

programador a realizar maacutes trabajo que el estimado ya

que se perderaacute calidad en el software o no se cumpliraacuten

los plazos

El ciclo de vida ideal de XP consiste de seis fases

Exploracioacuten

Planificacioacuten de la Entrega (Release)

Iteraciones

Produccioacuten

Mantenimiento y Muerte del Proyecto

24 PRACTICAS XP

Las siguientes praacutecticas ayudan al desarrollo de software

El juego de la planificacioacuten Hay una comunicacioacuten

frecuente el cliente y los programadores El equipo

teacutecnico realiza una estimacioacuten del esfuerzo requerido para

la implementacioacuten de las historias de usuario y los

clientes deciden sobre el aacutembito y el tiempo de entregas y

de cada iteracioacuten

Entregas pequentildeas Producir raacutepidamente versiones del

sistema que sean operativas aunque no cuenten con toda

la funcionalidad del sistema Esta versioacuten ya constituye

un resultado de valor para el negocio Una entrega no

deberiacutea tardar maacutes de tres meses

Metaacutefora El sistema es definido mediante un conjunto

de metaacuteforas compartidas por el cliente y el equipo de

desarrollo Una metaacutefora es una historia compartida que

describe como deberiacutea funcionar el sistema

Disentildeo simple Se disentildea la solucioacuten maacutes simple que

pueda funcionar y ser implementada en un determinado

momento del proyecto

Pruebas La produccioacuten de coacutedigo estaacute dirigida para las

pruebas unitarias Estas son establecidas por el cliente

antes de escribirse el coacutedigo y son ejecutadas

continuamente ante cada modificacioacuten del sistema

Pruebas Es una actividad constante de reestructuracioacuten

del coacutedigo con el objetivo de remover duplicacioacuten de

coacutedigo mejorar su legibilidad simplificarlo y hacerlo

maacutes flexible para facilitar los cambios Se mejora la

estructura interna del coacutedigo sin alterar su

comportamiento externo

Programacioacuten en parejas Toda la produccioacuten del

coacutedigo debe realizarse con trabajo en parejas de

programadores Para tener ventajas como menor tasa de

errores mejor disentildeo etc

Propiedad colectiva del coacutedigo Cualquier programador

puede cambiar cualquier parte del coacutedigo en cualquier

instante

Integracioacuten continua Cada pieza del coacutedigo es

integrada en el sistema una vez que este listaasi el

sistema puede ser integrado y construido varias veces en

un mismo diacutea

40 horas por semana Se debe trabajar un maacuteximo de 40

horas por semana no se trabajan horas extras en dos

semanas seguidas Si esto ocurre estaacute existe un problema

porque el trabajo extra desmotiva al equipo

Cliente in-situ El cliente tiene que estar presente y

disponible todo el tiempo para el equipo este es uno de

los principales factores de eacutexito para el proyecto XP Y

asiacute guiar y disipar cualquier duda de los programadores

donde la comunicacioacuten es maacutes efectiva que la escrita

Estaacutendares de programacioacuten XP enfatiza que la

comunicacioacuten de los programadores es a traveacutes del

coacutedigo por lo que es importante que se sigan estaacutendares

de programacioacuten para mantener el coacutedigo legible

3 CONCLUCIONES

] INGENIERIacuteA DE SOFTWARE

9

INGENIERIacuteA DE SISTEMAS

Las metodologiacuteas aacutegiles ofrecen una solucioacuten casi a

medida para una gran cantidad de proyectos

La metodologiacutea XP es una de las metodologiacuteas aacutegiles maacutes

extendidas y populares ademaacutes es considerada como una

metodologiacutea posmoderna cuyas grandes capacidades se

generan a traveacutes de procesos emergentes

4 REFERENCIAS

httpwwwmetodologiasSoftcomdesarrolloagil

httpwwwwikipediacommetodologiaXP

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

10

Desarrollo de Scrum

Sergio J Guzmaacuten L Ingenieriacutea de Sistemas

Universidad San Francisco de Asiacutes

20 Octubre Esq Belisario Salinas

La Paz - Bolivia

sjguzmanusfaedubo

Resumenmdash Scrum es una metodologiacutea aacutegil de desarrollo de

proyectos que toma su nombre y principios de los estudios

realizados sobre nuevas praacutecticas de produccioacuten por

Hirotaka Takeuchi e Ikujijo Nonaka a mediados de los 80

En 1996 se definioacute por primera vez un patroacuten para aplicar

esos principios de desarrollo en ldquocampos de scrumrdquo al

software

Palabras clave mdash scrum metodologiacutea patroacuten software

sprint rol

I Que es Scrum

Scrum es una metodologiacutea aacutegil de desarrollo de proyectos

que toma su nombre y principios de los estudios

realizados sobre nuevas praacutecticas de produccioacuten por

Hirotaka Takeuchi e Ikujijo Nonaka a mediados de los 80

En 1996 se definioacute por primera vez un patroacuten para aplicar

esos principios de desarrollo en ―campos de scrum al

software

Esta fue la primera definicioacuten de un patroacuten Scrum aplicado

al software disentildeada por Jeff Sutherland y Ken Schwaber y

presentada en Object-Oriented Programming Systems

Languages amp Applications OOPSLA en 1996

II iquestCoacutemo incorporarla

La competitividad del mercado de desarrollo de Software y

la necesidad de los clientes de reducir el tiempo de

mercado obligan a las organizaciones de desarrollo de

software a ser agresivas en sus calendarios de entrega Esto

ha hecho que hayan surgido metodologiacuteas para la gestioacuten y

desarrollo de software basadas en un proceso iterativo e

incremental Su estructura estaacute basada en corto tiempo los

cuales son iteraciones de 1 a 4 semanas Scrum se usa en

proyectos de entorno complejos donde se desea obtener

resultados raacutepidos y la productividad es lo maacutes importante

En los proyectos basados en Scrum se consideran tres

roles

Duentildeo del producto Es quien determina las propiedades de

los entregables

Maestro de Scrum Administra y facilita la ejecucioacuten del

proceso

Equipo de Trabajo Trabajan en conjunto para entregar

resultados en cada sprint

Fig 1 El flujo de Scrum

Como se puede observar en medio de los participantes del

proceso no quedan claras las responsabilidades del

arquitecto de software Sin embargo como comenta

Charlie Alfred ―la arquitectura es al aceite y el filtro que

lubrica adecuadamente a Scrum

Fig 2 El flujo de Scrum

] INGENIERIacuteA DE SOFTWARE

11

INGENIERIacuteA DE SISTEMAS

Si se compara el rol del arquitecto de edificaciones con el

del arquitecto de software se puede observar que ambos

modelan las construcciones a un alto nivel de abstraccioacuten

proveen posibles soluciones mejoran la comunicacioacuten con

los miembros del equipo de construccioacuten a traveacutes de

modelos visualizan las generalidades del problema

definen los roles y las interacciones entre los componentes

de construccioacuten entre otras tareas Al igual que es

imposible pensar que un rascacielos puede ser construido

sin una arquitectura soacutelida es imposible pensar que

productos de software empresariales puedan ser

implementados sin una arquitectura bien pensada

Seguacuten Bass Clements y Kasman ―La arquitectura de

software de un programa o sistema informaacutetico es la

estructura o estructuras del sistema que incluyen elementos

de software las propiedades externamente visibles de esos

elementos y las relaciones entre ellos Esta definicioacuten nos

lleva a concluir que la arquitectura de software garantiza el

buen desarrollo del software y a tener un sistema que

cumpla con los requerimientos funcionales y no

funcionales del cliente Ademaacutes la arquitectura es clave en

la reutilizacioacuten de artefactos de software en sistemas de

liacutenea de productos de software

Viendo la importancia de la arquitectura en el desarrollo

del software en eacuteste artiacuteculo se presenta una propuesta para

gestionar la arquitectura de Software en Scrum En el

primer capiacutetulo se trata el tema de la localizacioacuten de la

arquitectura de software en el ciclo de desarrollo de Scrum

en el segundo capiacutetulo se describen las tareas del arquitecto

de software en Scrum finalmente se presentan las

conclusiones y el trabajo futuro

III Arquitectura de Software en el ciclo de desarrollo de

Scrum

La idea fundamental de la presente propuesta es adicionar

un sprint inicial llamado ―Sprint 0Prime al inicio del ciclo de

desarrollo El objetivo principal del arquitecto en el Sprint

0 es analizar y disentildear la generalidad del sistema que

satisfaga los requisitos y sea entendible por los miembros

del equipo desde sus diferentes puntos de vista durante el

desarrollo Un punto clave es reutilizar artefactos de

software creados a partir de la arquitectura para ser maacutes

aacutegiles en el desarrollo de productos especiacuteficos

El Sprint 0 comprende tres fases que fueron tomadas del

ciclo de vida de entregas evolutivas En el Sprint 0 se

construye la arquitectura de forma iterativa mediante un

anaacutelisis preliminar de los conductores arquitectoacutenicos

(requisitos funcionales de calidad y del negocio) y de un

estudio de factibilidad del proyecto No se necesita tener

todos los requisitos claros para comenzar la fase de disentildeo

arquitectoacutenico

Para determinar los conductores arquitectoacutenicos se debe

identificar los objetivos del negocio de maacutes alta prioridad

que son pocos Estos objetivos del negocio se convierten en

los escenarios de calidad o casos de uso De esta lista se

deben escoger los que tendraacuten un mayor impacto sobre la

arquitectura El disentildeo arquitectoacutenico puede comenzar una

vez que se encuentran definidos los conductores

arquitectoacutenicos El proceso de anaacutelisis de requisitos seraacute

entonces influenciado por las preguntas generadas durante

el disentildeo arquitectoacutenico

El resultado del Srpint 0 es un documento inicial que

explica la arquitectura El documento puede basarse en los

pasos definidos por el meacutetodo ADD (Attrbute Driver

Design) Este meacutetodo ha sido probado exitosamente en

proyectos anteriores Con ADD se puede definir una

arquitectura de software mediante un proceso de

descomposicioacuten basado en los atributos de calidad de

Software

El documento inicial de la arquitectura se debe avaluar con

el fin de saber si la arquitectura cumple con los requisitos

de calidad Para realizar esta evaluacioacuten se propone el

meacutetodo ATAM (Architecture Tradeoff Analysis Method)

El ATAM revela cuaacuten bien una arquitectura satisface los

objetivos particulares de calidad y provee una

aproximacioacuten de coacutemo los objetivos de calidad interactuacutean

Si la evaluacioacuten de la arquitectura se encuentra que se

deben realizar cambios a la misma entonces eacutesta se debe

refinar hasta llegar a tener como resultado del Sprint 0 el

documento puacuteblico de la arquitectura junto con el sistema

esqueleto Finalmente la arquitectura creada en el Sprint 0

beneficiaraacute el desarrollo en los siguientes sprints

IV Rol del arquitecto de Software en Scrum

El rol y actividades del arquitecto de software cambian de

enfoque dependiendo de si se estaacute en el Sprint 0 o en

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

12

sprints subsecuentes

Fig 3 La Comunicacioacuten

Sprint 0 En sistemas complejos una persona difiacutecilmente

puede cubrir con amplitud teacutecnica las decisiones

arquitectoacutenicas y dar credibilidad a la arquitectura de

software Esto quiere decir que la participacioacuten del equipo

es de vital importancia para la creacioacuten y el mantenimiento

de la arquitectura Un equipo de arquitectos de software

que se aiacutesle del equipo de Scrum puede producir una

arquitectura que corra el riesgo de ser rechazada Es por

esto que recomendamos que el arquitecto o los arquitectos

se software sean miembros del equipo de Scrum Una de

las actividades que se debe realizar en equipo es la

evaluacioacuten de la arquitectura Especiacuteficamente en el

meacutetodo ATAM se requiere la participacioacuten mutua de tres

equipos que trabajan en conjunto con los arquitectos de

software el de evaluacioacuten el de tomadores de decisiones

del proyecto y el de los involucrados en la arquitectura

Sprints subsecuentes El arquitecto de software asegura que

el equipo de Scrum entienda el enfoque y los retos

arquitectoacutenicos maacutes importantes en casa sprint Los

equipos de Scrum realizan construcciones cortas guiados

por las estrategias de la arquitectura A continuacioacuten se

nombran algunas de las responsabilidades del arquitecto de

software desde el Sprint 1 en adelante

El duentildeo del producto y el maestro del Scrum trabajan con

el arquitecto para priorizar los requisitos a implementar en

cada iteracioacuten

El arquitecto comunica las decisiones y facilita las

conversaciones arquitectoacutenicas de distintos puntos de vista

en cada sprint

El arquitecto asegura que haya conformidad entre las

entregas en cada sprint y la arquitectura

El arquitecto responde preguntas y da orientacioacuten

arquitectoacutenica cuando sea necesario

Junto con el maestro de Scrum coordina a los miembros

del equipo para adaptarse a la arquitectura previa

El arquitecto junto con el duentildeo del producto y los

miembros del equipo preparan el Product Backlog

V Conclusioacuten

En el presente artiacuteculo ofrecimos una propuesta para incluir

la arquitectura de software en Scrum En el Sprint 0 se

realizan las actividades concernientes al anaacutelisis y disentildeo

de la arquitectura de software y el sistema esqueleto En

los siguientes sprints el arquitecto de software se asegura

de que la implementacioacuten cumpla con la arquitectura

REFERENCIAS

[3] httpwwwsafecreativeorgwork

[4] Hirotaka Takeuchi es decano de la Graduate School of International

Corporate Strategy en la Universidad Hitotsubashi en Tokio y fue profesor visitante en la Escuela de Negocios Harvard entre 1989 y 1990

[5] Ikujiro NonakaNo soy un guruacute porque me falta carisma

] INGENIERIacuteA DE SOFTWARE

13

INGENIERIacuteA DE SISTEMAS

El futuro de la ingenieriacutea de software Luis E Aguirre

Ingenieriacutea de Sistemas

Universidad San Francisco de Asiacutes

20 de Octubre esq Belisario Salinas

La Paz - Bolivia leaguirreusfaedubo

Resumen El disentildeo de programas a partir de informacioacuten binaria

significoacute un paso sustantivo para la industria desarrolladora de

software Desde ese hallazgo ocurrido en la deacutecada de los

cincuenta hasta hoy el crecimiento de metodologiacuteas para su

desarrollo ha subido notablemente en complejidad Sin embargo

los ciacuterculos viciosos que acusa hoy la confeccioacuten de programas

informaacuteticos impiden conceptualizar el objeto a un nivel

superior de abstraccioacuten tal y como lo exige el avance tecnoloacutegico

y los procesos de negocios

Palabras clave mdash futuro software ingenieriacutea programador y

desarrollo

I Introduccioacuten

La calidad de los sistemas informaacuteticos satisfaccioacuten de sus

usuarios y clientes son temas ampliamente conocidos

recurrentes y de constante preocupacioacuten por parte de los

practicantes de la Ingenieriacutea de software

Esta joven y dinaacutemica ingenieriacutea siempre estaacute en busca de

mejoras en el desarrollo de sistemas aumento de

productividad del ingeniero de software mayor control del

proceso de desarrollo establecimiento de nuevos meacutetodos de

desarrollo

Fig 1 Primeros programas computacionales en formato de tarjeta perforada

Estos elementos combinados y aplicados de buena forma

logran un buen proceso de desarrollo y en definitiva un buen

producto

Identificar los pasos que ha recorrido esta ingenieriacutea analizar

su contexto actual y finalmente proyectar hacia doacutende se

dirige es el pilar de este artiacuteculo

II iquestSe aplica actualmente la ingenieriacutea del software

La investigacioacuten y el desarrollo de teacutecnicas y meacuteto

dos de ingenieriacutea del software son constantes y suelen suponer

interesantes avances en la resolucioacuten de problemas de

desarrollo de software Sin embargo es habitual que en la

praacutectica diaria profesional no se incluya praacutecticamente

ninguna de las recomendaciones maacutes elementales de la

ingenieriacutea del software En efecto es habitual que el

desarrollo de software se parezca maacutes al descontrol del cuento

de laquosi los programadores fueran albantildeilesraquo ([Novatica

1996]) que a una idiacutelica y bien organizada factoriacutea de

software (concepto de gran vigencia a finales de los ochenta

[Nunamaker et al 1988])

De hecho las evaluaciones de los procesos productivos de

software realizadas a raiacutez de los modelo de procesos de

software (por ejemplo con CMM [Paulk et al 1993])

confirman que el desarrollo de software suele estar

baacutesicamente en estado caoacutetico

Y no soacutelo en como uno podriacutea pensar pequentildeas

organizaciones de un paiacutes mediterraacuteneo como el nuestro sino

en tambieacuten en las empresas adjudicatarias de interesantes

contratos de defensa de paiacuteses laquoavanzadosraquo como EEUU o

Japoacuten Si bien estos modelos de evaluacioacuten auacuten acumulan

distintas acusaciones de rigidez o falta de contraste empiacuterico

los resultados obtenidos en sus evaluaciones resultan

consistentes con la sensacioacuten de constante laquoapagafuegosraquo que

suelen sufrir los profesionales del software Tambieacuten suelen

revelar la praacutectica despreocupacioacuten de los responsables de las

organizaciones de software por la mejora de la calidad de sus

procesos de trabajo o de sus productos bien sea por contar con

una situacioacuten interna de empresa poco propicia porque el

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

14

ambiente del mercado no fomenta la preocupacioacuten por estos

temas o bien por su poco intereacutes real en la buacutesqueda de la

calidad

III La actualidad

La gran mayoriacutea de los sistemas de software creados hoy en

diacutea son los llamados sistemas corporativos es decir son

orientados a formar una parte importante de los negocios de

las grandes empresas

Continuando en nuestro contexto se identifica un nuevo

enfoque del problema de desarrollo el apoyo en la

sincronizacioacuten de los procesos de negocio estructuras

complejas de informacioacuten manejada por el negocio todo esto

entrelazado por restricciones dadas por las reglas del negocio

La tecnologiacutea actual por otro lado ha alejado maacutes todaviacutea los

ingenieros de las maacutequinas sistemas operativos incluso de

las tareas de programacioacuten

El enfoque de la mayoriacutea de los equipos de desarrollo e

ingenieros participes en proyectos sigue siendo con un bajo

nivel de abstraccioacuten cerca de la codificacioacuten Se tiende a

pensar en la base de datos a utilizar establecer la navegacioacuten

de las paacuteginas programar los protocolos de comunicacioacuten etc

Esto lleva a utilizar las tareas de programacioacuten y de pruebas

para validar el entendimiento y cumplimiento de la

funcionalidad de los sistemas

Lo anteriormente expuesto muestra un problema

metodoloacutegico consecuencia de un desfase entre el enfoque

teoacuterico oacuteptimo (anaacutelisis de negocio) y el enfoque praacutectico real

(programacioacuten y pruebas) en los proyectos de hoy En otras

palabras la metodologiacutea actualmente usada estaacute atrasada con

respecto al avance tecnoloacutegico

Desarrollando maacutes esta idea se identifican algunos

problemas concretos de las metodologiacuteas

Ellas no obligan a sus ejecutores a respetar todas las

normas y los procedimientos establecidos especialmente

en las etapas tempranas del proyecto Es muy faacutecil y

tentador ―saltar una o maacutes de estas etapas uno o maacutes

documentos o modelos pasando directamente a

implementacioacuten produccioacuten y posterior correccioacuten de los

sistemas desarrollados

Control de calidad del producto final La codificacioacuten y

complejidad del programa es demasiada para ser revisada

y verificada fehacientemente Por otro lado los coacutedigos

fuentes y los ejecutables actualmente son los uacutenicos

entregables eficientemente verificables

Estos dos problemas al parecer forman una situacioacuten

contradictoria la metodologiacutea tradicional no permite validar

eficientemente la calidad de los sistemas antes de llegar al

coacutedigo fuente y por otro lado tampoco permite llegar

eficientemente a coacutedigos fuentes de calidad

IV Futuro

La salida de este ―ciacuterculo vicioso que se propone es

bastante natural analizar la situacioacuten actual de la ingenieriacutea

de software en la luz de sus tendencias histoacutericas

La primera de ellas relacionada con los problemas que

resuelven los sistemas obviamente presente y muy utilizada

en nuestra realidad los sistemas de hoy no soacutelo resuelven los

problemas del mundo real sino que estaacuten fuertemente influen-

ciando el desarrollo del mundo real

Fig2 Modela

El enfoque de los ingenieros desde hace unos antildeos no se ha

movido significativamente por el camino del aumento de

abstraccioacuten establecido histoacutericamente Se han hecho ciertos

avances en temas puntuales (como arquitecturas de

componentes patrones de disentildeo nuevos lenguajes de

programacioacuten etc) pero conceptualmente

metodoloacutegicamente la tarea de programacioacuten sigue siendo

ejecutada de la misma forma escribiendo coacutedigos fuentes en

forma de los programas textuales

Eacuteste es justamente el ―atraso metodoloacutegico que se

mencionoacute Para disminuir la brecha entre las tendencias

histoacutericas es necesario ajustar la metodologiacutea en teacuterminos de

aumentar la abstraccioacuten del enfoque de los ingenieros de

software y acercarlo a la abstraccioacuten del problema

El aumento de la abstraccioacuten del proceso de desarrollo del

software hace pensar que la proacutexima generacioacuten de meacutetodos

de desarrollo se perfila en un conceptualmente nuevo con-

] INGENIERIacuteA DE SOFTWARE

15

INGENIERIacuteA DE SISTEMAS

junto de herramientas que permitan aumentar en un mayor

grado al actual la abstraccioacuten escondiendo los detalles de maacutes

bajo nivel

Fig3 Probable modelo a futuro

Las nuevas herramientas permitiraacuten ―programar en nivel

de anaacutelisis generando coacutedigos en un lenguaje de

programacioacuten tradicional de forma automaacutetica tal como hoy

los compiladores generan el lenguaje maacutequina a partir del

coacutedigo fuente Nuevos ―lenguajes de programacioacuten

naturalmente seriacutean visuales y se pareceriacutean a las

especificaciones de software en uno de los lenguajes de

modelamiento por ejemplo UML

V Conclusioacuten

Es muy probable que estemos proacuteximos a ver un nuevo

paso evolutivo en la ingenieriacutea de software Tan grande como

el invento de lenguajes de alto nivel o anaacutelisis y disentildeo

orientado a objetos Una nueva generacioacuten que absorberaacute a la

actual automatizando la mayoriacutea de las buenas praacutecticas

usadas actualmente

Una pregunta natural es si una maacutequina puede llegar a

generar programas tan buenos como los hechos por un pro-

gramador experto En vez de ―romper la cabeza con esta

pregunta ahora quizaacutes seriacutea suficiente recordarse otra vez de

la historia Los primeros compiladores de ninguna generacioacuten

alcanzaban de inmediato lo deseable y oacuteptimo Sin embargo

con el paso del tiempo apoyados en la experiencia de los

ingenieros y en el avance tecnoloacutegico se mejoraban hasta el

nivel de superar significativamente las generaciones

anteriores

Es poco factible que hoy en diacutea alguien cuestione la calidad

de los compiladores de por ejemplo Java y la calidad del

coacutedigo de maacutequina generado por ellos

VI Referencias [6] Website [Online]

httpwwwenterpriseanalystnetdownloadmda_informaticap

df

[7] httpwwwslidesharenetamrrochafuturo-del-software-impacto-en-las-organizaciones-y-en-los-profesionales

[8] httpwwwdcubaareventseci2008conferenciasIngSoftHexacta

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

16

Ingenieriacutea de Software para

Desarrolladores de juegos Huascar Huanca Orozco

Ingenieria de Sistemas San francisco de Asis

Av20 de Octubre esq Belisario Salinas

hhuncausfaedubo

ResumenmdashEn este artiacuteculo veremos una lo que es ldquoIS para

Desarrolladores de juegosrdquo si crees que un juego es facil pues

te equivocas en este articulo mostramos el uso de la IS en la

cracion de juegos que metodos utilizan y la complejidad que

representa para el equipo de desarrollo

1) Palabras clave mdash UMLRequisitosjuegoequipo de trabajo motor del juego

IV INTRODUCCIOacuteN

En la ingenieriacutea de software (IS) el desarrollo

de videojuegos es uacutenico pero similares a los

esfuerzos de software Es la uacutenica que combina el

trabajo de los equipos que cubren muacuteltiples

disciplinas (arte muacutesica actuacioacuten

programacioacuten etc) y que el juego de

acoplamiento que se busca a traveacutes del uso de

prototipos e iteraciones Con ello el desarrollo

del juego se enfrenta a desafiacuteos que pueden ser

abordadas mediante las praacutecticas tradicionales de

SE La industria tiene que adoptar buenas

praacutecticas de SE para sus distintas necesidades

tales como la gestioacuten de activos multimedia y

encontrar el fundamento en el juego La industria

debe asumir los retos por la evolucioacuten de los

meacutetodos de SE para satisfacer sus necesidades

Este trabajo investiga estos desafiacuteos y praacutecticas

de ingenieriacutea destaca para mitigar estos

problemas

V ENTRA EN EL JUEGO

Lo que la IS para desarrolladores de juegos hace

es

Mezcla de ingenieriacutea y el arte El software como

una praacutectica como una preocupacioacuten profesional

Meacutetodos para aprender a disentildear y fabricar un

producto El desarrollo del personaje e ingenieriacutea

de software Estrategias para hacer el mejor uso

de la ingenieriacutea del conocimiento formalizado El

aprendizaje de las habilidades que se pueden

aplicar en cualquier lugar

VI REQUISITOS

Esta parte ofrece una visioacuten general de los

conceptos y herramientas necesarias para la

obtencioacuten de requisitos

IDENTIFICAR LO QUE SE CONSIDERA UN REQUISITO DE SOFTWARE

ESTABLECER LOS CRITERIOS PARA DAR SENTIDO A LOS REQUISITOS Y LA

ESCRITURA DETERMINAR LA MANERA DE REUNIR LOS REQUISITOS O DESCUBRIR

EXPLORAR COacuteMO EMPLEAR CASOS DE USO PARA PERFECCIONAR Y

ANALIZAR LAS NECESIDADES ENCONTRAR TEacuteCNICAS PARA CONFIRMAR QUE LOS REQUISITOS ESTEacuteN

COMPLETOS

VERIFICAR LA EXACTITUD DE LOS REQUISITOS TRACE CAMBIOS EN LOS REQUISITOS

VII PROGRAMADOR DEL MOTOR DEL JUEGO

Fig 1 Juego RPG

] INGENIERIacuteA DE SOFTWARE

17

INGENIERIacuteA DE SISTEMAS

Los programadores de juegos motores crear el

motor de base del juego incluyendo la fiacutesica de

simulacioacuten y disciplinas graacuteficas

A Fiacutesica del motor del programador

Programador de un juego de la fiacutesica se dedica

al desarrollo de las fiacutesica de un juego se emplean

Por lo general un juego de soacutelo simular algunos

aspectos de la fiacutesica del mundo real Por ejemplo

un juego de espacio puede necesitar simulada

gravedad pero no tendriacutea ninguna necesidad

para simular agua viscosidad

Para un juego de rol como World of Warcraft

soacutelo un programador de la fiacutesica puede ser

necesaria Para un juego de combate complejo

como Battlefield 1942 los equipos de

programadores de la fiacutesica pueden ser necesarias

B motor de graacuteficos del programador

A pesar de todos los programadores antildeadir

tanto los contenidos y la experiencia que ofrece

un juego un programador de juego se centra maacutes

en la estrategia de un juego la aplicacioacuten de la

mecaacutenica del juego y la loacutegica y la sensacioacuten

de un juego

Esto no suele ser una disciplina independiente

como lo que este programador es por lo general

se diferencia de un juego a otro y que

inevitablemente se veraacute involucrado con las aacutereas

maacutes especializadas de desarrollo del juego como

los graacuteficos o el sonido

VIII EQUIPO DE TRABAJO

Fig 2 Grupo de trabajo

Un equipo de desarrollo en una organizacioacuten de

ingenieriacutea de software se compone de un grupo

de personas que trabajan en funciones

especializadas para lograr un objetivo comuacuten El

objetivo es la realizacioacuten de un proyecto Un

proyecto se define como un esfuerzo temporal

emprendido para crear un producto uacutenico

servicio o resultado

Aquiacute una pequentildea lista incompleta de algunos de

los componentes de un equipo de trabajo para

Desarrollo de juegos

Analista de requerimientos recopilar y analizar

los requisitos para el software

Arquitecto de software determinar la mejor

arquitectura para el software Seleccionar

Los componentes del proveedor para su inclusioacuten

en el esfuerzo de desarrollo

Disentildeador de software acotar el software para

lograr un rendimiento y otros

Objetivos

Prueba de software probador del software para

garantizar que funcione de acuerdo a la

Requisitos

Programador senior desarrollar bajo nivel de

documentacioacuten de disentildeo sirven como una

tecno-

Ventaja teacutecnica para los demaacutes e implementar el

software de acuerdo

Para el disentildeo

Programador implementar el software de acuerdo

al disentildeo

Trabajos de mantenimiento en el programador de

software creado durante el desarrollo anterior

Los esfuerzos para agregar funcionalidad o

eliminar errores de trabajo con

Atencioacuten al cliente

IX LENGUAJE UNIFICADO DE MODELADO (UML)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

18

Tomando en cuenta que el UML es un estaacutendar

muy flexible Nos da razoacuten que podemos pensar

en el diagrama

como herramientas que permiten realizar

diferentes tipos de trabajo Para revisar un poco

Use un diagrama de casos de uso para reunir y estudiar los requisitos para los propoacutesitos de disentildeo o pruebas

Use un diagrama de actividades para explorar los escenarios de casos de uso

Use un diagrama de clases para identificar las clases y ver coacutemo las

clases se relacionan entre siacute Use un diagrama de objetos para ver coacutemo un objeto se comunica con

otro

Use un diagrama de estado para explorar los atributos de cambio de objeto

Use un diagrama de secuencia para explorar a fondo un caso de uso

mediante el trazado de la orden en el que los objetos enviar mensajes a siacute mismos o entre siacute

Use un diagrama de colaboracioacuten para ver la loacutegica del sistema y la

forma en que los objetos envian mensajes entre siacute Use un diagrama de componentes para explorar y si existen los

subsistemas dentro de su juego

Use un diagrama de implementacioacuten para encontrar la manera de

configurar el paquete de instalacioacuten para su juego

X CONCLUSIONES

El desarrollo de los juegos se han vueltos mas

complejos con el pasar del tiempo y para el

desarrollo de un juego que este a la vanguardia

de la competencia se debe trabajar con la IS es

una forma eficaz de conseguir un juego de

calidad internacional

Referencias [9] Software Engineering for Game Developers by john P Flynt with Omar

Salem [10] httpieeexploreieeeorgxplloginjsptp=amparnumber=5070627ampurl=http

3A2F2Fieeexploreieeeorg2Fiel52F50705742F50705752F05

070627pdf3Farnumber

[11] httpgamedevstackexchangecomquestions19934abstract-game-engine-design

] INGENIERIacuteA DE SOFTWARE

19

INGENIERIacuteA DE SISTEMAS

Estrategias de Prueba del Software Miguel Angel Callisaya Quispe Universidad San Francisco de Asiacutes Av 20 de Octubre La Paz Bolivia

maccc19hotmailcom

Resumen Una estrategia de software es un mecanismo que

proporciona una guiacutea o base pasa ver la forma como se debe

desarrollar la aplicacioacuten en cuanto a meacutetodos esfuerzo

tiempo y recursos que son necesarios para lograr un producto

exitoso

La frecuencia con las que realicen las pruebas es de gran

importancia ya que de estaacute manera se pueda la en encontrar

los errores antes de que se conviertan en errores para la

aplicacioacuten si no se lleva un orden de aplicacioacuten de las pruebas

se va a perder tiempo recurso y sobre todo esfuerzo

Durante las primeras etapas de las pruebas es importante

concentrar toda la atencioacuten en un pequentildeo grupo de

componentes o en un componente que se considere importante

para el desarrollo tanto en los datos como en la parte loacutegica de

la aplicacioacuten

El objetivo final de las estrategias de prueba es documentar la

forma en el que equipo ha hecho el desarrollo y el seguimiento

que se le ha hecho a cada una de las etapas durante las etapas

de desarrollo e implementacioacuten

Palabras clave Calidad Prueba Estrategias Sistema

I INTRODUCCIOacuteN

Durante este articulo es importante mencionar algunos

aspectos que determinan el eacutexito de la aplicacioacuten de las

estrategias de prueba como lo son el enfoque estrateacutegico

para la prueba de software aspectos estrateacutegicos

estrategias de prueba para software convencional

estrategias de prueba para software orientado a objeto

estrategia de prueba para webapps pruebas de validacioacuten y

por uacuteltimo las pruebas del sistema

IIESTRATEGIAS DE PRUEBA DEL SOFTWARE

Verificacioacuten Estamos construyendo el producto

correctamente

Validacioacuten Estamos construyendo el producto correcto

Integracioacuten descendente

La integracioacuten descendente es un planteamiento

incremental a la construccioacuten de la estructura de programas

Se integran los moacutedulos movieacutendose hacia abajo por la

jerarquiacutea de control comenzando por el moacutedulo de control

principal (programa principal) Los moacutedulos subordinados

(de cualquier modo subordinados) al moacutedulo de control

principal se van incorporando en la estructura bien de

forma primero-en-profundidad o bien de forma primero-en-

anchura Fig1

Integracioacuten ascendente

La prueba de la integracioacuten ascendente como su nombre

indica empieza la construccioacuten y la prueba con los

moacutedulos atoacutemicos (es decir moacutedulos de los niveles maacutes

bajos de la estructura del programa) Dado que los moacutedulos

se integran de abajo hacia arriba el proceso requerido de

los moacutedulos subordinados a un nivel dado siempre estaacuten

disponibles y se elimina la necesidad de resguardos Fig2

Fig 1 Integracioacuten descendente

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

20

Fig 3 Integracioacuten Ascendente

Aspectos Estrateacutegicos

Tom Gilb plantea que se deben abordar los

siguientes puntos si se desea implementar con

eacutexito una estrategia de prueba del software

Especificar los requisitos del producto de manera

cuantificable mucho antes de que comiencen las pruebas

-Establecer los objetivos de la prueba de manera expliacutecita (teacuterminos

medibles)

-Comprender queacute usuarios va a tener el software y desarrollar un perfil

-Desarrollar un plan de prueba que haga hincapieacute en la prueba de ciclo

raacutepido

-Construir un software ―robusto disentildeado para probarse a siacute mismo

-Usar revisiones teacutecnicas formales efectivas como filtro antes de la

prueba

Llevar a cabo revisiones teacutecnicas formales para evaluar la

estrategia de prueba y los propios casos de prueba

Desarrollar un enfoque de mejora continua al proceso de

prueba Deberiacutea medirse la estrategia de prueba

Prueba de Unidad

La prueba de unidad centra el proceso de

verificacioacuten en la menor unidad del disentildeo del

software el moacutedulo La prueba de unidad siempre

esta orientada a caja blanca y este paso se suele

llevar a cabo en paralelo para muacuteltiples moacutedulos

Pruebas de Alfa y Beta

C u a n d o s e c o n s t r u y e s o f t w a r e a m e d i d a s e

l l e v a n a c a b o u n a s e r i e d e p r u e b a s d e

a c e p t a c i oacute n p a r a permitir que el cliente valide todos

los requisitos La prueba alfa se lleva a cabo en el

lugar del desarrollo pero por un cliente Se usa el

software en forma normal con el desarrollador como

observador del usuario y registrando los errores y

problemas de uso(entorno controlado)La prueba beta se

lleva a cabo por los usuarios finales en los lugares

de trabajo de los clientes El cliente registra los

problemas y los informa a intervalos regulare

Pruebas del sistema

La prueba del sistema estaacute constituida por una

serie de pruebas diferentes cuyo propoacutesito es

ejercitar profundamente el sistema

Prueba de recuperacioacuten

E s l a p r u e b a d e l s i s t e m a q u e f u e r z a a l

f a l l o d e l s o f t w a r e d e m u c h a s f o r m a s y

v e r i f i c a q u e l a recuperacioacuten se lleva a cabo

apropiadamente Recuperacioacuten automaacutetica o manual

Prueba de seguridad

Intenta verificar que los mecanismos de proteccioacuten

incorporados en el sistema lo protegeraacute de hecho de

accesos impropios

Pruebas de Resistencia

Estaacuten disentildeadas para enfrentar a los programas con

situaciones anormales Una variante de la prueba de

resistencia es una teacutecnica denominada prueba de

sensibilidad intenta descubrir combinaciones de datos

dentro de una clase de entrada valida que pueda producir

inestabilidad o un proceso incorrecto

El arte de la depuracioacuten

La depuracioacuten ocurre como consecuencia de una

prueba efectiva Cuando un caso de prueba

descubre u n e r r o r l a d e p u r a c i oacute n e s e l

p r o c e s o q u e p r o v o c a l a e l i m i n a c i oacute n d e l

e r r o r E l p r o c e s o m e n t a l q u e conecta un siacutentoma

con una causa es la depuracioacuten

El proceso de la depuracioacuten

E l p r o c e s o d e d e p u r a c i oacute n i n t e n t a h a c e r

c o r r e s p o n d e r e l s iacute n t o m a c o n u n a c a u s a

l l e v a n d o a s iacute a l a correccioacuten del error El proceso de

depuracioacuten siempre tiene uno de los dos resultados

siguientes

(1)se encuentra la causa se corrige y se elimina

o

(2)no se encuentra la causa En eacuteste uacuteltimo caso la persona

que realiza la depuracioacuten debe sospechar la causa disentildear

un caso de prueba que ayude a confirmar sus sospechas y el

trabajo vuelve hacia atraacutes a la correccioacuten del error de una

forma iterativa iquestPor queacute es tan difiacutecil la depuracioacuten

Varias caracteriacutesticas de los errores nos dan algunas

] INGENIERIacuteA DE SOFTWARE

21

INGENIERIacuteA DE SISTEMAS

pistas1El siacutentoma y la causa pueden ser

geograacuteficamente remotos entre siacute2El siacutentoma

puede desaparecer (temporalmente) al corregir

otro error

3 E l s iacute n t o m a p u e d e r e a l m e n t e e s t a r

p r o d u c i d o p o r a l g o q u e n o e s u n e r r o r

( i n e x a c t i t u d d e l o s redondeos)

4El siacutentoma puede estar causado por un error

humano que no sea faacutecilmente detectado

5El siacutentoma puede ser el resultado de problemas

de temporizacioacuten en vez de problema s de proceso

6Puede ser difiacutecil reproducir exactamente las

condiciones de entrada

7 E l s iacute n t o m a p u e d e a p a r e c e r e n f o r m a

i n t e r m i t e n t e

8 E l s iacute n t o m a p u e d e s e r d e b i d o a c a u s a s q u e

s e d i s t r i b u y e n p o r u n a s e r i e d e t a r e a s

e j e c u t aacute n d o s e e n diferentes procesadores

IIICONCLUCIONES

Las estrategias de prueba del software es un mecanismo

que proporciona una guiacutea o base pasa ver la forma como se

debe desarrollar la aplicacioacuten en cuanto a meacutetodos para

logra un producto exitoso

IVREFERENCIAS

httpbuenastareascomensayosEstategias-de-prueba-de-

software3752643html

httpwwwestrategiascompruebaagil

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

22

Ingenieriacutea Inversa Juan Carlos Zenteno Sanga

1

Departamento de Ingenieriacutea de Sistemas Universidad San Francisco de Asiacutes

Direccioacuten Incluyendo el Paiacutes 1juanka_58hotmailcom

Resumenmdash La ingenieriacutea de Software es parte del modelo de

proceso de reingenieriacutea de software es el proceso de analizar

un programa con la finalidad de crear una representacioacuten del

programa en un grado mayor de abstraccioacuten del coacutedigo

fuente las herramientas de ingenieriacutea inversa obtienen

informacioacuten del disentildeo de datos arquitectoacutenico y de

procedimientos a partir de un programa existente

En el siguiente artiacuteculo se veraacuten los conceptos baacutesicos y se

denotara un ejemplo praacutectico para una mayor comprensioacuten

del tema

Palabras clave mdash Ingenieriacutea de Software Reingenieriacutea

Linux Ingenieriacutea Inversa

XI INTRODUCCIOacuteN

Inmersa en el aacuterea de conocimiento de la

ingenieriacutea de software se encuentra la ingenieriacutea

inversa como punto de apoyo para los procesos

de anaacutelisis y disentildeo propuestos en diferentes

meacutetodos de desarrollo

La ingenieriacutea inversa permite subsanar esta

deficiencia al documentar los productos de

software a partir del coacutedigo ejecutable con el fin

de obtener los artefactos de anaacutelisis y disentildeo

La ingenieriacutea inversa es ademaacutes una

herramienta uacutetil que ayuda en el proceso de

aseguramiento de la calidad del software

mediante la comparacioacuten de diagramas de fases

de anaacutelisis y desarrollo se apoya comuacutenmente en

la generacioacuten del diagrama de clases debido a la

importancia de este diagrama en la fase de disentildeo

y su facilidad de generacioacuten Existen tambieacuten

otros diagramas de intereacutes como el de

comunicacioacuten y el de secuencias que modelan

las caracteriacutesticas dinaacutemicas de un producto de

software

Hoy en diacutea los productos maacutes comuacutenmente

sometidos a la Ingenieriacutea Inversa son los

productos de Hardware y Software pero

cualquier producto puede ser sometido a este

proceso

Aplicar ingenieriacutea Inversa a algo supone

profundizar el estudio de su funcionamiento

En el caso concreto del Software se conoce

por ingenieriacutea de software a la actividad que se

ocupa de describir coacutemo funciona un programa

de cuyo coacutedigo no se dispone hasta el punto de

generar coacutedigo propio que cumpla con las

mismas funciones Un ejemplo claacutesico del uso de

esta teacutecnica es el software de pago donde las

empresas utilizan esta teacutecnica para proteger sus

productos contra posibles acceso no autorizados

o examinar el producto final para encontrar

posibles bugs inesperados en la ejecucioacuten de

dicho sistema

Existe una gran variedad de software

desensamblador y depurador para aplicar esta

teacutecnica

En resumen la idea general al aplicar

ingenieriacutea inversa es

Conocer a fondo la aplicacioacuten y generar un

mejor coacutedigo

Migrar la aplicacioacuten a un nuevo sistema operativo

Hacer o completar la documentacioacuten

] INGENIERIacuteA DE SOFTWARE

23

INGENIERIacuteA DE SISTEMAS

Verificar que el coacutedigo en estudio cumple las

especificaciones del disentildeo estaacutendar

La informacioacuten extraiacuteda de la lectura del

coacutedigo fuente son las especificaciones de disentildeo

modelos de flujo de control diagramas de disentildeo

documentos de especificacioacuten de disentildeo

pudiendo tomarse estas especificaciones como

nuevo punto de partida para aplicar ingenieriacutea

inversa y obtener informacioacuten a mayor nivel de

abstraccioacuten

Dado que es una labor estrateacutegica es

conveniente conocer cuando conviene realizar la

tarea de Ingenieriacutea inversa para una aplicacioacuten y

cuaacutendo es maacutes rentable sustituirla e implementar

una nueva Las aplicaciones para el primer paso

son aquellas en la que se produce las siguientes

situaciones

bull Fallos frecuentes que son difiacuteciles de

localizar

bull Son poco eficientes pero realizan la funcioacuten

esperada

bull Dificultades en la integracioacuten con otros

sistemas

bull Calidad pobre del software final

bull Resistencia a introducir cambios

bull Pocas personas capacitadas para realizar

modificaciones

bull Dificultades para realizar pruebas

bull El mantenimiento consume muchos recursos

XII LAS BASES DE LA INGENIERIA INVERSA

Los ejemplos maacutes trascendentes sobre los

inicios de la ingenieriacutea inversa son claramente las

investigaciones realizadas sobre antiguos

artefactos creados por humanos ancestrales con

el fin de descubrir la manera en que funcionaban

Uno de los maacutes conocidos es el llamado

mecanismo de Antikythera (Fig 1) el cual se

piensa que fue disentildeado para fines astronoacutemicos

por los griegos siendo uno de los primeros

artefactos que funcionaban con ruedas de

engranes

Figura 1 Antikythera (mecanismo presuntamente creado para fines astronoacutemicos)

Podemos entonces implantar un paralelo en aquella

mitoloacutegica buacutesqueda de descubrimiento sobre el

funcionamiento de esos artefactos y la ingenieriacutea inversa

actual usada en ingenieriacutea de software estableciendo un

importante factor en comuacuten la falta de documentacioacuten En

este ambiente es muy comuacuten contar con una especie de caja

negra en donde sabemos lo que ingresamos y el resultado

que obtenemos pero desconocemos el procedimiento con la

precisioacuten que necesitariacuteamos para replicarlo

Esta falta de documentacioacuten es el impulso

principal de toda la ingenieriacutea inversa las

finalidades de la misma pueden variar pero este

factor inicial nunca lo haraacute

XIII INGENIERIA INVERSA COMO UN PROCESO DE

REINGENIERIA

La ingenieriacutea inversa tiene la misioacuten de

desentrantildear los misterios y secretos de los

sistemas en uso

Baacutesicamente recupera el disentildeo de la

aplicacioacuten a partir del coacutedigo esto se realiza

mediante herramientas que extraen la

informacioacuten de los datos procedimientos y

arquitecturas del sistema

Es aplicable a sistemas con las siguientes

caracteriacutesticas

Documentacioacuten inexistente o totalmente obsoleta

Programacioacuten en bloque de coacutedigos muy grandes

yo sin estructural

La aplicacioacuten cubre gran parte de los requisitos

y el rendimiento esperado

A Nivel de abstraccioacuten

El nivel de Abstraccioacuten de un proceso de

Ingenieriacutea Inversa y las herramientas que se

utilizan para realizarlo aluden la sofisticacioacuten de

la informacioacuten de disentildeo que se puede extraer del

coacutedigo fuente Este proceso deberiacutea ser capaz de

derivar

Sus representaciones de disentildeo de procedimiento

(con un bajo nivel de abstraccioacuten)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

24

La informacioacuten de las estructuras de datos de

procedimiento (con un nivel de abstraccioacuten

ligeramente maacutes elevado)

Modelos de flujo de datos de control (un nivel de

abstraccioacuten relativamente alto)

Modelos de entidades y de relaciones (un elevado

nivel de abstraccioacuten)

B Completitud

En la mayoriacutea de los casos la completitud

decrece a medida que aumenta el grado de

abstraccioacuten

La completitud mejora en proporcioacuten directa a

la cantidad de anaacutelisis efectuado por la persona

que estaacute efectuando la ingenieriacutea inversa

C Interactividad

La interactividad alude al grado con el cual el

ser humano se integra con las herramientas

automatizadas para crear un proceso de

ingenieriacutea inversa efectivo

D Proceso

El Proceso de ingenieriacutea inversa (Fig 2) es el encargado

de reestructurar el coacutedigo fuente para que solamente

contenga instrucciones de programacioacuten estructurada Lo

que hace que el coacutedigo sea maacutes faacutecil de leer y proporciona

la base para las subsiguientes actividades de ingenieriacutea

inversa

Figura 2 Diagrama de Proceso de la Ingenieriacutea Inversa

E Reestructuracioacuten

La reestructuracioacuten del software modifica el

coacutedigo fuente y los datos en un intento adecuado

a futuros cambios esta no modifica la

arquitectura global del programa Tiene a

centrarse en los detalles de disentildeo de moacutedulos

individuales y en estructuras de datos locales

definidas dentro de los moacutedulos

Estos son algunos de los beneficios que se

pueden lograr cuando se reestructura el software

Programas de mayor calidad

Reduce el esfuerzo requerido para llevar a cabo

las actividades de mantenimiento

Hace el software maacutes sencillo para comprobar y

depurar

F Re documentacioacuten

Es el proceso mediante el cual se produce

documentacioacuten retroactivamente desde un

sistema existente

Es considerada una forma de ingenieriacutea inversa

porque la documentacioacuten reconstruida es usada

para ayudar al conocimiento del programa

XIV UTILIZANDO EL METODO CIENTIFICO EN LA

INGENIERIA INVERSA

Ante cualquier dificultad tecnoloacutegica el

meacutetodo cientiacutefico siempre es y seraacute nuestra maacutes

preciada arma Partamos imaginando un pequentildeo

dilema relacionado con el tema de ingenieriacutea de

software especiacuteficamente con un sencillo

programa (Fig 3)

Figura 3 Pantalla de aplicacioacuten que nos serviraacute de ejemplo

Esta sencilla aplicacioacuten mostraraacute un mensaje con cierto

resultado y aun siendo un problema demasiado sencillo

para considerarlo como un reto el objetivo es soacutelo describir

] INGENIERIacuteA DE SOFTWARE

25

INGENIERIacuteA DE SISTEMAS

las acciones usuales del proceso las cuales son aplicables

en escalas muy superiores

El resultado mostrado por el programa dentro del mensaje

emergente se basa en nuestra entrada pero nosotros

desconocemos en lo absoluto los procedimientos utilizados

sobre esta entrada para producir aquella respuesta

A La Observacioacuten es Trascendental

Primero es importante observar el problema su

comportamiento Es substancial tratar de lograr

un pensamiento inductivo en donde logremos

identificar el principio particular del problema

para poder llegar a extrapolarlo a una solucioacuten

general

El punto de quiebre se produce en este instante

Ya al haber observado la aplicacioacuten podriacuteamos

decidir procesar los datos que nos entrega y

lograr crear un coacutedigo equivalente o investigar el

funcionamiento interno

B Dentro de la aplicacioacuten

Luego de la formulacioacuten de una hipoacutetesis sobre

su funcionamiento necesitamos algunas

herramientas para comenzar con la investigacioacuten

En el caso de esta aplicacioacuten con un poco de

conocimientos del lenguaje ensamblador de

programacioacuten tradicional y un descompilador es

suficiente

Es importante emprender de buena forma

nuestro sondeo ser ordenados y metoacutedicos en la

tarea En este momento las capacidades analiacuteticas

y loacutegicas son muy importantes para alivianar

nuestra faena

Lo fundamental es conocer muy bien el

entorno en que nos desenvolveremos En este es

punto indispensable saber que una aplicacioacuten

para Windows necesita invocar internamente al

punto de entrada MessageBox o MessageBoxEx

de la libreriacutea de sistema user32dll para poder

desplegar un mensaje (Fig 4)

Figura 4 Resultado de la Aplicacioacuten

Ya con esa pista es sencillo encontrar el

fragmento de coacutedigo relacionado con las

operaciones relacionadas a nuestro nuacutemero de

entrada que tendriacutea una forma similar a la

mostrada a continuacioacuten en nuestro

descompilador (Fig 5)

Figura 5 Vista del Programa en Ensamblador

Cualquier programador intuiriacutea faacutecilmente lo

que hacen las liacuteneas superiores de esta aplicacioacuten

en especial sprintf es parte de la libreriacutea estaacutendar

de C++ Claramente vemos tambieacuten el tiacutetulo de la

ventana en el coacutedigo estos valores son

interpretados de forma inteligente por este

descompilador en especial y en particular nos

asiste de sobremanera a comprender el coacutedigo

Lo siguiente es sencillamente explorar paso a

paso las acciones superiores de caacutelculo del

resultado En esta instancia seraacute ideal realizar

numerosas pruebas para estar completamente

seguros de que logramos develar el secreto tras la

funcionalidad objetivo (Fig 6)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

26

Figura 6 Inicio del coacutedigo al que aplicaremos ingenieriacutea inversa

Hay que detenerse algunos segundos a

individualizar algunos procedimientos del

anaacutelisis que a simple vista pueden parecer

inconcebibles con el fin de poder generar una

tesis concluyente

Cabe destacar que se omitiraacuten pasos

intermedios de asignaciones de memoria y otros

formalismos propios de ensamblador para

favorecer el entendimiento del lector

Inicialmente tenemos el valor de entrada

supuestamente ya leiacutedo desde el cuadro de

diaacutelogo del programa ahora nos enfocamos en la

primera accioacuten importante Asumiremos el valor

de entrada como una incoacutegnita

En el siguiente trozo de coacutedigo la liacutenea

destacada antildeadioacute siete a nuestra incoacutegnita (Fig 7)

Figura 7 Coacutedigo donde se denota la adicioacuten de 7 a nuestra ecuacioacuten

A continuacioacuten se multiplica ese valor

resultante de la suma por el mismo (Fig 8)

Figura 8 Coacutedigo donde se denota la multiplicacioacuten del valor por la suma

Nuevamente multiplicamos el resultado por el

anterior proporcionado tras la suma En esta

segunda vez ya podemos expresar la operacioacuten

simplemente elevando al cubo la suma anterior

(Fig 9)

Figura 9 Coacutedigo que denota una nueva multiplicacioacuten del resultante

Ahora le restamos diez al resultado

El procedimiento que viene a continuacioacuten

propone un mayor desafiacuteo intelectual Un nuacutemero

constante en este caso el cargado al registro

EAX (Fig 10)

Figura 10 ubicacioacuten del nuacutemero constante EAX

Generalmente la divisioacuten es algo maacutes costosa

en tiempo de procesador que otras operaciones

por lo que ciertos compiladores incluyen tablas

de constantes las cuales son llamadas ―nuacutemeros

maacutegicos para la divisioacuten entera

d Con signo Sin signo

m (hex) s m (hex) a s

-5 99999999 1

-3 55555555 1

-2k 7FFFFFFF k-

1

1 mdash mdash 0 1 0

2k 80000001 k-

1 232-k 0 0

3 55555556 0 AAAAAAAB 0 1

5 66666667 1 CCCCCCCD 0 2

6 2AAAAAAB 0 AAAAAAAB 0 2

7 92492493 2 24924925 1 3

9 38E38E39 1 38E38E39 0 1

10 66666667 2 CCCCCCCD 0 3

11 2E8BA2E9 1 BA2E8BA3 0 3

] INGENIERIacuteA DE SOFTWARE

27

INGENIERIacuteA DE SISTEMAS

12 2AAAAAAB 1 AAAAAAAB 0 3

25 51EB851F 3 51EB851F 0 3

125 10624DD3 3 10624DD3 0 3

Tabla 1 Algunos nuacutemeros maacutegicos (32 bits)

Ahora bien conociendo la tabla 1 sabiendo

que el nuacutemero cargado en esta ocasioacuten

corresponde al once lo que hace el coacutedigo es

multiplicar el resultado de la salida temporal por

aquel nuacutemero (Fig 11)

Figura 11 Multiplicacioacuten del resultante por el numero 11

Naturalmente la multiplicacioacuten por un nuacutemero

tan grande produce una especie de

desbordamiento en el registro contenedor del

resultado al exceder el tamantildeo de palabra del

procesador (en este caso de 32 bits) Estos bits

sobrantes se almacenan naturalmente en el

registro EDX registro que es contiguo a ECX

dentro de la memoria de los registros del

procesador

Ahora desplazamos un bit del registro EDX

(equivalente a una divisioacuten entera por dos) para

obtener la solucioacuten de la divisioacuten por once

generando una sencilla ecuacioacuten

Figura 12 Desplazamiento del bit de registro EDX

El uacuteltimo paso luego de documentar estos

resultados seraacute crear una aplicacioacuten que recree

esta foacutermula soacutelo en caso de tener intenciones de

re-codificacioacuten del desarrollo Consumando este

punto es sencillo confeccionar un diagrama con

todo el proceso anteriormente visto

XV CONCLUSIONES

Queda claro que el tema de la ingenieriacutea

inversa es uno de los toacutepicos maacutes interesantes a

los que podriacutea afrontarse un profesional de la

tecnologiacutea y en general disfrutar el largo proceso

involucrado gracias al desafiacuteo poco predecible

que presenta

En general podemos darnos cuenta de que no

existen muchas metodologiacuteas y teoriacuteas estrictas

sobre coacutemo aplicar las teacutecnicas de ingenieriacutea

inversa Afortunadamente un ingeniero estaacute

preparado para afrentar desafiacuteos de este tipo

Adicionalmente podemos deducir tambieacuten el

aspecto bidireccional de la ingenieriacutea inversa

pues como ya lo comprobamos no solo es un

desafiacuteo aplicarla sino que tambieacuten lo es tener que

dificultar el proceso o incluso tratar de impedirlo

si la situacioacuten lo requiere

REFERENCIAS

[12] Roger Pressman Ingenieriacutea de Software ―Un Enfoque Moderno 6th ed

MC Graw Hill [13] httpeswikipediaorgwikiIngenieria_inversa

[14] httpwwwinfosecwritersconntext_resourcespdfsoftware_security_and_r

everse_engineeringpdf [15] httperwinriedclmodo=visorampelemento=239

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

28

METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO Univ Alejandro Meacutendez Escobar

Universidad San Francisco de Asiacutes

Ingenieriacutea de Sistemas

Ingenieriacutea de Software I

La Paz - Bolivia

amendezusfaedubo

Resumenmdash Al adquirir el software educativo dentro del campo de

desarrollo de software una gran importancia y siendo este

inspiracioacuten de propuestas de innumerables metodologiacuteas que buscan

la elaboracioacuten de un software de calidad

Tomaremos la metodologiacutea Aacutencora enfocada a la fase de

requerimientos y que ofrece elementos que indican las actividades

que deben realizarse los artefactos que se producen y la forma de

obtenerlos

Usando al desarrollo de software educativo como ejemplo de una

mejor comprensioacuten de dicha metodologiacutea analizando la aplicacioacuten

del Aacutencora en un trabajo propuesto para el Instituto Tecnoloacutegico de

Orizaba Meacutexico

Palabras clave mdash Aacutencora Metodologiacutea Desarrollo de Software

Educativo Requerimientos Calidad

XVI INTRODUCCIOacuteN

Hoy en diacutea la tecnologiacutea esta dentro de las

actividades que realizamos es asiacute que la educacioacuten no

queda exenta de ella por o cual es necesario adaptarse

al movimiento tecnoloacutegico que nos trae grandes

ventajas en la transmisioacuten de conocimientos de una

manera sencilla y dinaacutemica

De esta manera han surgido infinidad de

metodologiacuteas de desarrollo de software educativo el

cual tiene como objetivo ser el apoyo para docentes

alumnos y toda persona que este dentro del proceso de

aprendizaje

Tomando en cuenta este ramillete infinito de

metodologiacuteas surge en el ejemplo propuesto la

adaptacioacuten del Aacutencora en el desarrollo de software

educativo teniendo como objetivo principal la

comprensioacuten de los elementos y conceptos de la

metodologiacutea Aacutencora

Aacutencora es una metodologiacutea enfocada a la

adquisicioacuten de requerimientos para software que

ofrece guiacuteas y elementos de apoyo para la obtencioacuten de

estos requerimientos Al mismo tiempo permite pasar a

la fase de disentildeo de manera sencilla Aprovechando las

ventajas que presenta Aacutencora se le hicieron algunas

adaptaciones con el fin de cubrir algunas

caracteriacutesticas del disentildeo instruccional y enriquecer

Aacutencora habilitaacutendola para la adquisicioacuten de

requerimientos de software educativo

XVII APLICACIOacuteN DE LA METODOLOGIacuteA AacuteNCORA

Como es el objetivo principal la comprensioacuten de la

aplicacioacuten de la metodologiacutea Aacutencora dentro del

desarrollo de software educativo de calidad solo

describiremos los meacutetodos del meacutetodo y los resultados

obtenidos

Claro esta que para ahondar maacutes en tema del

software educativo en si el lector puede recurrir a los

siguientes autores Metodologiacutea de desarrollo de

sistemas multimedia (Vaughan 2006) Propuesta de

metodologiacutea para el disentildeo desarrollo y evaluacioacuten

de software educativo (Reyes 2009) Ingenieriacutea de

software educativo con modelaje orientado por objetos

(Goacutemez 1998) asi como tambieacuten los siguientes

modelos ADDIE (Anaacutelisis Disentildeo Desarrollo

Implantacioacuten y Evaluacioacuten) de (McGriff 2000) y el

disentildeo instruccional aplicado al desarrollo de software

educativo EISE (Especificacioacuten Instruccional de

Software Educativo) de (Hernaacutendez 2005)

] INGENIERIacuteA DE SOFTWARE

29

INGENIERIacuteA DE SISTEMAS

Quienes tienen el mismo objetivo de crear software

educativo de calidad podemos sintetizar de ellos los

siguientes puntos

Anaacutelisis del puacuteblico al que se dirigiraacute el software

Problema oacute necesidad educativa a atender

Anaacutelisis de contenido (Tema a tratar actividades

para alcanzar el objetivo de ensentildeanza y forma de

evaluarlo)

Actividades oacute forma actual de llevar a cabo la

ensentildeanza del tema en cuestioacuten

Elaboracioacuten de guiones metaacuteforas escenarios

Creacioacuten de prototipo oacute Storyboard

Disentildeo de interfaz

Mapas de navegacioacuten

Modelos de datos

Elaboracioacuten de diagramas de contexto diagramas

de flujo o diagramas de casos de uso

Ahora enfocaacutendonos en el aacutencora se establece la

propuesta de seleccionar las actividades de Aacutencora que

permitan obtener los requerimientos de un software

educativo

La Tabla 1 presenta las actividades y artefactos

producidos en las fases de Aacutencora para la elaboracioacuten

de software educativo

TABLA 1 ACTIVIDADES Y ARTEFACTOS DE LA METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO

Metodologiacutea Aacutencora

Fases Actividades y artefactos

Anaacutelisis de

Requerimientos

A traveacutes de entrevistas con los clientes

(maestros y pedagogos) y de la lectura

del respectivo material proporcionado

por ellos se definiraacute la asignatura a la

que se enfocaraacute el software el tema a

tratar y la forma en que se abordaraacute y

evaluaraacute Tambieacuten se estableceraacute el

objetivo general de aprendizaje la

metaacutefora que se emplearaacute y se

determinaraacute el puacuteblico al que se

dirigiraacute el software

Artefactos

Documento que define la asignatura

contenido objetivo general de

aprendizaje metaacutefora y puacuteblico al que

se dirigiraacute el software Guion de la

situacioacuten actual

Recoleccioacuten y

clasificacioacuten de

requerimientos

El guion de la propuesta

computacional reflejaraacute la metaacutefora

que se sigue el ambiente de cada

escena

La bitaacutecora de desarrollo permitiraacute ver

coacutemo el sistema responderaacute a las

diversas acciones que realice el

usuario

En lugar del prototipo raacutepido se

elaboraraacute un Storyboard para presentar

graacuteficamente la estructura de sistema

propuesto

Artefactos

Guion de propuesta computacional

bitaacutecora de desarrollo Storyboard

Resolucioacuten de

conflictos

jerarquizacioacuten y

validacioacuten de

requerimientos

Modificaciones al guion de la

propuesta computacional de acuerdo a

los cambios propuestos por los

maestros y pedagogos

Artefactos

Guion de propuesta computacional e

Storyboard con adecuaciones sentildealas

Cierre

Trasladar los guiones a casos de uso

Artefactos

Casos de uso

Se agregaron algunas caracteriacutesticas a ciertos

artefactos de Aacutencora para poder cubrir los

requerimientos de software educativo Uno de estos

elementos es el guion de la propuesta computacional

al que se propone agregar lo siguiente

Conocimientos previos del usuario Se refiere a los

conocimientos baacutesicos o miacutenimos que debe tener el

alumno para poder interactuar con el moacutedulo

Objetivo de aprendizaje Es el aprendizaje que

debe obtener el alumno despueacutes de haber interactuado

con el moacutedulo

La Figura 1 se presenta la estructura sugerida para el

guion de la propuesta computacional En la bitaacutecora de

desarrollo se propone antildeadir una fila al final de cada

pista donde se describan las situaciones favorables y

no favorables para el cumplimiento del objetivo de

aprendizaje para esa pista en particular Por otra parte

en lugar del prototipo se sugiere utilizar el Storyboard

ya que permite mostrar de manera maacutes completa la

estructura del guion de la propuesta computacional La

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

30

Figura 2 muestra el formato para la elaboracioacuten del

Storyboard

Figura 1 Estructura del guion para la propuesta computacional

Figura 2 Formato para la elaboracioacuten del Storyboard

XVIII RESULTADOS

Aplicando Aacutencora en un ejemplo para la parte de

requerimientos se obtuvo la siguiente informacioacuten

Asignatura Matemaacuteticas

Contenido Estaacute articulado con base en seis ejes

con sus respectivos temas y subtemas que variacutean de

acuerdo al grado escolar Considerando lo anterior se

tiene lo siguiente

a) Grado escolar De segundo hasta quinto grado de

primaria

b) Temas Nuacutemeros naturales capacidad peso

tiempo y ubicacioacuten espacial planteamiento y

resolucioacuten de problemas sencillos en los que se

requiera recolectar y registrar informacioacuten

perioacutedicamente representacioacuten de informacioacuten en

tablas de frecuencia y graacuteficas de barras registros de

los resultados de experimentos aleatorios

representacioacuten de los resultados de un experimento

aleatorio en tablas y graacuteficas

c) Subtemas Planteamiento y resolucioacuten de

problemas que impliquen dos o maacutes operaciones con

nuacutemeros naturales

d) Ejes Introduccioacuten del kiloacutemetro como la unidad

que permite medir grandes distancias y recorridos

largos capacidad peso y tiempo uso del reloj y el

calendario los nuacutemeros sus relaciones y sus

operaciones medicioacuten la prediccioacuten y el azar

tratamiento de la informacioacuten

Objetivo general de aprendizaje Ejercitar las

operaciones aritmeacuteticas baacutesicas interpretar la

informacioacuten y los resultados de la informacioacuten dada

aplicada en situaciones de la vida cotidiana

Con las actividades hasta ahora realizadas se ha

observado que los artefactos de Aacutencora son flexibles y

pueden por lo tanto adaptarse de acuerdo a las

necesidades que implican la adquisicioacuten de

requerimientos de un software educativo Tambieacuten se

aprecian las ventajas de algunos artefactos como la

bitaacutecora de desarrollo que permite determinar las

respuestas del sistema ante las acciones del usuario y

estimar tambieacuten el tiempo que llevaraacute implementar

cada quinteta

La estimacioacuten del tiempo ayuda a tener un valor

aproximado del tiempo de desarrollo de software

Agregar el objetivo de aprendizaje a la bitaacutecora de

desarrollo puede parecer repetitivo despueacutes de

incluirlo en el Storyboard pero esto nos permite ver las

situaciones u obstaacuteculos que pueden impedir que el

objetivo de aprendizaje se alcance y por tanto tenerlos

presente durante el disentildeo A pesar de las ventajas de

la bitaacutecora de desarrollo un inconveniente hasta ahora

encontrado es lo tedioso al manejar muchas quintetas

] INGENIERIacuteA DE SOFTWARE

31

INGENIERIacuteA DE SISTEMAS

cuando por la naturaleza del guion se tienen varios

avisos y mensajes para el usuario Por otra parte los

guiones han ayudado a realizar de manera sencilla el

modelo de casos de uso

En lo referente a la presentacioacuten con los clientes el

guion es un artefacto que pude dar un panorama

general del software que se va a elaborar y queda

reforzada a traveacutes de los Storyboard Cuando se

requieren cambios solicitados por los clientes las

modificaciones a estos artefactos no han sido muy

complicadas dado que por su estructura es faacutecil de

ubicar las secciones y respectivos elementos

XIX CONCLUSIONES

Con los resultados hasta ahora obtenidos se puede

decir que la propuesta permite a los desarrolladores

con poca experiencia en desarrollo de software

educativo obtener los requerimientos de una manera

sencilla

Permite realizar un mejor relevamiento de informacioacuten

de los requerimientos del cliente enfocaacutendonos mas en

este

Es tambieacuten importante mencionar los avances que

tiene y seguiraacute teniendo el software educativo aplicado

no solo a nivel escolar sino tambieacuten al superior

Habiendo revisado el concepto y la aplicacioacuten de la

metodologiacutea Aacutencora en el desarrollo de software

educativo se llegoacute a una comprensioacuten mas extensa de

dicho meacutetodo el cual es de gran importancia dentro de

la ingenieriacutea de Software ya que nos

REFERENCIAS

httpwwwuvmxmisproductividaddocumentsCarmenChay_CIIM2010pdf

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 4: Revista de Ingenieria de Software

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

4

Tom DeMarco

Ingenieriacutea de Software

y Control de Proyectos Joe Luis Aramayo Blanco

Ingenieriacutea de Sistemas Universidad San Francisco de Asiacutes

20 de Octubre Esq Belisario Salinas

La Paz - Bolivia jlaramayousfaeduboResumen- En este artiacuteculo

haremos algunas observaciones sobre un artiacuteculo

que escribioacute hace un tiempo atraacutes Tom DeMarco

sobre meacutetricas control de proyectos e

ingenieriacutea de software donde en general podemos

encontrar frases que claramente contradicen su

postura de hace unas deacutecadas

Palabras clave- Ingenieriacutea de Software Control de Proyectos

Meacutetricas No puedes controlar lo que no puedes medir Desarrollo

de Software

I INTRODUCCIOacuteN

Todos comprendemos que las meacutetricas de software cuestan

dinero y tiempo y que deben ser usadas con moderacioacuten

El desarrollo de software es inherentemente diferente de las

ciencias naturales tales como la fiacutesica por lo que sus meacutetricas

son mucho menos precisas para capturar lo que deben describir

La frase ―No puedes controlar lo que no puedes medir lleva

impliacutecita que el control es un aspecto importante quizaacutes el maacutes

importante de cualquier proyecto de software Pero no lo es

Fig 1 Ejemplo de ―No puedes controlar lo que no puedes medir

Muchos proyectos se han realizado sin demasiado control pero

han generado productos maravillosos tales como Google Earth o

la Wikipedia

Esto nos lleva a la desagradable conclusioacuten que el control

estricto es algo que importa mucho en proyectos relativamente

inuacutetiles y mucho menos en proyectos uacutetiles

iquestEstoy diciendo que estaacute bien ejecutar proyecto sin control o

con un control relativamente menor Casi Estoy sugiriendo que

deberiacuteamos seleccionar primero a los proyectos cuyo control

preciso no importe demasiado

En los uacuteltimos 40 antildeos nos hemos torturado por nuestra

ineptitud en acabar proyectos a tiempo y con el presupuesto

previsto Pero como sugeriacute antes no deberiacutea haber sido el

objetivo supremo

El objetivo maacutes importante es la transformacioacuten crear software

que cambie el mundo o que transforme una empresa o la forma

en que hace negocios

El desarrollo de software es y seraacute siempre algo experimental

La construccioacuten real de software no es necesariamente

experimental pero siacute lo es su concepcioacuten Alliacute deberiacuteamos

enfocar nuestros esfuerzos Alliacute es donde deberiacuteamos haberlo

hecho siempre Estaacute claro que es mucho maacutes faacutecil criticar un

artiacuteculo que hacer uno nuevo pero dada la trascendencia que estaacute

teniendo este escrito en particular voy a expresar mi opinioacuten

Creo que DeMarco sabe venderse Creo que cuando era maacutes

joven se supo posicionar como guruacute de la Ingenieriacutea de Software

y el control de proyectos y creo que ahora estaacute en la edad en que

puede decir que parte de lo que dijo estaacute mal e igual quedar bien

porque su posicioacuten coincide con la de muchos guruacutees actuales

Sin embargo me parece que el artiacuteculo estaacute lleno de frases

impactantes pero que no salen de un anaacutelisis profundo Me voy

a explayar

] INGENIERIacuteA DE SOFTWARE

5

INGENIERIacuteA DE SISTEMAS

Fig 3 Referencia a las Meacutetricas cuestan dinero

Que las meacutetricas cuestan dinero en cierto sentido es cierto

Tambieacuten es cierto que ahora es mucho maacutes faacutecil llevar algunas

meacutetricas que hace unos antildeos dado que ahora utilizamos

herramientas que las generan de manera automaacutetica Podriacuteamos

decir que en el presente es mucho menos costoso tener la misma

informacioacuten que hace unas deacutecadas DeMarco consideraba

importante

Que el desarrollo de software es inherentemente diferente de las

ciencias naturales como la fiacutesica tambieacuten es verdad Lo que no

se termina de entender es por queacute nos comparamos con las

Fiacutesicas y no con las Ingenieriacuteas

El disentildeo de una planta de gas en situaciones extremas tambieacuten

es uacutenico y con resultados impredecibles la construccioacuten de una

torre en Dubai alguacuten nuevo prototipo de avioacuten un nuevo

celular etc tambieacuten son inherentemente diferentes de las

ciencias naturales y sin embargo cuentan con presupuestos

meacutetricas de avance de defectos etc O sea es una verdad pero

que no aplica a la conclusioacuten a la que llega

Donde puedo estar maacutes de acuerdo es cuando hablamos del

control de proyectos de software aunque maacutes adelante voy a

definir mi posicioacuten En este caso en mi opinioacuten tambieacuten escribe

algo cierto ―El control no es lo maacutes importante de un proyecto

de software pero cuando toma ejemplos elije dos proyectos en

los que las desviaciones admitidas eran del orden de entre 100

y 1000 ya que o el objetivo era otro o los resultados

esperados eran mucho mayores a una desviacioacuten de 500 en

costos

Fig 1 Referencia de Google Earth

Ambos proyectos (Wikipedia que surge de NuPedia) y

GoogleEarth fueron proyectos en los que hubo inversores

poniendo su dinero durante antildeos sin ver resultados Se puede

buscar en Internet acerca de la historia de NuPedia antecesora

de Wikipedia y a Jimi Wales explicando que despueacutes de haber

gastado 250000 doacutelares solo habiacutea logrado 16 artiacuteculos en su

nueva Enciclopedia Lo mismo pasoacute con GoogleEarth

anteriormente en manos de KeyHole con inversores como Sony

y otros Fondos de Capital En este tipo de proyectos se pueden

asumir peacuterdidas durante antildeos hasta lograr un producto que

puede romper con el mercado o tambieacuten se puede perder todo lo

invertido Se trata de proyectos de inversioacuten de alto riesgo y

determinan proyectos de desarrollo que claramente son poco

comunes

Fig 3 Referencia de WIKIPEDIA

Al menos en mi entorno la mayoriacutea de los proyectos son

internos o externos (para un cliente) Los proyectos externos

tienen presupuestos o se crean luego de llamados a licitacioacuten

Es decir costo fijo tiempo fijo alcance fijo maacutes menos alguna

que otra variacioacuten Es claro que si no contamos con un miacutenimo

de control en estos proyectos la empresa no sabe si estaacute siendo

rentable o no Tampoco sabe si el producto que es desarrollado

le puede traer problemas a futuro por alguna cuestioacuten de calidad

No poner un miacutenimo eacutenfasis en el control de estos proyectos

puede llevar a la empresa a la quiebra sin que esta sea

consciente salvo por los nuacutemeros rojos que aparecen en sus

balances Por lo tanto explicar que un proyecto de software no

hace falta controlarlo mucho y poner como ejemplo dos casos

muy poco relevantes no parece muy serio

Por uacuteltimo cuando dice el desarrollo de software es y siempre

seraacute algo experimental vuelve a caer en las afirmaciones de las

que en 40 antildeos (en caso de estar vivo claro) podriacutea volver a

arrepentirse Es cierto que todaviacutea estamos en una etapa inicial

de la que llamamos ingenieriacutea de software Es cierto que no es

faacutecil gestionar proyectos de software por sus caracteriacutesticas

intriacutensecas (intangibilidad maleabilidad etc) pero cada

ingenieriacutea tiene sus problemas particulares y cada una supo

evolucionar a lo que son ahora Seguramente la ingenieriacutea de

Software con el tiempo encontraraacute su camino

Ahora bien aparte de criticar un poco a DeMarco (que era lo

maacutes faacutecil) vamos a retomar la frase

―No puedes controlar lo que no puedes medir lleva impliacutecita

que el control es un aspecto importante quizaacutes el maacutes

importante de cualquier proyecto de software Pero no lo es

En cierta medida explicaba arriba estoy de acuerdo con esta

afirmacioacuten Un buen proyecto de software con mucho control

pero malos programadores lleva al fracaso inevitablemente (lo

he vivido personalmente y por experiencias de terceros) Por el

contrario un buen equipo de programadores (pero de los

buenos) puede terminar el proyecto maacutes complejo haciendo que

ninguacuten indicador tenga sentido ya que la diferencia de calidad

del producto y la eficiencia del trabajo de este tipo de gente

multiplica por 10 o por 100 la de un equipo estaacutendar

Este tipo de gente piensa las cosas de manera diferente tiene la

calidad incorporada como meacutetodo de trabajo y la capacidad de

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

6

generar soluciones a las distintas situaciones hace que el

esfuerzo estimado pueda acortarse en oacuterdenes de magnitud

Estuve dentro equipos de este estilo y lo que se puede lograr en

un ambiente hiperproductivo difiacutecilmente se logre en una

empresa de desarrollo comuacuten y corriente El problema es que la

gente que tiene estas cualidades escasea y el mercado estaacute lleno

de trabajadores ―estaacutendar que requieren definiciones procesos

un aacuterea de calidad que verifique sus entregables y un PM que le

indique queacute es lo que tiene que hacer De a poco estimo yo la

industria iraacute decantando por rendimiento aquellos profesionales

que hacen la diferencia y los estaacutendares de productividad

calidad base teoacuterica requerida para un puesto iraacuten aumentando

Fue pasando durante estas deacutecadas y seguiraacute pasando en el

futuro

II CONCLUSIONES

En siacutentesis y para terminar con este artiacuteculo medir y controlar

importa importa maacutes en las empresas con gente estaacutendar

importa maacutes en las empresas con proyectos estaacutendar y siempre

que estemos dentro de una empresa algo vamos a tener que

medir pero el control no es condicioacuten necesaria ni menos

suficiente para lograr un proyecto exitoso No es algo

fundamental como tener un buen equipo de programadores

como tener gente que sepa interpretar lo que se pide y

transformarlo de manera natural en la solucioacuten que el cliente

necesita Por eso cuando veo gente que se preocupa por

aumentar el control o aumentar los procesos creo que estaacute

perdiendo el foco cuando lo que deberiacutea buscar es coacutemo hacer

para encontrar y hacer rendir a los verdaderos profesionales del

software

III REFERENCIAS

[1] Software Engenieering an idea whose time has come and gone por Tom

DeMarco [2] CyS Ingenieria de Software El blog del aacuterea de Ingenieriacutea de Software de

CyS Informaacutetica SA

] INGENIERIacuteA DE SOFTWARE

7

INGENIERIacuteA DE SISTEMAS

EXTREME PROGRAMMING PARA DESARROLLO

DE SOFTWARE

Erwin Adaacuten Choque Ulloa Ingenieriacutea de Sistemas

Universidad San Francisco de Asiacutes

Plaza Avaroa esq Belisario Salinas

La paz ndash Bolivia adan_ekinghotmailcom

Resumen

En este articulo se describiraacute algunas de las metodologiacuteas

agiles de desarrollo de software puesto que para asegurar el

eacutexito durante el desarrollo de un software es importante

saber la metodologiacutea de desarrollo la cual nos provee una

guiacutea para la correcta aplicacioacuten y desarrollo de Software

La metodologiacutea Extreme Programming XP que es una de las

metodologiacuteas aacutegiles maacutes extendidas y populares ademaacutes es

considerada como una metodologiacutea posmoderna donde

grandes capacidades se generan a traveacutes de procesos

emergentes

Palabras claves Extreme Programming metodologiacutea software

usuario

1 INTRODUCCION

El esquema tradicional para abordar el desarrollo de

software ha demostrado ser efectivo y necesario en

proyectos de gran tamantildeo respecto a tiempo y recursos

Sin embargo este enfoque no resulta ser el maacutes adecuado

para muchos de los proyectos actuales donde el entorno

del sistema es muy cambiante y en donde se exige

reducir draacutesticamente los tiempos de desarrollo pero

manteniendo una alta calidad Ante este problema las

metodologiacuteas aacutegiles son una posible respuesta para llenar

ese vaciacuteo metodoloacutegico Orientadas para proyectos

pequentildeos las metodologiacuteas aacutegiles constituyen una

solucioacuten

A continuacioacuten se describiraacute cada una de las

metodologiacuteas de desarrollo de software

2 EXTREME PROGRAMMING XP

La metodologiacutea de desarrollo de software XP es la

primera metodologiacutea aacutegil y la que le dio conciencia al

movimiento actual de metodologiacuteas aacutegiles Kent Beck el

padre de la metodologiacutea XP se basa en realimentacioacuten

continua entre el cliente y el equipo de desarrollo

comunicacioacuten fluida entre todos los participantes

simplicidad en las soluciones implementadas y facilidad

para enfrentar los cambios XP se define como

especialmente adecuada para proyectos con requisitos

imprecisos y muy cambiantes y donde existe un alto

riesgo teacutecnico Ahora se describiraacute las caracteriacutesticas

esenciales del Extreme Programming

21 LAS HISTORIAS DEL USUARIO

La red Las historias del usuario es la teacutecnica utilizada

para especificar los requisitos de software son tarjetas de

papel donde el cliente especifica de manera simplificada

las caracteriacutesticas que el sistema debe poseer ya sean

requisitos funcionales o requisitos no funcionales Se

caracteriza por ser dinaacutemica y flexible cada historia de

usuario debe ser comprensible y delimitada para que los

programadores puedan implementarla en pocas semanas

22 ROLES XP

Seguacuten Kent Beck los roles son

Programador El programador se encarga de escribir las

pruebas unitarias y tambieacuten estaacute encargado de producir el

coacutedigo del sistema

Cliente Encargado de escribir las historias de usuario y

los requisitos funcionales y selecciona las historias por

prioridad de conveniencia al negocio

Encargado de pruebas Encargado de ayudar al cliente a

escribir las pruebas funcionales ademaacutes de ejecutar las

pruebas constantemente encargado de de las

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

8

herramientas de soporte de pruebas como tambieacuten

difundir los resultados de dicha prueba

Encargado de seguimiento Es el encargado de la

realimentacioacuten al equipo y realiza el seguimiento del

proceso de cada iteracioacuten

Entrenador Es el encargado de prever guiacuteas al equipo

basadas en XP y de seguir el proceso correctamente

Consultor Es el que posee un conocimiento especifico

en alguacuten tema necesario para el proyecto para solucionar

problemas

Gestor Es la interaccioacuten entre clientes y programadores

ayudando a trabajar de forma adecuada y de esta manera

coordinar de forma correcta

23 PROCESO XP

El ciclo de desarrollo XP consiste en

El cliente define el valor del negocio a implementar

El programador estima el esfuerzo necesario para su

implementacioacuten

El cliente selecciona que construir de acuerdo con sus

propiedades y las restricciones del tiempo

El programador construye ese valor de negocio

Vuelve al principio

En todas las iteraciones de este ciclo tanto el cliente como

el programador aprenden No se debe presionar al

programador a realizar maacutes trabajo que el estimado ya

que se perderaacute calidad en el software o no se cumpliraacuten

los plazos

El ciclo de vida ideal de XP consiste de seis fases

Exploracioacuten

Planificacioacuten de la Entrega (Release)

Iteraciones

Produccioacuten

Mantenimiento y Muerte del Proyecto

24 PRACTICAS XP

Las siguientes praacutecticas ayudan al desarrollo de software

El juego de la planificacioacuten Hay una comunicacioacuten

frecuente el cliente y los programadores El equipo

teacutecnico realiza una estimacioacuten del esfuerzo requerido para

la implementacioacuten de las historias de usuario y los

clientes deciden sobre el aacutembito y el tiempo de entregas y

de cada iteracioacuten

Entregas pequentildeas Producir raacutepidamente versiones del

sistema que sean operativas aunque no cuenten con toda

la funcionalidad del sistema Esta versioacuten ya constituye

un resultado de valor para el negocio Una entrega no

deberiacutea tardar maacutes de tres meses

Metaacutefora El sistema es definido mediante un conjunto

de metaacuteforas compartidas por el cliente y el equipo de

desarrollo Una metaacutefora es una historia compartida que

describe como deberiacutea funcionar el sistema

Disentildeo simple Se disentildea la solucioacuten maacutes simple que

pueda funcionar y ser implementada en un determinado

momento del proyecto

Pruebas La produccioacuten de coacutedigo estaacute dirigida para las

pruebas unitarias Estas son establecidas por el cliente

antes de escribirse el coacutedigo y son ejecutadas

continuamente ante cada modificacioacuten del sistema

Pruebas Es una actividad constante de reestructuracioacuten

del coacutedigo con el objetivo de remover duplicacioacuten de

coacutedigo mejorar su legibilidad simplificarlo y hacerlo

maacutes flexible para facilitar los cambios Se mejora la

estructura interna del coacutedigo sin alterar su

comportamiento externo

Programacioacuten en parejas Toda la produccioacuten del

coacutedigo debe realizarse con trabajo en parejas de

programadores Para tener ventajas como menor tasa de

errores mejor disentildeo etc

Propiedad colectiva del coacutedigo Cualquier programador

puede cambiar cualquier parte del coacutedigo en cualquier

instante

Integracioacuten continua Cada pieza del coacutedigo es

integrada en el sistema una vez que este listaasi el

sistema puede ser integrado y construido varias veces en

un mismo diacutea

40 horas por semana Se debe trabajar un maacuteximo de 40

horas por semana no se trabajan horas extras en dos

semanas seguidas Si esto ocurre estaacute existe un problema

porque el trabajo extra desmotiva al equipo

Cliente in-situ El cliente tiene que estar presente y

disponible todo el tiempo para el equipo este es uno de

los principales factores de eacutexito para el proyecto XP Y

asiacute guiar y disipar cualquier duda de los programadores

donde la comunicacioacuten es maacutes efectiva que la escrita

Estaacutendares de programacioacuten XP enfatiza que la

comunicacioacuten de los programadores es a traveacutes del

coacutedigo por lo que es importante que se sigan estaacutendares

de programacioacuten para mantener el coacutedigo legible

3 CONCLUCIONES

] INGENIERIacuteA DE SOFTWARE

9

INGENIERIacuteA DE SISTEMAS

Las metodologiacuteas aacutegiles ofrecen una solucioacuten casi a

medida para una gran cantidad de proyectos

La metodologiacutea XP es una de las metodologiacuteas aacutegiles maacutes

extendidas y populares ademaacutes es considerada como una

metodologiacutea posmoderna cuyas grandes capacidades se

generan a traveacutes de procesos emergentes

4 REFERENCIAS

httpwwwmetodologiasSoftcomdesarrolloagil

httpwwwwikipediacommetodologiaXP

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

10

Desarrollo de Scrum

Sergio J Guzmaacuten L Ingenieriacutea de Sistemas

Universidad San Francisco de Asiacutes

20 Octubre Esq Belisario Salinas

La Paz - Bolivia

sjguzmanusfaedubo

Resumenmdash Scrum es una metodologiacutea aacutegil de desarrollo de

proyectos que toma su nombre y principios de los estudios

realizados sobre nuevas praacutecticas de produccioacuten por

Hirotaka Takeuchi e Ikujijo Nonaka a mediados de los 80

En 1996 se definioacute por primera vez un patroacuten para aplicar

esos principios de desarrollo en ldquocampos de scrumrdquo al

software

Palabras clave mdash scrum metodologiacutea patroacuten software

sprint rol

I Que es Scrum

Scrum es una metodologiacutea aacutegil de desarrollo de proyectos

que toma su nombre y principios de los estudios

realizados sobre nuevas praacutecticas de produccioacuten por

Hirotaka Takeuchi e Ikujijo Nonaka a mediados de los 80

En 1996 se definioacute por primera vez un patroacuten para aplicar

esos principios de desarrollo en ―campos de scrum al

software

Esta fue la primera definicioacuten de un patroacuten Scrum aplicado

al software disentildeada por Jeff Sutherland y Ken Schwaber y

presentada en Object-Oriented Programming Systems

Languages amp Applications OOPSLA en 1996

II iquestCoacutemo incorporarla

La competitividad del mercado de desarrollo de Software y

la necesidad de los clientes de reducir el tiempo de

mercado obligan a las organizaciones de desarrollo de

software a ser agresivas en sus calendarios de entrega Esto

ha hecho que hayan surgido metodologiacuteas para la gestioacuten y

desarrollo de software basadas en un proceso iterativo e

incremental Su estructura estaacute basada en corto tiempo los

cuales son iteraciones de 1 a 4 semanas Scrum se usa en

proyectos de entorno complejos donde se desea obtener

resultados raacutepidos y la productividad es lo maacutes importante

En los proyectos basados en Scrum se consideran tres

roles

Duentildeo del producto Es quien determina las propiedades de

los entregables

Maestro de Scrum Administra y facilita la ejecucioacuten del

proceso

Equipo de Trabajo Trabajan en conjunto para entregar

resultados en cada sprint

Fig 1 El flujo de Scrum

Como se puede observar en medio de los participantes del

proceso no quedan claras las responsabilidades del

arquitecto de software Sin embargo como comenta

Charlie Alfred ―la arquitectura es al aceite y el filtro que

lubrica adecuadamente a Scrum

Fig 2 El flujo de Scrum

] INGENIERIacuteA DE SOFTWARE

11

INGENIERIacuteA DE SISTEMAS

Si se compara el rol del arquitecto de edificaciones con el

del arquitecto de software se puede observar que ambos

modelan las construcciones a un alto nivel de abstraccioacuten

proveen posibles soluciones mejoran la comunicacioacuten con

los miembros del equipo de construccioacuten a traveacutes de

modelos visualizan las generalidades del problema

definen los roles y las interacciones entre los componentes

de construccioacuten entre otras tareas Al igual que es

imposible pensar que un rascacielos puede ser construido

sin una arquitectura soacutelida es imposible pensar que

productos de software empresariales puedan ser

implementados sin una arquitectura bien pensada

Seguacuten Bass Clements y Kasman ―La arquitectura de

software de un programa o sistema informaacutetico es la

estructura o estructuras del sistema que incluyen elementos

de software las propiedades externamente visibles de esos

elementos y las relaciones entre ellos Esta definicioacuten nos

lleva a concluir que la arquitectura de software garantiza el

buen desarrollo del software y a tener un sistema que

cumpla con los requerimientos funcionales y no

funcionales del cliente Ademaacutes la arquitectura es clave en

la reutilizacioacuten de artefactos de software en sistemas de

liacutenea de productos de software

Viendo la importancia de la arquitectura en el desarrollo

del software en eacuteste artiacuteculo se presenta una propuesta para

gestionar la arquitectura de Software en Scrum En el

primer capiacutetulo se trata el tema de la localizacioacuten de la

arquitectura de software en el ciclo de desarrollo de Scrum

en el segundo capiacutetulo se describen las tareas del arquitecto

de software en Scrum finalmente se presentan las

conclusiones y el trabajo futuro

III Arquitectura de Software en el ciclo de desarrollo de

Scrum

La idea fundamental de la presente propuesta es adicionar

un sprint inicial llamado ―Sprint 0Prime al inicio del ciclo de

desarrollo El objetivo principal del arquitecto en el Sprint

0 es analizar y disentildear la generalidad del sistema que

satisfaga los requisitos y sea entendible por los miembros

del equipo desde sus diferentes puntos de vista durante el

desarrollo Un punto clave es reutilizar artefactos de

software creados a partir de la arquitectura para ser maacutes

aacutegiles en el desarrollo de productos especiacuteficos

El Sprint 0 comprende tres fases que fueron tomadas del

ciclo de vida de entregas evolutivas En el Sprint 0 se

construye la arquitectura de forma iterativa mediante un

anaacutelisis preliminar de los conductores arquitectoacutenicos

(requisitos funcionales de calidad y del negocio) y de un

estudio de factibilidad del proyecto No se necesita tener

todos los requisitos claros para comenzar la fase de disentildeo

arquitectoacutenico

Para determinar los conductores arquitectoacutenicos se debe

identificar los objetivos del negocio de maacutes alta prioridad

que son pocos Estos objetivos del negocio se convierten en

los escenarios de calidad o casos de uso De esta lista se

deben escoger los que tendraacuten un mayor impacto sobre la

arquitectura El disentildeo arquitectoacutenico puede comenzar una

vez que se encuentran definidos los conductores

arquitectoacutenicos El proceso de anaacutelisis de requisitos seraacute

entonces influenciado por las preguntas generadas durante

el disentildeo arquitectoacutenico

El resultado del Srpint 0 es un documento inicial que

explica la arquitectura El documento puede basarse en los

pasos definidos por el meacutetodo ADD (Attrbute Driver

Design) Este meacutetodo ha sido probado exitosamente en

proyectos anteriores Con ADD se puede definir una

arquitectura de software mediante un proceso de

descomposicioacuten basado en los atributos de calidad de

Software

El documento inicial de la arquitectura se debe avaluar con

el fin de saber si la arquitectura cumple con los requisitos

de calidad Para realizar esta evaluacioacuten se propone el

meacutetodo ATAM (Architecture Tradeoff Analysis Method)

El ATAM revela cuaacuten bien una arquitectura satisface los

objetivos particulares de calidad y provee una

aproximacioacuten de coacutemo los objetivos de calidad interactuacutean

Si la evaluacioacuten de la arquitectura se encuentra que se

deben realizar cambios a la misma entonces eacutesta se debe

refinar hasta llegar a tener como resultado del Sprint 0 el

documento puacuteblico de la arquitectura junto con el sistema

esqueleto Finalmente la arquitectura creada en el Sprint 0

beneficiaraacute el desarrollo en los siguientes sprints

IV Rol del arquitecto de Software en Scrum

El rol y actividades del arquitecto de software cambian de

enfoque dependiendo de si se estaacute en el Sprint 0 o en

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

12

sprints subsecuentes

Fig 3 La Comunicacioacuten

Sprint 0 En sistemas complejos una persona difiacutecilmente

puede cubrir con amplitud teacutecnica las decisiones

arquitectoacutenicas y dar credibilidad a la arquitectura de

software Esto quiere decir que la participacioacuten del equipo

es de vital importancia para la creacioacuten y el mantenimiento

de la arquitectura Un equipo de arquitectos de software

que se aiacutesle del equipo de Scrum puede producir una

arquitectura que corra el riesgo de ser rechazada Es por

esto que recomendamos que el arquitecto o los arquitectos

se software sean miembros del equipo de Scrum Una de

las actividades que se debe realizar en equipo es la

evaluacioacuten de la arquitectura Especiacuteficamente en el

meacutetodo ATAM se requiere la participacioacuten mutua de tres

equipos que trabajan en conjunto con los arquitectos de

software el de evaluacioacuten el de tomadores de decisiones

del proyecto y el de los involucrados en la arquitectura

Sprints subsecuentes El arquitecto de software asegura que

el equipo de Scrum entienda el enfoque y los retos

arquitectoacutenicos maacutes importantes en casa sprint Los

equipos de Scrum realizan construcciones cortas guiados

por las estrategias de la arquitectura A continuacioacuten se

nombran algunas de las responsabilidades del arquitecto de

software desde el Sprint 1 en adelante

El duentildeo del producto y el maestro del Scrum trabajan con

el arquitecto para priorizar los requisitos a implementar en

cada iteracioacuten

El arquitecto comunica las decisiones y facilita las

conversaciones arquitectoacutenicas de distintos puntos de vista

en cada sprint

El arquitecto asegura que haya conformidad entre las

entregas en cada sprint y la arquitectura

El arquitecto responde preguntas y da orientacioacuten

arquitectoacutenica cuando sea necesario

Junto con el maestro de Scrum coordina a los miembros

del equipo para adaptarse a la arquitectura previa

El arquitecto junto con el duentildeo del producto y los

miembros del equipo preparan el Product Backlog

V Conclusioacuten

En el presente artiacuteculo ofrecimos una propuesta para incluir

la arquitectura de software en Scrum En el Sprint 0 se

realizan las actividades concernientes al anaacutelisis y disentildeo

de la arquitectura de software y el sistema esqueleto En

los siguientes sprints el arquitecto de software se asegura

de que la implementacioacuten cumpla con la arquitectura

REFERENCIAS

[3] httpwwwsafecreativeorgwork

[4] Hirotaka Takeuchi es decano de la Graduate School of International

Corporate Strategy en la Universidad Hitotsubashi en Tokio y fue profesor visitante en la Escuela de Negocios Harvard entre 1989 y 1990

[5] Ikujiro NonakaNo soy un guruacute porque me falta carisma

] INGENIERIacuteA DE SOFTWARE

13

INGENIERIacuteA DE SISTEMAS

El futuro de la ingenieriacutea de software Luis E Aguirre

Ingenieriacutea de Sistemas

Universidad San Francisco de Asiacutes

20 de Octubre esq Belisario Salinas

La Paz - Bolivia leaguirreusfaedubo

Resumen El disentildeo de programas a partir de informacioacuten binaria

significoacute un paso sustantivo para la industria desarrolladora de

software Desde ese hallazgo ocurrido en la deacutecada de los

cincuenta hasta hoy el crecimiento de metodologiacuteas para su

desarrollo ha subido notablemente en complejidad Sin embargo

los ciacuterculos viciosos que acusa hoy la confeccioacuten de programas

informaacuteticos impiden conceptualizar el objeto a un nivel

superior de abstraccioacuten tal y como lo exige el avance tecnoloacutegico

y los procesos de negocios

Palabras clave mdash futuro software ingenieriacutea programador y

desarrollo

I Introduccioacuten

La calidad de los sistemas informaacuteticos satisfaccioacuten de sus

usuarios y clientes son temas ampliamente conocidos

recurrentes y de constante preocupacioacuten por parte de los

practicantes de la Ingenieriacutea de software

Esta joven y dinaacutemica ingenieriacutea siempre estaacute en busca de

mejoras en el desarrollo de sistemas aumento de

productividad del ingeniero de software mayor control del

proceso de desarrollo establecimiento de nuevos meacutetodos de

desarrollo

Fig 1 Primeros programas computacionales en formato de tarjeta perforada

Estos elementos combinados y aplicados de buena forma

logran un buen proceso de desarrollo y en definitiva un buen

producto

Identificar los pasos que ha recorrido esta ingenieriacutea analizar

su contexto actual y finalmente proyectar hacia doacutende se

dirige es el pilar de este artiacuteculo

II iquestSe aplica actualmente la ingenieriacutea del software

La investigacioacuten y el desarrollo de teacutecnicas y meacuteto

dos de ingenieriacutea del software son constantes y suelen suponer

interesantes avances en la resolucioacuten de problemas de

desarrollo de software Sin embargo es habitual que en la

praacutectica diaria profesional no se incluya praacutecticamente

ninguna de las recomendaciones maacutes elementales de la

ingenieriacutea del software En efecto es habitual que el

desarrollo de software se parezca maacutes al descontrol del cuento

de laquosi los programadores fueran albantildeilesraquo ([Novatica

1996]) que a una idiacutelica y bien organizada factoriacutea de

software (concepto de gran vigencia a finales de los ochenta

[Nunamaker et al 1988])

De hecho las evaluaciones de los procesos productivos de

software realizadas a raiacutez de los modelo de procesos de

software (por ejemplo con CMM [Paulk et al 1993])

confirman que el desarrollo de software suele estar

baacutesicamente en estado caoacutetico

Y no soacutelo en como uno podriacutea pensar pequentildeas

organizaciones de un paiacutes mediterraacuteneo como el nuestro sino

en tambieacuten en las empresas adjudicatarias de interesantes

contratos de defensa de paiacuteses laquoavanzadosraquo como EEUU o

Japoacuten Si bien estos modelos de evaluacioacuten auacuten acumulan

distintas acusaciones de rigidez o falta de contraste empiacuterico

los resultados obtenidos en sus evaluaciones resultan

consistentes con la sensacioacuten de constante laquoapagafuegosraquo que

suelen sufrir los profesionales del software Tambieacuten suelen

revelar la praacutectica despreocupacioacuten de los responsables de las

organizaciones de software por la mejora de la calidad de sus

procesos de trabajo o de sus productos bien sea por contar con

una situacioacuten interna de empresa poco propicia porque el

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

14

ambiente del mercado no fomenta la preocupacioacuten por estos

temas o bien por su poco intereacutes real en la buacutesqueda de la

calidad

III La actualidad

La gran mayoriacutea de los sistemas de software creados hoy en

diacutea son los llamados sistemas corporativos es decir son

orientados a formar una parte importante de los negocios de

las grandes empresas

Continuando en nuestro contexto se identifica un nuevo

enfoque del problema de desarrollo el apoyo en la

sincronizacioacuten de los procesos de negocio estructuras

complejas de informacioacuten manejada por el negocio todo esto

entrelazado por restricciones dadas por las reglas del negocio

La tecnologiacutea actual por otro lado ha alejado maacutes todaviacutea los

ingenieros de las maacutequinas sistemas operativos incluso de

las tareas de programacioacuten

El enfoque de la mayoriacutea de los equipos de desarrollo e

ingenieros participes en proyectos sigue siendo con un bajo

nivel de abstraccioacuten cerca de la codificacioacuten Se tiende a

pensar en la base de datos a utilizar establecer la navegacioacuten

de las paacuteginas programar los protocolos de comunicacioacuten etc

Esto lleva a utilizar las tareas de programacioacuten y de pruebas

para validar el entendimiento y cumplimiento de la

funcionalidad de los sistemas

Lo anteriormente expuesto muestra un problema

metodoloacutegico consecuencia de un desfase entre el enfoque

teoacuterico oacuteptimo (anaacutelisis de negocio) y el enfoque praacutectico real

(programacioacuten y pruebas) en los proyectos de hoy En otras

palabras la metodologiacutea actualmente usada estaacute atrasada con

respecto al avance tecnoloacutegico

Desarrollando maacutes esta idea se identifican algunos

problemas concretos de las metodologiacuteas

Ellas no obligan a sus ejecutores a respetar todas las

normas y los procedimientos establecidos especialmente

en las etapas tempranas del proyecto Es muy faacutecil y

tentador ―saltar una o maacutes de estas etapas uno o maacutes

documentos o modelos pasando directamente a

implementacioacuten produccioacuten y posterior correccioacuten de los

sistemas desarrollados

Control de calidad del producto final La codificacioacuten y

complejidad del programa es demasiada para ser revisada

y verificada fehacientemente Por otro lado los coacutedigos

fuentes y los ejecutables actualmente son los uacutenicos

entregables eficientemente verificables

Estos dos problemas al parecer forman una situacioacuten

contradictoria la metodologiacutea tradicional no permite validar

eficientemente la calidad de los sistemas antes de llegar al

coacutedigo fuente y por otro lado tampoco permite llegar

eficientemente a coacutedigos fuentes de calidad

IV Futuro

La salida de este ―ciacuterculo vicioso que se propone es

bastante natural analizar la situacioacuten actual de la ingenieriacutea

de software en la luz de sus tendencias histoacutericas

La primera de ellas relacionada con los problemas que

resuelven los sistemas obviamente presente y muy utilizada

en nuestra realidad los sistemas de hoy no soacutelo resuelven los

problemas del mundo real sino que estaacuten fuertemente influen-

ciando el desarrollo del mundo real

Fig2 Modela

El enfoque de los ingenieros desde hace unos antildeos no se ha

movido significativamente por el camino del aumento de

abstraccioacuten establecido histoacutericamente Se han hecho ciertos

avances en temas puntuales (como arquitecturas de

componentes patrones de disentildeo nuevos lenguajes de

programacioacuten etc) pero conceptualmente

metodoloacutegicamente la tarea de programacioacuten sigue siendo

ejecutada de la misma forma escribiendo coacutedigos fuentes en

forma de los programas textuales

Eacuteste es justamente el ―atraso metodoloacutegico que se

mencionoacute Para disminuir la brecha entre las tendencias

histoacutericas es necesario ajustar la metodologiacutea en teacuterminos de

aumentar la abstraccioacuten del enfoque de los ingenieros de

software y acercarlo a la abstraccioacuten del problema

El aumento de la abstraccioacuten del proceso de desarrollo del

software hace pensar que la proacutexima generacioacuten de meacutetodos

de desarrollo se perfila en un conceptualmente nuevo con-

] INGENIERIacuteA DE SOFTWARE

15

INGENIERIacuteA DE SISTEMAS

junto de herramientas que permitan aumentar en un mayor

grado al actual la abstraccioacuten escondiendo los detalles de maacutes

bajo nivel

Fig3 Probable modelo a futuro

Las nuevas herramientas permitiraacuten ―programar en nivel

de anaacutelisis generando coacutedigos en un lenguaje de

programacioacuten tradicional de forma automaacutetica tal como hoy

los compiladores generan el lenguaje maacutequina a partir del

coacutedigo fuente Nuevos ―lenguajes de programacioacuten

naturalmente seriacutean visuales y se pareceriacutean a las

especificaciones de software en uno de los lenguajes de

modelamiento por ejemplo UML

V Conclusioacuten

Es muy probable que estemos proacuteximos a ver un nuevo

paso evolutivo en la ingenieriacutea de software Tan grande como

el invento de lenguajes de alto nivel o anaacutelisis y disentildeo

orientado a objetos Una nueva generacioacuten que absorberaacute a la

actual automatizando la mayoriacutea de las buenas praacutecticas

usadas actualmente

Una pregunta natural es si una maacutequina puede llegar a

generar programas tan buenos como los hechos por un pro-

gramador experto En vez de ―romper la cabeza con esta

pregunta ahora quizaacutes seriacutea suficiente recordarse otra vez de

la historia Los primeros compiladores de ninguna generacioacuten

alcanzaban de inmediato lo deseable y oacuteptimo Sin embargo

con el paso del tiempo apoyados en la experiencia de los

ingenieros y en el avance tecnoloacutegico se mejoraban hasta el

nivel de superar significativamente las generaciones

anteriores

Es poco factible que hoy en diacutea alguien cuestione la calidad

de los compiladores de por ejemplo Java y la calidad del

coacutedigo de maacutequina generado por ellos

VI Referencias [6] Website [Online]

httpwwwenterpriseanalystnetdownloadmda_informaticap

df

[7] httpwwwslidesharenetamrrochafuturo-del-software-impacto-en-las-organizaciones-y-en-los-profesionales

[8] httpwwwdcubaareventseci2008conferenciasIngSoftHexacta

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

16

Ingenieriacutea de Software para

Desarrolladores de juegos Huascar Huanca Orozco

Ingenieria de Sistemas San francisco de Asis

Av20 de Octubre esq Belisario Salinas

hhuncausfaedubo

ResumenmdashEn este artiacuteculo veremos una lo que es ldquoIS para

Desarrolladores de juegosrdquo si crees que un juego es facil pues

te equivocas en este articulo mostramos el uso de la IS en la

cracion de juegos que metodos utilizan y la complejidad que

representa para el equipo de desarrollo

1) Palabras clave mdash UMLRequisitosjuegoequipo de trabajo motor del juego

IV INTRODUCCIOacuteN

En la ingenieriacutea de software (IS) el desarrollo

de videojuegos es uacutenico pero similares a los

esfuerzos de software Es la uacutenica que combina el

trabajo de los equipos que cubren muacuteltiples

disciplinas (arte muacutesica actuacioacuten

programacioacuten etc) y que el juego de

acoplamiento que se busca a traveacutes del uso de

prototipos e iteraciones Con ello el desarrollo

del juego se enfrenta a desafiacuteos que pueden ser

abordadas mediante las praacutecticas tradicionales de

SE La industria tiene que adoptar buenas

praacutecticas de SE para sus distintas necesidades

tales como la gestioacuten de activos multimedia y

encontrar el fundamento en el juego La industria

debe asumir los retos por la evolucioacuten de los

meacutetodos de SE para satisfacer sus necesidades

Este trabajo investiga estos desafiacuteos y praacutecticas

de ingenieriacutea destaca para mitigar estos

problemas

V ENTRA EN EL JUEGO

Lo que la IS para desarrolladores de juegos hace

es

Mezcla de ingenieriacutea y el arte El software como

una praacutectica como una preocupacioacuten profesional

Meacutetodos para aprender a disentildear y fabricar un

producto El desarrollo del personaje e ingenieriacutea

de software Estrategias para hacer el mejor uso

de la ingenieriacutea del conocimiento formalizado El

aprendizaje de las habilidades que se pueden

aplicar en cualquier lugar

VI REQUISITOS

Esta parte ofrece una visioacuten general de los

conceptos y herramientas necesarias para la

obtencioacuten de requisitos

IDENTIFICAR LO QUE SE CONSIDERA UN REQUISITO DE SOFTWARE

ESTABLECER LOS CRITERIOS PARA DAR SENTIDO A LOS REQUISITOS Y LA

ESCRITURA DETERMINAR LA MANERA DE REUNIR LOS REQUISITOS O DESCUBRIR

EXPLORAR COacuteMO EMPLEAR CASOS DE USO PARA PERFECCIONAR Y

ANALIZAR LAS NECESIDADES ENCONTRAR TEacuteCNICAS PARA CONFIRMAR QUE LOS REQUISITOS ESTEacuteN

COMPLETOS

VERIFICAR LA EXACTITUD DE LOS REQUISITOS TRACE CAMBIOS EN LOS REQUISITOS

VII PROGRAMADOR DEL MOTOR DEL JUEGO

Fig 1 Juego RPG

] INGENIERIacuteA DE SOFTWARE

17

INGENIERIacuteA DE SISTEMAS

Los programadores de juegos motores crear el

motor de base del juego incluyendo la fiacutesica de

simulacioacuten y disciplinas graacuteficas

A Fiacutesica del motor del programador

Programador de un juego de la fiacutesica se dedica

al desarrollo de las fiacutesica de un juego se emplean

Por lo general un juego de soacutelo simular algunos

aspectos de la fiacutesica del mundo real Por ejemplo

un juego de espacio puede necesitar simulada

gravedad pero no tendriacutea ninguna necesidad

para simular agua viscosidad

Para un juego de rol como World of Warcraft

soacutelo un programador de la fiacutesica puede ser

necesaria Para un juego de combate complejo

como Battlefield 1942 los equipos de

programadores de la fiacutesica pueden ser necesarias

B motor de graacuteficos del programador

A pesar de todos los programadores antildeadir

tanto los contenidos y la experiencia que ofrece

un juego un programador de juego se centra maacutes

en la estrategia de un juego la aplicacioacuten de la

mecaacutenica del juego y la loacutegica y la sensacioacuten

de un juego

Esto no suele ser una disciplina independiente

como lo que este programador es por lo general

se diferencia de un juego a otro y que

inevitablemente se veraacute involucrado con las aacutereas

maacutes especializadas de desarrollo del juego como

los graacuteficos o el sonido

VIII EQUIPO DE TRABAJO

Fig 2 Grupo de trabajo

Un equipo de desarrollo en una organizacioacuten de

ingenieriacutea de software se compone de un grupo

de personas que trabajan en funciones

especializadas para lograr un objetivo comuacuten El

objetivo es la realizacioacuten de un proyecto Un

proyecto se define como un esfuerzo temporal

emprendido para crear un producto uacutenico

servicio o resultado

Aquiacute una pequentildea lista incompleta de algunos de

los componentes de un equipo de trabajo para

Desarrollo de juegos

Analista de requerimientos recopilar y analizar

los requisitos para el software

Arquitecto de software determinar la mejor

arquitectura para el software Seleccionar

Los componentes del proveedor para su inclusioacuten

en el esfuerzo de desarrollo

Disentildeador de software acotar el software para

lograr un rendimiento y otros

Objetivos

Prueba de software probador del software para

garantizar que funcione de acuerdo a la

Requisitos

Programador senior desarrollar bajo nivel de

documentacioacuten de disentildeo sirven como una

tecno-

Ventaja teacutecnica para los demaacutes e implementar el

software de acuerdo

Para el disentildeo

Programador implementar el software de acuerdo

al disentildeo

Trabajos de mantenimiento en el programador de

software creado durante el desarrollo anterior

Los esfuerzos para agregar funcionalidad o

eliminar errores de trabajo con

Atencioacuten al cliente

IX LENGUAJE UNIFICADO DE MODELADO (UML)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

18

Tomando en cuenta que el UML es un estaacutendar

muy flexible Nos da razoacuten que podemos pensar

en el diagrama

como herramientas que permiten realizar

diferentes tipos de trabajo Para revisar un poco

Use un diagrama de casos de uso para reunir y estudiar los requisitos para los propoacutesitos de disentildeo o pruebas

Use un diagrama de actividades para explorar los escenarios de casos de uso

Use un diagrama de clases para identificar las clases y ver coacutemo las

clases se relacionan entre siacute Use un diagrama de objetos para ver coacutemo un objeto se comunica con

otro

Use un diagrama de estado para explorar los atributos de cambio de objeto

Use un diagrama de secuencia para explorar a fondo un caso de uso

mediante el trazado de la orden en el que los objetos enviar mensajes a siacute mismos o entre siacute

Use un diagrama de colaboracioacuten para ver la loacutegica del sistema y la

forma en que los objetos envian mensajes entre siacute Use un diagrama de componentes para explorar y si existen los

subsistemas dentro de su juego

Use un diagrama de implementacioacuten para encontrar la manera de

configurar el paquete de instalacioacuten para su juego

X CONCLUSIONES

El desarrollo de los juegos se han vueltos mas

complejos con el pasar del tiempo y para el

desarrollo de un juego que este a la vanguardia

de la competencia se debe trabajar con la IS es

una forma eficaz de conseguir un juego de

calidad internacional

Referencias [9] Software Engineering for Game Developers by john P Flynt with Omar

Salem [10] httpieeexploreieeeorgxplloginjsptp=amparnumber=5070627ampurl=http

3A2F2Fieeexploreieeeorg2Fiel52F50705742F50705752F05

070627pdf3Farnumber

[11] httpgamedevstackexchangecomquestions19934abstract-game-engine-design

] INGENIERIacuteA DE SOFTWARE

19

INGENIERIacuteA DE SISTEMAS

Estrategias de Prueba del Software Miguel Angel Callisaya Quispe Universidad San Francisco de Asiacutes Av 20 de Octubre La Paz Bolivia

maccc19hotmailcom

Resumen Una estrategia de software es un mecanismo que

proporciona una guiacutea o base pasa ver la forma como se debe

desarrollar la aplicacioacuten en cuanto a meacutetodos esfuerzo

tiempo y recursos que son necesarios para lograr un producto

exitoso

La frecuencia con las que realicen las pruebas es de gran

importancia ya que de estaacute manera se pueda la en encontrar

los errores antes de que se conviertan en errores para la

aplicacioacuten si no se lleva un orden de aplicacioacuten de las pruebas

se va a perder tiempo recurso y sobre todo esfuerzo

Durante las primeras etapas de las pruebas es importante

concentrar toda la atencioacuten en un pequentildeo grupo de

componentes o en un componente que se considere importante

para el desarrollo tanto en los datos como en la parte loacutegica de

la aplicacioacuten

El objetivo final de las estrategias de prueba es documentar la

forma en el que equipo ha hecho el desarrollo y el seguimiento

que se le ha hecho a cada una de las etapas durante las etapas

de desarrollo e implementacioacuten

Palabras clave Calidad Prueba Estrategias Sistema

I INTRODUCCIOacuteN

Durante este articulo es importante mencionar algunos

aspectos que determinan el eacutexito de la aplicacioacuten de las

estrategias de prueba como lo son el enfoque estrateacutegico

para la prueba de software aspectos estrateacutegicos

estrategias de prueba para software convencional

estrategias de prueba para software orientado a objeto

estrategia de prueba para webapps pruebas de validacioacuten y

por uacuteltimo las pruebas del sistema

IIESTRATEGIAS DE PRUEBA DEL SOFTWARE

Verificacioacuten Estamos construyendo el producto

correctamente

Validacioacuten Estamos construyendo el producto correcto

Integracioacuten descendente

La integracioacuten descendente es un planteamiento

incremental a la construccioacuten de la estructura de programas

Se integran los moacutedulos movieacutendose hacia abajo por la

jerarquiacutea de control comenzando por el moacutedulo de control

principal (programa principal) Los moacutedulos subordinados

(de cualquier modo subordinados) al moacutedulo de control

principal se van incorporando en la estructura bien de

forma primero-en-profundidad o bien de forma primero-en-

anchura Fig1

Integracioacuten ascendente

La prueba de la integracioacuten ascendente como su nombre

indica empieza la construccioacuten y la prueba con los

moacutedulos atoacutemicos (es decir moacutedulos de los niveles maacutes

bajos de la estructura del programa) Dado que los moacutedulos

se integran de abajo hacia arriba el proceso requerido de

los moacutedulos subordinados a un nivel dado siempre estaacuten

disponibles y se elimina la necesidad de resguardos Fig2

Fig 1 Integracioacuten descendente

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

20

Fig 3 Integracioacuten Ascendente

Aspectos Estrateacutegicos

Tom Gilb plantea que se deben abordar los

siguientes puntos si se desea implementar con

eacutexito una estrategia de prueba del software

Especificar los requisitos del producto de manera

cuantificable mucho antes de que comiencen las pruebas

-Establecer los objetivos de la prueba de manera expliacutecita (teacuterminos

medibles)

-Comprender queacute usuarios va a tener el software y desarrollar un perfil

-Desarrollar un plan de prueba que haga hincapieacute en la prueba de ciclo

raacutepido

-Construir un software ―robusto disentildeado para probarse a siacute mismo

-Usar revisiones teacutecnicas formales efectivas como filtro antes de la

prueba

Llevar a cabo revisiones teacutecnicas formales para evaluar la

estrategia de prueba y los propios casos de prueba

Desarrollar un enfoque de mejora continua al proceso de

prueba Deberiacutea medirse la estrategia de prueba

Prueba de Unidad

La prueba de unidad centra el proceso de

verificacioacuten en la menor unidad del disentildeo del

software el moacutedulo La prueba de unidad siempre

esta orientada a caja blanca y este paso se suele

llevar a cabo en paralelo para muacuteltiples moacutedulos

Pruebas de Alfa y Beta

C u a n d o s e c o n s t r u y e s o f t w a r e a m e d i d a s e

l l e v a n a c a b o u n a s e r i e d e p r u e b a s d e

a c e p t a c i oacute n p a r a permitir que el cliente valide todos

los requisitos La prueba alfa se lleva a cabo en el

lugar del desarrollo pero por un cliente Se usa el

software en forma normal con el desarrollador como

observador del usuario y registrando los errores y

problemas de uso(entorno controlado)La prueba beta se

lleva a cabo por los usuarios finales en los lugares

de trabajo de los clientes El cliente registra los

problemas y los informa a intervalos regulare

Pruebas del sistema

La prueba del sistema estaacute constituida por una

serie de pruebas diferentes cuyo propoacutesito es

ejercitar profundamente el sistema

Prueba de recuperacioacuten

E s l a p r u e b a d e l s i s t e m a q u e f u e r z a a l

f a l l o d e l s o f t w a r e d e m u c h a s f o r m a s y

v e r i f i c a q u e l a recuperacioacuten se lleva a cabo

apropiadamente Recuperacioacuten automaacutetica o manual

Prueba de seguridad

Intenta verificar que los mecanismos de proteccioacuten

incorporados en el sistema lo protegeraacute de hecho de

accesos impropios

Pruebas de Resistencia

Estaacuten disentildeadas para enfrentar a los programas con

situaciones anormales Una variante de la prueba de

resistencia es una teacutecnica denominada prueba de

sensibilidad intenta descubrir combinaciones de datos

dentro de una clase de entrada valida que pueda producir

inestabilidad o un proceso incorrecto

El arte de la depuracioacuten

La depuracioacuten ocurre como consecuencia de una

prueba efectiva Cuando un caso de prueba

descubre u n e r r o r l a d e p u r a c i oacute n e s e l

p r o c e s o q u e p r o v o c a l a e l i m i n a c i oacute n d e l

e r r o r E l p r o c e s o m e n t a l q u e conecta un siacutentoma

con una causa es la depuracioacuten

El proceso de la depuracioacuten

E l p r o c e s o d e d e p u r a c i oacute n i n t e n t a h a c e r

c o r r e s p o n d e r e l s iacute n t o m a c o n u n a c a u s a

l l e v a n d o a s iacute a l a correccioacuten del error El proceso de

depuracioacuten siempre tiene uno de los dos resultados

siguientes

(1)se encuentra la causa se corrige y se elimina

o

(2)no se encuentra la causa En eacuteste uacuteltimo caso la persona

que realiza la depuracioacuten debe sospechar la causa disentildear

un caso de prueba que ayude a confirmar sus sospechas y el

trabajo vuelve hacia atraacutes a la correccioacuten del error de una

forma iterativa iquestPor queacute es tan difiacutecil la depuracioacuten

Varias caracteriacutesticas de los errores nos dan algunas

] INGENIERIacuteA DE SOFTWARE

21

INGENIERIacuteA DE SISTEMAS

pistas1El siacutentoma y la causa pueden ser

geograacuteficamente remotos entre siacute2El siacutentoma

puede desaparecer (temporalmente) al corregir

otro error

3 E l s iacute n t o m a p u e d e r e a l m e n t e e s t a r

p r o d u c i d o p o r a l g o q u e n o e s u n e r r o r

( i n e x a c t i t u d d e l o s redondeos)

4El siacutentoma puede estar causado por un error

humano que no sea faacutecilmente detectado

5El siacutentoma puede ser el resultado de problemas

de temporizacioacuten en vez de problema s de proceso

6Puede ser difiacutecil reproducir exactamente las

condiciones de entrada

7 E l s iacute n t o m a p u e d e a p a r e c e r e n f o r m a

i n t e r m i t e n t e

8 E l s iacute n t o m a p u e d e s e r d e b i d o a c a u s a s q u e

s e d i s t r i b u y e n p o r u n a s e r i e d e t a r e a s

e j e c u t aacute n d o s e e n diferentes procesadores

IIICONCLUCIONES

Las estrategias de prueba del software es un mecanismo

que proporciona una guiacutea o base pasa ver la forma como se

debe desarrollar la aplicacioacuten en cuanto a meacutetodos para

logra un producto exitoso

IVREFERENCIAS

httpbuenastareascomensayosEstategias-de-prueba-de-

software3752643html

httpwwwestrategiascompruebaagil

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

22

Ingenieriacutea Inversa Juan Carlos Zenteno Sanga

1

Departamento de Ingenieriacutea de Sistemas Universidad San Francisco de Asiacutes

Direccioacuten Incluyendo el Paiacutes 1juanka_58hotmailcom

Resumenmdash La ingenieriacutea de Software es parte del modelo de

proceso de reingenieriacutea de software es el proceso de analizar

un programa con la finalidad de crear una representacioacuten del

programa en un grado mayor de abstraccioacuten del coacutedigo

fuente las herramientas de ingenieriacutea inversa obtienen

informacioacuten del disentildeo de datos arquitectoacutenico y de

procedimientos a partir de un programa existente

En el siguiente artiacuteculo se veraacuten los conceptos baacutesicos y se

denotara un ejemplo praacutectico para una mayor comprensioacuten

del tema

Palabras clave mdash Ingenieriacutea de Software Reingenieriacutea

Linux Ingenieriacutea Inversa

XI INTRODUCCIOacuteN

Inmersa en el aacuterea de conocimiento de la

ingenieriacutea de software se encuentra la ingenieriacutea

inversa como punto de apoyo para los procesos

de anaacutelisis y disentildeo propuestos en diferentes

meacutetodos de desarrollo

La ingenieriacutea inversa permite subsanar esta

deficiencia al documentar los productos de

software a partir del coacutedigo ejecutable con el fin

de obtener los artefactos de anaacutelisis y disentildeo

La ingenieriacutea inversa es ademaacutes una

herramienta uacutetil que ayuda en el proceso de

aseguramiento de la calidad del software

mediante la comparacioacuten de diagramas de fases

de anaacutelisis y desarrollo se apoya comuacutenmente en

la generacioacuten del diagrama de clases debido a la

importancia de este diagrama en la fase de disentildeo

y su facilidad de generacioacuten Existen tambieacuten

otros diagramas de intereacutes como el de

comunicacioacuten y el de secuencias que modelan

las caracteriacutesticas dinaacutemicas de un producto de

software

Hoy en diacutea los productos maacutes comuacutenmente

sometidos a la Ingenieriacutea Inversa son los

productos de Hardware y Software pero

cualquier producto puede ser sometido a este

proceso

Aplicar ingenieriacutea Inversa a algo supone

profundizar el estudio de su funcionamiento

En el caso concreto del Software se conoce

por ingenieriacutea de software a la actividad que se

ocupa de describir coacutemo funciona un programa

de cuyo coacutedigo no se dispone hasta el punto de

generar coacutedigo propio que cumpla con las

mismas funciones Un ejemplo claacutesico del uso de

esta teacutecnica es el software de pago donde las

empresas utilizan esta teacutecnica para proteger sus

productos contra posibles acceso no autorizados

o examinar el producto final para encontrar

posibles bugs inesperados en la ejecucioacuten de

dicho sistema

Existe una gran variedad de software

desensamblador y depurador para aplicar esta

teacutecnica

En resumen la idea general al aplicar

ingenieriacutea inversa es

Conocer a fondo la aplicacioacuten y generar un

mejor coacutedigo

Migrar la aplicacioacuten a un nuevo sistema operativo

Hacer o completar la documentacioacuten

] INGENIERIacuteA DE SOFTWARE

23

INGENIERIacuteA DE SISTEMAS

Verificar que el coacutedigo en estudio cumple las

especificaciones del disentildeo estaacutendar

La informacioacuten extraiacuteda de la lectura del

coacutedigo fuente son las especificaciones de disentildeo

modelos de flujo de control diagramas de disentildeo

documentos de especificacioacuten de disentildeo

pudiendo tomarse estas especificaciones como

nuevo punto de partida para aplicar ingenieriacutea

inversa y obtener informacioacuten a mayor nivel de

abstraccioacuten

Dado que es una labor estrateacutegica es

conveniente conocer cuando conviene realizar la

tarea de Ingenieriacutea inversa para una aplicacioacuten y

cuaacutendo es maacutes rentable sustituirla e implementar

una nueva Las aplicaciones para el primer paso

son aquellas en la que se produce las siguientes

situaciones

bull Fallos frecuentes que son difiacuteciles de

localizar

bull Son poco eficientes pero realizan la funcioacuten

esperada

bull Dificultades en la integracioacuten con otros

sistemas

bull Calidad pobre del software final

bull Resistencia a introducir cambios

bull Pocas personas capacitadas para realizar

modificaciones

bull Dificultades para realizar pruebas

bull El mantenimiento consume muchos recursos

XII LAS BASES DE LA INGENIERIA INVERSA

Los ejemplos maacutes trascendentes sobre los

inicios de la ingenieriacutea inversa son claramente las

investigaciones realizadas sobre antiguos

artefactos creados por humanos ancestrales con

el fin de descubrir la manera en que funcionaban

Uno de los maacutes conocidos es el llamado

mecanismo de Antikythera (Fig 1) el cual se

piensa que fue disentildeado para fines astronoacutemicos

por los griegos siendo uno de los primeros

artefactos que funcionaban con ruedas de

engranes

Figura 1 Antikythera (mecanismo presuntamente creado para fines astronoacutemicos)

Podemos entonces implantar un paralelo en aquella

mitoloacutegica buacutesqueda de descubrimiento sobre el

funcionamiento de esos artefactos y la ingenieriacutea inversa

actual usada en ingenieriacutea de software estableciendo un

importante factor en comuacuten la falta de documentacioacuten En

este ambiente es muy comuacuten contar con una especie de caja

negra en donde sabemos lo que ingresamos y el resultado

que obtenemos pero desconocemos el procedimiento con la

precisioacuten que necesitariacuteamos para replicarlo

Esta falta de documentacioacuten es el impulso

principal de toda la ingenieriacutea inversa las

finalidades de la misma pueden variar pero este

factor inicial nunca lo haraacute

XIII INGENIERIA INVERSA COMO UN PROCESO DE

REINGENIERIA

La ingenieriacutea inversa tiene la misioacuten de

desentrantildear los misterios y secretos de los

sistemas en uso

Baacutesicamente recupera el disentildeo de la

aplicacioacuten a partir del coacutedigo esto se realiza

mediante herramientas que extraen la

informacioacuten de los datos procedimientos y

arquitecturas del sistema

Es aplicable a sistemas con las siguientes

caracteriacutesticas

Documentacioacuten inexistente o totalmente obsoleta

Programacioacuten en bloque de coacutedigos muy grandes

yo sin estructural

La aplicacioacuten cubre gran parte de los requisitos

y el rendimiento esperado

A Nivel de abstraccioacuten

El nivel de Abstraccioacuten de un proceso de

Ingenieriacutea Inversa y las herramientas que se

utilizan para realizarlo aluden la sofisticacioacuten de

la informacioacuten de disentildeo que se puede extraer del

coacutedigo fuente Este proceso deberiacutea ser capaz de

derivar

Sus representaciones de disentildeo de procedimiento

(con un bajo nivel de abstraccioacuten)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

24

La informacioacuten de las estructuras de datos de

procedimiento (con un nivel de abstraccioacuten

ligeramente maacutes elevado)

Modelos de flujo de datos de control (un nivel de

abstraccioacuten relativamente alto)

Modelos de entidades y de relaciones (un elevado

nivel de abstraccioacuten)

B Completitud

En la mayoriacutea de los casos la completitud

decrece a medida que aumenta el grado de

abstraccioacuten

La completitud mejora en proporcioacuten directa a

la cantidad de anaacutelisis efectuado por la persona

que estaacute efectuando la ingenieriacutea inversa

C Interactividad

La interactividad alude al grado con el cual el

ser humano se integra con las herramientas

automatizadas para crear un proceso de

ingenieriacutea inversa efectivo

D Proceso

El Proceso de ingenieriacutea inversa (Fig 2) es el encargado

de reestructurar el coacutedigo fuente para que solamente

contenga instrucciones de programacioacuten estructurada Lo

que hace que el coacutedigo sea maacutes faacutecil de leer y proporciona

la base para las subsiguientes actividades de ingenieriacutea

inversa

Figura 2 Diagrama de Proceso de la Ingenieriacutea Inversa

E Reestructuracioacuten

La reestructuracioacuten del software modifica el

coacutedigo fuente y los datos en un intento adecuado

a futuros cambios esta no modifica la

arquitectura global del programa Tiene a

centrarse en los detalles de disentildeo de moacutedulos

individuales y en estructuras de datos locales

definidas dentro de los moacutedulos

Estos son algunos de los beneficios que se

pueden lograr cuando se reestructura el software

Programas de mayor calidad

Reduce el esfuerzo requerido para llevar a cabo

las actividades de mantenimiento

Hace el software maacutes sencillo para comprobar y

depurar

F Re documentacioacuten

Es el proceso mediante el cual se produce

documentacioacuten retroactivamente desde un

sistema existente

Es considerada una forma de ingenieriacutea inversa

porque la documentacioacuten reconstruida es usada

para ayudar al conocimiento del programa

XIV UTILIZANDO EL METODO CIENTIFICO EN LA

INGENIERIA INVERSA

Ante cualquier dificultad tecnoloacutegica el

meacutetodo cientiacutefico siempre es y seraacute nuestra maacutes

preciada arma Partamos imaginando un pequentildeo

dilema relacionado con el tema de ingenieriacutea de

software especiacuteficamente con un sencillo

programa (Fig 3)

Figura 3 Pantalla de aplicacioacuten que nos serviraacute de ejemplo

Esta sencilla aplicacioacuten mostraraacute un mensaje con cierto

resultado y aun siendo un problema demasiado sencillo

para considerarlo como un reto el objetivo es soacutelo describir

] INGENIERIacuteA DE SOFTWARE

25

INGENIERIacuteA DE SISTEMAS

las acciones usuales del proceso las cuales son aplicables

en escalas muy superiores

El resultado mostrado por el programa dentro del mensaje

emergente se basa en nuestra entrada pero nosotros

desconocemos en lo absoluto los procedimientos utilizados

sobre esta entrada para producir aquella respuesta

A La Observacioacuten es Trascendental

Primero es importante observar el problema su

comportamiento Es substancial tratar de lograr

un pensamiento inductivo en donde logremos

identificar el principio particular del problema

para poder llegar a extrapolarlo a una solucioacuten

general

El punto de quiebre se produce en este instante

Ya al haber observado la aplicacioacuten podriacuteamos

decidir procesar los datos que nos entrega y

lograr crear un coacutedigo equivalente o investigar el

funcionamiento interno

B Dentro de la aplicacioacuten

Luego de la formulacioacuten de una hipoacutetesis sobre

su funcionamiento necesitamos algunas

herramientas para comenzar con la investigacioacuten

En el caso de esta aplicacioacuten con un poco de

conocimientos del lenguaje ensamblador de

programacioacuten tradicional y un descompilador es

suficiente

Es importante emprender de buena forma

nuestro sondeo ser ordenados y metoacutedicos en la

tarea En este momento las capacidades analiacuteticas

y loacutegicas son muy importantes para alivianar

nuestra faena

Lo fundamental es conocer muy bien el

entorno en que nos desenvolveremos En este es

punto indispensable saber que una aplicacioacuten

para Windows necesita invocar internamente al

punto de entrada MessageBox o MessageBoxEx

de la libreriacutea de sistema user32dll para poder

desplegar un mensaje (Fig 4)

Figura 4 Resultado de la Aplicacioacuten

Ya con esa pista es sencillo encontrar el

fragmento de coacutedigo relacionado con las

operaciones relacionadas a nuestro nuacutemero de

entrada que tendriacutea una forma similar a la

mostrada a continuacioacuten en nuestro

descompilador (Fig 5)

Figura 5 Vista del Programa en Ensamblador

Cualquier programador intuiriacutea faacutecilmente lo

que hacen las liacuteneas superiores de esta aplicacioacuten

en especial sprintf es parte de la libreriacutea estaacutendar

de C++ Claramente vemos tambieacuten el tiacutetulo de la

ventana en el coacutedigo estos valores son

interpretados de forma inteligente por este

descompilador en especial y en particular nos

asiste de sobremanera a comprender el coacutedigo

Lo siguiente es sencillamente explorar paso a

paso las acciones superiores de caacutelculo del

resultado En esta instancia seraacute ideal realizar

numerosas pruebas para estar completamente

seguros de que logramos develar el secreto tras la

funcionalidad objetivo (Fig 6)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

26

Figura 6 Inicio del coacutedigo al que aplicaremos ingenieriacutea inversa

Hay que detenerse algunos segundos a

individualizar algunos procedimientos del

anaacutelisis que a simple vista pueden parecer

inconcebibles con el fin de poder generar una

tesis concluyente

Cabe destacar que se omitiraacuten pasos

intermedios de asignaciones de memoria y otros

formalismos propios de ensamblador para

favorecer el entendimiento del lector

Inicialmente tenemos el valor de entrada

supuestamente ya leiacutedo desde el cuadro de

diaacutelogo del programa ahora nos enfocamos en la

primera accioacuten importante Asumiremos el valor

de entrada como una incoacutegnita

En el siguiente trozo de coacutedigo la liacutenea

destacada antildeadioacute siete a nuestra incoacutegnita (Fig 7)

Figura 7 Coacutedigo donde se denota la adicioacuten de 7 a nuestra ecuacioacuten

A continuacioacuten se multiplica ese valor

resultante de la suma por el mismo (Fig 8)

Figura 8 Coacutedigo donde se denota la multiplicacioacuten del valor por la suma

Nuevamente multiplicamos el resultado por el

anterior proporcionado tras la suma En esta

segunda vez ya podemos expresar la operacioacuten

simplemente elevando al cubo la suma anterior

(Fig 9)

Figura 9 Coacutedigo que denota una nueva multiplicacioacuten del resultante

Ahora le restamos diez al resultado

El procedimiento que viene a continuacioacuten

propone un mayor desafiacuteo intelectual Un nuacutemero

constante en este caso el cargado al registro

EAX (Fig 10)

Figura 10 ubicacioacuten del nuacutemero constante EAX

Generalmente la divisioacuten es algo maacutes costosa

en tiempo de procesador que otras operaciones

por lo que ciertos compiladores incluyen tablas

de constantes las cuales son llamadas ―nuacutemeros

maacutegicos para la divisioacuten entera

d Con signo Sin signo

m (hex) s m (hex) a s

-5 99999999 1

-3 55555555 1

-2k 7FFFFFFF k-

1

1 mdash mdash 0 1 0

2k 80000001 k-

1 232-k 0 0

3 55555556 0 AAAAAAAB 0 1

5 66666667 1 CCCCCCCD 0 2

6 2AAAAAAB 0 AAAAAAAB 0 2

7 92492493 2 24924925 1 3

9 38E38E39 1 38E38E39 0 1

10 66666667 2 CCCCCCCD 0 3

11 2E8BA2E9 1 BA2E8BA3 0 3

] INGENIERIacuteA DE SOFTWARE

27

INGENIERIacuteA DE SISTEMAS

12 2AAAAAAB 1 AAAAAAAB 0 3

25 51EB851F 3 51EB851F 0 3

125 10624DD3 3 10624DD3 0 3

Tabla 1 Algunos nuacutemeros maacutegicos (32 bits)

Ahora bien conociendo la tabla 1 sabiendo

que el nuacutemero cargado en esta ocasioacuten

corresponde al once lo que hace el coacutedigo es

multiplicar el resultado de la salida temporal por

aquel nuacutemero (Fig 11)

Figura 11 Multiplicacioacuten del resultante por el numero 11

Naturalmente la multiplicacioacuten por un nuacutemero

tan grande produce una especie de

desbordamiento en el registro contenedor del

resultado al exceder el tamantildeo de palabra del

procesador (en este caso de 32 bits) Estos bits

sobrantes se almacenan naturalmente en el

registro EDX registro que es contiguo a ECX

dentro de la memoria de los registros del

procesador

Ahora desplazamos un bit del registro EDX

(equivalente a una divisioacuten entera por dos) para

obtener la solucioacuten de la divisioacuten por once

generando una sencilla ecuacioacuten

Figura 12 Desplazamiento del bit de registro EDX

El uacuteltimo paso luego de documentar estos

resultados seraacute crear una aplicacioacuten que recree

esta foacutermula soacutelo en caso de tener intenciones de

re-codificacioacuten del desarrollo Consumando este

punto es sencillo confeccionar un diagrama con

todo el proceso anteriormente visto

XV CONCLUSIONES

Queda claro que el tema de la ingenieriacutea

inversa es uno de los toacutepicos maacutes interesantes a

los que podriacutea afrontarse un profesional de la

tecnologiacutea y en general disfrutar el largo proceso

involucrado gracias al desafiacuteo poco predecible

que presenta

En general podemos darnos cuenta de que no

existen muchas metodologiacuteas y teoriacuteas estrictas

sobre coacutemo aplicar las teacutecnicas de ingenieriacutea

inversa Afortunadamente un ingeniero estaacute

preparado para afrentar desafiacuteos de este tipo

Adicionalmente podemos deducir tambieacuten el

aspecto bidireccional de la ingenieriacutea inversa

pues como ya lo comprobamos no solo es un

desafiacuteo aplicarla sino que tambieacuten lo es tener que

dificultar el proceso o incluso tratar de impedirlo

si la situacioacuten lo requiere

REFERENCIAS

[12] Roger Pressman Ingenieriacutea de Software ―Un Enfoque Moderno 6th ed

MC Graw Hill [13] httpeswikipediaorgwikiIngenieria_inversa

[14] httpwwwinfosecwritersconntext_resourcespdfsoftware_security_and_r

everse_engineeringpdf [15] httperwinriedclmodo=visorampelemento=239

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

28

METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO Univ Alejandro Meacutendez Escobar

Universidad San Francisco de Asiacutes

Ingenieriacutea de Sistemas

Ingenieriacutea de Software I

La Paz - Bolivia

amendezusfaedubo

Resumenmdash Al adquirir el software educativo dentro del campo de

desarrollo de software una gran importancia y siendo este

inspiracioacuten de propuestas de innumerables metodologiacuteas que buscan

la elaboracioacuten de un software de calidad

Tomaremos la metodologiacutea Aacutencora enfocada a la fase de

requerimientos y que ofrece elementos que indican las actividades

que deben realizarse los artefactos que se producen y la forma de

obtenerlos

Usando al desarrollo de software educativo como ejemplo de una

mejor comprensioacuten de dicha metodologiacutea analizando la aplicacioacuten

del Aacutencora en un trabajo propuesto para el Instituto Tecnoloacutegico de

Orizaba Meacutexico

Palabras clave mdash Aacutencora Metodologiacutea Desarrollo de Software

Educativo Requerimientos Calidad

XVI INTRODUCCIOacuteN

Hoy en diacutea la tecnologiacutea esta dentro de las

actividades que realizamos es asiacute que la educacioacuten no

queda exenta de ella por o cual es necesario adaptarse

al movimiento tecnoloacutegico que nos trae grandes

ventajas en la transmisioacuten de conocimientos de una

manera sencilla y dinaacutemica

De esta manera han surgido infinidad de

metodologiacuteas de desarrollo de software educativo el

cual tiene como objetivo ser el apoyo para docentes

alumnos y toda persona que este dentro del proceso de

aprendizaje

Tomando en cuenta este ramillete infinito de

metodologiacuteas surge en el ejemplo propuesto la

adaptacioacuten del Aacutencora en el desarrollo de software

educativo teniendo como objetivo principal la

comprensioacuten de los elementos y conceptos de la

metodologiacutea Aacutencora

Aacutencora es una metodologiacutea enfocada a la

adquisicioacuten de requerimientos para software que

ofrece guiacuteas y elementos de apoyo para la obtencioacuten de

estos requerimientos Al mismo tiempo permite pasar a

la fase de disentildeo de manera sencilla Aprovechando las

ventajas que presenta Aacutencora se le hicieron algunas

adaptaciones con el fin de cubrir algunas

caracteriacutesticas del disentildeo instruccional y enriquecer

Aacutencora habilitaacutendola para la adquisicioacuten de

requerimientos de software educativo

XVII APLICACIOacuteN DE LA METODOLOGIacuteA AacuteNCORA

Como es el objetivo principal la comprensioacuten de la

aplicacioacuten de la metodologiacutea Aacutencora dentro del

desarrollo de software educativo de calidad solo

describiremos los meacutetodos del meacutetodo y los resultados

obtenidos

Claro esta que para ahondar maacutes en tema del

software educativo en si el lector puede recurrir a los

siguientes autores Metodologiacutea de desarrollo de

sistemas multimedia (Vaughan 2006) Propuesta de

metodologiacutea para el disentildeo desarrollo y evaluacioacuten

de software educativo (Reyes 2009) Ingenieriacutea de

software educativo con modelaje orientado por objetos

(Goacutemez 1998) asi como tambieacuten los siguientes

modelos ADDIE (Anaacutelisis Disentildeo Desarrollo

Implantacioacuten y Evaluacioacuten) de (McGriff 2000) y el

disentildeo instruccional aplicado al desarrollo de software

educativo EISE (Especificacioacuten Instruccional de

Software Educativo) de (Hernaacutendez 2005)

] INGENIERIacuteA DE SOFTWARE

29

INGENIERIacuteA DE SISTEMAS

Quienes tienen el mismo objetivo de crear software

educativo de calidad podemos sintetizar de ellos los

siguientes puntos

Anaacutelisis del puacuteblico al que se dirigiraacute el software

Problema oacute necesidad educativa a atender

Anaacutelisis de contenido (Tema a tratar actividades

para alcanzar el objetivo de ensentildeanza y forma de

evaluarlo)

Actividades oacute forma actual de llevar a cabo la

ensentildeanza del tema en cuestioacuten

Elaboracioacuten de guiones metaacuteforas escenarios

Creacioacuten de prototipo oacute Storyboard

Disentildeo de interfaz

Mapas de navegacioacuten

Modelos de datos

Elaboracioacuten de diagramas de contexto diagramas

de flujo o diagramas de casos de uso

Ahora enfocaacutendonos en el aacutencora se establece la

propuesta de seleccionar las actividades de Aacutencora que

permitan obtener los requerimientos de un software

educativo

La Tabla 1 presenta las actividades y artefactos

producidos en las fases de Aacutencora para la elaboracioacuten

de software educativo

TABLA 1 ACTIVIDADES Y ARTEFACTOS DE LA METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO

Metodologiacutea Aacutencora

Fases Actividades y artefactos

Anaacutelisis de

Requerimientos

A traveacutes de entrevistas con los clientes

(maestros y pedagogos) y de la lectura

del respectivo material proporcionado

por ellos se definiraacute la asignatura a la

que se enfocaraacute el software el tema a

tratar y la forma en que se abordaraacute y

evaluaraacute Tambieacuten se estableceraacute el

objetivo general de aprendizaje la

metaacutefora que se emplearaacute y se

determinaraacute el puacuteblico al que se

dirigiraacute el software

Artefactos

Documento que define la asignatura

contenido objetivo general de

aprendizaje metaacutefora y puacuteblico al que

se dirigiraacute el software Guion de la

situacioacuten actual

Recoleccioacuten y

clasificacioacuten de

requerimientos

El guion de la propuesta

computacional reflejaraacute la metaacutefora

que se sigue el ambiente de cada

escena

La bitaacutecora de desarrollo permitiraacute ver

coacutemo el sistema responderaacute a las

diversas acciones que realice el

usuario

En lugar del prototipo raacutepido se

elaboraraacute un Storyboard para presentar

graacuteficamente la estructura de sistema

propuesto

Artefactos

Guion de propuesta computacional

bitaacutecora de desarrollo Storyboard

Resolucioacuten de

conflictos

jerarquizacioacuten y

validacioacuten de

requerimientos

Modificaciones al guion de la

propuesta computacional de acuerdo a

los cambios propuestos por los

maestros y pedagogos

Artefactos

Guion de propuesta computacional e

Storyboard con adecuaciones sentildealas

Cierre

Trasladar los guiones a casos de uso

Artefactos

Casos de uso

Se agregaron algunas caracteriacutesticas a ciertos

artefactos de Aacutencora para poder cubrir los

requerimientos de software educativo Uno de estos

elementos es el guion de la propuesta computacional

al que se propone agregar lo siguiente

Conocimientos previos del usuario Se refiere a los

conocimientos baacutesicos o miacutenimos que debe tener el

alumno para poder interactuar con el moacutedulo

Objetivo de aprendizaje Es el aprendizaje que

debe obtener el alumno despueacutes de haber interactuado

con el moacutedulo

La Figura 1 se presenta la estructura sugerida para el

guion de la propuesta computacional En la bitaacutecora de

desarrollo se propone antildeadir una fila al final de cada

pista donde se describan las situaciones favorables y

no favorables para el cumplimiento del objetivo de

aprendizaje para esa pista en particular Por otra parte

en lugar del prototipo se sugiere utilizar el Storyboard

ya que permite mostrar de manera maacutes completa la

estructura del guion de la propuesta computacional La

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

30

Figura 2 muestra el formato para la elaboracioacuten del

Storyboard

Figura 1 Estructura del guion para la propuesta computacional

Figura 2 Formato para la elaboracioacuten del Storyboard

XVIII RESULTADOS

Aplicando Aacutencora en un ejemplo para la parte de

requerimientos se obtuvo la siguiente informacioacuten

Asignatura Matemaacuteticas

Contenido Estaacute articulado con base en seis ejes

con sus respectivos temas y subtemas que variacutean de

acuerdo al grado escolar Considerando lo anterior se

tiene lo siguiente

a) Grado escolar De segundo hasta quinto grado de

primaria

b) Temas Nuacutemeros naturales capacidad peso

tiempo y ubicacioacuten espacial planteamiento y

resolucioacuten de problemas sencillos en los que se

requiera recolectar y registrar informacioacuten

perioacutedicamente representacioacuten de informacioacuten en

tablas de frecuencia y graacuteficas de barras registros de

los resultados de experimentos aleatorios

representacioacuten de los resultados de un experimento

aleatorio en tablas y graacuteficas

c) Subtemas Planteamiento y resolucioacuten de

problemas que impliquen dos o maacutes operaciones con

nuacutemeros naturales

d) Ejes Introduccioacuten del kiloacutemetro como la unidad

que permite medir grandes distancias y recorridos

largos capacidad peso y tiempo uso del reloj y el

calendario los nuacutemeros sus relaciones y sus

operaciones medicioacuten la prediccioacuten y el azar

tratamiento de la informacioacuten

Objetivo general de aprendizaje Ejercitar las

operaciones aritmeacuteticas baacutesicas interpretar la

informacioacuten y los resultados de la informacioacuten dada

aplicada en situaciones de la vida cotidiana

Con las actividades hasta ahora realizadas se ha

observado que los artefactos de Aacutencora son flexibles y

pueden por lo tanto adaptarse de acuerdo a las

necesidades que implican la adquisicioacuten de

requerimientos de un software educativo Tambieacuten se

aprecian las ventajas de algunos artefactos como la

bitaacutecora de desarrollo que permite determinar las

respuestas del sistema ante las acciones del usuario y

estimar tambieacuten el tiempo que llevaraacute implementar

cada quinteta

La estimacioacuten del tiempo ayuda a tener un valor

aproximado del tiempo de desarrollo de software

Agregar el objetivo de aprendizaje a la bitaacutecora de

desarrollo puede parecer repetitivo despueacutes de

incluirlo en el Storyboard pero esto nos permite ver las

situaciones u obstaacuteculos que pueden impedir que el

objetivo de aprendizaje se alcance y por tanto tenerlos

presente durante el disentildeo A pesar de las ventajas de

la bitaacutecora de desarrollo un inconveniente hasta ahora

encontrado es lo tedioso al manejar muchas quintetas

] INGENIERIacuteA DE SOFTWARE

31

INGENIERIacuteA DE SISTEMAS

cuando por la naturaleza del guion se tienen varios

avisos y mensajes para el usuario Por otra parte los

guiones han ayudado a realizar de manera sencilla el

modelo de casos de uso

En lo referente a la presentacioacuten con los clientes el

guion es un artefacto que pude dar un panorama

general del software que se va a elaborar y queda

reforzada a traveacutes de los Storyboard Cuando se

requieren cambios solicitados por los clientes las

modificaciones a estos artefactos no han sido muy

complicadas dado que por su estructura es faacutecil de

ubicar las secciones y respectivos elementos

XIX CONCLUSIONES

Con los resultados hasta ahora obtenidos se puede

decir que la propuesta permite a los desarrolladores

con poca experiencia en desarrollo de software

educativo obtener los requerimientos de una manera

sencilla

Permite realizar un mejor relevamiento de informacioacuten

de los requerimientos del cliente enfocaacutendonos mas en

este

Es tambieacuten importante mencionar los avances que

tiene y seguiraacute teniendo el software educativo aplicado

no solo a nivel escolar sino tambieacuten al superior

Habiendo revisado el concepto y la aplicacioacuten de la

metodologiacutea Aacutencora en el desarrollo de software

educativo se llegoacute a una comprensioacuten mas extensa de

dicho meacutetodo el cual es de gran importancia dentro de

la ingenieriacutea de Software ya que nos

REFERENCIAS

httpwwwuvmxmisproductividaddocumentsCarmenChay_CIIM2010pdf

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 5: Revista de Ingenieria de Software

] INGENIERIacuteA DE SOFTWARE

5

INGENIERIacuteA DE SISTEMAS

Fig 3 Referencia a las Meacutetricas cuestan dinero

Que las meacutetricas cuestan dinero en cierto sentido es cierto

Tambieacuten es cierto que ahora es mucho maacutes faacutecil llevar algunas

meacutetricas que hace unos antildeos dado que ahora utilizamos

herramientas que las generan de manera automaacutetica Podriacuteamos

decir que en el presente es mucho menos costoso tener la misma

informacioacuten que hace unas deacutecadas DeMarco consideraba

importante

Que el desarrollo de software es inherentemente diferente de las

ciencias naturales como la fiacutesica tambieacuten es verdad Lo que no

se termina de entender es por queacute nos comparamos con las

Fiacutesicas y no con las Ingenieriacuteas

El disentildeo de una planta de gas en situaciones extremas tambieacuten

es uacutenico y con resultados impredecibles la construccioacuten de una

torre en Dubai alguacuten nuevo prototipo de avioacuten un nuevo

celular etc tambieacuten son inherentemente diferentes de las

ciencias naturales y sin embargo cuentan con presupuestos

meacutetricas de avance de defectos etc O sea es una verdad pero

que no aplica a la conclusioacuten a la que llega

Donde puedo estar maacutes de acuerdo es cuando hablamos del

control de proyectos de software aunque maacutes adelante voy a

definir mi posicioacuten En este caso en mi opinioacuten tambieacuten escribe

algo cierto ―El control no es lo maacutes importante de un proyecto

de software pero cuando toma ejemplos elije dos proyectos en

los que las desviaciones admitidas eran del orden de entre 100

y 1000 ya que o el objetivo era otro o los resultados

esperados eran mucho mayores a una desviacioacuten de 500 en

costos

Fig 1 Referencia de Google Earth

Ambos proyectos (Wikipedia que surge de NuPedia) y

GoogleEarth fueron proyectos en los que hubo inversores

poniendo su dinero durante antildeos sin ver resultados Se puede

buscar en Internet acerca de la historia de NuPedia antecesora

de Wikipedia y a Jimi Wales explicando que despueacutes de haber

gastado 250000 doacutelares solo habiacutea logrado 16 artiacuteculos en su

nueva Enciclopedia Lo mismo pasoacute con GoogleEarth

anteriormente en manos de KeyHole con inversores como Sony

y otros Fondos de Capital En este tipo de proyectos se pueden

asumir peacuterdidas durante antildeos hasta lograr un producto que

puede romper con el mercado o tambieacuten se puede perder todo lo

invertido Se trata de proyectos de inversioacuten de alto riesgo y

determinan proyectos de desarrollo que claramente son poco

comunes

Fig 3 Referencia de WIKIPEDIA

Al menos en mi entorno la mayoriacutea de los proyectos son

internos o externos (para un cliente) Los proyectos externos

tienen presupuestos o se crean luego de llamados a licitacioacuten

Es decir costo fijo tiempo fijo alcance fijo maacutes menos alguna

que otra variacioacuten Es claro que si no contamos con un miacutenimo

de control en estos proyectos la empresa no sabe si estaacute siendo

rentable o no Tampoco sabe si el producto que es desarrollado

le puede traer problemas a futuro por alguna cuestioacuten de calidad

No poner un miacutenimo eacutenfasis en el control de estos proyectos

puede llevar a la empresa a la quiebra sin que esta sea

consciente salvo por los nuacutemeros rojos que aparecen en sus

balances Por lo tanto explicar que un proyecto de software no

hace falta controlarlo mucho y poner como ejemplo dos casos

muy poco relevantes no parece muy serio

Por uacuteltimo cuando dice el desarrollo de software es y siempre

seraacute algo experimental vuelve a caer en las afirmaciones de las

que en 40 antildeos (en caso de estar vivo claro) podriacutea volver a

arrepentirse Es cierto que todaviacutea estamos en una etapa inicial

de la que llamamos ingenieriacutea de software Es cierto que no es

faacutecil gestionar proyectos de software por sus caracteriacutesticas

intriacutensecas (intangibilidad maleabilidad etc) pero cada

ingenieriacutea tiene sus problemas particulares y cada una supo

evolucionar a lo que son ahora Seguramente la ingenieriacutea de

Software con el tiempo encontraraacute su camino

Ahora bien aparte de criticar un poco a DeMarco (que era lo

maacutes faacutecil) vamos a retomar la frase

―No puedes controlar lo que no puedes medir lleva impliacutecita

que el control es un aspecto importante quizaacutes el maacutes

importante de cualquier proyecto de software Pero no lo es

En cierta medida explicaba arriba estoy de acuerdo con esta

afirmacioacuten Un buen proyecto de software con mucho control

pero malos programadores lleva al fracaso inevitablemente (lo

he vivido personalmente y por experiencias de terceros) Por el

contrario un buen equipo de programadores (pero de los

buenos) puede terminar el proyecto maacutes complejo haciendo que

ninguacuten indicador tenga sentido ya que la diferencia de calidad

del producto y la eficiencia del trabajo de este tipo de gente

multiplica por 10 o por 100 la de un equipo estaacutendar

Este tipo de gente piensa las cosas de manera diferente tiene la

calidad incorporada como meacutetodo de trabajo y la capacidad de

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

6

generar soluciones a las distintas situaciones hace que el

esfuerzo estimado pueda acortarse en oacuterdenes de magnitud

Estuve dentro equipos de este estilo y lo que se puede lograr en

un ambiente hiperproductivo difiacutecilmente se logre en una

empresa de desarrollo comuacuten y corriente El problema es que la

gente que tiene estas cualidades escasea y el mercado estaacute lleno

de trabajadores ―estaacutendar que requieren definiciones procesos

un aacuterea de calidad que verifique sus entregables y un PM que le

indique queacute es lo que tiene que hacer De a poco estimo yo la

industria iraacute decantando por rendimiento aquellos profesionales

que hacen la diferencia y los estaacutendares de productividad

calidad base teoacuterica requerida para un puesto iraacuten aumentando

Fue pasando durante estas deacutecadas y seguiraacute pasando en el

futuro

II CONCLUSIONES

En siacutentesis y para terminar con este artiacuteculo medir y controlar

importa importa maacutes en las empresas con gente estaacutendar

importa maacutes en las empresas con proyectos estaacutendar y siempre

que estemos dentro de una empresa algo vamos a tener que

medir pero el control no es condicioacuten necesaria ni menos

suficiente para lograr un proyecto exitoso No es algo

fundamental como tener un buen equipo de programadores

como tener gente que sepa interpretar lo que se pide y

transformarlo de manera natural en la solucioacuten que el cliente

necesita Por eso cuando veo gente que se preocupa por

aumentar el control o aumentar los procesos creo que estaacute

perdiendo el foco cuando lo que deberiacutea buscar es coacutemo hacer

para encontrar y hacer rendir a los verdaderos profesionales del

software

III REFERENCIAS

[1] Software Engenieering an idea whose time has come and gone por Tom

DeMarco [2] CyS Ingenieria de Software El blog del aacuterea de Ingenieriacutea de Software de

CyS Informaacutetica SA

] INGENIERIacuteA DE SOFTWARE

7

INGENIERIacuteA DE SISTEMAS

EXTREME PROGRAMMING PARA DESARROLLO

DE SOFTWARE

Erwin Adaacuten Choque Ulloa Ingenieriacutea de Sistemas

Universidad San Francisco de Asiacutes

Plaza Avaroa esq Belisario Salinas

La paz ndash Bolivia adan_ekinghotmailcom

Resumen

En este articulo se describiraacute algunas de las metodologiacuteas

agiles de desarrollo de software puesto que para asegurar el

eacutexito durante el desarrollo de un software es importante

saber la metodologiacutea de desarrollo la cual nos provee una

guiacutea para la correcta aplicacioacuten y desarrollo de Software

La metodologiacutea Extreme Programming XP que es una de las

metodologiacuteas aacutegiles maacutes extendidas y populares ademaacutes es

considerada como una metodologiacutea posmoderna donde

grandes capacidades se generan a traveacutes de procesos

emergentes

Palabras claves Extreme Programming metodologiacutea software

usuario

1 INTRODUCCION

El esquema tradicional para abordar el desarrollo de

software ha demostrado ser efectivo y necesario en

proyectos de gran tamantildeo respecto a tiempo y recursos

Sin embargo este enfoque no resulta ser el maacutes adecuado

para muchos de los proyectos actuales donde el entorno

del sistema es muy cambiante y en donde se exige

reducir draacutesticamente los tiempos de desarrollo pero

manteniendo una alta calidad Ante este problema las

metodologiacuteas aacutegiles son una posible respuesta para llenar

ese vaciacuteo metodoloacutegico Orientadas para proyectos

pequentildeos las metodologiacuteas aacutegiles constituyen una

solucioacuten

A continuacioacuten se describiraacute cada una de las

metodologiacuteas de desarrollo de software

2 EXTREME PROGRAMMING XP

La metodologiacutea de desarrollo de software XP es la

primera metodologiacutea aacutegil y la que le dio conciencia al

movimiento actual de metodologiacuteas aacutegiles Kent Beck el

padre de la metodologiacutea XP se basa en realimentacioacuten

continua entre el cliente y el equipo de desarrollo

comunicacioacuten fluida entre todos los participantes

simplicidad en las soluciones implementadas y facilidad

para enfrentar los cambios XP se define como

especialmente adecuada para proyectos con requisitos

imprecisos y muy cambiantes y donde existe un alto

riesgo teacutecnico Ahora se describiraacute las caracteriacutesticas

esenciales del Extreme Programming

21 LAS HISTORIAS DEL USUARIO

La red Las historias del usuario es la teacutecnica utilizada

para especificar los requisitos de software son tarjetas de

papel donde el cliente especifica de manera simplificada

las caracteriacutesticas que el sistema debe poseer ya sean

requisitos funcionales o requisitos no funcionales Se

caracteriza por ser dinaacutemica y flexible cada historia de

usuario debe ser comprensible y delimitada para que los

programadores puedan implementarla en pocas semanas

22 ROLES XP

Seguacuten Kent Beck los roles son

Programador El programador se encarga de escribir las

pruebas unitarias y tambieacuten estaacute encargado de producir el

coacutedigo del sistema

Cliente Encargado de escribir las historias de usuario y

los requisitos funcionales y selecciona las historias por

prioridad de conveniencia al negocio

Encargado de pruebas Encargado de ayudar al cliente a

escribir las pruebas funcionales ademaacutes de ejecutar las

pruebas constantemente encargado de de las

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

8

herramientas de soporte de pruebas como tambieacuten

difundir los resultados de dicha prueba

Encargado de seguimiento Es el encargado de la

realimentacioacuten al equipo y realiza el seguimiento del

proceso de cada iteracioacuten

Entrenador Es el encargado de prever guiacuteas al equipo

basadas en XP y de seguir el proceso correctamente

Consultor Es el que posee un conocimiento especifico

en alguacuten tema necesario para el proyecto para solucionar

problemas

Gestor Es la interaccioacuten entre clientes y programadores

ayudando a trabajar de forma adecuada y de esta manera

coordinar de forma correcta

23 PROCESO XP

El ciclo de desarrollo XP consiste en

El cliente define el valor del negocio a implementar

El programador estima el esfuerzo necesario para su

implementacioacuten

El cliente selecciona que construir de acuerdo con sus

propiedades y las restricciones del tiempo

El programador construye ese valor de negocio

Vuelve al principio

En todas las iteraciones de este ciclo tanto el cliente como

el programador aprenden No se debe presionar al

programador a realizar maacutes trabajo que el estimado ya

que se perderaacute calidad en el software o no se cumpliraacuten

los plazos

El ciclo de vida ideal de XP consiste de seis fases

Exploracioacuten

Planificacioacuten de la Entrega (Release)

Iteraciones

Produccioacuten

Mantenimiento y Muerte del Proyecto

24 PRACTICAS XP

Las siguientes praacutecticas ayudan al desarrollo de software

El juego de la planificacioacuten Hay una comunicacioacuten

frecuente el cliente y los programadores El equipo

teacutecnico realiza una estimacioacuten del esfuerzo requerido para

la implementacioacuten de las historias de usuario y los

clientes deciden sobre el aacutembito y el tiempo de entregas y

de cada iteracioacuten

Entregas pequentildeas Producir raacutepidamente versiones del

sistema que sean operativas aunque no cuenten con toda

la funcionalidad del sistema Esta versioacuten ya constituye

un resultado de valor para el negocio Una entrega no

deberiacutea tardar maacutes de tres meses

Metaacutefora El sistema es definido mediante un conjunto

de metaacuteforas compartidas por el cliente y el equipo de

desarrollo Una metaacutefora es una historia compartida que

describe como deberiacutea funcionar el sistema

Disentildeo simple Se disentildea la solucioacuten maacutes simple que

pueda funcionar y ser implementada en un determinado

momento del proyecto

Pruebas La produccioacuten de coacutedigo estaacute dirigida para las

pruebas unitarias Estas son establecidas por el cliente

antes de escribirse el coacutedigo y son ejecutadas

continuamente ante cada modificacioacuten del sistema

Pruebas Es una actividad constante de reestructuracioacuten

del coacutedigo con el objetivo de remover duplicacioacuten de

coacutedigo mejorar su legibilidad simplificarlo y hacerlo

maacutes flexible para facilitar los cambios Se mejora la

estructura interna del coacutedigo sin alterar su

comportamiento externo

Programacioacuten en parejas Toda la produccioacuten del

coacutedigo debe realizarse con trabajo en parejas de

programadores Para tener ventajas como menor tasa de

errores mejor disentildeo etc

Propiedad colectiva del coacutedigo Cualquier programador

puede cambiar cualquier parte del coacutedigo en cualquier

instante

Integracioacuten continua Cada pieza del coacutedigo es

integrada en el sistema una vez que este listaasi el

sistema puede ser integrado y construido varias veces en

un mismo diacutea

40 horas por semana Se debe trabajar un maacuteximo de 40

horas por semana no se trabajan horas extras en dos

semanas seguidas Si esto ocurre estaacute existe un problema

porque el trabajo extra desmotiva al equipo

Cliente in-situ El cliente tiene que estar presente y

disponible todo el tiempo para el equipo este es uno de

los principales factores de eacutexito para el proyecto XP Y

asiacute guiar y disipar cualquier duda de los programadores

donde la comunicacioacuten es maacutes efectiva que la escrita

Estaacutendares de programacioacuten XP enfatiza que la

comunicacioacuten de los programadores es a traveacutes del

coacutedigo por lo que es importante que se sigan estaacutendares

de programacioacuten para mantener el coacutedigo legible

3 CONCLUCIONES

] INGENIERIacuteA DE SOFTWARE

9

INGENIERIacuteA DE SISTEMAS

Las metodologiacuteas aacutegiles ofrecen una solucioacuten casi a

medida para una gran cantidad de proyectos

La metodologiacutea XP es una de las metodologiacuteas aacutegiles maacutes

extendidas y populares ademaacutes es considerada como una

metodologiacutea posmoderna cuyas grandes capacidades se

generan a traveacutes de procesos emergentes

4 REFERENCIAS

httpwwwmetodologiasSoftcomdesarrolloagil

httpwwwwikipediacommetodologiaXP

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

10

Desarrollo de Scrum

Sergio J Guzmaacuten L Ingenieriacutea de Sistemas

Universidad San Francisco de Asiacutes

20 Octubre Esq Belisario Salinas

La Paz - Bolivia

sjguzmanusfaedubo

Resumenmdash Scrum es una metodologiacutea aacutegil de desarrollo de

proyectos que toma su nombre y principios de los estudios

realizados sobre nuevas praacutecticas de produccioacuten por

Hirotaka Takeuchi e Ikujijo Nonaka a mediados de los 80

En 1996 se definioacute por primera vez un patroacuten para aplicar

esos principios de desarrollo en ldquocampos de scrumrdquo al

software

Palabras clave mdash scrum metodologiacutea patroacuten software

sprint rol

I Que es Scrum

Scrum es una metodologiacutea aacutegil de desarrollo de proyectos

que toma su nombre y principios de los estudios

realizados sobre nuevas praacutecticas de produccioacuten por

Hirotaka Takeuchi e Ikujijo Nonaka a mediados de los 80

En 1996 se definioacute por primera vez un patroacuten para aplicar

esos principios de desarrollo en ―campos de scrum al

software

Esta fue la primera definicioacuten de un patroacuten Scrum aplicado

al software disentildeada por Jeff Sutherland y Ken Schwaber y

presentada en Object-Oriented Programming Systems

Languages amp Applications OOPSLA en 1996

II iquestCoacutemo incorporarla

La competitividad del mercado de desarrollo de Software y

la necesidad de los clientes de reducir el tiempo de

mercado obligan a las organizaciones de desarrollo de

software a ser agresivas en sus calendarios de entrega Esto

ha hecho que hayan surgido metodologiacuteas para la gestioacuten y

desarrollo de software basadas en un proceso iterativo e

incremental Su estructura estaacute basada en corto tiempo los

cuales son iteraciones de 1 a 4 semanas Scrum se usa en

proyectos de entorno complejos donde se desea obtener

resultados raacutepidos y la productividad es lo maacutes importante

En los proyectos basados en Scrum se consideran tres

roles

Duentildeo del producto Es quien determina las propiedades de

los entregables

Maestro de Scrum Administra y facilita la ejecucioacuten del

proceso

Equipo de Trabajo Trabajan en conjunto para entregar

resultados en cada sprint

Fig 1 El flujo de Scrum

Como se puede observar en medio de los participantes del

proceso no quedan claras las responsabilidades del

arquitecto de software Sin embargo como comenta

Charlie Alfred ―la arquitectura es al aceite y el filtro que

lubrica adecuadamente a Scrum

Fig 2 El flujo de Scrum

] INGENIERIacuteA DE SOFTWARE

11

INGENIERIacuteA DE SISTEMAS

Si se compara el rol del arquitecto de edificaciones con el

del arquitecto de software se puede observar que ambos

modelan las construcciones a un alto nivel de abstraccioacuten

proveen posibles soluciones mejoran la comunicacioacuten con

los miembros del equipo de construccioacuten a traveacutes de

modelos visualizan las generalidades del problema

definen los roles y las interacciones entre los componentes

de construccioacuten entre otras tareas Al igual que es

imposible pensar que un rascacielos puede ser construido

sin una arquitectura soacutelida es imposible pensar que

productos de software empresariales puedan ser

implementados sin una arquitectura bien pensada

Seguacuten Bass Clements y Kasman ―La arquitectura de

software de un programa o sistema informaacutetico es la

estructura o estructuras del sistema que incluyen elementos

de software las propiedades externamente visibles de esos

elementos y las relaciones entre ellos Esta definicioacuten nos

lleva a concluir que la arquitectura de software garantiza el

buen desarrollo del software y a tener un sistema que

cumpla con los requerimientos funcionales y no

funcionales del cliente Ademaacutes la arquitectura es clave en

la reutilizacioacuten de artefactos de software en sistemas de

liacutenea de productos de software

Viendo la importancia de la arquitectura en el desarrollo

del software en eacuteste artiacuteculo se presenta una propuesta para

gestionar la arquitectura de Software en Scrum En el

primer capiacutetulo se trata el tema de la localizacioacuten de la

arquitectura de software en el ciclo de desarrollo de Scrum

en el segundo capiacutetulo se describen las tareas del arquitecto

de software en Scrum finalmente se presentan las

conclusiones y el trabajo futuro

III Arquitectura de Software en el ciclo de desarrollo de

Scrum

La idea fundamental de la presente propuesta es adicionar

un sprint inicial llamado ―Sprint 0Prime al inicio del ciclo de

desarrollo El objetivo principal del arquitecto en el Sprint

0 es analizar y disentildear la generalidad del sistema que

satisfaga los requisitos y sea entendible por los miembros

del equipo desde sus diferentes puntos de vista durante el

desarrollo Un punto clave es reutilizar artefactos de

software creados a partir de la arquitectura para ser maacutes

aacutegiles en el desarrollo de productos especiacuteficos

El Sprint 0 comprende tres fases que fueron tomadas del

ciclo de vida de entregas evolutivas En el Sprint 0 se

construye la arquitectura de forma iterativa mediante un

anaacutelisis preliminar de los conductores arquitectoacutenicos

(requisitos funcionales de calidad y del negocio) y de un

estudio de factibilidad del proyecto No se necesita tener

todos los requisitos claros para comenzar la fase de disentildeo

arquitectoacutenico

Para determinar los conductores arquitectoacutenicos se debe

identificar los objetivos del negocio de maacutes alta prioridad

que son pocos Estos objetivos del negocio se convierten en

los escenarios de calidad o casos de uso De esta lista se

deben escoger los que tendraacuten un mayor impacto sobre la

arquitectura El disentildeo arquitectoacutenico puede comenzar una

vez que se encuentran definidos los conductores

arquitectoacutenicos El proceso de anaacutelisis de requisitos seraacute

entonces influenciado por las preguntas generadas durante

el disentildeo arquitectoacutenico

El resultado del Srpint 0 es un documento inicial que

explica la arquitectura El documento puede basarse en los

pasos definidos por el meacutetodo ADD (Attrbute Driver

Design) Este meacutetodo ha sido probado exitosamente en

proyectos anteriores Con ADD se puede definir una

arquitectura de software mediante un proceso de

descomposicioacuten basado en los atributos de calidad de

Software

El documento inicial de la arquitectura se debe avaluar con

el fin de saber si la arquitectura cumple con los requisitos

de calidad Para realizar esta evaluacioacuten se propone el

meacutetodo ATAM (Architecture Tradeoff Analysis Method)

El ATAM revela cuaacuten bien una arquitectura satisface los

objetivos particulares de calidad y provee una

aproximacioacuten de coacutemo los objetivos de calidad interactuacutean

Si la evaluacioacuten de la arquitectura se encuentra que se

deben realizar cambios a la misma entonces eacutesta se debe

refinar hasta llegar a tener como resultado del Sprint 0 el

documento puacuteblico de la arquitectura junto con el sistema

esqueleto Finalmente la arquitectura creada en el Sprint 0

beneficiaraacute el desarrollo en los siguientes sprints

IV Rol del arquitecto de Software en Scrum

El rol y actividades del arquitecto de software cambian de

enfoque dependiendo de si se estaacute en el Sprint 0 o en

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

12

sprints subsecuentes

Fig 3 La Comunicacioacuten

Sprint 0 En sistemas complejos una persona difiacutecilmente

puede cubrir con amplitud teacutecnica las decisiones

arquitectoacutenicas y dar credibilidad a la arquitectura de

software Esto quiere decir que la participacioacuten del equipo

es de vital importancia para la creacioacuten y el mantenimiento

de la arquitectura Un equipo de arquitectos de software

que se aiacutesle del equipo de Scrum puede producir una

arquitectura que corra el riesgo de ser rechazada Es por

esto que recomendamos que el arquitecto o los arquitectos

se software sean miembros del equipo de Scrum Una de

las actividades que se debe realizar en equipo es la

evaluacioacuten de la arquitectura Especiacuteficamente en el

meacutetodo ATAM se requiere la participacioacuten mutua de tres

equipos que trabajan en conjunto con los arquitectos de

software el de evaluacioacuten el de tomadores de decisiones

del proyecto y el de los involucrados en la arquitectura

Sprints subsecuentes El arquitecto de software asegura que

el equipo de Scrum entienda el enfoque y los retos

arquitectoacutenicos maacutes importantes en casa sprint Los

equipos de Scrum realizan construcciones cortas guiados

por las estrategias de la arquitectura A continuacioacuten se

nombran algunas de las responsabilidades del arquitecto de

software desde el Sprint 1 en adelante

El duentildeo del producto y el maestro del Scrum trabajan con

el arquitecto para priorizar los requisitos a implementar en

cada iteracioacuten

El arquitecto comunica las decisiones y facilita las

conversaciones arquitectoacutenicas de distintos puntos de vista

en cada sprint

El arquitecto asegura que haya conformidad entre las

entregas en cada sprint y la arquitectura

El arquitecto responde preguntas y da orientacioacuten

arquitectoacutenica cuando sea necesario

Junto con el maestro de Scrum coordina a los miembros

del equipo para adaptarse a la arquitectura previa

El arquitecto junto con el duentildeo del producto y los

miembros del equipo preparan el Product Backlog

V Conclusioacuten

En el presente artiacuteculo ofrecimos una propuesta para incluir

la arquitectura de software en Scrum En el Sprint 0 se

realizan las actividades concernientes al anaacutelisis y disentildeo

de la arquitectura de software y el sistema esqueleto En

los siguientes sprints el arquitecto de software se asegura

de que la implementacioacuten cumpla con la arquitectura

REFERENCIAS

[3] httpwwwsafecreativeorgwork

[4] Hirotaka Takeuchi es decano de la Graduate School of International

Corporate Strategy en la Universidad Hitotsubashi en Tokio y fue profesor visitante en la Escuela de Negocios Harvard entre 1989 y 1990

[5] Ikujiro NonakaNo soy un guruacute porque me falta carisma

] INGENIERIacuteA DE SOFTWARE

13

INGENIERIacuteA DE SISTEMAS

El futuro de la ingenieriacutea de software Luis E Aguirre

Ingenieriacutea de Sistemas

Universidad San Francisco de Asiacutes

20 de Octubre esq Belisario Salinas

La Paz - Bolivia leaguirreusfaedubo

Resumen El disentildeo de programas a partir de informacioacuten binaria

significoacute un paso sustantivo para la industria desarrolladora de

software Desde ese hallazgo ocurrido en la deacutecada de los

cincuenta hasta hoy el crecimiento de metodologiacuteas para su

desarrollo ha subido notablemente en complejidad Sin embargo

los ciacuterculos viciosos que acusa hoy la confeccioacuten de programas

informaacuteticos impiden conceptualizar el objeto a un nivel

superior de abstraccioacuten tal y como lo exige el avance tecnoloacutegico

y los procesos de negocios

Palabras clave mdash futuro software ingenieriacutea programador y

desarrollo

I Introduccioacuten

La calidad de los sistemas informaacuteticos satisfaccioacuten de sus

usuarios y clientes son temas ampliamente conocidos

recurrentes y de constante preocupacioacuten por parte de los

practicantes de la Ingenieriacutea de software

Esta joven y dinaacutemica ingenieriacutea siempre estaacute en busca de

mejoras en el desarrollo de sistemas aumento de

productividad del ingeniero de software mayor control del

proceso de desarrollo establecimiento de nuevos meacutetodos de

desarrollo

Fig 1 Primeros programas computacionales en formato de tarjeta perforada

Estos elementos combinados y aplicados de buena forma

logran un buen proceso de desarrollo y en definitiva un buen

producto

Identificar los pasos que ha recorrido esta ingenieriacutea analizar

su contexto actual y finalmente proyectar hacia doacutende se

dirige es el pilar de este artiacuteculo

II iquestSe aplica actualmente la ingenieriacutea del software

La investigacioacuten y el desarrollo de teacutecnicas y meacuteto

dos de ingenieriacutea del software son constantes y suelen suponer

interesantes avances en la resolucioacuten de problemas de

desarrollo de software Sin embargo es habitual que en la

praacutectica diaria profesional no se incluya praacutecticamente

ninguna de las recomendaciones maacutes elementales de la

ingenieriacutea del software En efecto es habitual que el

desarrollo de software se parezca maacutes al descontrol del cuento

de laquosi los programadores fueran albantildeilesraquo ([Novatica

1996]) que a una idiacutelica y bien organizada factoriacutea de

software (concepto de gran vigencia a finales de los ochenta

[Nunamaker et al 1988])

De hecho las evaluaciones de los procesos productivos de

software realizadas a raiacutez de los modelo de procesos de

software (por ejemplo con CMM [Paulk et al 1993])

confirman que el desarrollo de software suele estar

baacutesicamente en estado caoacutetico

Y no soacutelo en como uno podriacutea pensar pequentildeas

organizaciones de un paiacutes mediterraacuteneo como el nuestro sino

en tambieacuten en las empresas adjudicatarias de interesantes

contratos de defensa de paiacuteses laquoavanzadosraquo como EEUU o

Japoacuten Si bien estos modelos de evaluacioacuten auacuten acumulan

distintas acusaciones de rigidez o falta de contraste empiacuterico

los resultados obtenidos en sus evaluaciones resultan

consistentes con la sensacioacuten de constante laquoapagafuegosraquo que

suelen sufrir los profesionales del software Tambieacuten suelen

revelar la praacutectica despreocupacioacuten de los responsables de las

organizaciones de software por la mejora de la calidad de sus

procesos de trabajo o de sus productos bien sea por contar con

una situacioacuten interna de empresa poco propicia porque el

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

14

ambiente del mercado no fomenta la preocupacioacuten por estos

temas o bien por su poco intereacutes real en la buacutesqueda de la

calidad

III La actualidad

La gran mayoriacutea de los sistemas de software creados hoy en

diacutea son los llamados sistemas corporativos es decir son

orientados a formar una parte importante de los negocios de

las grandes empresas

Continuando en nuestro contexto se identifica un nuevo

enfoque del problema de desarrollo el apoyo en la

sincronizacioacuten de los procesos de negocio estructuras

complejas de informacioacuten manejada por el negocio todo esto

entrelazado por restricciones dadas por las reglas del negocio

La tecnologiacutea actual por otro lado ha alejado maacutes todaviacutea los

ingenieros de las maacutequinas sistemas operativos incluso de

las tareas de programacioacuten

El enfoque de la mayoriacutea de los equipos de desarrollo e

ingenieros participes en proyectos sigue siendo con un bajo

nivel de abstraccioacuten cerca de la codificacioacuten Se tiende a

pensar en la base de datos a utilizar establecer la navegacioacuten

de las paacuteginas programar los protocolos de comunicacioacuten etc

Esto lleva a utilizar las tareas de programacioacuten y de pruebas

para validar el entendimiento y cumplimiento de la

funcionalidad de los sistemas

Lo anteriormente expuesto muestra un problema

metodoloacutegico consecuencia de un desfase entre el enfoque

teoacuterico oacuteptimo (anaacutelisis de negocio) y el enfoque praacutectico real

(programacioacuten y pruebas) en los proyectos de hoy En otras

palabras la metodologiacutea actualmente usada estaacute atrasada con

respecto al avance tecnoloacutegico

Desarrollando maacutes esta idea se identifican algunos

problemas concretos de las metodologiacuteas

Ellas no obligan a sus ejecutores a respetar todas las

normas y los procedimientos establecidos especialmente

en las etapas tempranas del proyecto Es muy faacutecil y

tentador ―saltar una o maacutes de estas etapas uno o maacutes

documentos o modelos pasando directamente a

implementacioacuten produccioacuten y posterior correccioacuten de los

sistemas desarrollados

Control de calidad del producto final La codificacioacuten y

complejidad del programa es demasiada para ser revisada

y verificada fehacientemente Por otro lado los coacutedigos

fuentes y los ejecutables actualmente son los uacutenicos

entregables eficientemente verificables

Estos dos problemas al parecer forman una situacioacuten

contradictoria la metodologiacutea tradicional no permite validar

eficientemente la calidad de los sistemas antes de llegar al

coacutedigo fuente y por otro lado tampoco permite llegar

eficientemente a coacutedigos fuentes de calidad

IV Futuro

La salida de este ―ciacuterculo vicioso que se propone es

bastante natural analizar la situacioacuten actual de la ingenieriacutea

de software en la luz de sus tendencias histoacutericas

La primera de ellas relacionada con los problemas que

resuelven los sistemas obviamente presente y muy utilizada

en nuestra realidad los sistemas de hoy no soacutelo resuelven los

problemas del mundo real sino que estaacuten fuertemente influen-

ciando el desarrollo del mundo real

Fig2 Modela

El enfoque de los ingenieros desde hace unos antildeos no se ha

movido significativamente por el camino del aumento de

abstraccioacuten establecido histoacutericamente Se han hecho ciertos

avances en temas puntuales (como arquitecturas de

componentes patrones de disentildeo nuevos lenguajes de

programacioacuten etc) pero conceptualmente

metodoloacutegicamente la tarea de programacioacuten sigue siendo

ejecutada de la misma forma escribiendo coacutedigos fuentes en

forma de los programas textuales

Eacuteste es justamente el ―atraso metodoloacutegico que se

mencionoacute Para disminuir la brecha entre las tendencias

histoacutericas es necesario ajustar la metodologiacutea en teacuterminos de

aumentar la abstraccioacuten del enfoque de los ingenieros de

software y acercarlo a la abstraccioacuten del problema

El aumento de la abstraccioacuten del proceso de desarrollo del

software hace pensar que la proacutexima generacioacuten de meacutetodos

de desarrollo se perfila en un conceptualmente nuevo con-

] INGENIERIacuteA DE SOFTWARE

15

INGENIERIacuteA DE SISTEMAS

junto de herramientas que permitan aumentar en un mayor

grado al actual la abstraccioacuten escondiendo los detalles de maacutes

bajo nivel

Fig3 Probable modelo a futuro

Las nuevas herramientas permitiraacuten ―programar en nivel

de anaacutelisis generando coacutedigos en un lenguaje de

programacioacuten tradicional de forma automaacutetica tal como hoy

los compiladores generan el lenguaje maacutequina a partir del

coacutedigo fuente Nuevos ―lenguajes de programacioacuten

naturalmente seriacutean visuales y se pareceriacutean a las

especificaciones de software en uno de los lenguajes de

modelamiento por ejemplo UML

V Conclusioacuten

Es muy probable que estemos proacuteximos a ver un nuevo

paso evolutivo en la ingenieriacutea de software Tan grande como

el invento de lenguajes de alto nivel o anaacutelisis y disentildeo

orientado a objetos Una nueva generacioacuten que absorberaacute a la

actual automatizando la mayoriacutea de las buenas praacutecticas

usadas actualmente

Una pregunta natural es si una maacutequina puede llegar a

generar programas tan buenos como los hechos por un pro-

gramador experto En vez de ―romper la cabeza con esta

pregunta ahora quizaacutes seriacutea suficiente recordarse otra vez de

la historia Los primeros compiladores de ninguna generacioacuten

alcanzaban de inmediato lo deseable y oacuteptimo Sin embargo

con el paso del tiempo apoyados en la experiencia de los

ingenieros y en el avance tecnoloacutegico se mejoraban hasta el

nivel de superar significativamente las generaciones

anteriores

Es poco factible que hoy en diacutea alguien cuestione la calidad

de los compiladores de por ejemplo Java y la calidad del

coacutedigo de maacutequina generado por ellos

VI Referencias [6] Website [Online]

httpwwwenterpriseanalystnetdownloadmda_informaticap

df

[7] httpwwwslidesharenetamrrochafuturo-del-software-impacto-en-las-organizaciones-y-en-los-profesionales

[8] httpwwwdcubaareventseci2008conferenciasIngSoftHexacta

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

16

Ingenieriacutea de Software para

Desarrolladores de juegos Huascar Huanca Orozco

Ingenieria de Sistemas San francisco de Asis

Av20 de Octubre esq Belisario Salinas

hhuncausfaedubo

ResumenmdashEn este artiacuteculo veremos una lo que es ldquoIS para

Desarrolladores de juegosrdquo si crees que un juego es facil pues

te equivocas en este articulo mostramos el uso de la IS en la

cracion de juegos que metodos utilizan y la complejidad que

representa para el equipo de desarrollo

1) Palabras clave mdash UMLRequisitosjuegoequipo de trabajo motor del juego

IV INTRODUCCIOacuteN

En la ingenieriacutea de software (IS) el desarrollo

de videojuegos es uacutenico pero similares a los

esfuerzos de software Es la uacutenica que combina el

trabajo de los equipos que cubren muacuteltiples

disciplinas (arte muacutesica actuacioacuten

programacioacuten etc) y que el juego de

acoplamiento que se busca a traveacutes del uso de

prototipos e iteraciones Con ello el desarrollo

del juego se enfrenta a desafiacuteos que pueden ser

abordadas mediante las praacutecticas tradicionales de

SE La industria tiene que adoptar buenas

praacutecticas de SE para sus distintas necesidades

tales como la gestioacuten de activos multimedia y

encontrar el fundamento en el juego La industria

debe asumir los retos por la evolucioacuten de los

meacutetodos de SE para satisfacer sus necesidades

Este trabajo investiga estos desafiacuteos y praacutecticas

de ingenieriacutea destaca para mitigar estos

problemas

V ENTRA EN EL JUEGO

Lo que la IS para desarrolladores de juegos hace

es

Mezcla de ingenieriacutea y el arte El software como

una praacutectica como una preocupacioacuten profesional

Meacutetodos para aprender a disentildear y fabricar un

producto El desarrollo del personaje e ingenieriacutea

de software Estrategias para hacer el mejor uso

de la ingenieriacutea del conocimiento formalizado El

aprendizaje de las habilidades que se pueden

aplicar en cualquier lugar

VI REQUISITOS

Esta parte ofrece una visioacuten general de los

conceptos y herramientas necesarias para la

obtencioacuten de requisitos

IDENTIFICAR LO QUE SE CONSIDERA UN REQUISITO DE SOFTWARE

ESTABLECER LOS CRITERIOS PARA DAR SENTIDO A LOS REQUISITOS Y LA

ESCRITURA DETERMINAR LA MANERA DE REUNIR LOS REQUISITOS O DESCUBRIR

EXPLORAR COacuteMO EMPLEAR CASOS DE USO PARA PERFECCIONAR Y

ANALIZAR LAS NECESIDADES ENCONTRAR TEacuteCNICAS PARA CONFIRMAR QUE LOS REQUISITOS ESTEacuteN

COMPLETOS

VERIFICAR LA EXACTITUD DE LOS REQUISITOS TRACE CAMBIOS EN LOS REQUISITOS

VII PROGRAMADOR DEL MOTOR DEL JUEGO

Fig 1 Juego RPG

] INGENIERIacuteA DE SOFTWARE

17

INGENIERIacuteA DE SISTEMAS

Los programadores de juegos motores crear el

motor de base del juego incluyendo la fiacutesica de

simulacioacuten y disciplinas graacuteficas

A Fiacutesica del motor del programador

Programador de un juego de la fiacutesica se dedica

al desarrollo de las fiacutesica de un juego se emplean

Por lo general un juego de soacutelo simular algunos

aspectos de la fiacutesica del mundo real Por ejemplo

un juego de espacio puede necesitar simulada

gravedad pero no tendriacutea ninguna necesidad

para simular agua viscosidad

Para un juego de rol como World of Warcraft

soacutelo un programador de la fiacutesica puede ser

necesaria Para un juego de combate complejo

como Battlefield 1942 los equipos de

programadores de la fiacutesica pueden ser necesarias

B motor de graacuteficos del programador

A pesar de todos los programadores antildeadir

tanto los contenidos y la experiencia que ofrece

un juego un programador de juego se centra maacutes

en la estrategia de un juego la aplicacioacuten de la

mecaacutenica del juego y la loacutegica y la sensacioacuten

de un juego

Esto no suele ser una disciplina independiente

como lo que este programador es por lo general

se diferencia de un juego a otro y que

inevitablemente se veraacute involucrado con las aacutereas

maacutes especializadas de desarrollo del juego como

los graacuteficos o el sonido

VIII EQUIPO DE TRABAJO

Fig 2 Grupo de trabajo

Un equipo de desarrollo en una organizacioacuten de

ingenieriacutea de software se compone de un grupo

de personas que trabajan en funciones

especializadas para lograr un objetivo comuacuten El

objetivo es la realizacioacuten de un proyecto Un

proyecto se define como un esfuerzo temporal

emprendido para crear un producto uacutenico

servicio o resultado

Aquiacute una pequentildea lista incompleta de algunos de

los componentes de un equipo de trabajo para

Desarrollo de juegos

Analista de requerimientos recopilar y analizar

los requisitos para el software

Arquitecto de software determinar la mejor

arquitectura para el software Seleccionar

Los componentes del proveedor para su inclusioacuten

en el esfuerzo de desarrollo

Disentildeador de software acotar el software para

lograr un rendimiento y otros

Objetivos

Prueba de software probador del software para

garantizar que funcione de acuerdo a la

Requisitos

Programador senior desarrollar bajo nivel de

documentacioacuten de disentildeo sirven como una

tecno-

Ventaja teacutecnica para los demaacutes e implementar el

software de acuerdo

Para el disentildeo

Programador implementar el software de acuerdo

al disentildeo

Trabajos de mantenimiento en el programador de

software creado durante el desarrollo anterior

Los esfuerzos para agregar funcionalidad o

eliminar errores de trabajo con

Atencioacuten al cliente

IX LENGUAJE UNIFICADO DE MODELADO (UML)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

18

Tomando en cuenta que el UML es un estaacutendar

muy flexible Nos da razoacuten que podemos pensar

en el diagrama

como herramientas que permiten realizar

diferentes tipos de trabajo Para revisar un poco

Use un diagrama de casos de uso para reunir y estudiar los requisitos para los propoacutesitos de disentildeo o pruebas

Use un diagrama de actividades para explorar los escenarios de casos de uso

Use un diagrama de clases para identificar las clases y ver coacutemo las

clases se relacionan entre siacute Use un diagrama de objetos para ver coacutemo un objeto se comunica con

otro

Use un diagrama de estado para explorar los atributos de cambio de objeto

Use un diagrama de secuencia para explorar a fondo un caso de uso

mediante el trazado de la orden en el que los objetos enviar mensajes a siacute mismos o entre siacute

Use un diagrama de colaboracioacuten para ver la loacutegica del sistema y la

forma en que los objetos envian mensajes entre siacute Use un diagrama de componentes para explorar y si existen los

subsistemas dentro de su juego

Use un diagrama de implementacioacuten para encontrar la manera de

configurar el paquete de instalacioacuten para su juego

X CONCLUSIONES

El desarrollo de los juegos se han vueltos mas

complejos con el pasar del tiempo y para el

desarrollo de un juego que este a la vanguardia

de la competencia se debe trabajar con la IS es

una forma eficaz de conseguir un juego de

calidad internacional

Referencias [9] Software Engineering for Game Developers by john P Flynt with Omar

Salem [10] httpieeexploreieeeorgxplloginjsptp=amparnumber=5070627ampurl=http

3A2F2Fieeexploreieeeorg2Fiel52F50705742F50705752F05

070627pdf3Farnumber

[11] httpgamedevstackexchangecomquestions19934abstract-game-engine-design

] INGENIERIacuteA DE SOFTWARE

19

INGENIERIacuteA DE SISTEMAS

Estrategias de Prueba del Software Miguel Angel Callisaya Quispe Universidad San Francisco de Asiacutes Av 20 de Octubre La Paz Bolivia

maccc19hotmailcom

Resumen Una estrategia de software es un mecanismo que

proporciona una guiacutea o base pasa ver la forma como se debe

desarrollar la aplicacioacuten en cuanto a meacutetodos esfuerzo

tiempo y recursos que son necesarios para lograr un producto

exitoso

La frecuencia con las que realicen las pruebas es de gran

importancia ya que de estaacute manera se pueda la en encontrar

los errores antes de que se conviertan en errores para la

aplicacioacuten si no se lleva un orden de aplicacioacuten de las pruebas

se va a perder tiempo recurso y sobre todo esfuerzo

Durante las primeras etapas de las pruebas es importante

concentrar toda la atencioacuten en un pequentildeo grupo de

componentes o en un componente que se considere importante

para el desarrollo tanto en los datos como en la parte loacutegica de

la aplicacioacuten

El objetivo final de las estrategias de prueba es documentar la

forma en el que equipo ha hecho el desarrollo y el seguimiento

que se le ha hecho a cada una de las etapas durante las etapas

de desarrollo e implementacioacuten

Palabras clave Calidad Prueba Estrategias Sistema

I INTRODUCCIOacuteN

Durante este articulo es importante mencionar algunos

aspectos que determinan el eacutexito de la aplicacioacuten de las

estrategias de prueba como lo son el enfoque estrateacutegico

para la prueba de software aspectos estrateacutegicos

estrategias de prueba para software convencional

estrategias de prueba para software orientado a objeto

estrategia de prueba para webapps pruebas de validacioacuten y

por uacuteltimo las pruebas del sistema

IIESTRATEGIAS DE PRUEBA DEL SOFTWARE

Verificacioacuten Estamos construyendo el producto

correctamente

Validacioacuten Estamos construyendo el producto correcto

Integracioacuten descendente

La integracioacuten descendente es un planteamiento

incremental a la construccioacuten de la estructura de programas

Se integran los moacutedulos movieacutendose hacia abajo por la

jerarquiacutea de control comenzando por el moacutedulo de control

principal (programa principal) Los moacutedulos subordinados

(de cualquier modo subordinados) al moacutedulo de control

principal se van incorporando en la estructura bien de

forma primero-en-profundidad o bien de forma primero-en-

anchura Fig1

Integracioacuten ascendente

La prueba de la integracioacuten ascendente como su nombre

indica empieza la construccioacuten y la prueba con los

moacutedulos atoacutemicos (es decir moacutedulos de los niveles maacutes

bajos de la estructura del programa) Dado que los moacutedulos

se integran de abajo hacia arriba el proceso requerido de

los moacutedulos subordinados a un nivel dado siempre estaacuten

disponibles y se elimina la necesidad de resguardos Fig2

Fig 1 Integracioacuten descendente

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

20

Fig 3 Integracioacuten Ascendente

Aspectos Estrateacutegicos

Tom Gilb plantea que se deben abordar los

siguientes puntos si se desea implementar con

eacutexito una estrategia de prueba del software

Especificar los requisitos del producto de manera

cuantificable mucho antes de que comiencen las pruebas

-Establecer los objetivos de la prueba de manera expliacutecita (teacuterminos

medibles)

-Comprender queacute usuarios va a tener el software y desarrollar un perfil

-Desarrollar un plan de prueba que haga hincapieacute en la prueba de ciclo

raacutepido

-Construir un software ―robusto disentildeado para probarse a siacute mismo

-Usar revisiones teacutecnicas formales efectivas como filtro antes de la

prueba

Llevar a cabo revisiones teacutecnicas formales para evaluar la

estrategia de prueba y los propios casos de prueba

Desarrollar un enfoque de mejora continua al proceso de

prueba Deberiacutea medirse la estrategia de prueba

Prueba de Unidad

La prueba de unidad centra el proceso de

verificacioacuten en la menor unidad del disentildeo del

software el moacutedulo La prueba de unidad siempre

esta orientada a caja blanca y este paso se suele

llevar a cabo en paralelo para muacuteltiples moacutedulos

Pruebas de Alfa y Beta

C u a n d o s e c o n s t r u y e s o f t w a r e a m e d i d a s e

l l e v a n a c a b o u n a s e r i e d e p r u e b a s d e

a c e p t a c i oacute n p a r a permitir que el cliente valide todos

los requisitos La prueba alfa se lleva a cabo en el

lugar del desarrollo pero por un cliente Se usa el

software en forma normal con el desarrollador como

observador del usuario y registrando los errores y

problemas de uso(entorno controlado)La prueba beta se

lleva a cabo por los usuarios finales en los lugares

de trabajo de los clientes El cliente registra los

problemas y los informa a intervalos regulare

Pruebas del sistema

La prueba del sistema estaacute constituida por una

serie de pruebas diferentes cuyo propoacutesito es

ejercitar profundamente el sistema

Prueba de recuperacioacuten

E s l a p r u e b a d e l s i s t e m a q u e f u e r z a a l

f a l l o d e l s o f t w a r e d e m u c h a s f o r m a s y

v e r i f i c a q u e l a recuperacioacuten se lleva a cabo

apropiadamente Recuperacioacuten automaacutetica o manual

Prueba de seguridad

Intenta verificar que los mecanismos de proteccioacuten

incorporados en el sistema lo protegeraacute de hecho de

accesos impropios

Pruebas de Resistencia

Estaacuten disentildeadas para enfrentar a los programas con

situaciones anormales Una variante de la prueba de

resistencia es una teacutecnica denominada prueba de

sensibilidad intenta descubrir combinaciones de datos

dentro de una clase de entrada valida que pueda producir

inestabilidad o un proceso incorrecto

El arte de la depuracioacuten

La depuracioacuten ocurre como consecuencia de una

prueba efectiva Cuando un caso de prueba

descubre u n e r r o r l a d e p u r a c i oacute n e s e l

p r o c e s o q u e p r o v o c a l a e l i m i n a c i oacute n d e l

e r r o r E l p r o c e s o m e n t a l q u e conecta un siacutentoma

con una causa es la depuracioacuten

El proceso de la depuracioacuten

E l p r o c e s o d e d e p u r a c i oacute n i n t e n t a h a c e r

c o r r e s p o n d e r e l s iacute n t o m a c o n u n a c a u s a

l l e v a n d o a s iacute a l a correccioacuten del error El proceso de

depuracioacuten siempre tiene uno de los dos resultados

siguientes

(1)se encuentra la causa se corrige y se elimina

o

(2)no se encuentra la causa En eacuteste uacuteltimo caso la persona

que realiza la depuracioacuten debe sospechar la causa disentildear

un caso de prueba que ayude a confirmar sus sospechas y el

trabajo vuelve hacia atraacutes a la correccioacuten del error de una

forma iterativa iquestPor queacute es tan difiacutecil la depuracioacuten

Varias caracteriacutesticas de los errores nos dan algunas

] INGENIERIacuteA DE SOFTWARE

21

INGENIERIacuteA DE SISTEMAS

pistas1El siacutentoma y la causa pueden ser

geograacuteficamente remotos entre siacute2El siacutentoma

puede desaparecer (temporalmente) al corregir

otro error

3 E l s iacute n t o m a p u e d e r e a l m e n t e e s t a r

p r o d u c i d o p o r a l g o q u e n o e s u n e r r o r

( i n e x a c t i t u d d e l o s redondeos)

4El siacutentoma puede estar causado por un error

humano que no sea faacutecilmente detectado

5El siacutentoma puede ser el resultado de problemas

de temporizacioacuten en vez de problema s de proceso

6Puede ser difiacutecil reproducir exactamente las

condiciones de entrada

7 E l s iacute n t o m a p u e d e a p a r e c e r e n f o r m a

i n t e r m i t e n t e

8 E l s iacute n t o m a p u e d e s e r d e b i d o a c a u s a s q u e

s e d i s t r i b u y e n p o r u n a s e r i e d e t a r e a s

e j e c u t aacute n d o s e e n diferentes procesadores

IIICONCLUCIONES

Las estrategias de prueba del software es un mecanismo

que proporciona una guiacutea o base pasa ver la forma como se

debe desarrollar la aplicacioacuten en cuanto a meacutetodos para

logra un producto exitoso

IVREFERENCIAS

httpbuenastareascomensayosEstategias-de-prueba-de-

software3752643html

httpwwwestrategiascompruebaagil

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

22

Ingenieriacutea Inversa Juan Carlos Zenteno Sanga

1

Departamento de Ingenieriacutea de Sistemas Universidad San Francisco de Asiacutes

Direccioacuten Incluyendo el Paiacutes 1juanka_58hotmailcom

Resumenmdash La ingenieriacutea de Software es parte del modelo de

proceso de reingenieriacutea de software es el proceso de analizar

un programa con la finalidad de crear una representacioacuten del

programa en un grado mayor de abstraccioacuten del coacutedigo

fuente las herramientas de ingenieriacutea inversa obtienen

informacioacuten del disentildeo de datos arquitectoacutenico y de

procedimientos a partir de un programa existente

En el siguiente artiacuteculo se veraacuten los conceptos baacutesicos y se

denotara un ejemplo praacutectico para una mayor comprensioacuten

del tema

Palabras clave mdash Ingenieriacutea de Software Reingenieriacutea

Linux Ingenieriacutea Inversa

XI INTRODUCCIOacuteN

Inmersa en el aacuterea de conocimiento de la

ingenieriacutea de software se encuentra la ingenieriacutea

inversa como punto de apoyo para los procesos

de anaacutelisis y disentildeo propuestos en diferentes

meacutetodos de desarrollo

La ingenieriacutea inversa permite subsanar esta

deficiencia al documentar los productos de

software a partir del coacutedigo ejecutable con el fin

de obtener los artefactos de anaacutelisis y disentildeo

La ingenieriacutea inversa es ademaacutes una

herramienta uacutetil que ayuda en el proceso de

aseguramiento de la calidad del software

mediante la comparacioacuten de diagramas de fases

de anaacutelisis y desarrollo se apoya comuacutenmente en

la generacioacuten del diagrama de clases debido a la

importancia de este diagrama en la fase de disentildeo

y su facilidad de generacioacuten Existen tambieacuten

otros diagramas de intereacutes como el de

comunicacioacuten y el de secuencias que modelan

las caracteriacutesticas dinaacutemicas de un producto de

software

Hoy en diacutea los productos maacutes comuacutenmente

sometidos a la Ingenieriacutea Inversa son los

productos de Hardware y Software pero

cualquier producto puede ser sometido a este

proceso

Aplicar ingenieriacutea Inversa a algo supone

profundizar el estudio de su funcionamiento

En el caso concreto del Software se conoce

por ingenieriacutea de software a la actividad que se

ocupa de describir coacutemo funciona un programa

de cuyo coacutedigo no se dispone hasta el punto de

generar coacutedigo propio que cumpla con las

mismas funciones Un ejemplo claacutesico del uso de

esta teacutecnica es el software de pago donde las

empresas utilizan esta teacutecnica para proteger sus

productos contra posibles acceso no autorizados

o examinar el producto final para encontrar

posibles bugs inesperados en la ejecucioacuten de

dicho sistema

Existe una gran variedad de software

desensamblador y depurador para aplicar esta

teacutecnica

En resumen la idea general al aplicar

ingenieriacutea inversa es

Conocer a fondo la aplicacioacuten y generar un

mejor coacutedigo

Migrar la aplicacioacuten a un nuevo sistema operativo

Hacer o completar la documentacioacuten

] INGENIERIacuteA DE SOFTWARE

23

INGENIERIacuteA DE SISTEMAS

Verificar que el coacutedigo en estudio cumple las

especificaciones del disentildeo estaacutendar

La informacioacuten extraiacuteda de la lectura del

coacutedigo fuente son las especificaciones de disentildeo

modelos de flujo de control diagramas de disentildeo

documentos de especificacioacuten de disentildeo

pudiendo tomarse estas especificaciones como

nuevo punto de partida para aplicar ingenieriacutea

inversa y obtener informacioacuten a mayor nivel de

abstraccioacuten

Dado que es una labor estrateacutegica es

conveniente conocer cuando conviene realizar la

tarea de Ingenieriacutea inversa para una aplicacioacuten y

cuaacutendo es maacutes rentable sustituirla e implementar

una nueva Las aplicaciones para el primer paso

son aquellas en la que se produce las siguientes

situaciones

bull Fallos frecuentes que son difiacuteciles de

localizar

bull Son poco eficientes pero realizan la funcioacuten

esperada

bull Dificultades en la integracioacuten con otros

sistemas

bull Calidad pobre del software final

bull Resistencia a introducir cambios

bull Pocas personas capacitadas para realizar

modificaciones

bull Dificultades para realizar pruebas

bull El mantenimiento consume muchos recursos

XII LAS BASES DE LA INGENIERIA INVERSA

Los ejemplos maacutes trascendentes sobre los

inicios de la ingenieriacutea inversa son claramente las

investigaciones realizadas sobre antiguos

artefactos creados por humanos ancestrales con

el fin de descubrir la manera en que funcionaban

Uno de los maacutes conocidos es el llamado

mecanismo de Antikythera (Fig 1) el cual se

piensa que fue disentildeado para fines astronoacutemicos

por los griegos siendo uno de los primeros

artefactos que funcionaban con ruedas de

engranes

Figura 1 Antikythera (mecanismo presuntamente creado para fines astronoacutemicos)

Podemos entonces implantar un paralelo en aquella

mitoloacutegica buacutesqueda de descubrimiento sobre el

funcionamiento de esos artefactos y la ingenieriacutea inversa

actual usada en ingenieriacutea de software estableciendo un

importante factor en comuacuten la falta de documentacioacuten En

este ambiente es muy comuacuten contar con una especie de caja

negra en donde sabemos lo que ingresamos y el resultado

que obtenemos pero desconocemos el procedimiento con la

precisioacuten que necesitariacuteamos para replicarlo

Esta falta de documentacioacuten es el impulso

principal de toda la ingenieriacutea inversa las

finalidades de la misma pueden variar pero este

factor inicial nunca lo haraacute

XIII INGENIERIA INVERSA COMO UN PROCESO DE

REINGENIERIA

La ingenieriacutea inversa tiene la misioacuten de

desentrantildear los misterios y secretos de los

sistemas en uso

Baacutesicamente recupera el disentildeo de la

aplicacioacuten a partir del coacutedigo esto se realiza

mediante herramientas que extraen la

informacioacuten de los datos procedimientos y

arquitecturas del sistema

Es aplicable a sistemas con las siguientes

caracteriacutesticas

Documentacioacuten inexistente o totalmente obsoleta

Programacioacuten en bloque de coacutedigos muy grandes

yo sin estructural

La aplicacioacuten cubre gran parte de los requisitos

y el rendimiento esperado

A Nivel de abstraccioacuten

El nivel de Abstraccioacuten de un proceso de

Ingenieriacutea Inversa y las herramientas que se

utilizan para realizarlo aluden la sofisticacioacuten de

la informacioacuten de disentildeo que se puede extraer del

coacutedigo fuente Este proceso deberiacutea ser capaz de

derivar

Sus representaciones de disentildeo de procedimiento

(con un bajo nivel de abstraccioacuten)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

24

La informacioacuten de las estructuras de datos de

procedimiento (con un nivel de abstraccioacuten

ligeramente maacutes elevado)

Modelos de flujo de datos de control (un nivel de

abstraccioacuten relativamente alto)

Modelos de entidades y de relaciones (un elevado

nivel de abstraccioacuten)

B Completitud

En la mayoriacutea de los casos la completitud

decrece a medida que aumenta el grado de

abstraccioacuten

La completitud mejora en proporcioacuten directa a

la cantidad de anaacutelisis efectuado por la persona

que estaacute efectuando la ingenieriacutea inversa

C Interactividad

La interactividad alude al grado con el cual el

ser humano se integra con las herramientas

automatizadas para crear un proceso de

ingenieriacutea inversa efectivo

D Proceso

El Proceso de ingenieriacutea inversa (Fig 2) es el encargado

de reestructurar el coacutedigo fuente para que solamente

contenga instrucciones de programacioacuten estructurada Lo

que hace que el coacutedigo sea maacutes faacutecil de leer y proporciona

la base para las subsiguientes actividades de ingenieriacutea

inversa

Figura 2 Diagrama de Proceso de la Ingenieriacutea Inversa

E Reestructuracioacuten

La reestructuracioacuten del software modifica el

coacutedigo fuente y los datos en un intento adecuado

a futuros cambios esta no modifica la

arquitectura global del programa Tiene a

centrarse en los detalles de disentildeo de moacutedulos

individuales y en estructuras de datos locales

definidas dentro de los moacutedulos

Estos son algunos de los beneficios que se

pueden lograr cuando se reestructura el software

Programas de mayor calidad

Reduce el esfuerzo requerido para llevar a cabo

las actividades de mantenimiento

Hace el software maacutes sencillo para comprobar y

depurar

F Re documentacioacuten

Es el proceso mediante el cual se produce

documentacioacuten retroactivamente desde un

sistema existente

Es considerada una forma de ingenieriacutea inversa

porque la documentacioacuten reconstruida es usada

para ayudar al conocimiento del programa

XIV UTILIZANDO EL METODO CIENTIFICO EN LA

INGENIERIA INVERSA

Ante cualquier dificultad tecnoloacutegica el

meacutetodo cientiacutefico siempre es y seraacute nuestra maacutes

preciada arma Partamos imaginando un pequentildeo

dilema relacionado con el tema de ingenieriacutea de

software especiacuteficamente con un sencillo

programa (Fig 3)

Figura 3 Pantalla de aplicacioacuten que nos serviraacute de ejemplo

Esta sencilla aplicacioacuten mostraraacute un mensaje con cierto

resultado y aun siendo un problema demasiado sencillo

para considerarlo como un reto el objetivo es soacutelo describir

] INGENIERIacuteA DE SOFTWARE

25

INGENIERIacuteA DE SISTEMAS

las acciones usuales del proceso las cuales son aplicables

en escalas muy superiores

El resultado mostrado por el programa dentro del mensaje

emergente se basa en nuestra entrada pero nosotros

desconocemos en lo absoluto los procedimientos utilizados

sobre esta entrada para producir aquella respuesta

A La Observacioacuten es Trascendental

Primero es importante observar el problema su

comportamiento Es substancial tratar de lograr

un pensamiento inductivo en donde logremos

identificar el principio particular del problema

para poder llegar a extrapolarlo a una solucioacuten

general

El punto de quiebre se produce en este instante

Ya al haber observado la aplicacioacuten podriacuteamos

decidir procesar los datos que nos entrega y

lograr crear un coacutedigo equivalente o investigar el

funcionamiento interno

B Dentro de la aplicacioacuten

Luego de la formulacioacuten de una hipoacutetesis sobre

su funcionamiento necesitamos algunas

herramientas para comenzar con la investigacioacuten

En el caso de esta aplicacioacuten con un poco de

conocimientos del lenguaje ensamblador de

programacioacuten tradicional y un descompilador es

suficiente

Es importante emprender de buena forma

nuestro sondeo ser ordenados y metoacutedicos en la

tarea En este momento las capacidades analiacuteticas

y loacutegicas son muy importantes para alivianar

nuestra faena

Lo fundamental es conocer muy bien el

entorno en que nos desenvolveremos En este es

punto indispensable saber que una aplicacioacuten

para Windows necesita invocar internamente al

punto de entrada MessageBox o MessageBoxEx

de la libreriacutea de sistema user32dll para poder

desplegar un mensaje (Fig 4)

Figura 4 Resultado de la Aplicacioacuten

Ya con esa pista es sencillo encontrar el

fragmento de coacutedigo relacionado con las

operaciones relacionadas a nuestro nuacutemero de

entrada que tendriacutea una forma similar a la

mostrada a continuacioacuten en nuestro

descompilador (Fig 5)

Figura 5 Vista del Programa en Ensamblador

Cualquier programador intuiriacutea faacutecilmente lo

que hacen las liacuteneas superiores de esta aplicacioacuten

en especial sprintf es parte de la libreriacutea estaacutendar

de C++ Claramente vemos tambieacuten el tiacutetulo de la

ventana en el coacutedigo estos valores son

interpretados de forma inteligente por este

descompilador en especial y en particular nos

asiste de sobremanera a comprender el coacutedigo

Lo siguiente es sencillamente explorar paso a

paso las acciones superiores de caacutelculo del

resultado En esta instancia seraacute ideal realizar

numerosas pruebas para estar completamente

seguros de que logramos develar el secreto tras la

funcionalidad objetivo (Fig 6)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

26

Figura 6 Inicio del coacutedigo al que aplicaremos ingenieriacutea inversa

Hay que detenerse algunos segundos a

individualizar algunos procedimientos del

anaacutelisis que a simple vista pueden parecer

inconcebibles con el fin de poder generar una

tesis concluyente

Cabe destacar que se omitiraacuten pasos

intermedios de asignaciones de memoria y otros

formalismos propios de ensamblador para

favorecer el entendimiento del lector

Inicialmente tenemos el valor de entrada

supuestamente ya leiacutedo desde el cuadro de

diaacutelogo del programa ahora nos enfocamos en la

primera accioacuten importante Asumiremos el valor

de entrada como una incoacutegnita

En el siguiente trozo de coacutedigo la liacutenea

destacada antildeadioacute siete a nuestra incoacutegnita (Fig 7)

Figura 7 Coacutedigo donde se denota la adicioacuten de 7 a nuestra ecuacioacuten

A continuacioacuten se multiplica ese valor

resultante de la suma por el mismo (Fig 8)

Figura 8 Coacutedigo donde se denota la multiplicacioacuten del valor por la suma

Nuevamente multiplicamos el resultado por el

anterior proporcionado tras la suma En esta

segunda vez ya podemos expresar la operacioacuten

simplemente elevando al cubo la suma anterior

(Fig 9)

Figura 9 Coacutedigo que denota una nueva multiplicacioacuten del resultante

Ahora le restamos diez al resultado

El procedimiento que viene a continuacioacuten

propone un mayor desafiacuteo intelectual Un nuacutemero

constante en este caso el cargado al registro

EAX (Fig 10)

Figura 10 ubicacioacuten del nuacutemero constante EAX

Generalmente la divisioacuten es algo maacutes costosa

en tiempo de procesador que otras operaciones

por lo que ciertos compiladores incluyen tablas

de constantes las cuales son llamadas ―nuacutemeros

maacutegicos para la divisioacuten entera

d Con signo Sin signo

m (hex) s m (hex) a s

-5 99999999 1

-3 55555555 1

-2k 7FFFFFFF k-

1

1 mdash mdash 0 1 0

2k 80000001 k-

1 232-k 0 0

3 55555556 0 AAAAAAAB 0 1

5 66666667 1 CCCCCCCD 0 2

6 2AAAAAAB 0 AAAAAAAB 0 2

7 92492493 2 24924925 1 3

9 38E38E39 1 38E38E39 0 1

10 66666667 2 CCCCCCCD 0 3

11 2E8BA2E9 1 BA2E8BA3 0 3

] INGENIERIacuteA DE SOFTWARE

27

INGENIERIacuteA DE SISTEMAS

12 2AAAAAAB 1 AAAAAAAB 0 3

25 51EB851F 3 51EB851F 0 3

125 10624DD3 3 10624DD3 0 3

Tabla 1 Algunos nuacutemeros maacutegicos (32 bits)

Ahora bien conociendo la tabla 1 sabiendo

que el nuacutemero cargado en esta ocasioacuten

corresponde al once lo que hace el coacutedigo es

multiplicar el resultado de la salida temporal por

aquel nuacutemero (Fig 11)

Figura 11 Multiplicacioacuten del resultante por el numero 11

Naturalmente la multiplicacioacuten por un nuacutemero

tan grande produce una especie de

desbordamiento en el registro contenedor del

resultado al exceder el tamantildeo de palabra del

procesador (en este caso de 32 bits) Estos bits

sobrantes se almacenan naturalmente en el

registro EDX registro que es contiguo a ECX

dentro de la memoria de los registros del

procesador

Ahora desplazamos un bit del registro EDX

(equivalente a una divisioacuten entera por dos) para

obtener la solucioacuten de la divisioacuten por once

generando una sencilla ecuacioacuten

Figura 12 Desplazamiento del bit de registro EDX

El uacuteltimo paso luego de documentar estos

resultados seraacute crear una aplicacioacuten que recree

esta foacutermula soacutelo en caso de tener intenciones de

re-codificacioacuten del desarrollo Consumando este

punto es sencillo confeccionar un diagrama con

todo el proceso anteriormente visto

XV CONCLUSIONES

Queda claro que el tema de la ingenieriacutea

inversa es uno de los toacutepicos maacutes interesantes a

los que podriacutea afrontarse un profesional de la

tecnologiacutea y en general disfrutar el largo proceso

involucrado gracias al desafiacuteo poco predecible

que presenta

En general podemos darnos cuenta de que no

existen muchas metodologiacuteas y teoriacuteas estrictas

sobre coacutemo aplicar las teacutecnicas de ingenieriacutea

inversa Afortunadamente un ingeniero estaacute

preparado para afrentar desafiacuteos de este tipo

Adicionalmente podemos deducir tambieacuten el

aspecto bidireccional de la ingenieriacutea inversa

pues como ya lo comprobamos no solo es un

desafiacuteo aplicarla sino que tambieacuten lo es tener que

dificultar el proceso o incluso tratar de impedirlo

si la situacioacuten lo requiere

REFERENCIAS

[12] Roger Pressman Ingenieriacutea de Software ―Un Enfoque Moderno 6th ed

MC Graw Hill [13] httpeswikipediaorgwikiIngenieria_inversa

[14] httpwwwinfosecwritersconntext_resourcespdfsoftware_security_and_r

everse_engineeringpdf [15] httperwinriedclmodo=visorampelemento=239

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

28

METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO Univ Alejandro Meacutendez Escobar

Universidad San Francisco de Asiacutes

Ingenieriacutea de Sistemas

Ingenieriacutea de Software I

La Paz - Bolivia

amendezusfaedubo

Resumenmdash Al adquirir el software educativo dentro del campo de

desarrollo de software una gran importancia y siendo este

inspiracioacuten de propuestas de innumerables metodologiacuteas que buscan

la elaboracioacuten de un software de calidad

Tomaremos la metodologiacutea Aacutencora enfocada a la fase de

requerimientos y que ofrece elementos que indican las actividades

que deben realizarse los artefactos que se producen y la forma de

obtenerlos

Usando al desarrollo de software educativo como ejemplo de una

mejor comprensioacuten de dicha metodologiacutea analizando la aplicacioacuten

del Aacutencora en un trabajo propuesto para el Instituto Tecnoloacutegico de

Orizaba Meacutexico

Palabras clave mdash Aacutencora Metodologiacutea Desarrollo de Software

Educativo Requerimientos Calidad

XVI INTRODUCCIOacuteN

Hoy en diacutea la tecnologiacutea esta dentro de las

actividades que realizamos es asiacute que la educacioacuten no

queda exenta de ella por o cual es necesario adaptarse

al movimiento tecnoloacutegico que nos trae grandes

ventajas en la transmisioacuten de conocimientos de una

manera sencilla y dinaacutemica

De esta manera han surgido infinidad de

metodologiacuteas de desarrollo de software educativo el

cual tiene como objetivo ser el apoyo para docentes

alumnos y toda persona que este dentro del proceso de

aprendizaje

Tomando en cuenta este ramillete infinito de

metodologiacuteas surge en el ejemplo propuesto la

adaptacioacuten del Aacutencora en el desarrollo de software

educativo teniendo como objetivo principal la

comprensioacuten de los elementos y conceptos de la

metodologiacutea Aacutencora

Aacutencora es una metodologiacutea enfocada a la

adquisicioacuten de requerimientos para software que

ofrece guiacuteas y elementos de apoyo para la obtencioacuten de

estos requerimientos Al mismo tiempo permite pasar a

la fase de disentildeo de manera sencilla Aprovechando las

ventajas que presenta Aacutencora se le hicieron algunas

adaptaciones con el fin de cubrir algunas

caracteriacutesticas del disentildeo instruccional y enriquecer

Aacutencora habilitaacutendola para la adquisicioacuten de

requerimientos de software educativo

XVII APLICACIOacuteN DE LA METODOLOGIacuteA AacuteNCORA

Como es el objetivo principal la comprensioacuten de la

aplicacioacuten de la metodologiacutea Aacutencora dentro del

desarrollo de software educativo de calidad solo

describiremos los meacutetodos del meacutetodo y los resultados

obtenidos

Claro esta que para ahondar maacutes en tema del

software educativo en si el lector puede recurrir a los

siguientes autores Metodologiacutea de desarrollo de

sistemas multimedia (Vaughan 2006) Propuesta de

metodologiacutea para el disentildeo desarrollo y evaluacioacuten

de software educativo (Reyes 2009) Ingenieriacutea de

software educativo con modelaje orientado por objetos

(Goacutemez 1998) asi como tambieacuten los siguientes

modelos ADDIE (Anaacutelisis Disentildeo Desarrollo

Implantacioacuten y Evaluacioacuten) de (McGriff 2000) y el

disentildeo instruccional aplicado al desarrollo de software

educativo EISE (Especificacioacuten Instruccional de

Software Educativo) de (Hernaacutendez 2005)

] INGENIERIacuteA DE SOFTWARE

29

INGENIERIacuteA DE SISTEMAS

Quienes tienen el mismo objetivo de crear software

educativo de calidad podemos sintetizar de ellos los

siguientes puntos

Anaacutelisis del puacuteblico al que se dirigiraacute el software

Problema oacute necesidad educativa a atender

Anaacutelisis de contenido (Tema a tratar actividades

para alcanzar el objetivo de ensentildeanza y forma de

evaluarlo)

Actividades oacute forma actual de llevar a cabo la

ensentildeanza del tema en cuestioacuten

Elaboracioacuten de guiones metaacuteforas escenarios

Creacioacuten de prototipo oacute Storyboard

Disentildeo de interfaz

Mapas de navegacioacuten

Modelos de datos

Elaboracioacuten de diagramas de contexto diagramas

de flujo o diagramas de casos de uso

Ahora enfocaacutendonos en el aacutencora se establece la

propuesta de seleccionar las actividades de Aacutencora que

permitan obtener los requerimientos de un software

educativo

La Tabla 1 presenta las actividades y artefactos

producidos en las fases de Aacutencora para la elaboracioacuten

de software educativo

TABLA 1 ACTIVIDADES Y ARTEFACTOS DE LA METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO

Metodologiacutea Aacutencora

Fases Actividades y artefactos

Anaacutelisis de

Requerimientos

A traveacutes de entrevistas con los clientes

(maestros y pedagogos) y de la lectura

del respectivo material proporcionado

por ellos se definiraacute la asignatura a la

que se enfocaraacute el software el tema a

tratar y la forma en que se abordaraacute y

evaluaraacute Tambieacuten se estableceraacute el

objetivo general de aprendizaje la

metaacutefora que se emplearaacute y se

determinaraacute el puacuteblico al que se

dirigiraacute el software

Artefactos

Documento que define la asignatura

contenido objetivo general de

aprendizaje metaacutefora y puacuteblico al que

se dirigiraacute el software Guion de la

situacioacuten actual

Recoleccioacuten y

clasificacioacuten de

requerimientos

El guion de la propuesta

computacional reflejaraacute la metaacutefora

que se sigue el ambiente de cada

escena

La bitaacutecora de desarrollo permitiraacute ver

coacutemo el sistema responderaacute a las

diversas acciones que realice el

usuario

En lugar del prototipo raacutepido se

elaboraraacute un Storyboard para presentar

graacuteficamente la estructura de sistema

propuesto

Artefactos

Guion de propuesta computacional

bitaacutecora de desarrollo Storyboard

Resolucioacuten de

conflictos

jerarquizacioacuten y

validacioacuten de

requerimientos

Modificaciones al guion de la

propuesta computacional de acuerdo a

los cambios propuestos por los

maestros y pedagogos

Artefactos

Guion de propuesta computacional e

Storyboard con adecuaciones sentildealas

Cierre

Trasladar los guiones a casos de uso

Artefactos

Casos de uso

Se agregaron algunas caracteriacutesticas a ciertos

artefactos de Aacutencora para poder cubrir los

requerimientos de software educativo Uno de estos

elementos es el guion de la propuesta computacional

al que se propone agregar lo siguiente

Conocimientos previos del usuario Se refiere a los

conocimientos baacutesicos o miacutenimos que debe tener el

alumno para poder interactuar con el moacutedulo

Objetivo de aprendizaje Es el aprendizaje que

debe obtener el alumno despueacutes de haber interactuado

con el moacutedulo

La Figura 1 se presenta la estructura sugerida para el

guion de la propuesta computacional En la bitaacutecora de

desarrollo se propone antildeadir una fila al final de cada

pista donde se describan las situaciones favorables y

no favorables para el cumplimiento del objetivo de

aprendizaje para esa pista en particular Por otra parte

en lugar del prototipo se sugiere utilizar el Storyboard

ya que permite mostrar de manera maacutes completa la

estructura del guion de la propuesta computacional La

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

30

Figura 2 muestra el formato para la elaboracioacuten del

Storyboard

Figura 1 Estructura del guion para la propuesta computacional

Figura 2 Formato para la elaboracioacuten del Storyboard

XVIII RESULTADOS

Aplicando Aacutencora en un ejemplo para la parte de

requerimientos se obtuvo la siguiente informacioacuten

Asignatura Matemaacuteticas

Contenido Estaacute articulado con base en seis ejes

con sus respectivos temas y subtemas que variacutean de

acuerdo al grado escolar Considerando lo anterior se

tiene lo siguiente

a) Grado escolar De segundo hasta quinto grado de

primaria

b) Temas Nuacutemeros naturales capacidad peso

tiempo y ubicacioacuten espacial planteamiento y

resolucioacuten de problemas sencillos en los que se

requiera recolectar y registrar informacioacuten

perioacutedicamente representacioacuten de informacioacuten en

tablas de frecuencia y graacuteficas de barras registros de

los resultados de experimentos aleatorios

representacioacuten de los resultados de un experimento

aleatorio en tablas y graacuteficas

c) Subtemas Planteamiento y resolucioacuten de

problemas que impliquen dos o maacutes operaciones con

nuacutemeros naturales

d) Ejes Introduccioacuten del kiloacutemetro como la unidad

que permite medir grandes distancias y recorridos

largos capacidad peso y tiempo uso del reloj y el

calendario los nuacutemeros sus relaciones y sus

operaciones medicioacuten la prediccioacuten y el azar

tratamiento de la informacioacuten

Objetivo general de aprendizaje Ejercitar las

operaciones aritmeacuteticas baacutesicas interpretar la

informacioacuten y los resultados de la informacioacuten dada

aplicada en situaciones de la vida cotidiana

Con las actividades hasta ahora realizadas se ha

observado que los artefactos de Aacutencora son flexibles y

pueden por lo tanto adaptarse de acuerdo a las

necesidades que implican la adquisicioacuten de

requerimientos de un software educativo Tambieacuten se

aprecian las ventajas de algunos artefactos como la

bitaacutecora de desarrollo que permite determinar las

respuestas del sistema ante las acciones del usuario y

estimar tambieacuten el tiempo que llevaraacute implementar

cada quinteta

La estimacioacuten del tiempo ayuda a tener un valor

aproximado del tiempo de desarrollo de software

Agregar el objetivo de aprendizaje a la bitaacutecora de

desarrollo puede parecer repetitivo despueacutes de

incluirlo en el Storyboard pero esto nos permite ver las

situaciones u obstaacuteculos que pueden impedir que el

objetivo de aprendizaje se alcance y por tanto tenerlos

presente durante el disentildeo A pesar de las ventajas de

la bitaacutecora de desarrollo un inconveniente hasta ahora

encontrado es lo tedioso al manejar muchas quintetas

] INGENIERIacuteA DE SOFTWARE

31

INGENIERIacuteA DE SISTEMAS

cuando por la naturaleza del guion se tienen varios

avisos y mensajes para el usuario Por otra parte los

guiones han ayudado a realizar de manera sencilla el

modelo de casos de uso

En lo referente a la presentacioacuten con los clientes el

guion es un artefacto que pude dar un panorama

general del software que se va a elaborar y queda

reforzada a traveacutes de los Storyboard Cuando se

requieren cambios solicitados por los clientes las

modificaciones a estos artefactos no han sido muy

complicadas dado que por su estructura es faacutecil de

ubicar las secciones y respectivos elementos

XIX CONCLUSIONES

Con los resultados hasta ahora obtenidos se puede

decir que la propuesta permite a los desarrolladores

con poca experiencia en desarrollo de software

educativo obtener los requerimientos de una manera

sencilla

Permite realizar un mejor relevamiento de informacioacuten

de los requerimientos del cliente enfocaacutendonos mas en

este

Es tambieacuten importante mencionar los avances que

tiene y seguiraacute teniendo el software educativo aplicado

no solo a nivel escolar sino tambieacuten al superior

Habiendo revisado el concepto y la aplicacioacuten de la

metodologiacutea Aacutencora en el desarrollo de software

educativo se llegoacute a una comprensioacuten mas extensa de

dicho meacutetodo el cual es de gran importancia dentro de

la ingenieriacutea de Software ya que nos

REFERENCIAS

httpwwwuvmxmisproductividaddocumentsCarmenChay_CIIM2010pdf

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 6: Revista de Ingenieria de Software

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

6

generar soluciones a las distintas situaciones hace que el

esfuerzo estimado pueda acortarse en oacuterdenes de magnitud

Estuve dentro equipos de este estilo y lo que se puede lograr en

un ambiente hiperproductivo difiacutecilmente se logre en una

empresa de desarrollo comuacuten y corriente El problema es que la

gente que tiene estas cualidades escasea y el mercado estaacute lleno

de trabajadores ―estaacutendar que requieren definiciones procesos

un aacuterea de calidad que verifique sus entregables y un PM que le

indique queacute es lo que tiene que hacer De a poco estimo yo la

industria iraacute decantando por rendimiento aquellos profesionales

que hacen la diferencia y los estaacutendares de productividad

calidad base teoacuterica requerida para un puesto iraacuten aumentando

Fue pasando durante estas deacutecadas y seguiraacute pasando en el

futuro

II CONCLUSIONES

En siacutentesis y para terminar con este artiacuteculo medir y controlar

importa importa maacutes en las empresas con gente estaacutendar

importa maacutes en las empresas con proyectos estaacutendar y siempre

que estemos dentro de una empresa algo vamos a tener que

medir pero el control no es condicioacuten necesaria ni menos

suficiente para lograr un proyecto exitoso No es algo

fundamental como tener un buen equipo de programadores

como tener gente que sepa interpretar lo que se pide y

transformarlo de manera natural en la solucioacuten que el cliente

necesita Por eso cuando veo gente que se preocupa por

aumentar el control o aumentar los procesos creo que estaacute

perdiendo el foco cuando lo que deberiacutea buscar es coacutemo hacer

para encontrar y hacer rendir a los verdaderos profesionales del

software

III REFERENCIAS

[1] Software Engenieering an idea whose time has come and gone por Tom

DeMarco [2] CyS Ingenieria de Software El blog del aacuterea de Ingenieriacutea de Software de

CyS Informaacutetica SA

] INGENIERIacuteA DE SOFTWARE

7

INGENIERIacuteA DE SISTEMAS

EXTREME PROGRAMMING PARA DESARROLLO

DE SOFTWARE

Erwin Adaacuten Choque Ulloa Ingenieriacutea de Sistemas

Universidad San Francisco de Asiacutes

Plaza Avaroa esq Belisario Salinas

La paz ndash Bolivia adan_ekinghotmailcom

Resumen

En este articulo se describiraacute algunas de las metodologiacuteas

agiles de desarrollo de software puesto que para asegurar el

eacutexito durante el desarrollo de un software es importante

saber la metodologiacutea de desarrollo la cual nos provee una

guiacutea para la correcta aplicacioacuten y desarrollo de Software

La metodologiacutea Extreme Programming XP que es una de las

metodologiacuteas aacutegiles maacutes extendidas y populares ademaacutes es

considerada como una metodologiacutea posmoderna donde

grandes capacidades se generan a traveacutes de procesos

emergentes

Palabras claves Extreme Programming metodologiacutea software

usuario

1 INTRODUCCION

El esquema tradicional para abordar el desarrollo de

software ha demostrado ser efectivo y necesario en

proyectos de gran tamantildeo respecto a tiempo y recursos

Sin embargo este enfoque no resulta ser el maacutes adecuado

para muchos de los proyectos actuales donde el entorno

del sistema es muy cambiante y en donde se exige

reducir draacutesticamente los tiempos de desarrollo pero

manteniendo una alta calidad Ante este problema las

metodologiacuteas aacutegiles son una posible respuesta para llenar

ese vaciacuteo metodoloacutegico Orientadas para proyectos

pequentildeos las metodologiacuteas aacutegiles constituyen una

solucioacuten

A continuacioacuten se describiraacute cada una de las

metodologiacuteas de desarrollo de software

2 EXTREME PROGRAMMING XP

La metodologiacutea de desarrollo de software XP es la

primera metodologiacutea aacutegil y la que le dio conciencia al

movimiento actual de metodologiacuteas aacutegiles Kent Beck el

padre de la metodologiacutea XP se basa en realimentacioacuten

continua entre el cliente y el equipo de desarrollo

comunicacioacuten fluida entre todos los participantes

simplicidad en las soluciones implementadas y facilidad

para enfrentar los cambios XP se define como

especialmente adecuada para proyectos con requisitos

imprecisos y muy cambiantes y donde existe un alto

riesgo teacutecnico Ahora se describiraacute las caracteriacutesticas

esenciales del Extreme Programming

21 LAS HISTORIAS DEL USUARIO

La red Las historias del usuario es la teacutecnica utilizada

para especificar los requisitos de software son tarjetas de

papel donde el cliente especifica de manera simplificada

las caracteriacutesticas que el sistema debe poseer ya sean

requisitos funcionales o requisitos no funcionales Se

caracteriza por ser dinaacutemica y flexible cada historia de

usuario debe ser comprensible y delimitada para que los

programadores puedan implementarla en pocas semanas

22 ROLES XP

Seguacuten Kent Beck los roles son

Programador El programador se encarga de escribir las

pruebas unitarias y tambieacuten estaacute encargado de producir el

coacutedigo del sistema

Cliente Encargado de escribir las historias de usuario y

los requisitos funcionales y selecciona las historias por

prioridad de conveniencia al negocio

Encargado de pruebas Encargado de ayudar al cliente a

escribir las pruebas funcionales ademaacutes de ejecutar las

pruebas constantemente encargado de de las

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

8

herramientas de soporte de pruebas como tambieacuten

difundir los resultados de dicha prueba

Encargado de seguimiento Es el encargado de la

realimentacioacuten al equipo y realiza el seguimiento del

proceso de cada iteracioacuten

Entrenador Es el encargado de prever guiacuteas al equipo

basadas en XP y de seguir el proceso correctamente

Consultor Es el que posee un conocimiento especifico

en alguacuten tema necesario para el proyecto para solucionar

problemas

Gestor Es la interaccioacuten entre clientes y programadores

ayudando a trabajar de forma adecuada y de esta manera

coordinar de forma correcta

23 PROCESO XP

El ciclo de desarrollo XP consiste en

El cliente define el valor del negocio a implementar

El programador estima el esfuerzo necesario para su

implementacioacuten

El cliente selecciona que construir de acuerdo con sus

propiedades y las restricciones del tiempo

El programador construye ese valor de negocio

Vuelve al principio

En todas las iteraciones de este ciclo tanto el cliente como

el programador aprenden No se debe presionar al

programador a realizar maacutes trabajo que el estimado ya

que se perderaacute calidad en el software o no se cumpliraacuten

los plazos

El ciclo de vida ideal de XP consiste de seis fases

Exploracioacuten

Planificacioacuten de la Entrega (Release)

Iteraciones

Produccioacuten

Mantenimiento y Muerte del Proyecto

24 PRACTICAS XP

Las siguientes praacutecticas ayudan al desarrollo de software

El juego de la planificacioacuten Hay una comunicacioacuten

frecuente el cliente y los programadores El equipo

teacutecnico realiza una estimacioacuten del esfuerzo requerido para

la implementacioacuten de las historias de usuario y los

clientes deciden sobre el aacutembito y el tiempo de entregas y

de cada iteracioacuten

Entregas pequentildeas Producir raacutepidamente versiones del

sistema que sean operativas aunque no cuenten con toda

la funcionalidad del sistema Esta versioacuten ya constituye

un resultado de valor para el negocio Una entrega no

deberiacutea tardar maacutes de tres meses

Metaacutefora El sistema es definido mediante un conjunto

de metaacuteforas compartidas por el cliente y el equipo de

desarrollo Una metaacutefora es una historia compartida que

describe como deberiacutea funcionar el sistema

Disentildeo simple Se disentildea la solucioacuten maacutes simple que

pueda funcionar y ser implementada en un determinado

momento del proyecto

Pruebas La produccioacuten de coacutedigo estaacute dirigida para las

pruebas unitarias Estas son establecidas por el cliente

antes de escribirse el coacutedigo y son ejecutadas

continuamente ante cada modificacioacuten del sistema

Pruebas Es una actividad constante de reestructuracioacuten

del coacutedigo con el objetivo de remover duplicacioacuten de

coacutedigo mejorar su legibilidad simplificarlo y hacerlo

maacutes flexible para facilitar los cambios Se mejora la

estructura interna del coacutedigo sin alterar su

comportamiento externo

Programacioacuten en parejas Toda la produccioacuten del

coacutedigo debe realizarse con trabajo en parejas de

programadores Para tener ventajas como menor tasa de

errores mejor disentildeo etc

Propiedad colectiva del coacutedigo Cualquier programador

puede cambiar cualquier parte del coacutedigo en cualquier

instante

Integracioacuten continua Cada pieza del coacutedigo es

integrada en el sistema una vez que este listaasi el

sistema puede ser integrado y construido varias veces en

un mismo diacutea

40 horas por semana Se debe trabajar un maacuteximo de 40

horas por semana no se trabajan horas extras en dos

semanas seguidas Si esto ocurre estaacute existe un problema

porque el trabajo extra desmotiva al equipo

Cliente in-situ El cliente tiene que estar presente y

disponible todo el tiempo para el equipo este es uno de

los principales factores de eacutexito para el proyecto XP Y

asiacute guiar y disipar cualquier duda de los programadores

donde la comunicacioacuten es maacutes efectiva que la escrita

Estaacutendares de programacioacuten XP enfatiza que la

comunicacioacuten de los programadores es a traveacutes del

coacutedigo por lo que es importante que se sigan estaacutendares

de programacioacuten para mantener el coacutedigo legible

3 CONCLUCIONES

] INGENIERIacuteA DE SOFTWARE

9

INGENIERIacuteA DE SISTEMAS

Las metodologiacuteas aacutegiles ofrecen una solucioacuten casi a

medida para una gran cantidad de proyectos

La metodologiacutea XP es una de las metodologiacuteas aacutegiles maacutes

extendidas y populares ademaacutes es considerada como una

metodologiacutea posmoderna cuyas grandes capacidades se

generan a traveacutes de procesos emergentes

4 REFERENCIAS

httpwwwmetodologiasSoftcomdesarrolloagil

httpwwwwikipediacommetodologiaXP

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

10

Desarrollo de Scrum

Sergio J Guzmaacuten L Ingenieriacutea de Sistemas

Universidad San Francisco de Asiacutes

20 Octubre Esq Belisario Salinas

La Paz - Bolivia

sjguzmanusfaedubo

Resumenmdash Scrum es una metodologiacutea aacutegil de desarrollo de

proyectos que toma su nombre y principios de los estudios

realizados sobre nuevas praacutecticas de produccioacuten por

Hirotaka Takeuchi e Ikujijo Nonaka a mediados de los 80

En 1996 se definioacute por primera vez un patroacuten para aplicar

esos principios de desarrollo en ldquocampos de scrumrdquo al

software

Palabras clave mdash scrum metodologiacutea patroacuten software

sprint rol

I Que es Scrum

Scrum es una metodologiacutea aacutegil de desarrollo de proyectos

que toma su nombre y principios de los estudios

realizados sobre nuevas praacutecticas de produccioacuten por

Hirotaka Takeuchi e Ikujijo Nonaka a mediados de los 80

En 1996 se definioacute por primera vez un patroacuten para aplicar

esos principios de desarrollo en ―campos de scrum al

software

Esta fue la primera definicioacuten de un patroacuten Scrum aplicado

al software disentildeada por Jeff Sutherland y Ken Schwaber y

presentada en Object-Oriented Programming Systems

Languages amp Applications OOPSLA en 1996

II iquestCoacutemo incorporarla

La competitividad del mercado de desarrollo de Software y

la necesidad de los clientes de reducir el tiempo de

mercado obligan a las organizaciones de desarrollo de

software a ser agresivas en sus calendarios de entrega Esto

ha hecho que hayan surgido metodologiacuteas para la gestioacuten y

desarrollo de software basadas en un proceso iterativo e

incremental Su estructura estaacute basada en corto tiempo los

cuales son iteraciones de 1 a 4 semanas Scrum se usa en

proyectos de entorno complejos donde se desea obtener

resultados raacutepidos y la productividad es lo maacutes importante

En los proyectos basados en Scrum se consideran tres

roles

Duentildeo del producto Es quien determina las propiedades de

los entregables

Maestro de Scrum Administra y facilita la ejecucioacuten del

proceso

Equipo de Trabajo Trabajan en conjunto para entregar

resultados en cada sprint

Fig 1 El flujo de Scrum

Como se puede observar en medio de los participantes del

proceso no quedan claras las responsabilidades del

arquitecto de software Sin embargo como comenta

Charlie Alfred ―la arquitectura es al aceite y el filtro que

lubrica adecuadamente a Scrum

Fig 2 El flujo de Scrum

] INGENIERIacuteA DE SOFTWARE

11

INGENIERIacuteA DE SISTEMAS

Si se compara el rol del arquitecto de edificaciones con el

del arquitecto de software se puede observar que ambos

modelan las construcciones a un alto nivel de abstraccioacuten

proveen posibles soluciones mejoran la comunicacioacuten con

los miembros del equipo de construccioacuten a traveacutes de

modelos visualizan las generalidades del problema

definen los roles y las interacciones entre los componentes

de construccioacuten entre otras tareas Al igual que es

imposible pensar que un rascacielos puede ser construido

sin una arquitectura soacutelida es imposible pensar que

productos de software empresariales puedan ser

implementados sin una arquitectura bien pensada

Seguacuten Bass Clements y Kasman ―La arquitectura de

software de un programa o sistema informaacutetico es la

estructura o estructuras del sistema que incluyen elementos

de software las propiedades externamente visibles de esos

elementos y las relaciones entre ellos Esta definicioacuten nos

lleva a concluir que la arquitectura de software garantiza el

buen desarrollo del software y a tener un sistema que

cumpla con los requerimientos funcionales y no

funcionales del cliente Ademaacutes la arquitectura es clave en

la reutilizacioacuten de artefactos de software en sistemas de

liacutenea de productos de software

Viendo la importancia de la arquitectura en el desarrollo

del software en eacuteste artiacuteculo se presenta una propuesta para

gestionar la arquitectura de Software en Scrum En el

primer capiacutetulo se trata el tema de la localizacioacuten de la

arquitectura de software en el ciclo de desarrollo de Scrum

en el segundo capiacutetulo se describen las tareas del arquitecto

de software en Scrum finalmente se presentan las

conclusiones y el trabajo futuro

III Arquitectura de Software en el ciclo de desarrollo de

Scrum

La idea fundamental de la presente propuesta es adicionar

un sprint inicial llamado ―Sprint 0Prime al inicio del ciclo de

desarrollo El objetivo principal del arquitecto en el Sprint

0 es analizar y disentildear la generalidad del sistema que

satisfaga los requisitos y sea entendible por los miembros

del equipo desde sus diferentes puntos de vista durante el

desarrollo Un punto clave es reutilizar artefactos de

software creados a partir de la arquitectura para ser maacutes

aacutegiles en el desarrollo de productos especiacuteficos

El Sprint 0 comprende tres fases que fueron tomadas del

ciclo de vida de entregas evolutivas En el Sprint 0 se

construye la arquitectura de forma iterativa mediante un

anaacutelisis preliminar de los conductores arquitectoacutenicos

(requisitos funcionales de calidad y del negocio) y de un

estudio de factibilidad del proyecto No se necesita tener

todos los requisitos claros para comenzar la fase de disentildeo

arquitectoacutenico

Para determinar los conductores arquitectoacutenicos se debe

identificar los objetivos del negocio de maacutes alta prioridad

que son pocos Estos objetivos del negocio se convierten en

los escenarios de calidad o casos de uso De esta lista se

deben escoger los que tendraacuten un mayor impacto sobre la

arquitectura El disentildeo arquitectoacutenico puede comenzar una

vez que se encuentran definidos los conductores

arquitectoacutenicos El proceso de anaacutelisis de requisitos seraacute

entonces influenciado por las preguntas generadas durante

el disentildeo arquitectoacutenico

El resultado del Srpint 0 es un documento inicial que

explica la arquitectura El documento puede basarse en los

pasos definidos por el meacutetodo ADD (Attrbute Driver

Design) Este meacutetodo ha sido probado exitosamente en

proyectos anteriores Con ADD se puede definir una

arquitectura de software mediante un proceso de

descomposicioacuten basado en los atributos de calidad de

Software

El documento inicial de la arquitectura se debe avaluar con

el fin de saber si la arquitectura cumple con los requisitos

de calidad Para realizar esta evaluacioacuten se propone el

meacutetodo ATAM (Architecture Tradeoff Analysis Method)

El ATAM revela cuaacuten bien una arquitectura satisface los

objetivos particulares de calidad y provee una

aproximacioacuten de coacutemo los objetivos de calidad interactuacutean

Si la evaluacioacuten de la arquitectura se encuentra que se

deben realizar cambios a la misma entonces eacutesta se debe

refinar hasta llegar a tener como resultado del Sprint 0 el

documento puacuteblico de la arquitectura junto con el sistema

esqueleto Finalmente la arquitectura creada en el Sprint 0

beneficiaraacute el desarrollo en los siguientes sprints

IV Rol del arquitecto de Software en Scrum

El rol y actividades del arquitecto de software cambian de

enfoque dependiendo de si se estaacute en el Sprint 0 o en

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

12

sprints subsecuentes

Fig 3 La Comunicacioacuten

Sprint 0 En sistemas complejos una persona difiacutecilmente

puede cubrir con amplitud teacutecnica las decisiones

arquitectoacutenicas y dar credibilidad a la arquitectura de

software Esto quiere decir que la participacioacuten del equipo

es de vital importancia para la creacioacuten y el mantenimiento

de la arquitectura Un equipo de arquitectos de software

que se aiacutesle del equipo de Scrum puede producir una

arquitectura que corra el riesgo de ser rechazada Es por

esto que recomendamos que el arquitecto o los arquitectos

se software sean miembros del equipo de Scrum Una de

las actividades que se debe realizar en equipo es la

evaluacioacuten de la arquitectura Especiacuteficamente en el

meacutetodo ATAM se requiere la participacioacuten mutua de tres

equipos que trabajan en conjunto con los arquitectos de

software el de evaluacioacuten el de tomadores de decisiones

del proyecto y el de los involucrados en la arquitectura

Sprints subsecuentes El arquitecto de software asegura que

el equipo de Scrum entienda el enfoque y los retos

arquitectoacutenicos maacutes importantes en casa sprint Los

equipos de Scrum realizan construcciones cortas guiados

por las estrategias de la arquitectura A continuacioacuten se

nombran algunas de las responsabilidades del arquitecto de

software desde el Sprint 1 en adelante

El duentildeo del producto y el maestro del Scrum trabajan con

el arquitecto para priorizar los requisitos a implementar en

cada iteracioacuten

El arquitecto comunica las decisiones y facilita las

conversaciones arquitectoacutenicas de distintos puntos de vista

en cada sprint

El arquitecto asegura que haya conformidad entre las

entregas en cada sprint y la arquitectura

El arquitecto responde preguntas y da orientacioacuten

arquitectoacutenica cuando sea necesario

Junto con el maestro de Scrum coordina a los miembros

del equipo para adaptarse a la arquitectura previa

El arquitecto junto con el duentildeo del producto y los

miembros del equipo preparan el Product Backlog

V Conclusioacuten

En el presente artiacuteculo ofrecimos una propuesta para incluir

la arquitectura de software en Scrum En el Sprint 0 se

realizan las actividades concernientes al anaacutelisis y disentildeo

de la arquitectura de software y el sistema esqueleto En

los siguientes sprints el arquitecto de software se asegura

de que la implementacioacuten cumpla con la arquitectura

REFERENCIAS

[3] httpwwwsafecreativeorgwork

[4] Hirotaka Takeuchi es decano de la Graduate School of International

Corporate Strategy en la Universidad Hitotsubashi en Tokio y fue profesor visitante en la Escuela de Negocios Harvard entre 1989 y 1990

[5] Ikujiro NonakaNo soy un guruacute porque me falta carisma

] INGENIERIacuteA DE SOFTWARE

13

INGENIERIacuteA DE SISTEMAS

El futuro de la ingenieriacutea de software Luis E Aguirre

Ingenieriacutea de Sistemas

Universidad San Francisco de Asiacutes

20 de Octubre esq Belisario Salinas

La Paz - Bolivia leaguirreusfaedubo

Resumen El disentildeo de programas a partir de informacioacuten binaria

significoacute un paso sustantivo para la industria desarrolladora de

software Desde ese hallazgo ocurrido en la deacutecada de los

cincuenta hasta hoy el crecimiento de metodologiacuteas para su

desarrollo ha subido notablemente en complejidad Sin embargo

los ciacuterculos viciosos que acusa hoy la confeccioacuten de programas

informaacuteticos impiden conceptualizar el objeto a un nivel

superior de abstraccioacuten tal y como lo exige el avance tecnoloacutegico

y los procesos de negocios

Palabras clave mdash futuro software ingenieriacutea programador y

desarrollo

I Introduccioacuten

La calidad de los sistemas informaacuteticos satisfaccioacuten de sus

usuarios y clientes son temas ampliamente conocidos

recurrentes y de constante preocupacioacuten por parte de los

practicantes de la Ingenieriacutea de software

Esta joven y dinaacutemica ingenieriacutea siempre estaacute en busca de

mejoras en el desarrollo de sistemas aumento de

productividad del ingeniero de software mayor control del

proceso de desarrollo establecimiento de nuevos meacutetodos de

desarrollo

Fig 1 Primeros programas computacionales en formato de tarjeta perforada

Estos elementos combinados y aplicados de buena forma

logran un buen proceso de desarrollo y en definitiva un buen

producto

Identificar los pasos que ha recorrido esta ingenieriacutea analizar

su contexto actual y finalmente proyectar hacia doacutende se

dirige es el pilar de este artiacuteculo

II iquestSe aplica actualmente la ingenieriacutea del software

La investigacioacuten y el desarrollo de teacutecnicas y meacuteto

dos de ingenieriacutea del software son constantes y suelen suponer

interesantes avances en la resolucioacuten de problemas de

desarrollo de software Sin embargo es habitual que en la

praacutectica diaria profesional no se incluya praacutecticamente

ninguna de las recomendaciones maacutes elementales de la

ingenieriacutea del software En efecto es habitual que el

desarrollo de software se parezca maacutes al descontrol del cuento

de laquosi los programadores fueran albantildeilesraquo ([Novatica

1996]) que a una idiacutelica y bien organizada factoriacutea de

software (concepto de gran vigencia a finales de los ochenta

[Nunamaker et al 1988])

De hecho las evaluaciones de los procesos productivos de

software realizadas a raiacutez de los modelo de procesos de

software (por ejemplo con CMM [Paulk et al 1993])

confirman que el desarrollo de software suele estar

baacutesicamente en estado caoacutetico

Y no soacutelo en como uno podriacutea pensar pequentildeas

organizaciones de un paiacutes mediterraacuteneo como el nuestro sino

en tambieacuten en las empresas adjudicatarias de interesantes

contratos de defensa de paiacuteses laquoavanzadosraquo como EEUU o

Japoacuten Si bien estos modelos de evaluacioacuten auacuten acumulan

distintas acusaciones de rigidez o falta de contraste empiacuterico

los resultados obtenidos en sus evaluaciones resultan

consistentes con la sensacioacuten de constante laquoapagafuegosraquo que

suelen sufrir los profesionales del software Tambieacuten suelen

revelar la praacutectica despreocupacioacuten de los responsables de las

organizaciones de software por la mejora de la calidad de sus

procesos de trabajo o de sus productos bien sea por contar con

una situacioacuten interna de empresa poco propicia porque el

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

14

ambiente del mercado no fomenta la preocupacioacuten por estos

temas o bien por su poco intereacutes real en la buacutesqueda de la

calidad

III La actualidad

La gran mayoriacutea de los sistemas de software creados hoy en

diacutea son los llamados sistemas corporativos es decir son

orientados a formar una parte importante de los negocios de

las grandes empresas

Continuando en nuestro contexto se identifica un nuevo

enfoque del problema de desarrollo el apoyo en la

sincronizacioacuten de los procesos de negocio estructuras

complejas de informacioacuten manejada por el negocio todo esto

entrelazado por restricciones dadas por las reglas del negocio

La tecnologiacutea actual por otro lado ha alejado maacutes todaviacutea los

ingenieros de las maacutequinas sistemas operativos incluso de

las tareas de programacioacuten

El enfoque de la mayoriacutea de los equipos de desarrollo e

ingenieros participes en proyectos sigue siendo con un bajo

nivel de abstraccioacuten cerca de la codificacioacuten Se tiende a

pensar en la base de datos a utilizar establecer la navegacioacuten

de las paacuteginas programar los protocolos de comunicacioacuten etc

Esto lleva a utilizar las tareas de programacioacuten y de pruebas

para validar el entendimiento y cumplimiento de la

funcionalidad de los sistemas

Lo anteriormente expuesto muestra un problema

metodoloacutegico consecuencia de un desfase entre el enfoque

teoacuterico oacuteptimo (anaacutelisis de negocio) y el enfoque praacutectico real

(programacioacuten y pruebas) en los proyectos de hoy En otras

palabras la metodologiacutea actualmente usada estaacute atrasada con

respecto al avance tecnoloacutegico

Desarrollando maacutes esta idea se identifican algunos

problemas concretos de las metodologiacuteas

Ellas no obligan a sus ejecutores a respetar todas las

normas y los procedimientos establecidos especialmente

en las etapas tempranas del proyecto Es muy faacutecil y

tentador ―saltar una o maacutes de estas etapas uno o maacutes

documentos o modelos pasando directamente a

implementacioacuten produccioacuten y posterior correccioacuten de los

sistemas desarrollados

Control de calidad del producto final La codificacioacuten y

complejidad del programa es demasiada para ser revisada

y verificada fehacientemente Por otro lado los coacutedigos

fuentes y los ejecutables actualmente son los uacutenicos

entregables eficientemente verificables

Estos dos problemas al parecer forman una situacioacuten

contradictoria la metodologiacutea tradicional no permite validar

eficientemente la calidad de los sistemas antes de llegar al

coacutedigo fuente y por otro lado tampoco permite llegar

eficientemente a coacutedigos fuentes de calidad

IV Futuro

La salida de este ―ciacuterculo vicioso que se propone es

bastante natural analizar la situacioacuten actual de la ingenieriacutea

de software en la luz de sus tendencias histoacutericas

La primera de ellas relacionada con los problemas que

resuelven los sistemas obviamente presente y muy utilizada

en nuestra realidad los sistemas de hoy no soacutelo resuelven los

problemas del mundo real sino que estaacuten fuertemente influen-

ciando el desarrollo del mundo real

Fig2 Modela

El enfoque de los ingenieros desde hace unos antildeos no se ha

movido significativamente por el camino del aumento de

abstraccioacuten establecido histoacutericamente Se han hecho ciertos

avances en temas puntuales (como arquitecturas de

componentes patrones de disentildeo nuevos lenguajes de

programacioacuten etc) pero conceptualmente

metodoloacutegicamente la tarea de programacioacuten sigue siendo

ejecutada de la misma forma escribiendo coacutedigos fuentes en

forma de los programas textuales

Eacuteste es justamente el ―atraso metodoloacutegico que se

mencionoacute Para disminuir la brecha entre las tendencias

histoacutericas es necesario ajustar la metodologiacutea en teacuterminos de

aumentar la abstraccioacuten del enfoque de los ingenieros de

software y acercarlo a la abstraccioacuten del problema

El aumento de la abstraccioacuten del proceso de desarrollo del

software hace pensar que la proacutexima generacioacuten de meacutetodos

de desarrollo se perfila en un conceptualmente nuevo con-

] INGENIERIacuteA DE SOFTWARE

15

INGENIERIacuteA DE SISTEMAS

junto de herramientas que permitan aumentar en un mayor

grado al actual la abstraccioacuten escondiendo los detalles de maacutes

bajo nivel

Fig3 Probable modelo a futuro

Las nuevas herramientas permitiraacuten ―programar en nivel

de anaacutelisis generando coacutedigos en un lenguaje de

programacioacuten tradicional de forma automaacutetica tal como hoy

los compiladores generan el lenguaje maacutequina a partir del

coacutedigo fuente Nuevos ―lenguajes de programacioacuten

naturalmente seriacutean visuales y se pareceriacutean a las

especificaciones de software en uno de los lenguajes de

modelamiento por ejemplo UML

V Conclusioacuten

Es muy probable que estemos proacuteximos a ver un nuevo

paso evolutivo en la ingenieriacutea de software Tan grande como

el invento de lenguajes de alto nivel o anaacutelisis y disentildeo

orientado a objetos Una nueva generacioacuten que absorberaacute a la

actual automatizando la mayoriacutea de las buenas praacutecticas

usadas actualmente

Una pregunta natural es si una maacutequina puede llegar a

generar programas tan buenos como los hechos por un pro-

gramador experto En vez de ―romper la cabeza con esta

pregunta ahora quizaacutes seriacutea suficiente recordarse otra vez de

la historia Los primeros compiladores de ninguna generacioacuten

alcanzaban de inmediato lo deseable y oacuteptimo Sin embargo

con el paso del tiempo apoyados en la experiencia de los

ingenieros y en el avance tecnoloacutegico se mejoraban hasta el

nivel de superar significativamente las generaciones

anteriores

Es poco factible que hoy en diacutea alguien cuestione la calidad

de los compiladores de por ejemplo Java y la calidad del

coacutedigo de maacutequina generado por ellos

VI Referencias [6] Website [Online]

httpwwwenterpriseanalystnetdownloadmda_informaticap

df

[7] httpwwwslidesharenetamrrochafuturo-del-software-impacto-en-las-organizaciones-y-en-los-profesionales

[8] httpwwwdcubaareventseci2008conferenciasIngSoftHexacta

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

16

Ingenieriacutea de Software para

Desarrolladores de juegos Huascar Huanca Orozco

Ingenieria de Sistemas San francisco de Asis

Av20 de Octubre esq Belisario Salinas

hhuncausfaedubo

ResumenmdashEn este artiacuteculo veremos una lo que es ldquoIS para

Desarrolladores de juegosrdquo si crees que un juego es facil pues

te equivocas en este articulo mostramos el uso de la IS en la

cracion de juegos que metodos utilizan y la complejidad que

representa para el equipo de desarrollo

1) Palabras clave mdash UMLRequisitosjuegoequipo de trabajo motor del juego

IV INTRODUCCIOacuteN

En la ingenieriacutea de software (IS) el desarrollo

de videojuegos es uacutenico pero similares a los

esfuerzos de software Es la uacutenica que combina el

trabajo de los equipos que cubren muacuteltiples

disciplinas (arte muacutesica actuacioacuten

programacioacuten etc) y que el juego de

acoplamiento que se busca a traveacutes del uso de

prototipos e iteraciones Con ello el desarrollo

del juego se enfrenta a desafiacuteos que pueden ser

abordadas mediante las praacutecticas tradicionales de

SE La industria tiene que adoptar buenas

praacutecticas de SE para sus distintas necesidades

tales como la gestioacuten de activos multimedia y

encontrar el fundamento en el juego La industria

debe asumir los retos por la evolucioacuten de los

meacutetodos de SE para satisfacer sus necesidades

Este trabajo investiga estos desafiacuteos y praacutecticas

de ingenieriacutea destaca para mitigar estos

problemas

V ENTRA EN EL JUEGO

Lo que la IS para desarrolladores de juegos hace

es

Mezcla de ingenieriacutea y el arte El software como

una praacutectica como una preocupacioacuten profesional

Meacutetodos para aprender a disentildear y fabricar un

producto El desarrollo del personaje e ingenieriacutea

de software Estrategias para hacer el mejor uso

de la ingenieriacutea del conocimiento formalizado El

aprendizaje de las habilidades que se pueden

aplicar en cualquier lugar

VI REQUISITOS

Esta parte ofrece una visioacuten general de los

conceptos y herramientas necesarias para la

obtencioacuten de requisitos

IDENTIFICAR LO QUE SE CONSIDERA UN REQUISITO DE SOFTWARE

ESTABLECER LOS CRITERIOS PARA DAR SENTIDO A LOS REQUISITOS Y LA

ESCRITURA DETERMINAR LA MANERA DE REUNIR LOS REQUISITOS O DESCUBRIR

EXPLORAR COacuteMO EMPLEAR CASOS DE USO PARA PERFECCIONAR Y

ANALIZAR LAS NECESIDADES ENCONTRAR TEacuteCNICAS PARA CONFIRMAR QUE LOS REQUISITOS ESTEacuteN

COMPLETOS

VERIFICAR LA EXACTITUD DE LOS REQUISITOS TRACE CAMBIOS EN LOS REQUISITOS

VII PROGRAMADOR DEL MOTOR DEL JUEGO

Fig 1 Juego RPG

] INGENIERIacuteA DE SOFTWARE

17

INGENIERIacuteA DE SISTEMAS

Los programadores de juegos motores crear el

motor de base del juego incluyendo la fiacutesica de

simulacioacuten y disciplinas graacuteficas

A Fiacutesica del motor del programador

Programador de un juego de la fiacutesica se dedica

al desarrollo de las fiacutesica de un juego se emplean

Por lo general un juego de soacutelo simular algunos

aspectos de la fiacutesica del mundo real Por ejemplo

un juego de espacio puede necesitar simulada

gravedad pero no tendriacutea ninguna necesidad

para simular agua viscosidad

Para un juego de rol como World of Warcraft

soacutelo un programador de la fiacutesica puede ser

necesaria Para un juego de combate complejo

como Battlefield 1942 los equipos de

programadores de la fiacutesica pueden ser necesarias

B motor de graacuteficos del programador

A pesar de todos los programadores antildeadir

tanto los contenidos y la experiencia que ofrece

un juego un programador de juego se centra maacutes

en la estrategia de un juego la aplicacioacuten de la

mecaacutenica del juego y la loacutegica y la sensacioacuten

de un juego

Esto no suele ser una disciplina independiente

como lo que este programador es por lo general

se diferencia de un juego a otro y que

inevitablemente se veraacute involucrado con las aacutereas

maacutes especializadas de desarrollo del juego como

los graacuteficos o el sonido

VIII EQUIPO DE TRABAJO

Fig 2 Grupo de trabajo

Un equipo de desarrollo en una organizacioacuten de

ingenieriacutea de software se compone de un grupo

de personas que trabajan en funciones

especializadas para lograr un objetivo comuacuten El

objetivo es la realizacioacuten de un proyecto Un

proyecto se define como un esfuerzo temporal

emprendido para crear un producto uacutenico

servicio o resultado

Aquiacute una pequentildea lista incompleta de algunos de

los componentes de un equipo de trabajo para

Desarrollo de juegos

Analista de requerimientos recopilar y analizar

los requisitos para el software

Arquitecto de software determinar la mejor

arquitectura para el software Seleccionar

Los componentes del proveedor para su inclusioacuten

en el esfuerzo de desarrollo

Disentildeador de software acotar el software para

lograr un rendimiento y otros

Objetivos

Prueba de software probador del software para

garantizar que funcione de acuerdo a la

Requisitos

Programador senior desarrollar bajo nivel de

documentacioacuten de disentildeo sirven como una

tecno-

Ventaja teacutecnica para los demaacutes e implementar el

software de acuerdo

Para el disentildeo

Programador implementar el software de acuerdo

al disentildeo

Trabajos de mantenimiento en el programador de

software creado durante el desarrollo anterior

Los esfuerzos para agregar funcionalidad o

eliminar errores de trabajo con

Atencioacuten al cliente

IX LENGUAJE UNIFICADO DE MODELADO (UML)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

18

Tomando en cuenta que el UML es un estaacutendar

muy flexible Nos da razoacuten que podemos pensar

en el diagrama

como herramientas que permiten realizar

diferentes tipos de trabajo Para revisar un poco

Use un diagrama de casos de uso para reunir y estudiar los requisitos para los propoacutesitos de disentildeo o pruebas

Use un diagrama de actividades para explorar los escenarios de casos de uso

Use un diagrama de clases para identificar las clases y ver coacutemo las

clases se relacionan entre siacute Use un diagrama de objetos para ver coacutemo un objeto se comunica con

otro

Use un diagrama de estado para explorar los atributos de cambio de objeto

Use un diagrama de secuencia para explorar a fondo un caso de uso

mediante el trazado de la orden en el que los objetos enviar mensajes a siacute mismos o entre siacute

Use un diagrama de colaboracioacuten para ver la loacutegica del sistema y la

forma en que los objetos envian mensajes entre siacute Use un diagrama de componentes para explorar y si existen los

subsistemas dentro de su juego

Use un diagrama de implementacioacuten para encontrar la manera de

configurar el paquete de instalacioacuten para su juego

X CONCLUSIONES

El desarrollo de los juegos se han vueltos mas

complejos con el pasar del tiempo y para el

desarrollo de un juego que este a la vanguardia

de la competencia se debe trabajar con la IS es

una forma eficaz de conseguir un juego de

calidad internacional

Referencias [9] Software Engineering for Game Developers by john P Flynt with Omar

Salem [10] httpieeexploreieeeorgxplloginjsptp=amparnumber=5070627ampurl=http

3A2F2Fieeexploreieeeorg2Fiel52F50705742F50705752F05

070627pdf3Farnumber

[11] httpgamedevstackexchangecomquestions19934abstract-game-engine-design

] INGENIERIacuteA DE SOFTWARE

19

INGENIERIacuteA DE SISTEMAS

Estrategias de Prueba del Software Miguel Angel Callisaya Quispe Universidad San Francisco de Asiacutes Av 20 de Octubre La Paz Bolivia

maccc19hotmailcom

Resumen Una estrategia de software es un mecanismo que

proporciona una guiacutea o base pasa ver la forma como se debe

desarrollar la aplicacioacuten en cuanto a meacutetodos esfuerzo

tiempo y recursos que son necesarios para lograr un producto

exitoso

La frecuencia con las que realicen las pruebas es de gran

importancia ya que de estaacute manera se pueda la en encontrar

los errores antes de que se conviertan en errores para la

aplicacioacuten si no se lleva un orden de aplicacioacuten de las pruebas

se va a perder tiempo recurso y sobre todo esfuerzo

Durante las primeras etapas de las pruebas es importante

concentrar toda la atencioacuten en un pequentildeo grupo de

componentes o en un componente que se considere importante

para el desarrollo tanto en los datos como en la parte loacutegica de

la aplicacioacuten

El objetivo final de las estrategias de prueba es documentar la

forma en el que equipo ha hecho el desarrollo y el seguimiento

que se le ha hecho a cada una de las etapas durante las etapas

de desarrollo e implementacioacuten

Palabras clave Calidad Prueba Estrategias Sistema

I INTRODUCCIOacuteN

Durante este articulo es importante mencionar algunos

aspectos que determinan el eacutexito de la aplicacioacuten de las

estrategias de prueba como lo son el enfoque estrateacutegico

para la prueba de software aspectos estrateacutegicos

estrategias de prueba para software convencional

estrategias de prueba para software orientado a objeto

estrategia de prueba para webapps pruebas de validacioacuten y

por uacuteltimo las pruebas del sistema

IIESTRATEGIAS DE PRUEBA DEL SOFTWARE

Verificacioacuten Estamos construyendo el producto

correctamente

Validacioacuten Estamos construyendo el producto correcto

Integracioacuten descendente

La integracioacuten descendente es un planteamiento

incremental a la construccioacuten de la estructura de programas

Se integran los moacutedulos movieacutendose hacia abajo por la

jerarquiacutea de control comenzando por el moacutedulo de control

principal (programa principal) Los moacutedulos subordinados

(de cualquier modo subordinados) al moacutedulo de control

principal se van incorporando en la estructura bien de

forma primero-en-profundidad o bien de forma primero-en-

anchura Fig1

Integracioacuten ascendente

La prueba de la integracioacuten ascendente como su nombre

indica empieza la construccioacuten y la prueba con los

moacutedulos atoacutemicos (es decir moacutedulos de los niveles maacutes

bajos de la estructura del programa) Dado que los moacutedulos

se integran de abajo hacia arriba el proceso requerido de

los moacutedulos subordinados a un nivel dado siempre estaacuten

disponibles y se elimina la necesidad de resguardos Fig2

Fig 1 Integracioacuten descendente

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

20

Fig 3 Integracioacuten Ascendente

Aspectos Estrateacutegicos

Tom Gilb plantea que se deben abordar los

siguientes puntos si se desea implementar con

eacutexito una estrategia de prueba del software

Especificar los requisitos del producto de manera

cuantificable mucho antes de que comiencen las pruebas

-Establecer los objetivos de la prueba de manera expliacutecita (teacuterminos

medibles)

-Comprender queacute usuarios va a tener el software y desarrollar un perfil

-Desarrollar un plan de prueba que haga hincapieacute en la prueba de ciclo

raacutepido

-Construir un software ―robusto disentildeado para probarse a siacute mismo

-Usar revisiones teacutecnicas formales efectivas como filtro antes de la

prueba

Llevar a cabo revisiones teacutecnicas formales para evaluar la

estrategia de prueba y los propios casos de prueba

Desarrollar un enfoque de mejora continua al proceso de

prueba Deberiacutea medirse la estrategia de prueba

Prueba de Unidad

La prueba de unidad centra el proceso de

verificacioacuten en la menor unidad del disentildeo del

software el moacutedulo La prueba de unidad siempre

esta orientada a caja blanca y este paso se suele

llevar a cabo en paralelo para muacuteltiples moacutedulos

Pruebas de Alfa y Beta

C u a n d o s e c o n s t r u y e s o f t w a r e a m e d i d a s e

l l e v a n a c a b o u n a s e r i e d e p r u e b a s d e

a c e p t a c i oacute n p a r a permitir que el cliente valide todos

los requisitos La prueba alfa se lleva a cabo en el

lugar del desarrollo pero por un cliente Se usa el

software en forma normal con el desarrollador como

observador del usuario y registrando los errores y

problemas de uso(entorno controlado)La prueba beta se

lleva a cabo por los usuarios finales en los lugares

de trabajo de los clientes El cliente registra los

problemas y los informa a intervalos regulare

Pruebas del sistema

La prueba del sistema estaacute constituida por una

serie de pruebas diferentes cuyo propoacutesito es

ejercitar profundamente el sistema

Prueba de recuperacioacuten

E s l a p r u e b a d e l s i s t e m a q u e f u e r z a a l

f a l l o d e l s o f t w a r e d e m u c h a s f o r m a s y

v e r i f i c a q u e l a recuperacioacuten se lleva a cabo

apropiadamente Recuperacioacuten automaacutetica o manual

Prueba de seguridad

Intenta verificar que los mecanismos de proteccioacuten

incorporados en el sistema lo protegeraacute de hecho de

accesos impropios

Pruebas de Resistencia

Estaacuten disentildeadas para enfrentar a los programas con

situaciones anormales Una variante de la prueba de

resistencia es una teacutecnica denominada prueba de

sensibilidad intenta descubrir combinaciones de datos

dentro de una clase de entrada valida que pueda producir

inestabilidad o un proceso incorrecto

El arte de la depuracioacuten

La depuracioacuten ocurre como consecuencia de una

prueba efectiva Cuando un caso de prueba

descubre u n e r r o r l a d e p u r a c i oacute n e s e l

p r o c e s o q u e p r o v o c a l a e l i m i n a c i oacute n d e l

e r r o r E l p r o c e s o m e n t a l q u e conecta un siacutentoma

con una causa es la depuracioacuten

El proceso de la depuracioacuten

E l p r o c e s o d e d e p u r a c i oacute n i n t e n t a h a c e r

c o r r e s p o n d e r e l s iacute n t o m a c o n u n a c a u s a

l l e v a n d o a s iacute a l a correccioacuten del error El proceso de

depuracioacuten siempre tiene uno de los dos resultados

siguientes

(1)se encuentra la causa se corrige y se elimina

o

(2)no se encuentra la causa En eacuteste uacuteltimo caso la persona

que realiza la depuracioacuten debe sospechar la causa disentildear

un caso de prueba que ayude a confirmar sus sospechas y el

trabajo vuelve hacia atraacutes a la correccioacuten del error de una

forma iterativa iquestPor queacute es tan difiacutecil la depuracioacuten

Varias caracteriacutesticas de los errores nos dan algunas

] INGENIERIacuteA DE SOFTWARE

21

INGENIERIacuteA DE SISTEMAS

pistas1El siacutentoma y la causa pueden ser

geograacuteficamente remotos entre siacute2El siacutentoma

puede desaparecer (temporalmente) al corregir

otro error

3 E l s iacute n t o m a p u e d e r e a l m e n t e e s t a r

p r o d u c i d o p o r a l g o q u e n o e s u n e r r o r

( i n e x a c t i t u d d e l o s redondeos)

4El siacutentoma puede estar causado por un error

humano que no sea faacutecilmente detectado

5El siacutentoma puede ser el resultado de problemas

de temporizacioacuten en vez de problema s de proceso

6Puede ser difiacutecil reproducir exactamente las

condiciones de entrada

7 E l s iacute n t o m a p u e d e a p a r e c e r e n f o r m a

i n t e r m i t e n t e

8 E l s iacute n t o m a p u e d e s e r d e b i d o a c a u s a s q u e

s e d i s t r i b u y e n p o r u n a s e r i e d e t a r e a s

e j e c u t aacute n d o s e e n diferentes procesadores

IIICONCLUCIONES

Las estrategias de prueba del software es un mecanismo

que proporciona una guiacutea o base pasa ver la forma como se

debe desarrollar la aplicacioacuten en cuanto a meacutetodos para

logra un producto exitoso

IVREFERENCIAS

httpbuenastareascomensayosEstategias-de-prueba-de-

software3752643html

httpwwwestrategiascompruebaagil

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

22

Ingenieriacutea Inversa Juan Carlos Zenteno Sanga

1

Departamento de Ingenieriacutea de Sistemas Universidad San Francisco de Asiacutes

Direccioacuten Incluyendo el Paiacutes 1juanka_58hotmailcom

Resumenmdash La ingenieriacutea de Software es parte del modelo de

proceso de reingenieriacutea de software es el proceso de analizar

un programa con la finalidad de crear una representacioacuten del

programa en un grado mayor de abstraccioacuten del coacutedigo

fuente las herramientas de ingenieriacutea inversa obtienen

informacioacuten del disentildeo de datos arquitectoacutenico y de

procedimientos a partir de un programa existente

En el siguiente artiacuteculo se veraacuten los conceptos baacutesicos y se

denotara un ejemplo praacutectico para una mayor comprensioacuten

del tema

Palabras clave mdash Ingenieriacutea de Software Reingenieriacutea

Linux Ingenieriacutea Inversa

XI INTRODUCCIOacuteN

Inmersa en el aacuterea de conocimiento de la

ingenieriacutea de software se encuentra la ingenieriacutea

inversa como punto de apoyo para los procesos

de anaacutelisis y disentildeo propuestos en diferentes

meacutetodos de desarrollo

La ingenieriacutea inversa permite subsanar esta

deficiencia al documentar los productos de

software a partir del coacutedigo ejecutable con el fin

de obtener los artefactos de anaacutelisis y disentildeo

La ingenieriacutea inversa es ademaacutes una

herramienta uacutetil que ayuda en el proceso de

aseguramiento de la calidad del software

mediante la comparacioacuten de diagramas de fases

de anaacutelisis y desarrollo se apoya comuacutenmente en

la generacioacuten del diagrama de clases debido a la

importancia de este diagrama en la fase de disentildeo

y su facilidad de generacioacuten Existen tambieacuten

otros diagramas de intereacutes como el de

comunicacioacuten y el de secuencias que modelan

las caracteriacutesticas dinaacutemicas de un producto de

software

Hoy en diacutea los productos maacutes comuacutenmente

sometidos a la Ingenieriacutea Inversa son los

productos de Hardware y Software pero

cualquier producto puede ser sometido a este

proceso

Aplicar ingenieriacutea Inversa a algo supone

profundizar el estudio de su funcionamiento

En el caso concreto del Software se conoce

por ingenieriacutea de software a la actividad que se

ocupa de describir coacutemo funciona un programa

de cuyo coacutedigo no se dispone hasta el punto de

generar coacutedigo propio que cumpla con las

mismas funciones Un ejemplo claacutesico del uso de

esta teacutecnica es el software de pago donde las

empresas utilizan esta teacutecnica para proteger sus

productos contra posibles acceso no autorizados

o examinar el producto final para encontrar

posibles bugs inesperados en la ejecucioacuten de

dicho sistema

Existe una gran variedad de software

desensamblador y depurador para aplicar esta

teacutecnica

En resumen la idea general al aplicar

ingenieriacutea inversa es

Conocer a fondo la aplicacioacuten y generar un

mejor coacutedigo

Migrar la aplicacioacuten a un nuevo sistema operativo

Hacer o completar la documentacioacuten

] INGENIERIacuteA DE SOFTWARE

23

INGENIERIacuteA DE SISTEMAS

Verificar que el coacutedigo en estudio cumple las

especificaciones del disentildeo estaacutendar

La informacioacuten extraiacuteda de la lectura del

coacutedigo fuente son las especificaciones de disentildeo

modelos de flujo de control diagramas de disentildeo

documentos de especificacioacuten de disentildeo

pudiendo tomarse estas especificaciones como

nuevo punto de partida para aplicar ingenieriacutea

inversa y obtener informacioacuten a mayor nivel de

abstraccioacuten

Dado que es una labor estrateacutegica es

conveniente conocer cuando conviene realizar la

tarea de Ingenieriacutea inversa para una aplicacioacuten y

cuaacutendo es maacutes rentable sustituirla e implementar

una nueva Las aplicaciones para el primer paso

son aquellas en la que se produce las siguientes

situaciones

bull Fallos frecuentes que son difiacuteciles de

localizar

bull Son poco eficientes pero realizan la funcioacuten

esperada

bull Dificultades en la integracioacuten con otros

sistemas

bull Calidad pobre del software final

bull Resistencia a introducir cambios

bull Pocas personas capacitadas para realizar

modificaciones

bull Dificultades para realizar pruebas

bull El mantenimiento consume muchos recursos

XII LAS BASES DE LA INGENIERIA INVERSA

Los ejemplos maacutes trascendentes sobre los

inicios de la ingenieriacutea inversa son claramente las

investigaciones realizadas sobre antiguos

artefactos creados por humanos ancestrales con

el fin de descubrir la manera en que funcionaban

Uno de los maacutes conocidos es el llamado

mecanismo de Antikythera (Fig 1) el cual se

piensa que fue disentildeado para fines astronoacutemicos

por los griegos siendo uno de los primeros

artefactos que funcionaban con ruedas de

engranes

Figura 1 Antikythera (mecanismo presuntamente creado para fines astronoacutemicos)

Podemos entonces implantar un paralelo en aquella

mitoloacutegica buacutesqueda de descubrimiento sobre el

funcionamiento de esos artefactos y la ingenieriacutea inversa

actual usada en ingenieriacutea de software estableciendo un

importante factor en comuacuten la falta de documentacioacuten En

este ambiente es muy comuacuten contar con una especie de caja

negra en donde sabemos lo que ingresamos y el resultado

que obtenemos pero desconocemos el procedimiento con la

precisioacuten que necesitariacuteamos para replicarlo

Esta falta de documentacioacuten es el impulso

principal de toda la ingenieriacutea inversa las

finalidades de la misma pueden variar pero este

factor inicial nunca lo haraacute

XIII INGENIERIA INVERSA COMO UN PROCESO DE

REINGENIERIA

La ingenieriacutea inversa tiene la misioacuten de

desentrantildear los misterios y secretos de los

sistemas en uso

Baacutesicamente recupera el disentildeo de la

aplicacioacuten a partir del coacutedigo esto se realiza

mediante herramientas que extraen la

informacioacuten de los datos procedimientos y

arquitecturas del sistema

Es aplicable a sistemas con las siguientes

caracteriacutesticas

Documentacioacuten inexistente o totalmente obsoleta

Programacioacuten en bloque de coacutedigos muy grandes

yo sin estructural

La aplicacioacuten cubre gran parte de los requisitos

y el rendimiento esperado

A Nivel de abstraccioacuten

El nivel de Abstraccioacuten de un proceso de

Ingenieriacutea Inversa y las herramientas que se

utilizan para realizarlo aluden la sofisticacioacuten de

la informacioacuten de disentildeo que se puede extraer del

coacutedigo fuente Este proceso deberiacutea ser capaz de

derivar

Sus representaciones de disentildeo de procedimiento

(con un bajo nivel de abstraccioacuten)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

24

La informacioacuten de las estructuras de datos de

procedimiento (con un nivel de abstraccioacuten

ligeramente maacutes elevado)

Modelos de flujo de datos de control (un nivel de

abstraccioacuten relativamente alto)

Modelos de entidades y de relaciones (un elevado

nivel de abstraccioacuten)

B Completitud

En la mayoriacutea de los casos la completitud

decrece a medida que aumenta el grado de

abstraccioacuten

La completitud mejora en proporcioacuten directa a

la cantidad de anaacutelisis efectuado por la persona

que estaacute efectuando la ingenieriacutea inversa

C Interactividad

La interactividad alude al grado con el cual el

ser humano se integra con las herramientas

automatizadas para crear un proceso de

ingenieriacutea inversa efectivo

D Proceso

El Proceso de ingenieriacutea inversa (Fig 2) es el encargado

de reestructurar el coacutedigo fuente para que solamente

contenga instrucciones de programacioacuten estructurada Lo

que hace que el coacutedigo sea maacutes faacutecil de leer y proporciona

la base para las subsiguientes actividades de ingenieriacutea

inversa

Figura 2 Diagrama de Proceso de la Ingenieriacutea Inversa

E Reestructuracioacuten

La reestructuracioacuten del software modifica el

coacutedigo fuente y los datos en un intento adecuado

a futuros cambios esta no modifica la

arquitectura global del programa Tiene a

centrarse en los detalles de disentildeo de moacutedulos

individuales y en estructuras de datos locales

definidas dentro de los moacutedulos

Estos son algunos de los beneficios que se

pueden lograr cuando se reestructura el software

Programas de mayor calidad

Reduce el esfuerzo requerido para llevar a cabo

las actividades de mantenimiento

Hace el software maacutes sencillo para comprobar y

depurar

F Re documentacioacuten

Es el proceso mediante el cual se produce

documentacioacuten retroactivamente desde un

sistema existente

Es considerada una forma de ingenieriacutea inversa

porque la documentacioacuten reconstruida es usada

para ayudar al conocimiento del programa

XIV UTILIZANDO EL METODO CIENTIFICO EN LA

INGENIERIA INVERSA

Ante cualquier dificultad tecnoloacutegica el

meacutetodo cientiacutefico siempre es y seraacute nuestra maacutes

preciada arma Partamos imaginando un pequentildeo

dilema relacionado con el tema de ingenieriacutea de

software especiacuteficamente con un sencillo

programa (Fig 3)

Figura 3 Pantalla de aplicacioacuten que nos serviraacute de ejemplo

Esta sencilla aplicacioacuten mostraraacute un mensaje con cierto

resultado y aun siendo un problema demasiado sencillo

para considerarlo como un reto el objetivo es soacutelo describir

] INGENIERIacuteA DE SOFTWARE

25

INGENIERIacuteA DE SISTEMAS

las acciones usuales del proceso las cuales son aplicables

en escalas muy superiores

El resultado mostrado por el programa dentro del mensaje

emergente se basa en nuestra entrada pero nosotros

desconocemos en lo absoluto los procedimientos utilizados

sobre esta entrada para producir aquella respuesta

A La Observacioacuten es Trascendental

Primero es importante observar el problema su

comportamiento Es substancial tratar de lograr

un pensamiento inductivo en donde logremos

identificar el principio particular del problema

para poder llegar a extrapolarlo a una solucioacuten

general

El punto de quiebre se produce en este instante

Ya al haber observado la aplicacioacuten podriacuteamos

decidir procesar los datos que nos entrega y

lograr crear un coacutedigo equivalente o investigar el

funcionamiento interno

B Dentro de la aplicacioacuten

Luego de la formulacioacuten de una hipoacutetesis sobre

su funcionamiento necesitamos algunas

herramientas para comenzar con la investigacioacuten

En el caso de esta aplicacioacuten con un poco de

conocimientos del lenguaje ensamblador de

programacioacuten tradicional y un descompilador es

suficiente

Es importante emprender de buena forma

nuestro sondeo ser ordenados y metoacutedicos en la

tarea En este momento las capacidades analiacuteticas

y loacutegicas son muy importantes para alivianar

nuestra faena

Lo fundamental es conocer muy bien el

entorno en que nos desenvolveremos En este es

punto indispensable saber que una aplicacioacuten

para Windows necesita invocar internamente al

punto de entrada MessageBox o MessageBoxEx

de la libreriacutea de sistema user32dll para poder

desplegar un mensaje (Fig 4)

Figura 4 Resultado de la Aplicacioacuten

Ya con esa pista es sencillo encontrar el

fragmento de coacutedigo relacionado con las

operaciones relacionadas a nuestro nuacutemero de

entrada que tendriacutea una forma similar a la

mostrada a continuacioacuten en nuestro

descompilador (Fig 5)

Figura 5 Vista del Programa en Ensamblador

Cualquier programador intuiriacutea faacutecilmente lo

que hacen las liacuteneas superiores de esta aplicacioacuten

en especial sprintf es parte de la libreriacutea estaacutendar

de C++ Claramente vemos tambieacuten el tiacutetulo de la

ventana en el coacutedigo estos valores son

interpretados de forma inteligente por este

descompilador en especial y en particular nos

asiste de sobremanera a comprender el coacutedigo

Lo siguiente es sencillamente explorar paso a

paso las acciones superiores de caacutelculo del

resultado En esta instancia seraacute ideal realizar

numerosas pruebas para estar completamente

seguros de que logramos develar el secreto tras la

funcionalidad objetivo (Fig 6)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

26

Figura 6 Inicio del coacutedigo al que aplicaremos ingenieriacutea inversa

Hay que detenerse algunos segundos a

individualizar algunos procedimientos del

anaacutelisis que a simple vista pueden parecer

inconcebibles con el fin de poder generar una

tesis concluyente

Cabe destacar que se omitiraacuten pasos

intermedios de asignaciones de memoria y otros

formalismos propios de ensamblador para

favorecer el entendimiento del lector

Inicialmente tenemos el valor de entrada

supuestamente ya leiacutedo desde el cuadro de

diaacutelogo del programa ahora nos enfocamos en la

primera accioacuten importante Asumiremos el valor

de entrada como una incoacutegnita

En el siguiente trozo de coacutedigo la liacutenea

destacada antildeadioacute siete a nuestra incoacutegnita (Fig 7)

Figura 7 Coacutedigo donde se denota la adicioacuten de 7 a nuestra ecuacioacuten

A continuacioacuten se multiplica ese valor

resultante de la suma por el mismo (Fig 8)

Figura 8 Coacutedigo donde se denota la multiplicacioacuten del valor por la suma

Nuevamente multiplicamos el resultado por el

anterior proporcionado tras la suma En esta

segunda vez ya podemos expresar la operacioacuten

simplemente elevando al cubo la suma anterior

(Fig 9)

Figura 9 Coacutedigo que denota una nueva multiplicacioacuten del resultante

Ahora le restamos diez al resultado

El procedimiento que viene a continuacioacuten

propone un mayor desafiacuteo intelectual Un nuacutemero

constante en este caso el cargado al registro

EAX (Fig 10)

Figura 10 ubicacioacuten del nuacutemero constante EAX

Generalmente la divisioacuten es algo maacutes costosa

en tiempo de procesador que otras operaciones

por lo que ciertos compiladores incluyen tablas

de constantes las cuales son llamadas ―nuacutemeros

maacutegicos para la divisioacuten entera

d Con signo Sin signo

m (hex) s m (hex) a s

-5 99999999 1

-3 55555555 1

-2k 7FFFFFFF k-

1

1 mdash mdash 0 1 0

2k 80000001 k-

1 232-k 0 0

3 55555556 0 AAAAAAAB 0 1

5 66666667 1 CCCCCCCD 0 2

6 2AAAAAAB 0 AAAAAAAB 0 2

7 92492493 2 24924925 1 3

9 38E38E39 1 38E38E39 0 1

10 66666667 2 CCCCCCCD 0 3

11 2E8BA2E9 1 BA2E8BA3 0 3

] INGENIERIacuteA DE SOFTWARE

27

INGENIERIacuteA DE SISTEMAS

12 2AAAAAAB 1 AAAAAAAB 0 3

25 51EB851F 3 51EB851F 0 3

125 10624DD3 3 10624DD3 0 3

Tabla 1 Algunos nuacutemeros maacutegicos (32 bits)

Ahora bien conociendo la tabla 1 sabiendo

que el nuacutemero cargado en esta ocasioacuten

corresponde al once lo que hace el coacutedigo es

multiplicar el resultado de la salida temporal por

aquel nuacutemero (Fig 11)

Figura 11 Multiplicacioacuten del resultante por el numero 11

Naturalmente la multiplicacioacuten por un nuacutemero

tan grande produce una especie de

desbordamiento en el registro contenedor del

resultado al exceder el tamantildeo de palabra del

procesador (en este caso de 32 bits) Estos bits

sobrantes se almacenan naturalmente en el

registro EDX registro que es contiguo a ECX

dentro de la memoria de los registros del

procesador

Ahora desplazamos un bit del registro EDX

(equivalente a una divisioacuten entera por dos) para

obtener la solucioacuten de la divisioacuten por once

generando una sencilla ecuacioacuten

Figura 12 Desplazamiento del bit de registro EDX

El uacuteltimo paso luego de documentar estos

resultados seraacute crear una aplicacioacuten que recree

esta foacutermula soacutelo en caso de tener intenciones de

re-codificacioacuten del desarrollo Consumando este

punto es sencillo confeccionar un diagrama con

todo el proceso anteriormente visto

XV CONCLUSIONES

Queda claro que el tema de la ingenieriacutea

inversa es uno de los toacutepicos maacutes interesantes a

los que podriacutea afrontarse un profesional de la

tecnologiacutea y en general disfrutar el largo proceso

involucrado gracias al desafiacuteo poco predecible

que presenta

En general podemos darnos cuenta de que no

existen muchas metodologiacuteas y teoriacuteas estrictas

sobre coacutemo aplicar las teacutecnicas de ingenieriacutea

inversa Afortunadamente un ingeniero estaacute

preparado para afrentar desafiacuteos de este tipo

Adicionalmente podemos deducir tambieacuten el

aspecto bidireccional de la ingenieriacutea inversa

pues como ya lo comprobamos no solo es un

desafiacuteo aplicarla sino que tambieacuten lo es tener que

dificultar el proceso o incluso tratar de impedirlo

si la situacioacuten lo requiere

REFERENCIAS

[12] Roger Pressman Ingenieriacutea de Software ―Un Enfoque Moderno 6th ed

MC Graw Hill [13] httpeswikipediaorgwikiIngenieria_inversa

[14] httpwwwinfosecwritersconntext_resourcespdfsoftware_security_and_r

everse_engineeringpdf [15] httperwinriedclmodo=visorampelemento=239

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

28

METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO Univ Alejandro Meacutendez Escobar

Universidad San Francisco de Asiacutes

Ingenieriacutea de Sistemas

Ingenieriacutea de Software I

La Paz - Bolivia

amendezusfaedubo

Resumenmdash Al adquirir el software educativo dentro del campo de

desarrollo de software una gran importancia y siendo este

inspiracioacuten de propuestas de innumerables metodologiacuteas que buscan

la elaboracioacuten de un software de calidad

Tomaremos la metodologiacutea Aacutencora enfocada a la fase de

requerimientos y que ofrece elementos que indican las actividades

que deben realizarse los artefactos que se producen y la forma de

obtenerlos

Usando al desarrollo de software educativo como ejemplo de una

mejor comprensioacuten de dicha metodologiacutea analizando la aplicacioacuten

del Aacutencora en un trabajo propuesto para el Instituto Tecnoloacutegico de

Orizaba Meacutexico

Palabras clave mdash Aacutencora Metodologiacutea Desarrollo de Software

Educativo Requerimientos Calidad

XVI INTRODUCCIOacuteN

Hoy en diacutea la tecnologiacutea esta dentro de las

actividades que realizamos es asiacute que la educacioacuten no

queda exenta de ella por o cual es necesario adaptarse

al movimiento tecnoloacutegico que nos trae grandes

ventajas en la transmisioacuten de conocimientos de una

manera sencilla y dinaacutemica

De esta manera han surgido infinidad de

metodologiacuteas de desarrollo de software educativo el

cual tiene como objetivo ser el apoyo para docentes

alumnos y toda persona que este dentro del proceso de

aprendizaje

Tomando en cuenta este ramillete infinito de

metodologiacuteas surge en el ejemplo propuesto la

adaptacioacuten del Aacutencora en el desarrollo de software

educativo teniendo como objetivo principal la

comprensioacuten de los elementos y conceptos de la

metodologiacutea Aacutencora

Aacutencora es una metodologiacutea enfocada a la

adquisicioacuten de requerimientos para software que

ofrece guiacuteas y elementos de apoyo para la obtencioacuten de

estos requerimientos Al mismo tiempo permite pasar a

la fase de disentildeo de manera sencilla Aprovechando las

ventajas que presenta Aacutencora se le hicieron algunas

adaptaciones con el fin de cubrir algunas

caracteriacutesticas del disentildeo instruccional y enriquecer

Aacutencora habilitaacutendola para la adquisicioacuten de

requerimientos de software educativo

XVII APLICACIOacuteN DE LA METODOLOGIacuteA AacuteNCORA

Como es el objetivo principal la comprensioacuten de la

aplicacioacuten de la metodologiacutea Aacutencora dentro del

desarrollo de software educativo de calidad solo

describiremos los meacutetodos del meacutetodo y los resultados

obtenidos

Claro esta que para ahondar maacutes en tema del

software educativo en si el lector puede recurrir a los

siguientes autores Metodologiacutea de desarrollo de

sistemas multimedia (Vaughan 2006) Propuesta de

metodologiacutea para el disentildeo desarrollo y evaluacioacuten

de software educativo (Reyes 2009) Ingenieriacutea de

software educativo con modelaje orientado por objetos

(Goacutemez 1998) asi como tambieacuten los siguientes

modelos ADDIE (Anaacutelisis Disentildeo Desarrollo

Implantacioacuten y Evaluacioacuten) de (McGriff 2000) y el

disentildeo instruccional aplicado al desarrollo de software

educativo EISE (Especificacioacuten Instruccional de

Software Educativo) de (Hernaacutendez 2005)

] INGENIERIacuteA DE SOFTWARE

29

INGENIERIacuteA DE SISTEMAS

Quienes tienen el mismo objetivo de crear software

educativo de calidad podemos sintetizar de ellos los

siguientes puntos

Anaacutelisis del puacuteblico al que se dirigiraacute el software

Problema oacute necesidad educativa a atender

Anaacutelisis de contenido (Tema a tratar actividades

para alcanzar el objetivo de ensentildeanza y forma de

evaluarlo)

Actividades oacute forma actual de llevar a cabo la

ensentildeanza del tema en cuestioacuten

Elaboracioacuten de guiones metaacuteforas escenarios

Creacioacuten de prototipo oacute Storyboard

Disentildeo de interfaz

Mapas de navegacioacuten

Modelos de datos

Elaboracioacuten de diagramas de contexto diagramas

de flujo o diagramas de casos de uso

Ahora enfocaacutendonos en el aacutencora se establece la

propuesta de seleccionar las actividades de Aacutencora que

permitan obtener los requerimientos de un software

educativo

La Tabla 1 presenta las actividades y artefactos

producidos en las fases de Aacutencora para la elaboracioacuten

de software educativo

TABLA 1 ACTIVIDADES Y ARTEFACTOS DE LA METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO

Metodologiacutea Aacutencora

Fases Actividades y artefactos

Anaacutelisis de

Requerimientos

A traveacutes de entrevistas con los clientes

(maestros y pedagogos) y de la lectura

del respectivo material proporcionado

por ellos se definiraacute la asignatura a la

que se enfocaraacute el software el tema a

tratar y la forma en que se abordaraacute y

evaluaraacute Tambieacuten se estableceraacute el

objetivo general de aprendizaje la

metaacutefora que se emplearaacute y se

determinaraacute el puacuteblico al que se

dirigiraacute el software

Artefactos

Documento que define la asignatura

contenido objetivo general de

aprendizaje metaacutefora y puacuteblico al que

se dirigiraacute el software Guion de la

situacioacuten actual

Recoleccioacuten y

clasificacioacuten de

requerimientos

El guion de la propuesta

computacional reflejaraacute la metaacutefora

que se sigue el ambiente de cada

escena

La bitaacutecora de desarrollo permitiraacute ver

coacutemo el sistema responderaacute a las

diversas acciones que realice el

usuario

En lugar del prototipo raacutepido se

elaboraraacute un Storyboard para presentar

graacuteficamente la estructura de sistema

propuesto

Artefactos

Guion de propuesta computacional

bitaacutecora de desarrollo Storyboard

Resolucioacuten de

conflictos

jerarquizacioacuten y

validacioacuten de

requerimientos

Modificaciones al guion de la

propuesta computacional de acuerdo a

los cambios propuestos por los

maestros y pedagogos

Artefactos

Guion de propuesta computacional e

Storyboard con adecuaciones sentildealas

Cierre

Trasladar los guiones a casos de uso

Artefactos

Casos de uso

Se agregaron algunas caracteriacutesticas a ciertos

artefactos de Aacutencora para poder cubrir los

requerimientos de software educativo Uno de estos

elementos es el guion de la propuesta computacional

al que se propone agregar lo siguiente

Conocimientos previos del usuario Se refiere a los

conocimientos baacutesicos o miacutenimos que debe tener el

alumno para poder interactuar con el moacutedulo

Objetivo de aprendizaje Es el aprendizaje que

debe obtener el alumno despueacutes de haber interactuado

con el moacutedulo

La Figura 1 se presenta la estructura sugerida para el

guion de la propuesta computacional En la bitaacutecora de

desarrollo se propone antildeadir una fila al final de cada

pista donde se describan las situaciones favorables y

no favorables para el cumplimiento del objetivo de

aprendizaje para esa pista en particular Por otra parte

en lugar del prototipo se sugiere utilizar el Storyboard

ya que permite mostrar de manera maacutes completa la

estructura del guion de la propuesta computacional La

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

30

Figura 2 muestra el formato para la elaboracioacuten del

Storyboard

Figura 1 Estructura del guion para la propuesta computacional

Figura 2 Formato para la elaboracioacuten del Storyboard

XVIII RESULTADOS

Aplicando Aacutencora en un ejemplo para la parte de

requerimientos se obtuvo la siguiente informacioacuten

Asignatura Matemaacuteticas

Contenido Estaacute articulado con base en seis ejes

con sus respectivos temas y subtemas que variacutean de

acuerdo al grado escolar Considerando lo anterior se

tiene lo siguiente

a) Grado escolar De segundo hasta quinto grado de

primaria

b) Temas Nuacutemeros naturales capacidad peso

tiempo y ubicacioacuten espacial planteamiento y

resolucioacuten de problemas sencillos en los que se

requiera recolectar y registrar informacioacuten

perioacutedicamente representacioacuten de informacioacuten en

tablas de frecuencia y graacuteficas de barras registros de

los resultados de experimentos aleatorios

representacioacuten de los resultados de un experimento

aleatorio en tablas y graacuteficas

c) Subtemas Planteamiento y resolucioacuten de

problemas que impliquen dos o maacutes operaciones con

nuacutemeros naturales

d) Ejes Introduccioacuten del kiloacutemetro como la unidad

que permite medir grandes distancias y recorridos

largos capacidad peso y tiempo uso del reloj y el

calendario los nuacutemeros sus relaciones y sus

operaciones medicioacuten la prediccioacuten y el azar

tratamiento de la informacioacuten

Objetivo general de aprendizaje Ejercitar las

operaciones aritmeacuteticas baacutesicas interpretar la

informacioacuten y los resultados de la informacioacuten dada

aplicada en situaciones de la vida cotidiana

Con las actividades hasta ahora realizadas se ha

observado que los artefactos de Aacutencora son flexibles y

pueden por lo tanto adaptarse de acuerdo a las

necesidades que implican la adquisicioacuten de

requerimientos de un software educativo Tambieacuten se

aprecian las ventajas de algunos artefactos como la

bitaacutecora de desarrollo que permite determinar las

respuestas del sistema ante las acciones del usuario y

estimar tambieacuten el tiempo que llevaraacute implementar

cada quinteta

La estimacioacuten del tiempo ayuda a tener un valor

aproximado del tiempo de desarrollo de software

Agregar el objetivo de aprendizaje a la bitaacutecora de

desarrollo puede parecer repetitivo despueacutes de

incluirlo en el Storyboard pero esto nos permite ver las

situaciones u obstaacuteculos que pueden impedir que el

objetivo de aprendizaje se alcance y por tanto tenerlos

presente durante el disentildeo A pesar de las ventajas de

la bitaacutecora de desarrollo un inconveniente hasta ahora

encontrado es lo tedioso al manejar muchas quintetas

] INGENIERIacuteA DE SOFTWARE

31

INGENIERIacuteA DE SISTEMAS

cuando por la naturaleza del guion se tienen varios

avisos y mensajes para el usuario Por otra parte los

guiones han ayudado a realizar de manera sencilla el

modelo de casos de uso

En lo referente a la presentacioacuten con los clientes el

guion es un artefacto que pude dar un panorama

general del software que se va a elaborar y queda

reforzada a traveacutes de los Storyboard Cuando se

requieren cambios solicitados por los clientes las

modificaciones a estos artefactos no han sido muy

complicadas dado que por su estructura es faacutecil de

ubicar las secciones y respectivos elementos

XIX CONCLUSIONES

Con los resultados hasta ahora obtenidos se puede

decir que la propuesta permite a los desarrolladores

con poca experiencia en desarrollo de software

educativo obtener los requerimientos de una manera

sencilla

Permite realizar un mejor relevamiento de informacioacuten

de los requerimientos del cliente enfocaacutendonos mas en

este

Es tambieacuten importante mencionar los avances que

tiene y seguiraacute teniendo el software educativo aplicado

no solo a nivel escolar sino tambieacuten al superior

Habiendo revisado el concepto y la aplicacioacuten de la

metodologiacutea Aacutencora en el desarrollo de software

educativo se llegoacute a una comprensioacuten mas extensa de

dicho meacutetodo el cual es de gran importancia dentro de

la ingenieriacutea de Software ya que nos

REFERENCIAS

httpwwwuvmxmisproductividaddocumentsCarmenChay_CIIM2010pdf

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 7: Revista de Ingenieria de Software

] INGENIERIacuteA DE SOFTWARE

7

INGENIERIacuteA DE SISTEMAS

EXTREME PROGRAMMING PARA DESARROLLO

DE SOFTWARE

Erwin Adaacuten Choque Ulloa Ingenieriacutea de Sistemas

Universidad San Francisco de Asiacutes

Plaza Avaroa esq Belisario Salinas

La paz ndash Bolivia adan_ekinghotmailcom

Resumen

En este articulo se describiraacute algunas de las metodologiacuteas

agiles de desarrollo de software puesto que para asegurar el

eacutexito durante el desarrollo de un software es importante

saber la metodologiacutea de desarrollo la cual nos provee una

guiacutea para la correcta aplicacioacuten y desarrollo de Software

La metodologiacutea Extreme Programming XP que es una de las

metodologiacuteas aacutegiles maacutes extendidas y populares ademaacutes es

considerada como una metodologiacutea posmoderna donde

grandes capacidades se generan a traveacutes de procesos

emergentes

Palabras claves Extreme Programming metodologiacutea software

usuario

1 INTRODUCCION

El esquema tradicional para abordar el desarrollo de

software ha demostrado ser efectivo y necesario en

proyectos de gran tamantildeo respecto a tiempo y recursos

Sin embargo este enfoque no resulta ser el maacutes adecuado

para muchos de los proyectos actuales donde el entorno

del sistema es muy cambiante y en donde se exige

reducir draacutesticamente los tiempos de desarrollo pero

manteniendo una alta calidad Ante este problema las

metodologiacuteas aacutegiles son una posible respuesta para llenar

ese vaciacuteo metodoloacutegico Orientadas para proyectos

pequentildeos las metodologiacuteas aacutegiles constituyen una

solucioacuten

A continuacioacuten se describiraacute cada una de las

metodologiacuteas de desarrollo de software

2 EXTREME PROGRAMMING XP

La metodologiacutea de desarrollo de software XP es la

primera metodologiacutea aacutegil y la que le dio conciencia al

movimiento actual de metodologiacuteas aacutegiles Kent Beck el

padre de la metodologiacutea XP se basa en realimentacioacuten

continua entre el cliente y el equipo de desarrollo

comunicacioacuten fluida entre todos los participantes

simplicidad en las soluciones implementadas y facilidad

para enfrentar los cambios XP se define como

especialmente adecuada para proyectos con requisitos

imprecisos y muy cambiantes y donde existe un alto

riesgo teacutecnico Ahora se describiraacute las caracteriacutesticas

esenciales del Extreme Programming

21 LAS HISTORIAS DEL USUARIO

La red Las historias del usuario es la teacutecnica utilizada

para especificar los requisitos de software son tarjetas de

papel donde el cliente especifica de manera simplificada

las caracteriacutesticas que el sistema debe poseer ya sean

requisitos funcionales o requisitos no funcionales Se

caracteriza por ser dinaacutemica y flexible cada historia de

usuario debe ser comprensible y delimitada para que los

programadores puedan implementarla en pocas semanas

22 ROLES XP

Seguacuten Kent Beck los roles son

Programador El programador se encarga de escribir las

pruebas unitarias y tambieacuten estaacute encargado de producir el

coacutedigo del sistema

Cliente Encargado de escribir las historias de usuario y

los requisitos funcionales y selecciona las historias por

prioridad de conveniencia al negocio

Encargado de pruebas Encargado de ayudar al cliente a

escribir las pruebas funcionales ademaacutes de ejecutar las

pruebas constantemente encargado de de las

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

8

herramientas de soporte de pruebas como tambieacuten

difundir los resultados de dicha prueba

Encargado de seguimiento Es el encargado de la

realimentacioacuten al equipo y realiza el seguimiento del

proceso de cada iteracioacuten

Entrenador Es el encargado de prever guiacuteas al equipo

basadas en XP y de seguir el proceso correctamente

Consultor Es el que posee un conocimiento especifico

en alguacuten tema necesario para el proyecto para solucionar

problemas

Gestor Es la interaccioacuten entre clientes y programadores

ayudando a trabajar de forma adecuada y de esta manera

coordinar de forma correcta

23 PROCESO XP

El ciclo de desarrollo XP consiste en

El cliente define el valor del negocio a implementar

El programador estima el esfuerzo necesario para su

implementacioacuten

El cliente selecciona que construir de acuerdo con sus

propiedades y las restricciones del tiempo

El programador construye ese valor de negocio

Vuelve al principio

En todas las iteraciones de este ciclo tanto el cliente como

el programador aprenden No se debe presionar al

programador a realizar maacutes trabajo que el estimado ya

que se perderaacute calidad en el software o no se cumpliraacuten

los plazos

El ciclo de vida ideal de XP consiste de seis fases

Exploracioacuten

Planificacioacuten de la Entrega (Release)

Iteraciones

Produccioacuten

Mantenimiento y Muerte del Proyecto

24 PRACTICAS XP

Las siguientes praacutecticas ayudan al desarrollo de software

El juego de la planificacioacuten Hay una comunicacioacuten

frecuente el cliente y los programadores El equipo

teacutecnico realiza una estimacioacuten del esfuerzo requerido para

la implementacioacuten de las historias de usuario y los

clientes deciden sobre el aacutembito y el tiempo de entregas y

de cada iteracioacuten

Entregas pequentildeas Producir raacutepidamente versiones del

sistema que sean operativas aunque no cuenten con toda

la funcionalidad del sistema Esta versioacuten ya constituye

un resultado de valor para el negocio Una entrega no

deberiacutea tardar maacutes de tres meses

Metaacutefora El sistema es definido mediante un conjunto

de metaacuteforas compartidas por el cliente y el equipo de

desarrollo Una metaacutefora es una historia compartida que

describe como deberiacutea funcionar el sistema

Disentildeo simple Se disentildea la solucioacuten maacutes simple que

pueda funcionar y ser implementada en un determinado

momento del proyecto

Pruebas La produccioacuten de coacutedigo estaacute dirigida para las

pruebas unitarias Estas son establecidas por el cliente

antes de escribirse el coacutedigo y son ejecutadas

continuamente ante cada modificacioacuten del sistema

Pruebas Es una actividad constante de reestructuracioacuten

del coacutedigo con el objetivo de remover duplicacioacuten de

coacutedigo mejorar su legibilidad simplificarlo y hacerlo

maacutes flexible para facilitar los cambios Se mejora la

estructura interna del coacutedigo sin alterar su

comportamiento externo

Programacioacuten en parejas Toda la produccioacuten del

coacutedigo debe realizarse con trabajo en parejas de

programadores Para tener ventajas como menor tasa de

errores mejor disentildeo etc

Propiedad colectiva del coacutedigo Cualquier programador

puede cambiar cualquier parte del coacutedigo en cualquier

instante

Integracioacuten continua Cada pieza del coacutedigo es

integrada en el sistema una vez que este listaasi el

sistema puede ser integrado y construido varias veces en

un mismo diacutea

40 horas por semana Se debe trabajar un maacuteximo de 40

horas por semana no se trabajan horas extras en dos

semanas seguidas Si esto ocurre estaacute existe un problema

porque el trabajo extra desmotiva al equipo

Cliente in-situ El cliente tiene que estar presente y

disponible todo el tiempo para el equipo este es uno de

los principales factores de eacutexito para el proyecto XP Y

asiacute guiar y disipar cualquier duda de los programadores

donde la comunicacioacuten es maacutes efectiva que la escrita

Estaacutendares de programacioacuten XP enfatiza que la

comunicacioacuten de los programadores es a traveacutes del

coacutedigo por lo que es importante que se sigan estaacutendares

de programacioacuten para mantener el coacutedigo legible

3 CONCLUCIONES

] INGENIERIacuteA DE SOFTWARE

9

INGENIERIacuteA DE SISTEMAS

Las metodologiacuteas aacutegiles ofrecen una solucioacuten casi a

medida para una gran cantidad de proyectos

La metodologiacutea XP es una de las metodologiacuteas aacutegiles maacutes

extendidas y populares ademaacutes es considerada como una

metodologiacutea posmoderna cuyas grandes capacidades se

generan a traveacutes de procesos emergentes

4 REFERENCIAS

httpwwwmetodologiasSoftcomdesarrolloagil

httpwwwwikipediacommetodologiaXP

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

10

Desarrollo de Scrum

Sergio J Guzmaacuten L Ingenieriacutea de Sistemas

Universidad San Francisco de Asiacutes

20 Octubre Esq Belisario Salinas

La Paz - Bolivia

sjguzmanusfaedubo

Resumenmdash Scrum es una metodologiacutea aacutegil de desarrollo de

proyectos que toma su nombre y principios de los estudios

realizados sobre nuevas praacutecticas de produccioacuten por

Hirotaka Takeuchi e Ikujijo Nonaka a mediados de los 80

En 1996 se definioacute por primera vez un patroacuten para aplicar

esos principios de desarrollo en ldquocampos de scrumrdquo al

software

Palabras clave mdash scrum metodologiacutea patroacuten software

sprint rol

I Que es Scrum

Scrum es una metodologiacutea aacutegil de desarrollo de proyectos

que toma su nombre y principios de los estudios

realizados sobre nuevas praacutecticas de produccioacuten por

Hirotaka Takeuchi e Ikujijo Nonaka a mediados de los 80

En 1996 se definioacute por primera vez un patroacuten para aplicar

esos principios de desarrollo en ―campos de scrum al

software

Esta fue la primera definicioacuten de un patroacuten Scrum aplicado

al software disentildeada por Jeff Sutherland y Ken Schwaber y

presentada en Object-Oriented Programming Systems

Languages amp Applications OOPSLA en 1996

II iquestCoacutemo incorporarla

La competitividad del mercado de desarrollo de Software y

la necesidad de los clientes de reducir el tiempo de

mercado obligan a las organizaciones de desarrollo de

software a ser agresivas en sus calendarios de entrega Esto

ha hecho que hayan surgido metodologiacuteas para la gestioacuten y

desarrollo de software basadas en un proceso iterativo e

incremental Su estructura estaacute basada en corto tiempo los

cuales son iteraciones de 1 a 4 semanas Scrum se usa en

proyectos de entorno complejos donde se desea obtener

resultados raacutepidos y la productividad es lo maacutes importante

En los proyectos basados en Scrum se consideran tres

roles

Duentildeo del producto Es quien determina las propiedades de

los entregables

Maestro de Scrum Administra y facilita la ejecucioacuten del

proceso

Equipo de Trabajo Trabajan en conjunto para entregar

resultados en cada sprint

Fig 1 El flujo de Scrum

Como se puede observar en medio de los participantes del

proceso no quedan claras las responsabilidades del

arquitecto de software Sin embargo como comenta

Charlie Alfred ―la arquitectura es al aceite y el filtro que

lubrica adecuadamente a Scrum

Fig 2 El flujo de Scrum

] INGENIERIacuteA DE SOFTWARE

11

INGENIERIacuteA DE SISTEMAS

Si se compara el rol del arquitecto de edificaciones con el

del arquitecto de software se puede observar que ambos

modelan las construcciones a un alto nivel de abstraccioacuten

proveen posibles soluciones mejoran la comunicacioacuten con

los miembros del equipo de construccioacuten a traveacutes de

modelos visualizan las generalidades del problema

definen los roles y las interacciones entre los componentes

de construccioacuten entre otras tareas Al igual que es

imposible pensar que un rascacielos puede ser construido

sin una arquitectura soacutelida es imposible pensar que

productos de software empresariales puedan ser

implementados sin una arquitectura bien pensada

Seguacuten Bass Clements y Kasman ―La arquitectura de

software de un programa o sistema informaacutetico es la

estructura o estructuras del sistema que incluyen elementos

de software las propiedades externamente visibles de esos

elementos y las relaciones entre ellos Esta definicioacuten nos

lleva a concluir que la arquitectura de software garantiza el

buen desarrollo del software y a tener un sistema que

cumpla con los requerimientos funcionales y no

funcionales del cliente Ademaacutes la arquitectura es clave en

la reutilizacioacuten de artefactos de software en sistemas de

liacutenea de productos de software

Viendo la importancia de la arquitectura en el desarrollo

del software en eacuteste artiacuteculo se presenta una propuesta para

gestionar la arquitectura de Software en Scrum En el

primer capiacutetulo se trata el tema de la localizacioacuten de la

arquitectura de software en el ciclo de desarrollo de Scrum

en el segundo capiacutetulo se describen las tareas del arquitecto

de software en Scrum finalmente se presentan las

conclusiones y el trabajo futuro

III Arquitectura de Software en el ciclo de desarrollo de

Scrum

La idea fundamental de la presente propuesta es adicionar

un sprint inicial llamado ―Sprint 0Prime al inicio del ciclo de

desarrollo El objetivo principal del arquitecto en el Sprint

0 es analizar y disentildear la generalidad del sistema que

satisfaga los requisitos y sea entendible por los miembros

del equipo desde sus diferentes puntos de vista durante el

desarrollo Un punto clave es reutilizar artefactos de

software creados a partir de la arquitectura para ser maacutes

aacutegiles en el desarrollo de productos especiacuteficos

El Sprint 0 comprende tres fases que fueron tomadas del

ciclo de vida de entregas evolutivas En el Sprint 0 se

construye la arquitectura de forma iterativa mediante un

anaacutelisis preliminar de los conductores arquitectoacutenicos

(requisitos funcionales de calidad y del negocio) y de un

estudio de factibilidad del proyecto No se necesita tener

todos los requisitos claros para comenzar la fase de disentildeo

arquitectoacutenico

Para determinar los conductores arquitectoacutenicos se debe

identificar los objetivos del negocio de maacutes alta prioridad

que son pocos Estos objetivos del negocio se convierten en

los escenarios de calidad o casos de uso De esta lista se

deben escoger los que tendraacuten un mayor impacto sobre la

arquitectura El disentildeo arquitectoacutenico puede comenzar una

vez que se encuentran definidos los conductores

arquitectoacutenicos El proceso de anaacutelisis de requisitos seraacute

entonces influenciado por las preguntas generadas durante

el disentildeo arquitectoacutenico

El resultado del Srpint 0 es un documento inicial que

explica la arquitectura El documento puede basarse en los

pasos definidos por el meacutetodo ADD (Attrbute Driver

Design) Este meacutetodo ha sido probado exitosamente en

proyectos anteriores Con ADD se puede definir una

arquitectura de software mediante un proceso de

descomposicioacuten basado en los atributos de calidad de

Software

El documento inicial de la arquitectura se debe avaluar con

el fin de saber si la arquitectura cumple con los requisitos

de calidad Para realizar esta evaluacioacuten se propone el

meacutetodo ATAM (Architecture Tradeoff Analysis Method)

El ATAM revela cuaacuten bien una arquitectura satisface los

objetivos particulares de calidad y provee una

aproximacioacuten de coacutemo los objetivos de calidad interactuacutean

Si la evaluacioacuten de la arquitectura se encuentra que se

deben realizar cambios a la misma entonces eacutesta se debe

refinar hasta llegar a tener como resultado del Sprint 0 el

documento puacuteblico de la arquitectura junto con el sistema

esqueleto Finalmente la arquitectura creada en el Sprint 0

beneficiaraacute el desarrollo en los siguientes sprints

IV Rol del arquitecto de Software en Scrum

El rol y actividades del arquitecto de software cambian de

enfoque dependiendo de si se estaacute en el Sprint 0 o en

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

12

sprints subsecuentes

Fig 3 La Comunicacioacuten

Sprint 0 En sistemas complejos una persona difiacutecilmente

puede cubrir con amplitud teacutecnica las decisiones

arquitectoacutenicas y dar credibilidad a la arquitectura de

software Esto quiere decir que la participacioacuten del equipo

es de vital importancia para la creacioacuten y el mantenimiento

de la arquitectura Un equipo de arquitectos de software

que se aiacutesle del equipo de Scrum puede producir una

arquitectura que corra el riesgo de ser rechazada Es por

esto que recomendamos que el arquitecto o los arquitectos

se software sean miembros del equipo de Scrum Una de

las actividades que se debe realizar en equipo es la

evaluacioacuten de la arquitectura Especiacuteficamente en el

meacutetodo ATAM se requiere la participacioacuten mutua de tres

equipos que trabajan en conjunto con los arquitectos de

software el de evaluacioacuten el de tomadores de decisiones

del proyecto y el de los involucrados en la arquitectura

Sprints subsecuentes El arquitecto de software asegura que

el equipo de Scrum entienda el enfoque y los retos

arquitectoacutenicos maacutes importantes en casa sprint Los

equipos de Scrum realizan construcciones cortas guiados

por las estrategias de la arquitectura A continuacioacuten se

nombran algunas de las responsabilidades del arquitecto de

software desde el Sprint 1 en adelante

El duentildeo del producto y el maestro del Scrum trabajan con

el arquitecto para priorizar los requisitos a implementar en

cada iteracioacuten

El arquitecto comunica las decisiones y facilita las

conversaciones arquitectoacutenicas de distintos puntos de vista

en cada sprint

El arquitecto asegura que haya conformidad entre las

entregas en cada sprint y la arquitectura

El arquitecto responde preguntas y da orientacioacuten

arquitectoacutenica cuando sea necesario

Junto con el maestro de Scrum coordina a los miembros

del equipo para adaptarse a la arquitectura previa

El arquitecto junto con el duentildeo del producto y los

miembros del equipo preparan el Product Backlog

V Conclusioacuten

En el presente artiacuteculo ofrecimos una propuesta para incluir

la arquitectura de software en Scrum En el Sprint 0 se

realizan las actividades concernientes al anaacutelisis y disentildeo

de la arquitectura de software y el sistema esqueleto En

los siguientes sprints el arquitecto de software se asegura

de que la implementacioacuten cumpla con la arquitectura

REFERENCIAS

[3] httpwwwsafecreativeorgwork

[4] Hirotaka Takeuchi es decano de la Graduate School of International

Corporate Strategy en la Universidad Hitotsubashi en Tokio y fue profesor visitante en la Escuela de Negocios Harvard entre 1989 y 1990

[5] Ikujiro NonakaNo soy un guruacute porque me falta carisma

] INGENIERIacuteA DE SOFTWARE

13

INGENIERIacuteA DE SISTEMAS

El futuro de la ingenieriacutea de software Luis E Aguirre

Ingenieriacutea de Sistemas

Universidad San Francisco de Asiacutes

20 de Octubre esq Belisario Salinas

La Paz - Bolivia leaguirreusfaedubo

Resumen El disentildeo de programas a partir de informacioacuten binaria

significoacute un paso sustantivo para la industria desarrolladora de

software Desde ese hallazgo ocurrido en la deacutecada de los

cincuenta hasta hoy el crecimiento de metodologiacuteas para su

desarrollo ha subido notablemente en complejidad Sin embargo

los ciacuterculos viciosos que acusa hoy la confeccioacuten de programas

informaacuteticos impiden conceptualizar el objeto a un nivel

superior de abstraccioacuten tal y como lo exige el avance tecnoloacutegico

y los procesos de negocios

Palabras clave mdash futuro software ingenieriacutea programador y

desarrollo

I Introduccioacuten

La calidad de los sistemas informaacuteticos satisfaccioacuten de sus

usuarios y clientes son temas ampliamente conocidos

recurrentes y de constante preocupacioacuten por parte de los

practicantes de la Ingenieriacutea de software

Esta joven y dinaacutemica ingenieriacutea siempre estaacute en busca de

mejoras en el desarrollo de sistemas aumento de

productividad del ingeniero de software mayor control del

proceso de desarrollo establecimiento de nuevos meacutetodos de

desarrollo

Fig 1 Primeros programas computacionales en formato de tarjeta perforada

Estos elementos combinados y aplicados de buena forma

logran un buen proceso de desarrollo y en definitiva un buen

producto

Identificar los pasos que ha recorrido esta ingenieriacutea analizar

su contexto actual y finalmente proyectar hacia doacutende se

dirige es el pilar de este artiacuteculo

II iquestSe aplica actualmente la ingenieriacutea del software

La investigacioacuten y el desarrollo de teacutecnicas y meacuteto

dos de ingenieriacutea del software son constantes y suelen suponer

interesantes avances en la resolucioacuten de problemas de

desarrollo de software Sin embargo es habitual que en la

praacutectica diaria profesional no se incluya praacutecticamente

ninguna de las recomendaciones maacutes elementales de la

ingenieriacutea del software En efecto es habitual que el

desarrollo de software se parezca maacutes al descontrol del cuento

de laquosi los programadores fueran albantildeilesraquo ([Novatica

1996]) que a una idiacutelica y bien organizada factoriacutea de

software (concepto de gran vigencia a finales de los ochenta

[Nunamaker et al 1988])

De hecho las evaluaciones de los procesos productivos de

software realizadas a raiacutez de los modelo de procesos de

software (por ejemplo con CMM [Paulk et al 1993])

confirman que el desarrollo de software suele estar

baacutesicamente en estado caoacutetico

Y no soacutelo en como uno podriacutea pensar pequentildeas

organizaciones de un paiacutes mediterraacuteneo como el nuestro sino

en tambieacuten en las empresas adjudicatarias de interesantes

contratos de defensa de paiacuteses laquoavanzadosraquo como EEUU o

Japoacuten Si bien estos modelos de evaluacioacuten auacuten acumulan

distintas acusaciones de rigidez o falta de contraste empiacuterico

los resultados obtenidos en sus evaluaciones resultan

consistentes con la sensacioacuten de constante laquoapagafuegosraquo que

suelen sufrir los profesionales del software Tambieacuten suelen

revelar la praacutectica despreocupacioacuten de los responsables de las

organizaciones de software por la mejora de la calidad de sus

procesos de trabajo o de sus productos bien sea por contar con

una situacioacuten interna de empresa poco propicia porque el

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

14

ambiente del mercado no fomenta la preocupacioacuten por estos

temas o bien por su poco intereacutes real en la buacutesqueda de la

calidad

III La actualidad

La gran mayoriacutea de los sistemas de software creados hoy en

diacutea son los llamados sistemas corporativos es decir son

orientados a formar una parte importante de los negocios de

las grandes empresas

Continuando en nuestro contexto se identifica un nuevo

enfoque del problema de desarrollo el apoyo en la

sincronizacioacuten de los procesos de negocio estructuras

complejas de informacioacuten manejada por el negocio todo esto

entrelazado por restricciones dadas por las reglas del negocio

La tecnologiacutea actual por otro lado ha alejado maacutes todaviacutea los

ingenieros de las maacutequinas sistemas operativos incluso de

las tareas de programacioacuten

El enfoque de la mayoriacutea de los equipos de desarrollo e

ingenieros participes en proyectos sigue siendo con un bajo

nivel de abstraccioacuten cerca de la codificacioacuten Se tiende a

pensar en la base de datos a utilizar establecer la navegacioacuten

de las paacuteginas programar los protocolos de comunicacioacuten etc

Esto lleva a utilizar las tareas de programacioacuten y de pruebas

para validar el entendimiento y cumplimiento de la

funcionalidad de los sistemas

Lo anteriormente expuesto muestra un problema

metodoloacutegico consecuencia de un desfase entre el enfoque

teoacuterico oacuteptimo (anaacutelisis de negocio) y el enfoque praacutectico real

(programacioacuten y pruebas) en los proyectos de hoy En otras

palabras la metodologiacutea actualmente usada estaacute atrasada con

respecto al avance tecnoloacutegico

Desarrollando maacutes esta idea se identifican algunos

problemas concretos de las metodologiacuteas

Ellas no obligan a sus ejecutores a respetar todas las

normas y los procedimientos establecidos especialmente

en las etapas tempranas del proyecto Es muy faacutecil y

tentador ―saltar una o maacutes de estas etapas uno o maacutes

documentos o modelos pasando directamente a

implementacioacuten produccioacuten y posterior correccioacuten de los

sistemas desarrollados

Control de calidad del producto final La codificacioacuten y

complejidad del programa es demasiada para ser revisada

y verificada fehacientemente Por otro lado los coacutedigos

fuentes y los ejecutables actualmente son los uacutenicos

entregables eficientemente verificables

Estos dos problemas al parecer forman una situacioacuten

contradictoria la metodologiacutea tradicional no permite validar

eficientemente la calidad de los sistemas antes de llegar al

coacutedigo fuente y por otro lado tampoco permite llegar

eficientemente a coacutedigos fuentes de calidad

IV Futuro

La salida de este ―ciacuterculo vicioso que se propone es

bastante natural analizar la situacioacuten actual de la ingenieriacutea

de software en la luz de sus tendencias histoacutericas

La primera de ellas relacionada con los problemas que

resuelven los sistemas obviamente presente y muy utilizada

en nuestra realidad los sistemas de hoy no soacutelo resuelven los

problemas del mundo real sino que estaacuten fuertemente influen-

ciando el desarrollo del mundo real

Fig2 Modela

El enfoque de los ingenieros desde hace unos antildeos no se ha

movido significativamente por el camino del aumento de

abstraccioacuten establecido histoacutericamente Se han hecho ciertos

avances en temas puntuales (como arquitecturas de

componentes patrones de disentildeo nuevos lenguajes de

programacioacuten etc) pero conceptualmente

metodoloacutegicamente la tarea de programacioacuten sigue siendo

ejecutada de la misma forma escribiendo coacutedigos fuentes en

forma de los programas textuales

Eacuteste es justamente el ―atraso metodoloacutegico que se

mencionoacute Para disminuir la brecha entre las tendencias

histoacutericas es necesario ajustar la metodologiacutea en teacuterminos de

aumentar la abstraccioacuten del enfoque de los ingenieros de

software y acercarlo a la abstraccioacuten del problema

El aumento de la abstraccioacuten del proceso de desarrollo del

software hace pensar que la proacutexima generacioacuten de meacutetodos

de desarrollo se perfila en un conceptualmente nuevo con-

] INGENIERIacuteA DE SOFTWARE

15

INGENIERIacuteA DE SISTEMAS

junto de herramientas que permitan aumentar en un mayor

grado al actual la abstraccioacuten escondiendo los detalles de maacutes

bajo nivel

Fig3 Probable modelo a futuro

Las nuevas herramientas permitiraacuten ―programar en nivel

de anaacutelisis generando coacutedigos en un lenguaje de

programacioacuten tradicional de forma automaacutetica tal como hoy

los compiladores generan el lenguaje maacutequina a partir del

coacutedigo fuente Nuevos ―lenguajes de programacioacuten

naturalmente seriacutean visuales y se pareceriacutean a las

especificaciones de software en uno de los lenguajes de

modelamiento por ejemplo UML

V Conclusioacuten

Es muy probable que estemos proacuteximos a ver un nuevo

paso evolutivo en la ingenieriacutea de software Tan grande como

el invento de lenguajes de alto nivel o anaacutelisis y disentildeo

orientado a objetos Una nueva generacioacuten que absorberaacute a la

actual automatizando la mayoriacutea de las buenas praacutecticas

usadas actualmente

Una pregunta natural es si una maacutequina puede llegar a

generar programas tan buenos como los hechos por un pro-

gramador experto En vez de ―romper la cabeza con esta

pregunta ahora quizaacutes seriacutea suficiente recordarse otra vez de

la historia Los primeros compiladores de ninguna generacioacuten

alcanzaban de inmediato lo deseable y oacuteptimo Sin embargo

con el paso del tiempo apoyados en la experiencia de los

ingenieros y en el avance tecnoloacutegico se mejoraban hasta el

nivel de superar significativamente las generaciones

anteriores

Es poco factible que hoy en diacutea alguien cuestione la calidad

de los compiladores de por ejemplo Java y la calidad del

coacutedigo de maacutequina generado por ellos

VI Referencias [6] Website [Online]

httpwwwenterpriseanalystnetdownloadmda_informaticap

df

[7] httpwwwslidesharenetamrrochafuturo-del-software-impacto-en-las-organizaciones-y-en-los-profesionales

[8] httpwwwdcubaareventseci2008conferenciasIngSoftHexacta

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

16

Ingenieriacutea de Software para

Desarrolladores de juegos Huascar Huanca Orozco

Ingenieria de Sistemas San francisco de Asis

Av20 de Octubre esq Belisario Salinas

hhuncausfaedubo

ResumenmdashEn este artiacuteculo veremos una lo que es ldquoIS para

Desarrolladores de juegosrdquo si crees que un juego es facil pues

te equivocas en este articulo mostramos el uso de la IS en la

cracion de juegos que metodos utilizan y la complejidad que

representa para el equipo de desarrollo

1) Palabras clave mdash UMLRequisitosjuegoequipo de trabajo motor del juego

IV INTRODUCCIOacuteN

En la ingenieriacutea de software (IS) el desarrollo

de videojuegos es uacutenico pero similares a los

esfuerzos de software Es la uacutenica que combina el

trabajo de los equipos que cubren muacuteltiples

disciplinas (arte muacutesica actuacioacuten

programacioacuten etc) y que el juego de

acoplamiento que se busca a traveacutes del uso de

prototipos e iteraciones Con ello el desarrollo

del juego se enfrenta a desafiacuteos que pueden ser

abordadas mediante las praacutecticas tradicionales de

SE La industria tiene que adoptar buenas

praacutecticas de SE para sus distintas necesidades

tales como la gestioacuten de activos multimedia y

encontrar el fundamento en el juego La industria

debe asumir los retos por la evolucioacuten de los

meacutetodos de SE para satisfacer sus necesidades

Este trabajo investiga estos desafiacuteos y praacutecticas

de ingenieriacutea destaca para mitigar estos

problemas

V ENTRA EN EL JUEGO

Lo que la IS para desarrolladores de juegos hace

es

Mezcla de ingenieriacutea y el arte El software como

una praacutectica como una preocupacioacuten profesional

Meacutetodos para aprender a disentildear y fabricar un

producto El desarrollo del personaje e ingenieriacutea

de software Estrategias para hacer el mejor uso

de la ingenieriacutea del conocimiento formalizado El

aprendizaje de las habilidades que se pueden

aplicar en cualquier lugar

VI REQUISITOS

Esta parte ofrece una visioacuten general de los

conceptos y herramientas necesarias para la

obtencioacuten de requisitos

IDENTIFICAR LO QUE SE CONSIDERA UN REQUISITO DE SOFTWARE

ESTABLECER LOS CRITERIOS PARA DAR SENTIDO A LOS REQUISITOS Y LA

ESCRITURA DETERMINAR LA MANERA DE REUNIR LOS REQUISITOS O DESCUBRIR

EXPLORAR COacuteMO EMPLEAR CASOS DE USO PARA PERFECCIONAR Y

ANALIZAR LAS NECESIDADES ENCONTRAR TEacuteCNICAS PARA CONFIRMAR QUE LOS REQUISITOS ESTEacuteN

COMPLETOS

VERIFICAR LA EXACTITUD DE LOS REQUISITOS TRACE CAMBIOS EN LOS REQUISITOS

VII PROGRAMADOR DEL MOTOR DEL JUEGO

Fig 1 Juego RPG

] INGENIERIacuteA DE SOFTWARE

17

INGENIERIacuteA DE SISTEMAS

Los programadores de juegos motores crear el

motor de base del juego incluyendo la fiacutesica de

simulacioacuten y disciplinas graacuteficas

A Fiacutesica del motor del programador

Programador de un juego de la fiacutesica se dedica

al desarrollo de las fiacutesica de un juego se emplean

Por lo general un juego de soacutelo simular algunos

aspectos de la fiacutesica del mundo real Por ejemplo

un juego de espacio puede necesitar simulada

gravedad pero no tendriacutea ninguna necesidad

para simular agua viscosidad

Para un juego de rol como World of Warcraft

soacutelo un programador de la fiacutesica puede ser

necesaria Para un juego de combate complejo

como Battlefield 1942 los equipos de

programadores de la fiacutesica pueden ser necesarias

B motor de graacuteficos del programador

A pesar de todos los programadores antildeadir

tanto los contenidos y la experiencia que ofrece

un juego un programador de juego se centra maacutes

en la estrategia de un juego la aplicacioacuten de la

mecaacutenica del juego y la loacutegica y la sensacioacuten

de un juego

Esto no suele ser una disciplina independiente

como lo que este programador es por lo general

se diferencia de un juego a otro y que

inevitablemente se veraacute involucrado con las aacutereas

maacutes especializadas de desarrollo del juego como

los graacuteficos o el sonido

VIII EQUIPO DE TRABAJO

Fig 2 Grupo de trabajo

Un equipo de desarrollo en una organizacioacuten de

ingenieriacutea de software se compone de un grupo

de personas que trabajan en funciones

especializadas para lograr un objetivo comuacuten El

objetivo es la realizacioacuten de un proyecto Un

proyecto se define como un esfuerzo temporal

emprendido para crear un producto uacutenico

servicio o resultado

Aquiacute una pequentildea lista incompleta de algunos de

los componentes de un equipo de trabajo para

Desarrollo de juegos

Analista de requerimientos recopilar y analizar

los requisitos para el software

Arquitecto de software determinar la mejor

arquitectura para el software Seleccionar

Los componentes del proveedor para su inclusioacuten

en el esfuerzo de desarrollo

Disentildeador de software acotar el software para

lograr un rendimiento y otros

Objetivos

Prueba de software probador del software para

garantizar que funcione de acuerdo a la

Requisitos

Programador senior desarrollar bajo nivel de

documentacioacuten de disentildeo sirven como una

tecno-

Ventaja teacutecnica para los demaacutes e implementar el

software de acuerdo

Para el disentildeo

Programador implementar el software de acuerdo

al disentildeo

Trabajos de mantenimiento en el programador de

software creado durante el desarrollo anterior

Los esfuerzos para agregar funcionalidad o

eliminar errores de trabajo con

Atencioacuten al cliente

IX LENGUAJE UNIFICADO DE MODELADO (UML)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

18

Tomando en cuenta que el UML es un estaacutendar

muy flexible Nos da razoacuten que podemos pensar

en el diagrama

como herramientas que permiten realizar

diferentes tipos de trabajo Para revisar un poco

Use un diagrama de casos de uso para reunir y estudiar los requisitos para los propoacutesitos de disentildeo o pruebas

Use un diagrama de actividades para explorar los escenarios de casos de uso

Use un diagrama de clases para identificar las clases y ver coacutemo las

clases se relacionan entre siacute Use un diagrama de objetos para ver coacutemo un objeto se comunica con

otro

Use un diagrama de estado para explorar los atributos de cambio de objeto

Use un diagrama de secuencia para explorar a fondo un caso de uso

mediante el trazado de la orden en el que los objetos enviar mensajes a siacute mismos o entre siacute

Use un diagrama de colaboracioacuten para ver la loacutegica del sistema y la

forma en que los objetos envian mensajes entre siacute Use un diagrama de componentes para explorar y si existen los

subsistemas dentro de su juego

Use un diagrama de implementacioacuten para encontrar la manera de

configurar el paquete de instalacioacuten para su juego

X CONCLUSIONES

El desarrollo de los juegos se han vueltos mas

complejos con el pasar del tiempo y para el

desarrollo de un juego que este a la vanguardia

de la competencia se debe trabajar con la IS es

una forma eficaz de conseguir un juego de

calidad internacional

Referencias [9] Software Engineering for Game Developers by john P Flynt with Omar

Salem [10] httpieeexploreieeeorgxplloginjsptp=amparnumber=5070627ampurl=http

3A2F2Fieeexploreieeeorg2Fiel52F50705742F50705752F05

070627pdf3Farnumber

[11] httpgamedevstackexchangecomquestions19934abstract-game-engine-design

] INGENIERIacuteA DE SOFTWARE

19

INGENIERIacuteA DE SISTEMAS

Estrategias de Prueba del Software Miguel Angel Callisaya Quispe Universidad San Francisco de Asiacutes Av 20 de Octubre La Paz Bolivia

maccc19hotmailcom

Resumen Una estrategia de software es un mecanismo que

proporciona una guiacutea o base pasa ver la forma como se debe

desarrollar la aplicacioacuten en cuanto a meacutetodos esfuerzo

tiempo y recursos que son necesarios para lograr un producto

exitoso

La frecuencia con las que realicen las pruebas es de gran

importancia ya que de estaacute manera se pueda la en encontrar

los errores antes de que se conviertan en errores para la

aplicacioacuten si no se lleva un orden de aplicacioacuten de las pruebas

se va a perder tiempo recurso y sobre todo esfuerzo

Durante las primeras etapas de las pruebas es importante

concentrar toda la atencioacuten en un pequentildeo grupo de

componentes o en un componente que se considere importante

para el desarrollo tanto en los datos como en la parte loacutegica de

la aplicacioacuten

El objetivo final de las estrategias de prueba es documentar la

forma en el que equipo ha hecho el desarrollo y el seguimiento

que se le ha hecho a cada una de las etapas durante las etapas

de desarrollo e implementacioacuten

Palabras clave Calidad Prueba Estrategias Sistema

I INTRODUCCIOacuteN

Durante este articulo es importante mencionar algunos

aspectos que determinan el eacutexito de la aplicacioacuten de las

estrategias de prueba como lo son el enfoque estrateacutegico

para la prueba de software aspectos estrateacutegicos

estrategias de prueba para software convencional

estrategias de prueba para software orientado a objeto

estrategia de prueba para webapps pruebas de validacioacuten y

por uacuteltimo las pruebas del sistema

IIESTRATEGIAS DE PRUEBA DEL SOFTWARE

Verificacioacuten Estamos construyendo el producto

correctamente

Validacioacuten Estamos construyendo el producto correcto

Integracioacuten descendente

La integracioacuten descendente es un planteamiento

incremental a la construccioacuten de la estructura de programas

Se integran los moacutedulos movieacutendose hacia abajo por la

jerarquiacutea de control comenzando por el moacutedulo de control

principal (programa principal) Los moacutedulos subordinados

(de cualquier modo subordinados) al moacutedulo de control

principal se van incorporando en la estructura bien de

forma primero-en-profundidad o bien de forma primero-en-

anchura Fig1

Integracioacuten ascendente

La prueba de la integracioacuten ascendente como su nombre

indica empieza la construccioacuten y la prueba con los

moacutedulos atoacutemicos (es decir moacutedulos de los niveles maacutes

bajos de la estructura del programa) Dado que los moacutedulos

se integran de abajo hacia arriba el proceso requerido de

los moacutedulos subordinados a un nivel dado siempre estaacuten

disponibles y se elimina la necesidad de resguardos Fig2

Fig 1 Integracioacuten descendente

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

20

Fig 3 Integracioacuten Ascendente

Aspectos Estrateacutegicos

Tom Gilb plantea que se deben abordar los

siguientes puntos si se desea implementar con

eacutexito una estrategia de prueba del software

Especificar los requisitos del producto de manera

cuantificable mucho antes de que comiencen las pruebas

-Establecer los objetivos de la prueba de manera expliacutecita (teacuterminos

medibles)

-Comprender queacute usuarios va a tener el software y desarrollar un perfil

-Desarrollar un plan de prueba que haga hincapieacute en la prueba de ciclo

raacutepido

-Construir un software ―robusto disentildeado para probarse a siacute mismo

-Usar revisiones teacutecnicas formales efectivas como filtro antes de la

prueba

Llevar a cabo revisiones teacutecnicas formales para evaluar la

estrategia de prueba y los propios casos de prueba

Desarrollar un enfoque de mejora continua al proceso de

prueba Deberiacutea medirse la estrategia de prueba

Prueba de Unidad

La prueba de unidad centra el proceso de

verificacioacuten en la menor unidad del disentildeo del

software el moacutedulo La prueba de unidad siempre

esta orientada a caja blanca y este paso se suele

llevar a cabo en paralelo para muacuteltiples moacutedulos

Pruebas de Alfa y Beta

C u a n d o s e c o n s t r u y e s o f t w a r e a m e d i d a s e

l l e v a n a c a b o u n a s e r i e d e p r u e b a s d e

a c e p t a c i oacute n p a r a permitir que el cliente valide todos

los requisitos La prueba alfa se lleva a cabo en el

lugar del desarrollo pero por un cliente Se usa el

software en forma normal con el desarrollador como

observador del usuario y registrando los errores y

problemas de uso(entorno controlado)La prueba beta se

lleva a cabo por los usuarios finales en los lugares

de trabajo de los clientes El cliente registra los

problemas y los informa a intervalos regulare

Pruebas del sistema

La prueba del sistema estaacute constituida por una

serie de pruebas diferentes cuyo propoacutesito es

ejercitar profundamente el sistema

Prueba de recuperacioacuten

E s l a p r u e b a d e l s i s t e m a q u e f u e r z a a l

f a l l o d e l s o f t w a r e d e m u c h a s f o r m a s y

v e r i f i c a q u e l a recuperacioacuten se lleva a cabo

apropiadamente Recuperacioacuten automaacutetica o manual

Prueba de seguridad

Intenta verificar que los mecanismos de proteccioacuten

incorporados en el sistema lo protegeraacute de hecho de

accesos impropios

Pruebas de Resistencia

Estaacuten disentildeadas para enfrentar a los programas con

situaciones anormales Una variante de la prueba de

resistencia es una teacutecnica denominada prueba de

sensibilidad intenta descubrir combinaciones de datos

dentro de una clase de entrada valida que pueda producir

inestabilidad o un proceso incorrecto

El arte de la depuracioacuten

La depuracioacuten ocurre como consecuencia de una

prueba efectiva Cuando un caso de prueba

descubre u n e r r o r l a d e p u r a c i oacute n e s e l

p r o c e s o q u e p r o v o c a l a e l i m i n a c i oacute n d e l

e r r o r E l p r o c e s o m e n t a l q u e conecta un siacutentoma

con una causa es la depuracioacuten

El proceso de la depuracioacuten

E l p r o c e s o d e d e p u r a c i oacute n i n t e n t a h a c e r

c o r r e s p o n d e r e l s iacute n t o m a c o n u n a c a u s a

l l e v a n d o a s iacute a l a correccioacuten del error El proceso de

depuracioacuten siempre tiene uno de los dos resultados

siguientes

(1)se encuentra la causa se corrige y se elimina

o

(2)no se encuentra la causa En eacuteste uacuteltimo caso la persona

que realiza la depuracioacuten debe sospechar la causa disentildear

un caso de prueba que ayude a confirmar sus sospechas y el

trabajo vuelve hacia atraacutes a la correccioacuten del error de una

forma iterativa iquestPor queacute es tan difiacutecil la depuracioacuten

Varias caracteriacutesticas de los errores nos dan algunas

] INGENIERIacuteA DE SOFTWARE

21

INGENIERIacuteA DE SISTEMAS

pistas1El siacutentoma y la causa pueden ser

geograacuteficamente remotos entre siacute2El siacutentoma

puede desaparecer (temporalmente) al corregir

otro error

3 E l s iacute n t o m a p u e d e r e a l m e n t e e s t a r

p r o d u c i d o p o r a l g o q u e n o e s u n e r r o r

( i n e x a c t i t u d d e l o s redondeos)

4El siacutentoma puede estar causado por un error

humano que no sea faacutecilmente detectado

5El siacutentoma puede ser el resultado de problemas

de temporizacioacuten en vez de problema s de proceso

6Puede ser difiacutecil reproducir exactamente las

condiciones de entrada

7 E l s iacute n t o m a p u e d e a p a r e c e r e n f o r m a

i n t e r m i t e n t e

8 E l s iacute n t o m a p u e d e s e r d e b i d o a c a u s a s q u e

s e d i s t r i b u y e n p o r u n a s e r i e d e t a r e a s

e j e c u t aacute n d o s e e n diferentes procesadores

IIICONCLUCIONES

Las estrategias de prueba del software es un mecanismo

que proporciona una guiacutea o base pasa ver la forma como se

debe desarrollar la aplicacioacuten en cuanto a meacutetodos para

logra un producto exitoso

IVREFERENCIAS

httpbuenastareascomensayosEstategias-de-prueba-de-

software3752643html

httpwwwestrategiascompruebaagil

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

22

Ingenieriacutea Inversa Juan Carlos Zenteno Sanga

1

Departamento de Ingenieriacutea de Sistemas Universidad San Francisco de Asiacutes

Direccioacuten Incluyendo el Paiacutes 1juanka_58hotmailcom

Resumenmdash La ingenieriacutea de Software es parte del modelo de

proceso de reingenieriacutea de software es el proceso de analizar

un programa con la finalidad de crear una representacioacuten del

programa en un grado mayor de abstraccioacuten del coacutedigo

fuente las herramientas de ingenieriacutea inversa obtienen

informacioacuten del disentildeo de datos arquitectoacutenico y de

procedimientos a partir de un programa existente

En el siguiente artiacuteculo se veraacuten los conceptos baacutesicos y se

denotara un ejemplo praacutectico para una mayor comprensioacuten

del tema

Palabras clave mdash Ingenieriacutea de Software Reingenieriacutea

Linux Ingenieriacutea Inversa

XI INTRODUCCIOacuteN

Inmersa en el aacuterea de conocimiento de la

ingenieriacutea de software se encuentra la ingenieriacutea

inversa como punto de apoyo para los procesos

de anaacutelisis y disentildeo propuestos en diferentes

meacutetodos de desarrollo

La ingenieriacutea inversa permite subsanar esta

deficiencia al documentar los productos de

software a partir del coacutedigo ejecutable con el fin

de obtener los artefactos de anaacutelisis y disentildeo

La ingenieriacutea inversa es ademaacutes una

herramienta uacutetil que ayuda en el proceso de

aseguramiento de la calidad del software

mediante la comparacioacuten de diagramas de fases

de anaacutelisis y desarrollo se apoya comuacutenmente en

la generacioacuten del diagrama de clases debido a la

importancia de este diagrama en la fase de disentildeo

y su facilidad de generacioacuten Existen tambieacuten

otros diagramas de intereacutes como el de

comunicacioacuten y el de secuencias que modelan

las caracteriacutesticas dinaacutemicas de un producto de

software

Hoy en diacutea los productos maacutes comuacutenmente

sometidos a la Ingenieriacutea Inversa son los

productos de Hardware y Software pero

cualquier producto puede ser sometido a este

proceso

Aplicar ingenieriacutea Inversa a algo supone

profundizar el estudio de su funcionamiento

En el caso concreto del Software se conoce

por ingenieriacutea de software a la actividad que se

ocupa de describir coacutemo funciona un programa

de cuyo coacutedigo no se dispone hasta el punto de

generar coacutedigo propio que cumpla con las

mismas funciones Un ejemplo claacutesico del uso de

esta teacutecnica es el software de pago donde las

empresas utilizan esta teacutecnica para proteger sus

productos contra posibles acceso no autorizados

o examinar el producto final para encontrar

posibles bugs inesperados en la ejecucioacuten de

dicho sistema

Existe una gran variedad de software

desensamblador y depurador para aplicar esta

teacutecnica

En resumen la idea general al aplicar

ingenieriacutea inversa es

Conocer a fondo la aplicacioacuten y generar un

mejor coacutedigo

Migrar la aplicacioacuten a un nuevo sistema operativo

Hacer o completar la documentacioacuten

] INGENIERIacuteA DE SOFTWARE

23

INGENIERIacuteA DE SISTEMAS

Verificar que el coacutedigo en estudio cumple las

especificaciones del disentildeo estaacutendar

La informacioacuten extraiacuteda de la lectura del

coacutedigo fuente son las especificaciones de disentildeo

modelos de flujo de control diagramas de disentildeo

documentos de especificacioacuten de disentildeo

pudiendo tomarse estas especificaciones como

nuevo punto de partida para aplicar ingenieriacutea

inversa y obtener informacioacuten a mayor nivel de

abstraccioacuten

Dado que es una labor estrateacutegica es

conveniente conocer cuando conviene realizar la

tarea de Ingenieriacutea inversa para una aplicacioacuten y

cuaacutendo es maacutes rentable sustituirla e implementar

una nueva Las aplicaciones para el primer paso

son aquellas en la que se produce las siguientes

situaciones

bull Fallos frecuentes que son difiacuteciles de

localizar

bull Son poco eficientes pero realizan la funcioacuten

esperada

bull Dificultades en la integracioacuten con otros

sistemas

bull Calidad pobre del software final

bull Resistencia a introducir cambios

bull Pocas personas capacitadas para realizar

modificaciones

bull Dificultades para realizar pruebas

bull El mantenimiento consume muchos recursos

XII LAS BASES DE LA INGENIERIA INVERSA

Los ejemplos maacutes trascendentes sobre los

inicios de la ingenieriacutea inversa son claramente las

investigaciones realizadas sobre antiguos

artefactos creados por humanos ancestrales con

el fin de descubrir la manera en que funcionaban

Uno de los maacutes conocidos es el llamado

mecanismo de Antikythera (Fig 1) el cual se

piensa que fue disentildeado para fines astronoacutemicos

por los griegos siendo uno de los primeros

artefactos que funcionaban con ruedas de

engranes

Figura 1 Antikythera (mecanismo presuntamente creado para fines astronoacutemicos)

Podemos entonces implantar un paralelo en aquella

mitoloacutegica buacutesqueda de descubrimiento sobre el

funcionamiento de esos artefactos y la ingenieriacutea inversa

actual usada en ingenieriacutea de software estableciendo un

importante factor en comuacuten la falta de documentacioacuten En

este ambiente es muy comuacuten contar con una especie de caja

negra en donde sabemos lo que ingresamos y el resultado

que obtenemos pero desconocemos el procedimiento con la

precisioacuten que necesitariacuteamos para replicarlo

Esta falta de documentacioacuten es el impulso

principal de toda la ingenieriacutea inversa las

finalidades de la misma pueden variar pero este

factor inicial nunca lo haraacute

XIII INGENIERIA INVERSA COMO UN PROCESO DE

REINGENIERIA

La ingenieriacutea inversa tiene la misioacuten de

desentrantildear los misterios y secretos de los

sistemas en uso

Baacutesicamente recupera el disentildeo de la

aplicacioacuten a partir del coacutedigo esto se realiza

mediante herramientas que extraen la

informacioacuten de los datos procedimientos y

arquitecturas del sistema

Es aplicable a sistemas con las siguientes

caracteriacutesticas

Documentacioacuten inexistente o totalmente obsoleta

Programacioacuten en bloque de coacutedigos muy grandes

yo sin estructural

La aplicacioacuten cubre gran parte de los requisitos

y el rendimiento esperado

A Nivel de abstraccioacuten

El nivel de Abstraccioacuten de un proceso de

Ingenieriacutea Inversa y las herramientas que se

utilizan para realizarlo aluden la sofisticacioacuten de

la informacioacuten de disentildeo que se puede extraer del

coacutedigo fuente Este proceso deberiacutea ser capaz de

derivar

Sus representaciones de disentildeo de procedimiento

(con un bajo nivel de abstraccioacuten)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

24

La informacioacuten de las estructuras de datos de

procedimiento (con un nivel de abstraccioacuten

ligeramente maacutes elevado)

Modelos de flujo de datos de control (un nivel de

abstraccioacuten relativamente alto)

Modelos de entidades y de relaciones (un elevado

nivel de abstraccioacuten)

B Completitud

En la mayoriacutea de los casos la completitud

decrece a medida que aumenta el grado de

abstraccioacuten

La completitud mejora en proporcioacuten directa a

la cantidad de anaacutelisis efectuado por la persona

que estaacute efectuando la ingenieriacutea inversa

C Interactividad

La interactividad alude al grado con el cual el

ser humano se integra con las herramientas

automatizadas para crear un proceso de

ingenieriacutea inversa efectivo

D Proceso

El Proceso de ingenieriacutea inversa (Fig 2) es el encargado

de reestructurar el coacutedigo fuente para que solamente

contenga instrucciones de programacioacuten estructurada Lo

que hace que el coacutedigo sea maacutes faacutecil de leer y proporciona

la base para las subsiguientes actividades de ingenieriacutea

inversa

Figura 2 Diagrama de Proceso de la Ingenieriacutea Inversa

E Reestructuracioacuten

La reestructuracioacuten del software modifica el

coacutedigo fuente y los datos en un intento adecuado

a futuros cambios esta no modifica la

arquitectura global del programa Tiene a

centrarse en los detalles de disentildeo de moacutedulos

individuales y en estructuras de datos locales

definidas dentro de los moacutedulos

Estos son algunos de los beneficios que se

pueden lograr cuando se reestructura el software

Programas de mayor calidad

Reduce el esfuerzo requerido para llevar a cabo

las actividades de mantenimiento

Hace el software maacutes sencillo para comprobar y

depurar

F Re documentacioacuten

Es el proceso mediante el cual se produce

documentacioacuten retroactivamente desde un

sistema existente

Es considerada una forma de ingenieriacutea inversa

porque la documentacioacuten reconstruida es usada

para ayudar al conocimiento del programa

XIV UTILIZANDO EL METODO CIENTIFICO EN LA

INGENIERIA INVERSA

Ante cualquier dificultad tecnoloacutegica el

meacutetodo cientiacutefico siempre es y seraacute nuestra maacutes

preciada arma Partamos imaginando un pequentildeo

dilema relacionado con el tema de ingenieriacutea de

software especiacuteficamente con un sencillo

programa (Fig 3)

Figura 3 Pantalla de aplicacioacuten que nos serviraacute de ejemplo

Esta sencilla aplicacioacuten mostraraacute un mensaje con cierto

resultado y aun siendo un problema demasiado sencillo

para considerarlo como un reto el objetivo es soacutelo describir

] INGENIERIacuteA DE SOFTWARE

25

INGENIERIacuteA DE SISTEMAS

las acciones usuales del proceso las cuales son aplicables

en escalas muy superiores

El resultado mostrado por el programa dentro del mensaje

emergente se basa en nuestra entrada pero nosotros

desconocemos en lo absoluto los procedimientos utilizados

sobre esta entrada para producir aquella respuesta

A La Observacioacuten es Trascendental

Primero es importante observar el problema su

comportamiento Es substancial tratar de lograr

un pensamiento inductivo en donde logremos

identificar el principio particular del problema

para poder llegar a extrapolarlo a una solucioacuten

general

El punto de quiebre se produce en este instante

Ya al haber observado la aplicacioacuten podriacuteamos

decidir procesar los datos que nos entrega y

lograr crear un coacutedigo equivalente o investigar el

funcionamiento interno

B Dentro de la aplicacioacuten

Luego de la formulacioacuten de una hipoacutetesis sobre

su funcionamiento necesitamos algunas

herramientas para comenzar con la investigacioacuten

En el caso de esta aplicacioacuten con un poco de

conocimientos del lenguaje ensamblador de

programacioacuten tradicional y un descompilador es

suficiente

Es importante emprender de buena forma

nuestro sondeo ser ordenados y metoacutedicos en la

tarea En este momento las capacidades analiacuteticas

y loacutegicas son muy importantes para alivianar

nuestra faena

Lo fundamental es conocer muy bien el

entorno en que nos desenvolveremos En este es

punto indispensable saber que una aplicacioacuten

para Windows necesita invocar internamente al

punto de entrada MessageBox o MessageBoxEx

de la libreriacutea de sistema user32dll para poder

desplegar un mensaje (Fig 4)

Figura 4 Resultado de la Aplicacioacuten

Ya con esa pista es sencillo encontrar el

fragmento de coacutedigo relacionado con las

operaciones relacionadas a nuestro nuacutemero de

entrada que tendriacutea una forma similar a la

mostrada a continuacioacuten en nuestro

descompilador (Fig 5)

Figura 5 Vista del Programa en Ensamblador

Cualquier programador intuiriacutea faacutecilmente lo

que hacen las liacuteneas superiores de esta aplicacioacuten

en especial sprintf es parte de la libreriacutea estaacutendar

de C++ Claramente vemos tambieacuten el tiacutetulo de la

ventana en el coacutedigo estos valores son

interpretados de forma inteligente por este

descompilador en especial y en particular nos

asiste de sobremanera a comprender el coacutedigo

Lo siguiente es sencillamente explorar paso a

paso las acciones superiores de caacutelculo del

resultado En esta instancia seraacute ideal realizar

numerosas pruebas para estar completamente

seguros de que logramos develar el secreto tras la

funcionalidad objetivo (Fig 6)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

26

Figura 6 Inicio del coacutedigo al que aplicaremos ingenieriacutea inversa

Hay que detenerse algunos segundos a

individualizar algunos procedimientos del

anaacutelisis que a simple vista pueden parecer

inconcebibles con el fin de poder generar una

tesis concluyente

Cabe destacar que se omitiraacuten pasos

intermedios de asignaciones de memoria y otros

formalismos propios de ensamblador para

favorecer el entendimiento del lector

Inicialmente tenemos el valor de entrada

supuestamente ya leiacutedo desde el cuadro de

diaacutelogo del programa ahora nos enfocamos en la

primera accioacuten importante Asumiremos el valor

de entrada como una incoacutegnita

En el siguiente trozo de coacutedigo la liacutenea

destacada antildeadioacute siete a nuestra incoacutegnita (Fig 7)

Figura 7 Coacutedigo donde se denota la adicioacuten de 7 a nuestra ecuacioacuten

A continuacioacuten se multiplica ese valor

resultante de la suma por el mismo (Fig 8)

Figura 8 Coacutedigo donde se denota la multiplicacioacuten del valor por la suma

Nuevamente multiplicamos el resultado por el

anterior proporcionado tras la suma En esta

segunda vez ya podemos expresar la operacioacuten

simplemente elevando al cubo la suma anterior

(Fig 9)

Figura 9 Coacutedigo que denota una nueva multiplicacioacuten del resultante

Ahora le restamos diez al resultado

El procedimiento que viene a continuacioacuten

propone un mayor desafiacuteo intelectual Un nuacutemero

constante en este caso el cargado al registro

EAX (Fig 10)

Figura 10 ubicacioacuten del nuacutemero constante EAX

Generalmente la divisioacuten es algo maacutes costosa

en tiempo de procesador que otras operaciones

por lo que ciertos compiladores incluyen tablas

de constantes las cuales son llamadas ―nuacutemeros

maacutegicos para la divisioacuten entera

d Con signo Sin signo

m (hex) s m (hex) a s

-5 99999999 1

-3 55555555 1

-2k 7FFFFFFF k-

1

1 mdash mdash 0 1 0

2k 80000001 k-

1 232-k 0 0

3 55555556 0 AAAAAAAB 0 1

5 66666667 1 CCCCCCCD 0 2

6 2AAAAAAB 0 AAAAAAAB 0 2

7 92492493 2 24924925 1 3

9 38E38E39 1 38E38E39 0 1

10 66666667 2 CCCCCCCD 0 3

11 2E8BA2E9 1 BA2E8BA3 0 3

] INGENIERIacuteA DE SOFTWARE

27

INGENIERIacuteA DE SISTEMAS

12 2AAAAAAB 1 AAAAAAAB 0 3

25 51EB851F 3 51EB851F 0 3

125 10624DD3 3 10624DD3 0 3

Tabla 1 Algunos nuacutemeros maacutegicos (32 bits)

Ahora bien conociendo la tabla 1 sabiendo

que el nuacutemero cargado en esta ocasioacuten

corresponde al once lo que hace el coacutedigo es

multiplicar el resultado de la salida temporal por

aquel nuacutemero (Fig 11)

Figura 11 Multiplicacioacuten del resultante por el numero 11

Naturalmente la multiplicacioacuten por un nuacutemero

tan grande produce una especie de

desbordamiento en el registro contenedor del

resultado al exceder el tamantildeo de palabra del

procesador (en este caso de 32 bits) Estos bits

sobrantes se almacenan naturalmente en el

registro EDX registro que es contiguo a ECX

dentro de la memoria de los registros del

procesador

Ahora desplazamos un bit del registro EDX

(equivalente a una divisioacuten entera por dos) para

obtener la solucioacuten de la divisioacuten por once

generando una sencilla ecuacioacuten

Figura 12 Desplazamiento del bit de registro EDX

El uacuteltimo paso luego de documentar estos

resultados seraacute crear una aplicacioacuten que recree

esta foacutermula soacutelo en caso de tener intenciones de

re-codificacioacuten del desarrollo Consumando este

punto es sencillo confeccionar un diagrama con

todo el proceso anteriormente visto

XV CONCLUSIONES

Queda claro que el tema de la ingenieriacutea

inversa es uno de los toacutepicos maacutes interesantes a

los que podriacutea afrontarse un profesional de la

tecnologiacutea y en general disfrutar el largo proceso

involucrado gracias al desafiacuteo poco predecible

que presenta

En general podemos darnos cuenta de que no

existen muchas metodologiacuteas y teoriacuteas estrictas

sobre coacutemo aplicar las teacutecnicas de ingenieriacutea

inversa Afortunadamente un ingeniero estaacute

preparado para afrentar desafiacuteos de este tipo

Adicionalmente podemos deducir tambieacuten el

aspecto bidireccional de la ingenieriacutea inversa

pues como ya lo comprobamos no solo es un

desafiacuteo aplicarla sino que tambieacuten lo es tener que

dificultar el proceso o incluso tratar de impedirlo

si la situacioacuten lo requiere

REFERENCIAS

[12] Roger Pressman Ingenieriacutea de Software ―Un Enfoque Moderno 6th ed

MC Graw Hill [13] httpeswikipediaorgwikiIngenieria_inversa

[14] httpwwwinfosecwritersconntext_resourcespdfsoftware_security_and_r

everse_engineeringpdf [15] httperwinriedclmodo=visorampelemento=239

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

28

METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO Univ Alejandro Meacutendez Escobar

Universidad San Francisco de Asiacutes

Ingenieriacutea de Sistemas

Ingenieriacutea de Software I

La Paz - Bolivia

amendezusfaedubo

Resumenmdash Al adquirir el software educativo dentro del campo de

desarrollo de software una gran importancia y siendo este

inspiracioacuten de propuestas de innumerables metodologiacuteas que buscan

la elaboracioacuten de un software de calidad

Tomaremos la metodologiacutea Aacutencora enfocada a la fase de

requerimientos y que ofrece elementos que indican las actividades

que deben realizarse los artefactos que se producen y la forma de

obtenerlos

Usando al desarrollo de software educativo como ejemplo de una

mejor comprensioacuten de dicha metodologiacutea analizando la aplicacioacuten

del Aacutencora en un trabajo propuesto para el Instituto Tecnoloacutegico de

Orizaba Meacutexico

Palabras clave mdash Aacutencora Metodologiacutea Desarrollo de Software

Educativo Requerimientos Calidad

XVI INTRODUCCIOacuteN

Hoy en diacutea la tecnologiacutea esta dentro de las

actividades que realizamos es asiacute que la educacioacuten no

queda exenta de ella por o cual es necesario adaptarse

al movimiento tecnoloacutegico que nos trae grandes

ventajas en la transmisioacuten de conocimientos de una

manera sencilla y dinaacutemica

De esta manera han surgido infinidad de

metodologiacuteas de desarrollo de software educativo el

cual tiene como objetivo ser el apoyo para docentes

alumnos y toda persona que este dentro del proceso de

aprendizaje

Tomando en cuenta este ramillete infinito de

metodologiacuteas surge en el ejemplo propuesto la

adaptacioacuten del Aacutencora en el desarrollo de software

educativo teniendo como objetivo principal la

comprensioacuten de los elementos y conceptos de la

metodologiacutea Aacutencora

Aacutencora es una metodologiacutea enfocada a la

adquisicioacuten de requerimientos para software que

ofrece guiacuteas y elementos de apoyo para la obtencioacuten de

estos requerimientos Al mismo tiempo permite pasar a

la fase de disentildeo de manera sencilla Aprovechando las

ventajas que presenta Aacutencora se le hicieron algunas

adaptaciones con el fin de cubrir algunas

caracteriacutesticas del disentildeo instruccional y enriquecer

Aacutencora habilitaacutendola para la adquisicioacuten de

requerimientos de software educativo

XVII APLICACIOacuteN DE LA METODOLOGIacuteA AacuteNCORA

Como es el objetivo principal la comprensioacuten de la

aplicacioacuten de la metodologiacutea Aacutencora dentro del

desarrollo de software educativo de calidad solo

describiremos los meacutetodos del meacutetodo y los resultados

obtenidos

Claro esta que para ahondar maacutes en tema del

software educativo en si el lector puede recurrir a los

siguientes autores Metodologiacutea de desarrollo de

sistemas multimedia (Vaughan 2006) Propuesta de

metodologiacutea para el disentildeo desarrollo y evaluacioacuten

de software educativo (Reyes 2009) Ingenieriacutea de

software educativo con modelaje orientado por objetos

(Goacutemez 1998) asi como tambieacuten los siguientes

modelos ADDIE (Anaacutelisis Disentildeo Desarrollo

Implantacioacuten y Evaluacioacuten) de (McGriff 2000) y el

disentildeo instruccional aplicado al desarrollo de software

educativo EISE (Especificacioacuten Instruccional de

Software Educativo) de (Hernaacutendez 2005)

] INGENIERIacuteA DE SOFTWARE

29

INGENIERIacuteA DE SISTEMAS

Quienes tienen el mismo objetivo de crear software

educativo de calidad podemos sintetizar de ellos los

siguientes puntos

Anaacutelisis del puacuteblico al que se dirigiraacute el software

Problema oacute necesidad educativa a atender

Anaacutelisis de contenido (Tema a tratar actividades

para alcanzar el objetivo de ensentildeanza y forma de

evaluarlo)

Actividades oacute forma actual de llevar a cabo la

ensentildeanza del tema en cuestioacuten

Elaboracioacuten de guiones metaacuteforas escenarios

Creacioacuten de prototipo oacute Storyboard

Disentildeo de interfaz

Mapas de navegacioacuten

Modelos de datos

Elaboracioacuten de diagramas de contexto diagramas

de flujo o diagramas de casos de uso

Ahora enfocaacutendonos en el aacutencora se establece la

propuesta de seleccionar las actividades de Aacutencora que

permitan obtener los requerimientos de un software

educativo

La Tabla 1 presenta las actividades y artefactos

producidos en las fases de Aacutencora para la elaboracioacuten

de software educativo

TABLA 1 ACTIVIDADES Y ARTEFACTOS DE LA METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO

Metodologiacutea Aacutencora

Fases Actividades y artefactos

Anaacutelisis de

Requerimientos

A traveacutes de entrevistas con los clientes

(maestros y pedagogos) y de la lectura

del respectivo material proporcionado

por ellos se definiraacute la asignatura a la

que se enfocaraacute el software el tema a

tratar y la forma en que se abordaraacute y

evaluaraacute Tambieacuten se estableceraacute el

objetivo general de aprendizaje la

metaacutefora que se emplearaacute y se

determinaraacute el puacuteblico al que se

dirigiraacute el software

Artefactos

Documento que define la asignatura

contenido objetivo general de

aprendizaje metaacutefora y puacuteblico al que

se dirigiraacute el software Guion de la

situacioacuten actual

Recoleccioacuten y

clasificacioacuten de

requerimientos

El guion de la propuesta

computacional reflejaraacute la metaacutefora

que se sigue el ambiente de cada

escena

La bitaacutecora de desarrollo permitiraacute ver

coacutemo el sistema responderaacute a las

diversas acciones que realice el

usuario

En lugar del prototipo raacutepido se

elaboraraacute un Storyboard para presentar

graacuteficamente la estructura de sistema

propuesto

Artefactos

Guion de propuesta computacional

bitaacutecora de desarrollo Storyboard

Resolucioacuten de

conflictos

jerarquizacioacuten y

validacioacuten de

requerimientos

Modificaciones al guion de la

propuesta computacional de acuerdo a

los cambios propuestos por los

maestros y pedagogos

Artefactos

Guion de propuesta computacional e

Storyboard con adecuaciones sentildealas

Cierre

Trasladar los guiones a casos de uso

Artefactos

Casos de uso

Se agregaron algunas caracteriacutesticas a ciertos

artefactos de Aacutencora para poder cubrir los

requerimientos de software educativo Uno de estos

elementos es el guion de la propuesta computacional

al que se propone agregar lo siguiente

Conocimientos previos del usuario Se refiere a los

conocimientos baacutesicos o miacutenimos que debe tener el

alumno para poder interactuar con el moacutedulo

Objetivo de aprendizaje Es el aprendizaje que

debe obtener el alumno despueacutes de haber interactuado

con el moacutedulo

La Figura 1 se presenta la estructura sugerida para el

guion de la propuesta computacional En la bitaacutecora de

desarrollo se propone antildeadir una fila al final de cada

pista donde se describan las situaciones favorables y

no favorables para el cumplimiento del objetivo de

aprendizaje para esa pista en particular Por otra parte

en lugar del prototipo se sugiere utilizar el Storyboard

ya que permite mostrar de manera maacutes completa la

estructura del guion de la propuesta computacional La

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

30

Figura 2 muestra el formato para la elaboracioacuten del

Storyboard

Figura 1 Estructura del guion para la propuesta computacional

Figura 2 Formato para la elaboracioacuten del Storyboard

XVIII RESULTADOS

Aplicando Aacutencora en un ejemplo para la parte de

requerimientos se obtuvo la siguiente informacioacuten

Asignatura Matemaacuteticas

Contenido Estaacute articulado con base en seis ejes

con sus respectivos temas y subtemas que variacutean de

acuerdo al grado escolar Considerando lo anterior se

tiene lo siguiente

a) Grado escolar De segundo hasta quinto grado de

primaria

b) Temas Nuacutemeros naturales capacidad peso

tiempo y ubicacioacuten espacial planteamiento y

resolucioacuten de problemas sencillos en los que se

requiera recolectar y registrar informacioacuten

perioacutedicamente representacioacuten de informacioacuten en

tablas de frecuencia y graacuteficas de barras registros de

los resultados de experimentos aleatorios

representacioacuten de los resultados de un experimento

aleatorio en tablas y graacuteficas

c) Subtemas Planteamiento y resolucioacuten de

problemas que impliquen dos o maacutes operaciones con

nuacutemeros naturales

d) Ejes Introduccioacuten del kiloacutemetro como la unidad

que permite medir grandes distancias y recorridos

largos capacidad peso y tiempo uso del reloj y el

calendario los nuacutemeros sus relaciones y sus

operaciones medicioacuten la prediccioacuten y el azar

tratamiento de la informacioacuten

Objetivo general de aprendizaje Ejercitar las

operaciones aritmeacuteticas baacutesicas interpretar la

informacioacuten y los resultados de la informacioacuten dada

aplicada en situaciones de la vida cotidiana

Con las actividades hasta ahora realizadas se ha

observado que los artefactos de Aacutencora son flexibles y

pueden por lo tanto adaptarse de acuerdo a las

necesidades que implican la adquisicioacuten de

requerimientos de un software educativo Tambieacuten se

aprecian las ventajas de algunos artefactos como la

bitaacutecora de desarrollo que permite determinar las

respuestas del sistema ante las acciones del usuario y

estimar tambieacuten el tiempo que llevaraacute implementar

cada quinteta

La estimacioacuten del tiempo ayuda a tener un valor

aproximado del tiempo de desarrollo de software

Agregar el objetivo de aprendizaje a la bitaacutecora de

desarrollo puede parecer repetitivo despueacutes de

incluirlo en el Storyboard pero esto nos permite ver las

situaciones u obstaacuteculos que pueden impedir que el

objetivo de aprendizaje se alcance y por tanto tenerlos

presente durante el disentildeo A pesar de las ventajas de

la bitaacutecora de desarrollo un inconveniente hasta ahora

encontrado es lo tedioso al manejar muchas quintetas

] INGENIERIacuteA DE SOFTWARE

31

INGENIERIacuteA DE SISTEMAS

cuando por la naturaleza del guion se tienen varios

avisos y mensajes para el usuario Por otra parte los

guiones han ayudado a realizar de manera sencilla el

modelo de casos de uso

En lo referente a la presentacioacuten con los clientes el

guion es un artefacto que pude dar un panorama

general del software que se va a elaborar y queda

reforzada a traveacutes de los Storyboard Cuando se

requieren cambios solicitados por los clientes las

modificaciones a estos artefactos no han sido muy

complicadas dado que por su estructura es faacutecil de

ubicar las secciones y respectivos elementos

XIX CONCLUSIONES

Con los resultados hasta ahora obtenidos se puede

decir que la propuesta permite a los desarrolladores

con poca experiencia en desarrollo de software

educativo obtener los requerimientos de una manera

sencilla

Permite realizar un mejor relevamiento de informacioacuten

de los requerimientos del cliente enfocaacutendonos mas en

este

Es tambieacuten importante mencionar los avances que

tiene y seguiraacute teniendo el software educativo aplicado

no solo a nivel escolar sino tambieacuten al superior

Habiendo revisado el concepto y la aplicacioacuten de la

metodologiacutea Aacutencora en el desarrollo de software

educativo se llegoacute a una comprensioacuten mas extensa de

dicho meacutetodo el cual es de gran importancia dentro de

la ingenieriacutea de Software ya que nos

REFERENCIAS

httpwwwuvmxmisproductividaddocumentsCarmenChay_CIIM2010pdf

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 8: Revista de Ingenieria de Software

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

8

herramientas de soporte de pruebas como tambieacuten

difundir los resultados de dicha prueba

Encargado de seguimiento Es el encargado de la

realimentacioacuten al equipo y realiza el seguimiento del

proceso de cada iteracioacuten

Entrenador Es el encargado de prever guiacuteas al equipo

basadas en XP y de seguir el proceso correctamente

Consultor Es el que posee un conocimiento especifico

en alguacuten tema necesario para el proyecto para solucionar

problemas

Gestor Es la interaccioacuten entre clientes y programadores

ayudando a trabajar de forma adecuada y de esta manera

coordinar de forma correcta

23 PROCESO XP

El ciclo de desarrollo XP consiste en

El cliente define el valor del negocio a implementar

El programador estima el esfuerzo necesario para su

implementacioacuten

El cliente selecciona que construir de acuerdo con sus

propiedades y las restricciones del tiempo

El programador construye ese valor de negocio

Vuelve al principio

En todas las iteraciones de este ciclo tanto el cliente como

el programador aprenden No se debe presionar al

programador a realizar maacutes trabajo que el estimado ya

que se perderaacute calidad en el software o no se cumpliraacuten

los plazos

El ciclo de vida ideal de XP consiste de seis fases

Exploracioacuten

Planificacioacuten de la Entrega (Release)

Iteraciones

Produccioacuten

Mantenimiento y Muerte del Proyecto

24 PRACTICAS XP

Las siguientes praacutecticas ayudan al desarrollo de software

El juego de la planificacioacuten Hay una comunicacioacuten

frecuente el cliente y los programadores El equipo

teacutecnico realiza una estimacioacuten del esfuerzo requerido para

la implementacioacuten de las historias de usuario y los

clientes deciden sobre el aacutembito y el tiempo de entregas y

de cada iteracioacuten

Entregas pequentildeas Producir raacutepidamente versiones del

sistema que sean operativas aunque no cuenten con toda

la funcionalidad del sistema Esta versioacuten ya constituye

un resultado de valor para el negocio Una entrega no

deberiacutea tardar maacutes de tres meses

Metaacutefora El sistema es definido mediante un conjunto

de metaacuteforas compartidas por el cliente y el equipo de

desarrollo Una metaacutefora es una historia compartida que

describe como deberiacutea funcionar el sistema

Disentildeo simple Se disentildea la solucioacuten maacutes simple que

pueda funcionar y ser implementada en un determinado

momento del proyecto

Pruebas La produccioacuten de coacutedigo estaacute dirigida para las

pruebas unitarias Estas son establecidas por el cliente

antes de escribirse el coacutedigo y son ejecutadas

continuamente ante cada modificacioacuten del sistema

Pruebas Es una actividad constante de reestructuracioacuten

del coacutedigo con el objetivo de remover duplicacioacuten de

coacutedigo mejorar su legibilidad simplificarlo y hacerlo

maacutes flexible para facilitar los cambios Se mejora la

estructura interna del coacutedigo sin alterar su

comportamiento externo

Programacioacuten en parejas Toda la produccioacuten del

coacutedigo debe realizarse con trabajo en parejas de

programadores Para tener ventajas como menor tasa de

errores mejor disentildeo etc

Propiedad colectiva del coacutedigo Cualquier programador

puede cambiar cualquier parte del coacutedigo en cualquier

instante

Integracioacuten continua Cada pieza del coacutedigo es

integrada en el sistema una vez que este listaasi el

sistema puede ser integrado y construido varias veces en

un mismo diacutea

40 horas por semana Se debe trabajar un maacuteximo de 40

horas por semana no se trabajan horas extras en dos

semanas seguidas Si esto ocurre estaacute existe un problema

porque el trabajo extra desmotiva al equipo

Cliente in-situ El cliente tiene que estar presente y

disponible todo el tiempo para el equipo este es uno de

los principales factores de eacutexito para el proyecto XP Y

asiacute guiar y disipar cualquier duda de los programadores

donde la comunicacioacuten es maacutes efectiva que la escrita

Estaacutendares de programacioacuten XP enfatiza que la

comunicacioacuten de los programadores es a traveacutes del

coacutedigo por lo que es importante que se sigan estaacutendares

de programacioacuten para mantener el coacutedigo legible

3 CONCLUCIONES

] INGENIERIacuteA DE SOFTWARE

9

INGENIERIacuteA DE SISTEMAS

Las metodologiacuteas aacutegiles ofrecen una solucioacuten casi a

medida para una gran cantidad de proyectos

La metodologiacutea XP es una de las metodologiacuteas aacutegiles maacutes

extendidas y populares ademaacutes es considerada como una

metodologiacutea posmoderna cuyas grandes capacidades se

generan a traveacutes de procesos emergentes

4 REFERENCIAS

httpwwwmetodologiasSoftcomdesarrolloagil

httpwwwwikipediacommetodologiaXP

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

10

Desarrollo de Scrum

Sergio J Guzmaacuten L Ingenieriacutea de Sistemas

Universidad San Francisco de Asiacutes

20 Octubre Esq Belisario Salinas

La Paz - Bolivia

sjguzmanusfaedubo

Resumenmdash Scrum es una metodologiacutea aacutegil de desarrollo de

proyectos que toma su nombre y principios de los estudios

realizados sobre nuevas praacutecticas de produccioacuten por

Hirotaka Takeuchi e Ikujijo Nonaka a mediados de los 80

En 1996 se definioacute por primera vez un patroacuten para aplicar

esos principios de desarrollo en ldquocampos de scrumrdquo al

software

Palabras clave mdash scrum metodologiacutea patroacuten software

sprint rol

I Que es Scrum

Scrum es una metodologiacutea aacutegil de desarrollo de proyectos

que toma su nombre y principios de los estudios

realizados sobre nuevas praacutecticas de produccioacuten por

Hirotaka Takeuchi e Ikujijo Nonaka a mediados de los 80

En 1996 se definioacute por primera vez un patroacuten para aplicar

esos principios de desarrollo en ―campos de scrum al

software

Esta fue la primera definicioacuten de un patroacuten Scrum aplicado

al software disentildeada por Jeff Sutherland y Ken Schwaber y

presentada en Object-Oriented Programming Systems

Languages amp Applications OOPSLA en 1996

II iquestCoacutemo incorporarla

La competitividad del mercado de desarrollo de Software y

la necesidad de los clientes de reducir el tiempo de

mercado obligan a las organizaciones de desarrollo de

software a ser agresivas en sus calendarios de entrega Esto

ha hecho que hayan surgido metodologiacuteas para la gestioacuten y

desarrollo de software basadas en un proceso iterativo e

incremental Su estructura estaacute basada en corto tiempo los

cuales son iteraciones de 1 a 4 semanas Scrum se usa en

proyectos de entorno complejos donde se desea obtener

resultados raacutepidos y la productividad es lo maacutes importante

En los proyectos basados en Scrum se consideran tres

roles

Duentildeo del producto Es quien determina las propiedades de

los entregables

Maestro de Scrum Administra y facilita la ejecucioacuten del

proceso

Equipo de Trabajo Trabajan en conjunto para entregar

resultados en cada sprint

Fig 1 El flujo de Scrum

Como se puede observar en medio de los participantes del

proceso no quedan claras las responsabilidades del

arquitecto de software Sin embargo como comenta

Charlie Alfred ―la arquitectura es al aceite y el filtro que

lubrica adecuadamente a Scrum

Fig 2 El flujo de Scrum

] INGENIERIacuteA DE SOFTWARE

11

INGENIERIacuteA DE SISTEMAS

Si se compara el rol del arquitecto de edificaciones con el

del arquitecto de software se puede observar que ambos

modelan las construcciones a un alto nivel de abstraccioacuten

proveen posibles soluciones mejoran la comunicacioacuten con

los miembros del equipo de construccioacuten a traveacutes de

modelos visualizan las generalidades del problema

definen los roles y las interacciones entre los componentes

de construccioacuten entre otras tareas Al igual que es

imposible pensar que un rascacielos puede ser construido

sin una arquitectura soacutelida es imposible pensar que

productos de software empresariales puedan ser

implementados sin una arquitectura bien pensada

Seguacuten Bass Clements y Kasman ―La arquitectura de

software de un programa o sistema informaacutetico es la

estructura o estructuras del sistema que incluyen elementos

de software las propiedades externamente visibles de esos

elementos y las relaciones entre ellos Esta definicioacuten nos

lleva a concluir que la arquitectura de software garantiza el

buen desarrollo del software y a tener un sistema que

cumpla con los requerimientos funcionales y no

funcionales del cliente Ademaacutes la arquitectura es clave en

la reutilizacioacuten de artefactos de software en sistemas de

liacutenea de productos de software

Viendo la importancia de la arquitectura en el desarrollo

del software en eacuteste artiacuteculo se presenta una propuesta para

gestionar la arquitectura de Software en Scrum En el

primer capiacutetulo se trata el tema de la localizacioacuten de la

arquitectura de software en el ciclo de desarrollo de Scrum

en el segundo capiacutetulo se describen las tareas del arquitecto

de software en Scrum finalmente se presentan las

conclusiones y el trabajo futuro

III Arquitectura de Software en el ciclo de desarrollo de

Scrum

La idea fundamental de la presente propuesta es adicionar

un sprint inicial llamado ―Sprint 0Prime al inicio del ciclo de

desarrollo El objetivo principal del arquitecto en el Sprint

0 es analizar y disentildear la generalidad del sistema que

satisfaga los requisitos y sea entendible por los miembros

del equipo desde sus diferentes puntos de vista durante el

desarrollo Un punto clave es reutilizar artefactos de

software creados a partir de la arquitectura para ser maacutes

aacutegiles en el desarrollo de productos especiacuteficos

El Sprint 0 comprende tres fases que fueron tomadas del

ciclo de vida de entregas evolutivas En el Sprint 0 se

construye la arquitectura de forma iterativa mediante un

anaacutelisis preliminar de los conductores arquitectoacutenicos

(requisitos funcionales de calidad y del negocio) y de un

estudio de factibilidad del proyecto No se necesita tener

todos los requisitos claros para comenzar la fase de disentildeo

arquitectoacutenico

Para determinar los conductores arquitectoacutenicos se debe

identificar los objetivos del negocio de maacutes alta prioridad

que son pocos Estos objetivos del negocio se convierten en

los escenarios de calidad o casos de uso De esta lista se

deben escoger los que tendraacuten un mayor impacto sobre la

arquitectura El disentildeo arquitectoacutenico puede comenzar una

vez que se encuentran definidos los conductores

arquitectoacutenicos El proceso de anaacutelisis de requisitos seraacute

entonces influenciado por las preguntas generadas durante

el disentildeo arquitectoacutenico

El resultado del Srpint 0 es un documento inicial que

explica la arquitectura El documento puede basarse en los

pasos definidos por el meacutetodo ADD (Attrbute Driver

Design) Este meacutetodo ha sido probado exitosamente en

proyectos anteriores Con ADD se puede definir una

arquitectura de software mediante un proceso de

descomposicioacuten basado en los atributos de calidad de

Software

El documento inicial de la arquitectura se debe avaluar con

el fin de saber si la arquitectura cumple con los requisitos

de calidad Para realizar esta evaluacioacuten se propone el

meacutetodo ATAM (Architecture Tradeoff Analysis Method)

El ATAM revela cuaacuten bien una arquitectura satisface los

objetivos particulares de calidad y provee una

aproximacioacuten de coacutemo los objetivos de calidad interactuacutean

Si la evaluacioacuten de la arquitectura se encuentra que se

deben realizar cambios a la misma entonces eacutesta se debe

refinar hasta llegar a tener como resultado del Sprint 0 el

documento puacuteblico de la arquitectura junto con el sistema

esqueleto Finalmente la arquitectura creada en el Sprint 0

beneficiaraacute el desarrollo en los siguientes sprints

IV Rol del arquitecto de Software en Scrum

El rol y actividades del arquitecto de software cambian de

enfoque dependiendo de si se estaacute en el Sprint 0 o en

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

12

sprints subsecuentes

Fig 3 La Comunicacioacuten

Sprint 0 En sistemas complejos una persona difiacutecilmente

puede cubrir con amplitud teacutecnica las decisiones

arquitectoacutenicas y dar credibilidad a la arquitectura de

software Esto quiere decir que la participacioacuten del equipo

es de vital importancia para la creacioacuten y el mantenimiento

de la arquitectura Un equipo de arquitectos de software

que se aiacutesle del equipo de Scrum puede producir una

arquitectura que corra el riesgo de ser rechazada Es por

esto que recomendamos que el arquitecto o los arquitectos

se software sean miembros del equipo de Scrum Una de

las actividades que se debe realizar en equipo es la

evaluacioacuten de la arquitectura Especiacuteficamente en el

meacutetodo ATAM se requiere la participacioacuten mutua de tres

equipos que trabajan en conjunto con los arquitectos de

software el de evaluacioacuten el de tomadores de decisiones

del proyecto y el de los involucrados en la arquitectura

Sprints subsecuentes El arquitecto de software asegura que

el equipo de Scrum entienda el enfoque y los retos

arquitectoacutenicos maacutes importantes en casa sprint Los

equipos de Scrum realizan construcciones cortas guiados

por las estrategias de la arquitectura A continuacioacuten se

nombran algunas de las responsabilidades del arquitecto de

software desde el Sprint 1 en adelante

El duentildeo del producto y el maestro del Scrum trabajan con

el arquitecto para priorizar los requisitos a implementar en

cada iteracioacuten

El arquitecto comunica las decisiones y facilita las

conversaciones arquitectoacutenicas de distintos puntos de vista

en cada sprint

El arquitecto asegura que haya conformidad entre las

entregas en cada sprint y la arquitectura

El arquitecto responde preguntas y da orientacioacuten

arquitectoacutenica cuando sea necesario

Junto con el maestro de Scrum coordina a los miembros

del equipo para adaptarse a la arquitectura previa

El arquitecto junto con el duentildeo del producto y los

miembros del equipo preparan el Product Backlog

V Conclusioacuten

En el presente artiacuteculo ofrecimos una propuesta para incluir

la arquitectura de software en Scrum En el Sprint 0 se

realizan las actividades concernientes al anaacutelisis y disentildeo

de la arquitectura de software y el sistema esqueleto En

los siguientes sprints el arquitecto de software se asegura

de que la implementacioacuten cumpla con la arquitectura

REFERENCIAS

[3] httpwwwsafecreativeorgwork

[4] Hirotaka Takeuchi es decano de la Graduate School of International

Corporate Strategy en la Universidad Hitotsubashi en Tokio y fue profesor visitante en la Escuela de Negocios Harvard entre 1989 y 1990

[5] Ikujiro NonakaNo soy un guruacute porque me falta carisma

] INGENIERIacuteA DE SOFTWARE

13

INGENIERIacuteA DE SISTEMAS

El futuro de la ingenieriacutea de software Luis E Aguirre

Ingenieriacutea de Sistemas

Universidad San Francisco de Asiacutes

20 de Octubre esq Belisario Salinas

La Paz - Bolivia leaguirreusfaedubo

Resumen El disentildeo de programas a partir de informacioacuten binaria

significoacute un paso sustantivo para la industria desarrolladora de

software Desde ese hallazgo ocurrido en la deacutecada de los

cincuenta hasta hoy el crecimiento de metodologiacuteas para su

desarrollo ha subido notablemente en complejidad Sin embargo

los ciacuterculos viciosos que acusa hoy la confeccioacuten de programas

informaacuteticos impiden conceptualizar el objeto a un nivel

superior de abstraccioacuten tal y como lo exige el avance tecnoloacutegico

y los procesos de negocios

Palabras clave mdash futuro software ingenieriacutea programador y

desarrollo

I Introduccioacuten

La calidad de los sistemas informaacuteticos satisfaccioacuten de sus

usuarios y clientes son temas ampliamente conocidos

recurrentes y de constante preocupacioacuten por parte de los

practicantes de la Ingenieriacutea de software

Esta joven y dinaacutemica ingenieriacutea siempre estaacute en busca de

mejoras en el desarrollo de sistemas aumento de

productividad del ingeniero de software mayor control del

proceso de desarrollo establecimiento de nuevos meacutetodos de

desarrollo

Fig 1 Primeros programas computacionales en formato de tarjeta perforada

Estos elementos combinados y aplicados de buena forma

logran un buen proceso de desarrollo y en definitiva un buen

producto

Identificar los pasos que ha recorrido esta ingenieriacutea analizar

su contexto actual y finalmente proyectar hacia doacutende se

dirige es el pilar de este artiacuteculo

II iquestSe aplica actualmente la ingenieriacutea del software

La investigacioacuten y el desarrollo de teacutecnicas y meacuteto

dos de ingenieriacutea del software son constantes y suelen suponer

interesantes avances en la resolucioacuten de problemas de

desarrollo de software Sin embargo es habitual que en la

praacutectica diaria profesional no se incluya praacutecticamente

ninguna de las recomendaciones maacutes elementales de la

ingenieriacutea del software En efecto es habitual que el

desarrollo de software se parezca maacutes al descontrol del cuento

de laquosi los programadores fueran albantildeilesraquo ([Novatica

1996]) que a una idiacutelica y bien organizada factoriacutea de

software (concepto de gran vigencia a finales de los ochenta

[Nunamaker et al 1988])

De hecho las evaluaciones de los procesos productivos de

software realizadas a raiacutez de los modelo de procesos de

software (por ejemplo con CMM [Paulk et al 1993])

confirman que el desarrollo de software suele estar

baacutesicamente en estado caoacutetico

Y no soacutelo en como uno podriacutea pensar pequentildeas

organizaciones de un paiacutes mediterraacuteneo como el nuestro sino

en tambieacuten en las empresas adjudicatarias de interesantes

contratos de defensa de paiacuteses laquoavanzadosraquo como EEUU o

Japoacuten Si bien estos modelos de evaluacioacuten auacuten acumulan

distintas acusaciones de rigidez o falta de contraste empiacuterico

los resultados obtenidos en sus evaluaciones resultan

consistentes con la sensacioacuten de constante laquoapagafuegosraquo que

suelen sufrir los profesionales del software Tambieacuten suelen

revelar la praacutectica despreocupacioacuten de los responsables de las

organizaciones de software por la mejora de la calidad de sus

procesos de trabajo o de sus productos bien sea por contar con

una situacioacuten interna de empresa poco propicia porque el

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

14

ambiente del mercado no fomenta la preocupacioacuten por estos

temas o bien por su poco intereacutes real en la buacutesqueda de la

calidad

III La actualidad

La gran mayoriacutea de los sistemas de software creados hoy en

diacutea son los llamados sistemas corporativos es decir son

orientados a formar una parte importante de los negocios de

las grandes empresas

Continuando en nuestro contexto se identifica un nuevo

enfoque del problema de desarrollo el apoyo en la

sincronizacioacuten de los procesos de negocio estructuras

complejas de informacioacuten manejada por el negocio todo esto

entrelazado por restricciones dadas por las reglas del negocio

La tecnologiacutea actual por otro lado ha alejado maacutes todaviacutea los

ingenieros de las maacutequinas sistemas operativos incluso de

las tareas de programacioacuten

El enfoque de la mayoriacutea de los equipos de desarrollo e

ingenieros participes en proyectos sigue siendo con un bajo

nivel de abstraccioacuten cerca de la codificacioacuten Se tiende a

pensar en la base de datos a utilizar establecer la navegacioacuten

de las paacuteginas programar los protocolos de comunicacioacuten etc

Esto lleva a utilizar las tareas de programacioacuten y de pruebas

para validar el entendimiento y cumplimiento de la

funcionalidad de los sistemas

Lo anteriormente expuesto muestra un problema

metodoloacutegico consecuencia de un desfase entre el enfoque

teoacuterico oacuteptimo (anaacutelisis de negocio) y el enfoque praacutectico real

(programacioacuten y pruebas) en los proyectos de hoy En otras

palabras la metodologiacutea actualmente usada estaacute atrasada con

respecto al avance tecnoloacutegico

Desarrollando maacutes esta idea se identifican algunos

problemas concretos de las metodologiacuteas

Ellas no obligan a sus ejecutores a respetar todas las

normas y los procedimientos establecidos especialmente

en las etapas tempranas del proyecto Es muy faacutecil y

tentador ―saltar una o maacutes de estas etapas uno o maacutes

documentos o modelos pasando directamente a

implementacioacuten produccioacuten y posterior correccioacuten de los

sistemas desarrollados

Control de calidad del producto final La codificacioacuten y

complejidad del programa es demasiada para ser revisada

y verificada fehacientemente Por otro lado los coacutedigos

fuentes y los ejecutables actualmente son los uacutenicos

entregables eficientemente verificables

Estos dos problemas al parecer forman una situacioacuten

contradictoria la metodologiacutea tradicional no permite validar

eficientemente la calidad de los sistemas antes de llegar al

coacutedigo fuente y por otro lado tampoco permite llegar

eficientemente a coacutedigos fuentes de calidad

IV Futuro

La salida de este ―ciacuterculo vicioso que se propone es

bastante natural analizar la situacioacuten actual de la ingenieriacutea

de software en la luz de sus tendencias histoacutericas

La primera de ellas relacionada con los problemas que

resuelven los sistemas obviamente presente y muy utilizada

en nuestra realidad los sistemas de hoy no soacutelo resuelven los

problemas del mundo real sino que estaacuten fuertemente influen-

ciando el desarrollo del mundo real

Fig2 Modela

El enfoque de los ingenieros desde hace unos antildeos no se ha

movido significativamente por el camino del aumento de

abstraccioacuten establecido histoacutericamente Se han hecho ciertos

avances en temas puntuales (como arquitecturas de

componentes patrones de disentildeo nuevos lenguajes de

programacioacuten etc) pero conceptualmente

metodoloacutegicamente la tarea de programacioacuten sigue siendo

ejecutada de la misma forma escribiendo coacutedigos fuentes en

forma de los programas textuales

Eacuteste es justamente el ―atraso metodoloacutegico que se

mencionoacute Para disminuir la brecha entre las tendencias

histoacutericas es necesario ajustar la metodologiacutea en teacuterminos de

aumentar la abstraccioacuten del enfoque de los ingenieros de

software y acercarlo a la abstraccioacuten del problema

El aumento de la abstraccioacuten del proceso de desarrollo del

software hace pensar que la proacutexima generacioacuten de meacutetodos

de desarrollo se perfila en un conceptualmente nuevo con-

] INGENIERIacuteA DE SOFTWARE

15

INGENIERIacuteA DE SISTEMAS

junto de herramientas que permitan aumentar en un mayor

grado al actual la abstraccioacuten escondiendo los detalles de maacutes

bajo nivel

Fig3 Probable modelo a futuro

Las nuevas herramientas permitiraacuten ―programar en nivel

de anaacutelisis generando coacutedigos en un lenguaje de

programacioacuten tradicional de forma automaacutetica tal como hoy

los compiladores generan el lenguaje maacutequina a partir del

coacutedigo fuente Nuevos ―lenguajes de programacioacuten

naturalmente seriacutean visuales y se pareceriacutean a las

especificaciones de software en uno de los lenguajes de

modelamiento por ejemplo UML

V Conclusioacuten

Es muy probable que estemos proacuteximos a ver un nuevo

paso evolutivo en la ingenieriacutea de software Tan grande como

el invento de lenguajes de alto nivel o anaacutelisis y disentildeo

orientado a objetos Una nueva generacioacuten que absorberaacute a la

actual automatizando la mayoriacutea de las buenas praacutecticas

usadas actualmente

Una pregunta natural es si una maacutequina puede llegar a

generar programas tan buenos como los hechos por un pro-

gramador experto En vez de ―romper la cabeza con esta

pregunta ahora quizaacutes seriacutea suficiente recordarse otra vez de

la historia Los primeros compiladores de ninguna generacioacuten

alcanzaban de inmediato lo deseable y oacuteptimo Sin embargo

con el paso del tiempo apoyados en la experiencia de los

ingenieros y en el avance tecnoloacutegico se mejoraban hasta el

nivel de superar significativamente las generaciones

anteriores

Es poco factible que hoy en diacutea alguien cuestione la calidad

de los compiladores de por ejemplo Java y la calidad del

coacutedigo de maacutequina generado por ellos

VI Referencias [6] Website [Online]

httpwwwenterpriseanalystnetdownloadmda_informaticap

df

[7] httpwwwslidesharenetamrrochafuturo-del-software-impacto-en-las-organizaciones-y-en-los-profesionales

[8] httpwwwdcubaareventseci2008conferenciasIngSoftHexacta

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

16

Ingenieriacutea de Software para

Desarrolladores de juegos Huascar Huanca Orozco

Ingenieria de Sistemas San francisco de Asis

Av20 de Octubre esq Belisario Salinas

hhuncausfaedubo

ResumenmdashEn este artiacuteculo veremos una lo que es ldquoIS para

Desarrolladores de juegosrdquo si crees que un juego es facil pues

te equivocas en este articulo mostramos el uso de la IS en la

cracion de juegos que metodos utilizan y la complejidad que

representa para el equipo de desarrollo

1) Palabras clave mdash UMLRequisitosjuegoequipo de trabajo motor del juego

IV INTRODUCCIOacuteN

En la ingenieriacutea de software (IS) el desarrollo

de videojuegos es uacutenico pero similares a los

esfuerzos de software Es la uacutenica que combina el

trabajo de los equipos que cubren muacuteltiples

disciplinas (arte muacutesica actuacioacuten

programacioacuten etc) y que el juego de

acoplamiento que se busca a traveacutes del uso de

prototipos e iteraciones Con ello el desarrollo

del juego se enfrenta a desafiacuteos que pueden ser

abordadas mediante las praacutecticas tradicionales de

SE La industria tiene que adoptar buenas

praacutecticas de SE para sus distintas necesidades

tales como la gestioacuten de activos multimedia y

encontrar el fundamento en el juego La industria

debe asumir los retos por la evolucioacuten de los

meacutetodos de SE para satisfacer sus necesidades

Este trabajo investiga estos desafiacuteos y praacutecticas

de ingenieriacutea destaca para mitigar estos

problemas

V ENTRA EN EL JUEGO

Lo que la IS para desarrolladores de juegos hace

es

Mezcla de ingenieriacutea y el arte El software como

una praacutectica como una preocupacioacuten profesional

Meacutetodos para aprender a disentildear y fabricar un

producto El desarrollo del personaje e ingenieriacutea

de software Estrategias para hacer el mejor uso

de la ingenieriacutea del conocimiento formalizado El

aprendizaje de las habilidades que se pueden

aplicar en cualquier lugar

VI REQUISITOS

Esta parte ofrece una visioacuten general de los

conceptos y herramientas necesarias para la

obtencioacuten de requisitos

IDENTIFICAR LO QUE SE CONSIDERA UN REQUISITO DE SOFTWARE

ESTABLECER LOS CRITERIOS PARA DAR SENTIDO A LOS REQUISITOS Y LA

ESCRITURA DETERMINAR LA MANERA DE REUNIR LOS REQUISITOS O DESCUBRIR

EXPLORAR COacuteMO EMPLEAR CASOS DE USO PARA PERFECCIONAR Y

ANALIZAR LAS NECESIDADES ENCONTRAR TEacuteCNICAS PARA CONFIRMAR QUE LOS REQUISITOS ESTEacuteN

COMPLETOS

VERIFICAR LA EXACTITUD DE LOS REQUISITOS TRACE CAMBIOS EN LOS REQUISITOS

VII PROGRAMADOR DEL MOTOR DEL JUEGO

Fig 1 Juego RPG

] INGENIERIacuteA DE SOFTWARE

17

INGENIERIacuteA DE SISTEMAS

Los programadores de juegos motores crear el

motor de base del juego incluyendo la fiacutesica de

simulacioacuten y disciplinas graacuteficas

A Fiacutesica del motor del programador

Programador de un juego de la fiacutesica se dedica

al desarrollo de las fiacutesica de un juego se emplean

Por lo general un juego de soacutelo simular algunos

aspectos de la fiacutesica del mundo real Por ejemplo

un juego de espacio puede necesitar simulada

gravedad pero no tendriacutea ninguna necesidad

para simular agua viscosidad

Para un juego de rol como World of Warcraft

soacutelo un programador de la fiacutesica puede ser

necesaria Para un juego de combate complejo

como Battlefield 1942 los equipos de

programadores de la fiacutesica pueden ser necesarias

B motor de graacuteficos del programador

A pesar de todos los programadores antildeadir

tanto los contenidos y la experiencia que ofrece

un juego un programador de juego se centra maacutes

en la estrategia de un juego la aplicacioacuten de la

mecaacutenica del juego y la loacutegica y la sensacioacuten

de un juego

Esto no suele ser una disciplina independiente

como lo que este programador es por lo general

se diferencia de un juego a otro y que

inevitablemente se veraacute involucrado con las aacutereas

maacutes especializadas de desarrollo del juego como

los graacuteficos o el sonido

VIII EQUIPO DE TRABAJO

Fig 2 Grupo de trabajo

Un equipo de desarrollo en una organizacioacuten de

ingenieriacutea de software se compone de un grupo

de personas que trabajan en funciones

especializadas para lograr un objetivo comuacuten El

objetivo es la realizacioacuten de un proyecto Un

proyecto se define como un esfuerzo temporal

emprendido para crear un producto uacutenico

servicio o resultado

Aquiacute una pequentildea lista incompleta de algunos de

los componentes de un equipo de trabajo para

Desarrollo de juegos

Analista de requerimientos recopilar y analizar

los requisitos para el software

Arquitecto de software determinar la mejor

arquitectura para el software Seleccionar

Los componentes del proveedor para su inclusioacuten

en el esfuerzo de desarrollo

Disentildeador de software acotar el software para

lograr un rendimiento y otros

Objetivos

Prueba de software probador del software para

garantizar que funcione de acuerdo a la

Requisitos

Programador senior desarrollar bajo nivel de

documentacioacuten de disentildeo sirven como una

tecno-

Ventaja teacutecnica para los demaacutes e implementar el

software de acuerdo

Para el disentildeo

Programador implementar el software de acuerdo

al disentildeo

Trabajos de mantenimiento en el programador de

software creado durante el desarrollo anterior

Los esfuerzos para agregar funcionalidad o

eliminar errores de trabajo con

Atencioacuten al cliente

IX LENGUAJE UNIFICADO DE MODELADO (UML)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

18

Tomando en cuenta que el UML es un estaacutendar

muy flexible Nos da razoacuten que podemos pensar

en el diagrama

como herramientas que permiten realizar

diferentes tipos de trabajo Para revisar un poco

Use un diagrama de casos de uso para reunir y estudiar los requisitos para los propoacutesitos de disentildeo o pruebas

Use un diagrama de actividades para explorar los escenarios de casos de uso

Use un diagrama de clases para identificar las clases y ver coacutemo las

clases se relacionan entre siacute Use un diagrama de objetos para ver coacutemo un objeto se comunica con

otro

Use un diagrama de estado para explorar los atributos de cambio de objeto

Use un diagrama de secuencia para explorar a fondo un caso de uso

mediante el trazado de la orden en el que los objetos enviar mensajes a siacute mismos o entre siacute

Use un diagrama de colaboracioacuten para ver la loacutegica del sistema y la

forma en que los objetos envian mensajes entre siacute Use un diagrama de componentes para explorar y si existen los

subsistemas dentro de su juego

Use un diagrama de implementacioacuten para encontrar la manera de

configurar el paquete de instalacioacuten para su juego

X CONCLUSIONES

El desarrollo de los juegos se han vueltos mas

complejos con el pasar del tiempo y para el

desarrollo de un juego que este a la vanguardia

de la competencia se debe trabajar con la IS es

una forma eficaz de conseguir un juego de

calidad internacional

Referencias [9] Software Engineering for Game Developers by john P Flynt with Omar

Salem [10] httpieeexploreieeeorgxplloginjsptp=amparnumber=5070627ampurl=http

3A2F2Fieeexploreieeeorg2Fiel52F50705742F50705752F05

070627pdf3Farnumber

[11] httpgamedevstackexchangecomquestions19934abstract-game-engine-design

] INGENIERIacuteA DE SOFTWARE

19

INGENIERIacuteA DE SISTEMAS

Estrategias de Prueba del Software Miguel Angel Callisaya Quispe Universidad San Francisco de Asiacutes Av 20 de Octubre La Paz Bolivia

maccc19hotmailcom

Resumen Una estrategia de software es un mecanismo que

proporciona una guiacutea o base pasa ver la forma como se debe

desarrollar la aplicacioacuten en cuanto a meacutetodos esfuerzo

tiempo y recursos que son necesarios para lograr un producto

exitoso

La frecuencia con las que realicen las pruebas es de gran

importancia ya que de estaacute manera se pueda la en encontrar

los errores antes de que se conviertan en errores para la

aplicacioacuten si no se lleva un orden de aplicacioacuten de las pruebas

se va a perder tiempo recurso y sobre todo esfuerzo

Durante las primeras etapas de las pruebas es importante

concentrar toda la atencioacuten en un pequentildeo grupo de

componentes o en un componente que se considere importante

para el desarrollo tanto en los datos como en la parte loacutegica de

la aplicacioacuten

El objetivo final de las estrategias de prueba es documentar la

forma en el que equipo ha hecho el desarrollo y el seguimiento

que se le ha hecho a cada una de las etapas durante las etapas

de desarrollo e implementacioacuten

Palabras clave Calidad Prueba Estrategias Sistema

I INTRODUCCIOacuteN

Durante este articulo es importante mencionar algunos

aspectos que determinan el eacutexito de la aplicacioacuten de las

estrategias de prueba como lo son el enfoque estrateacutegico

para la prueba de software aspectos estrateacutegicos

estrategias de prueba para software convencional

estrategias de prueba para software orientado a objeto

estrategia de prueba para webapps pruebas de validacioacuten y

por uacuteltimo las pruebas del sistema

IIESTRATEGIAS DE PRUEBA DEL SOFTWARE

Verificacioacuten Estamos construyendo el producto

correctamente

Validacioacuten Estamos construyendo el producto correcto

Integracioacuten descendente

La integracioacuten descendente es un planteamiento

incremental a la construccioacuten de la estructura de programas

Se integran los moacutedulos movieacutendose hacia abajo por la

jerarquiacutea de control comenzando por el moacutedulo de control

principal (programa principal) Los moacutedulos subordinados

(de cualquier modo subordinados) al moacutedulo de control

principal se van incorporando en la estructura bien de

forma primero-en-profundidad o bien de forma primero-en-

anchura Fig1

Integracioacuten ascendente

La prueba de la integracioacuten ascendente como su nombre

indica empieza la construccioacuten y la prueba con los

moacutedulos atoacutemicos (es decir moacutedulos de los niveles maacutes

bajos de la estructura del programa) Dado que los moacutedulos

se integran de abajo hacia arriba el proceso requerido de

los moacutedulos subordinados a un nivel dado siempre estaacuten

disponibles y se elimina la necesidad de resguardos Fig2

Fig 1 Integracioacuten descendente

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

20

Fig 3 Integracioacuten Ascendente

Aspectos Estrateacutegicos

Tom Gilb plantea que se deben abordar los

siguientes puntos si se desea implementar con

eacutexito una estrategia de prueba del software

Especificar los requisitos del producto de manera

cuantificable mucho antes de que comiencen las pruebas

-Establecer los objetivos de la prueba de manera expliacutecita (teacuterminos

medibles)

-Comprender queacute usuarios va a tener el software y desarrollar un perfil

-Desarrollar un plan de prueba que haga hincapieacute en la prueba de ciclo

raacutepido

-Construir un software ―robusto disentildeado para probarse a siacute mismo

-Usar revisiones teacutecnicas formales efectivas como filtro antes de la

prueba

Llevar a cabo revisiones teacutecnicas formales para evaluar la

estrategia de prueba y los propios casos de prueba

Desarrollar un enfoque de mejora continua al proceso de

prueba Deberiacutea medirse la estrategia de prueba

Prueba de Unidad

La prueba de unidad centra el proceso de

verificacioacuten en la menor unidad del disentildeo del

software el moacutedulo La prueba de unidad siempre

esta orientada a caja blanca y este paso se suele

llevar a cabo en paralelo para muacuteltiples moacutedulos

Pruebas de Alfa y Beta

C u a n d o s e c o n s t r u y e s o f t w a r e a m e d i d a s e

l l e v a n a c a b o u n a s e r i e d e p r u e b a s d e

a c e p t a c i oacute n p a r a permitir que el cliente valide todos

los requisitos La prueba alfa se lleva a cabo en el

lugar del desarrollo pero por un cliente Se usa el

software en forma normal con el desarrollador como

observador del usuario y registrando los errores y

problemas de uso(entorno controlado)La prueba beta se

lleva a cabo por los usuarios finales en los lugares

de trabajo de los clientes El cliente registra los

problemas y los informa a intervalos regulare

Pruebas del sistema

La prueba del sistema estaacute constituida por una

serie de pruebas diferentes cuyo propoacutesito es

ejercitar profundamente el sistema

Prueba de recuperacioacuten

E s l a p r u e b a d e l s i s t e m a q u e f u e r z a a l

f a l l o d e l s o f t w a r e d e m u c h a s f o r m a s y

v e r i f i c a q u e l a recuperacioacuten se lleva a cabo

apropiadamente Recuperacioacuten automaacutetica o manual

Prueba de seguridad

Intenta verificar que los mecanismos de proteccioacuten

incorporados en el sistema lo protegeraacute de hecho de

accesos impropios

Pruebas de Resistencia

Estaacuten disentildeadas para enfrentar a los programas con

situaciones anormales Una variante de la prueba de

resistencia es una teacutecnica denominada prueba de

sensibilidad intenta descubrir combinaciones de datos

dentro de una clase de entrada valida que pueda producir

inestabilidad o un proceso incorrecto

El arte de la depuracioacuten

La depuracioacuten ocurre como consecuencia de una

prueba efectiva Cuando un caso de prueba

descubre u n e r r o r l a d e p u r a c i oacute n e s e l

p r o c e s o q u e p r o v o c a l a e l i m i n a c i oacute n d e l

e r r o r E l p r o c e s o m e n t a l q u e conecta un siacutentoma

con una causa es la depuracioacuten

El proceso de la depuracioacuten

E l p r o c e s o d e d e p u r a c i oacute n i n t e n t a h a c e r

c o r r e s p o n d e r e l s iacute n t o m a c o n u n a c a u s a

l l e v a n d o a s iacute a l a correccioacuten del error El proceso de

depuracioacuten siempre tiene uno de los dos resultados

siguientes

(1)se encuentra la causa se corrige y se elimina

o

(2)no se encuentra la causa En eacuteste uacuteltimo caso la persona

que realiza la depuracioacuten debe sospechar la causa disentildear

un caso de prueba que ayude a confirmar sus sospechas y el

trabajo vuelve hacia atraacutes a la correccioacuten del error de una

forma iterativa iquestPor queacute es tan difiacutecil la depuracioacuten

Varias caracteriacutesticas de los errores nos dan algunas

] INGENIERIacuteA DE SOFTWARE

21

INGENIERIacuteA DE SISTEMAS

pistas1El siacutentoma y la causa pueden ser

geograacuteficamente remotos entre siacute2El siacutentoma

puede desaparecer (temporalmente) al corregir

otro error

3 E l s iacute n t o m a p u e d e r e a l m e n t e e s t a r

p r o d u c i d o p o r a l g o q u e n o e s u n e r r o r

( i n e x a c t i t u d d e l o s redondeos)

4El siacutentoma puede estar causado por un error

humano que no sea faacutecilmente detectado

5El siacutentoma puede ser el resultado de problemas

de temporizacioacuten en vez de problema s de proceso

6Puede ser difiacutecil reproducir exactamente las

condiciones de entrada

7 E l s iacute n t o m a p u e d e a p a r e c e r e n f o r m a

i n t e r m i t e n t e

8 E l s iacute n t o m a p u e d e s e r d e b i d o a c a u s a s q u e

s e d i s t r i b u y e n p o r u n a s e r i e d e t a r e a s

e j e c u t aacute n d o s e e n diferentes procesadores

IIICONCLUCIONES

Las estrategias de prueba del software es un mecanismo

que proporciona una guiacutea o base pasa ver la forma como se

debe desarrollar la aplicacioacuten en cuanto a meacutetodos para

logra un producto exitoso

IVREFERENCIAS

httpbuenastareascomensayosEstategias-de-prueba-de-

software3752643html

httpwwwestrategiascompruebaagil

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

22

Ingenieriacutea Inversa Juan Carlos Zenteno Sanga

1

Departamento de Ingenieriacutea de Sistemas Universidad San Francisco de Asiacutes

Direccioacuten Incluyendo el Paiacutes 1juanka_58hotmailcom

Resumenmdash La ingenieriacutea de Software es parte del modelo de

proceso de reingenieriacutea de software es el proceso de analizar

un programa con la finalidad de crear una representacioacuten del

programa en un grado mayor de abstraccioacuten del coacutedigo

fuente las herramientas de ingenieriacutea inversa obtienen

informacioacuten del disentildeo de datos arquitectoacutenico y de

procedimientos a partir de un programa existente

En el siguiente artiacuteculo se veraacuten los conceptos baacutesicos y se

denotara un ejemplo praacutectico para una mayor comprensioacuten

del tema

Palabras clave mdash Ingenieriacutea de Software Reingenieriacutea

Linux Ingenieriacutea Inversa

XI INTRODUCCIOacuteN

Inmersa en el aacuterea de conocimiento de la

ingenieriacutea de software se encuentra la ingenieriacutea

inversa como punto de apoyo para los procesos

de anaacutelisis y disentildeo propuestos en diferentes

meacutetodos de desarrollo

La ingenieriacutea inversa permite subsanar esta

deficiencia al documentar los productos de

software a partir del coacutedigo ejecutable con el fin

de obtener los artefactos de anaacutelisis y disentildeo

La ingenieriacutea inversa es ademaacutes una

herramienta uacutetil que ayuda en el proceso de

aseguramiento de la calidad del software

mediante la comparacioacuten de diagramas de fases

de anaacutelisis y desarrollo se apoya comuacutenmente en

la generacioacuten del diagrama de clases debido a la

importancia de este diagrama en la fase de disentildeo

y su facilidad de generacioacuten Existen tambieacuten

otros diagramas de intereacutes como el de

comunicacioacuten y el de secuencias que modelan

las caracteriacutesticas dinaacutemicas de un producto de

software

Hoy en diacutea los productos maacutes comuacutenmente

sometidos a la Ingenieriacutea Inversa son los

productos de Hardware y Software pero

cualquier producto puede ser sometido a este

proceso

Aplicar ingenieriacutea Inversa a algo supone

profundizar el estudio de su funcionamiento

En el caso concreto del Software se conoce

por ingenieriacutea de software a la actividad que se

ocupa de describir coacutemo funciona un programa

de cuyo coacutedigo no se dispone hasta el punto de

generar coacutedigo propio que cumpla con las

mismas funciones Un ejemplo claacutesico del uso de

esta teacutecnica es el software de pago donde las

empresas utilizan esta teacutecnica para proteger sus

productos contra posibles acceso no autorizados

o examinar el producto final para encontrar

posibles bugs inesperados en la ejecucioacuten de

dicho sistema

Existe una gran variedad de software

desensamblador y depurador para aplicar esta

teacutecnica

En resumen la idea general al aplicar

ingenieriacutea inversa es

Conocer a fondo la aplicacioacuten y generar un

mejor coacutedigo

Migrar la aplicacioacuten a un nuevo sistema operativo

Hacer o completar la documentacioacuten

] INGENIERIacuteA DE SOFTWARE

23

INGENIERIacuteA DE SISTEMAS

Verificar que el coacutedigo en estudio cumple las

especificaciones del disentildeo estaacutendar

La informacioacuten extraiacuteda de la lectura del

coacutedigo fuente son las especificaciones de disentildeo

modelos de flujo de control diagramas de disentildeo

documentos de especificacioacuten de disentildeo

pudiendo tomarse estas especificaciones como

nuevo punto de partida para aplicar ingenieriacutea

inversa y obtener informacioacuten a mayor nivel de

abstraccioacuten

Dado que es una labor estrateacutegica es

conveniente conocer cuando conviene realizar la

tarea de Ingenieriacutea inversa para una aplicacioacuten y

cuaacutendo es maacutes rentable sustituirla e implementar

una nueva Las aplicaciones para el primer paso

son aquellas en la que se produce las siguientes

situaciones

bull Fallos frecuentes que son difiacuteciles de

localizar

bull Son poco eficientes pero realizan la funcioacuten

esperada

bull Dificultades en la integracioacuten con otros

sistemas

bull Calidad pobre del software final

bull Resistencia a introducir cambios

bull Pocas personas capacitadas para realizar

modificaciones

bull Dificultades para realizar pruebas

bull El mantenimiento consume muchos recursos

XII LAS BASES DE LA INGENIERIA INVERSA

Los ejemplos maacutes trascendentes sobre los

inicios de la ingenieriacutea inversa son claramente las

investigaciones realizadas sobre antiguos

artefactos creados por humanos ancestrales con

el fin de descubrir la manera en que funcionaban

Uno de los maacutes conocidos es el llamado

mecanismo de Antikythera (Fig 1) el cual se

piensa que fue disentildeado para fines astronoacutemicos

por los griegos siendo uno de los primeros

artefactos que funcionaban con ruedas de

engranes

Figura 1 Antikythera (mecanismo presuntamente creado para fines astronoacutemicos)

Podemos entonces implantar un paralelo en aquella

mitoloacutegica buacutesqueda de descubrimiento sobre el

funcionamiento de esos artefactos y la ingenieriacutea inversa

actual usada en ingenieriacutea de software estableciendo un

importante factor en comuacuten la falta de documentacioacuten En

este ambiente es muy comuacuten contar con una especie de caja

negra en donde sabemos lo que ingresamos y el resultado

que obtenemos pero desconocemos el procedimiento con la

precisioacuten que necesitariacuteamos para replicarlo

Esta falta de documentacioacuten es el impulso

principal de toda la ingenieriacutea inversa las

finalidades de la misma pueden variar pero este

factor inicial nunca lo haraacute

XIII INGENIERIA INVERSA COMO UN PROCESO DE

REINGENIERIA

La ingenieriacutea inversa tiene la misioacuten de

desentrantildear los misterios y secretos de los

sistemas en uso

Baacutesicamente recupera el disentildeo de la

aplicacioacuten a partir del coacutedigo esto se realiza

mediante herramientas que extraen la

informacioacuten de los datos procedimientos y

arquitecturas del sistema

Es aplicable a sistemas con las siguientes

caracteriacutesticas

Documentacioacuten inexistente o totalmente obsoleta

Programacioacuten en bloque de coacutedigos muy grandes

yo sin estructural

La aplicacioacuten cubre gran parte de los requisitos

y el rendimiento esperado

A Nivel de abstraccioacuten

El nivel de Abstraccioacuten de un proceso de

Ingenieriacutea Inversa y las herramientas que se

utilizan para realizarlo aluden la sofisticacioacuten de

la informacioacuten de disentildeo que se puede extraer del

coacutedigo fuente Este proceso deberiacutea ser capaz de

derivar

Sus representaciones de disentildeo de procedimiento

(con un bajo nivel de abstraccioacuten)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

24

La informacioacuten de las estructuras de datos de

procedimiento (con un nivel de abstraccioacuten

ligeramente maacutes elevado)

Modelos de flujo de datos de control (un nivel de

abstraccioacuten relativamente alto)

Modelos de entidades y de relaciones (un elevado

nivel de abstraccioacuten)

B Completitud

En la mayoriacutea de los casos la completitud

decrece a medida que aumenta el grado de

abstraccioacuten

La completitud mejora en proporcioacuten directa a

la cantidad de anaacutelisis efectuado por la persona

que estaacute efectuando la ingenieriacutea inversa

C Interactividad

La interactividad alude al grado con el cual el

ser humano se integra con las herramientas

automatizadas para crear un proceso de

ingenieriacutea inversa efectivo

D Proceso

El Proceso de ingenieriacutea inversa (Fig 2) es el encargado

de reestructurar el coacutedigo fuente para que solamente

contenga instrucciones de programacioacuten estructurada Lo

que hace que el coacutedigo sea maacutes faacutecil de leer y proporciona

la base para las subsiguientes actividades de ingenieriacutea

inversa

Figura 2 Diagrama de Proceso de la Ingenieriacutea Inversa

E Reestructuracioacuten

La reestructuracioacuten del software modifica el

coacutedigo fuente y los datos en un intento adecuado

a futuros cambios esta no modifica la

arquitectura global del programa Tiene a

centrarse en los detalles de disentildeo de moacutedulos

individuales y en estructuras de datos locales

definidas dentro de los moacutedulos

Estos son algunos de los beneficios que se

pueden lograr cuando se reestructura el software

Programas de mayor calidad

Reduce el esfuerzo requerido para llevar a cabo

las actividades de mantenimiento

Hace el software maacutes sencillo para comprobar y

depurar

F Re documentacioacuten

Es el proceso mediante el cual se produce

documentacioacuten retroactivamente desde un

sistema existente

Es considerada una forma de ingenieriacutea inversa

porque la documentacioacuten reconstruida es usada

para ayudar al conocimiento del programa

XIV UTILIZANDO EL METODO CIENTIFICO EN LA

INGENIERIA INVERSA

Ante cualquier dificultad tecnoloacutegica el

meacutetodo cientiacutefico siempre es y seraacute nuestra maacutes

preciada arma Partamos imaginando un pequentildeo

dilema relacionado con el tema de ingenieriacutea de

software especiacuteficamente con un sencillo

programa (Fig 3)

Figura 3 Pantalla de aplicacioacuten que nos serviraacute de ejemplo

Esta sencilla aplicacioacuten mostraraacute un mensaje con cierto

resultado y aun siendo un problema demasiado sencillo

para considerarlo como un reto el objetivo es soacutelo describir

] INGENIERIacuteA DE SOFTWARE

25

INGENIERIacuteA DE SISTEMAS

las acciones usuales del proceso las cuales son aplicables

en escalas muy superiores

El resultado mostrado por el programa dentro del mensaje

emergente se basa en nuestra entrada pero nosotros

desconocemos en lo absoluto los procedimientos utilizados

sobre esta entrada para producir aquella respuesta

A La Observacioacuten es Trascendental

Primero es importante observar el problema su

comportamiento Es substancial tratar de lograr

un pensamiento inductivo en donde logremos

identificar el principio particular del problema

para poder llegar a extrapolarlo a una solucioacuten

general

El punto de quiebre se produce en este instante

Ya al haber observado la aplicacioacuten podriacuteamos

decidir procesar los datos que nos entrega y

lograr crear un coacutedigo equivalente o investigar el

funcionamiento interno

B Dentro de la aplicacioacuten

Luego de la formulacioacuten de una hipoacutetesis sobre

su funcionamiento necesitamos algunas

herramientas para comenzar con la investigacioacuten

En el caso de esta aplicacioacuten con un poco de

conocimientos del lenguaje ensamblador de

programacioacuten tradicional y un descompilador es

suficiente

Es importante emprender de buena forma

nuestro sondeo ser ordenados y metoacutedicos en la

tarea En este momento las capacidades analiacuteticas

y loacutegicas son muy importantes para alivianar

nuestra faena

Lo fundamental es conocer muy bien el

entorno en que nos desenvolveremos En este es

punto indispensable saber que una aplicacioacuten

para Windows necesita invocar internamente al

punto de entrada MessageBox o MessageBoxEx

de la libreriacutea de sistema user32dll para poder

desplegar un mensaje (Fig 4)

Figura 4 Resultado de la Aplicacioacuten

Ya con esa pista es sencillo encontrar el

fragmento de coacutedigo relacionado con las

operaciones relacionadas a nuestro nuacutemero de

entrada que tendriacutea una forma similar a la

mostrada a continuacioacuten en nuestro

descompilador (Fig 5)

Figura 5 Vista del Programa en Ensamblador

Cualquier programador intuiriacutea faacutecilmente lo

que hacen las liacuteneas superiores de esta aplicacioacuten

en especial sprintf es parte de la libreriacutea estaacutendar

de C++ Claramente vemos tambieacuten el tiacutetulo de la

ventana en el coacutedigo estos valores son

interpretados de forma inteligente por este

descompilador en especial y en particular nos

asiste de sobremanera a comprender el coacutedigo

Lo siguiente es sencillamente explorar paso a

paso las acciones superiores de caacutelculo del

resultado En esta instancia seraacute ideal realizar

numerosas pruebas para estar completamente

seguros de que logramos develar el secreto tras la

funcionalidad objetivo (Fig 6)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

26

Figura 6 Inicio del coacutedigo al que aplicaremos ingenieriacutea inversa

Hay que detenerse algunos segundos a

individualizar algunos procedimientos del

anaacutelisis que a simple vista pueden parecer

inconcebibles con el fin de poder generar una

tesis concluyente

Cabe destacar que se omitiraacuten pasos

intermedios de asignaciones de memoria y otros

formalismos propios de ensamblador para

favorecer el entendimiento del lector

Inicialmente tenemos el valor de entrada

supuestamente ya leiacutedo desde el cuadro de

diaacutelogo del programa ahora nos enfocamos en la

primera accioacuten importante Asumiremos el valor

de entrada como una incoacutegnita

En el siguiente trozo de coacutedigo la liacutenea

destacada antildeadioacute siete a nuestra incoacutegnita (Fig 7)

Figura 7 Coacutedigo donde se denota la adicioacuten de 7 a nuestra ecuacioacuten

A continuacioacuten se multiplica ese valor

resultante de la suma por el mismo (Fig 8)

Figura 8 Coacutedigo donde se denota la multiplicacioacuten del valor por la suma

Nuevamente multiplicamos el resultado por el

anterior proporcionado tras la suma En esta

segunda vez ya podemos expresar la operacioacuten

simplemente elevando al cubo la suma anterior

(Fig 9)

Figura 9 Coacutedigo que denota una nueva multiplicacioacuten del resultante

Ahora le restamos diez al resultado

El procedimiento que viene a continuacioacuten

propone un mayor desafiacuteo intelectual Un nuacutemero

constante en este caso el cargado al registro

EAX (Fig 10)

Figura 10 ubicacioacuten del nuacutemero constante EAX

Generalmente la divisioacuten es algo maacutes costosa

en tiempo de procesador que otras operaciones

por lo que ciertos compiladores incluyen tablas

de constantes las cuales son llamadas ―nuacutemeros

maacutegicos para la divisioacuten entera

d Con signo Sin signo

m (hex) s m (hex) a s

-5 99999999 1

-3 55555555 1

-2k 7FFFFFFF k-

1

1 mdash mdash 0 1 0

2k 80000001 k-

1 232-k 0 0

3 55555556 0 AAAAAAAB 0 1

5 66666667 1 CCCCCCCD 0 2

6 2AAAAAAB 0 AAAAAAAB 0 2

7 92492493 2 24924925 1 3

9 38E38E39 1 38E38E39 0 1

10 66666667 2 CCCCCCCD 0 3

11 2E8BA2E9 1 BA2E8BA3 0 3

] INGENIERIacuteA DE SOFTWARE

27

INGENIERIacuteA DE SISTEMAS

12 2AAAAAAB 1 AAAAAAAB 0 3

25 51EB851F 3 51EB851F 0 3

125 10624DD3 3 10624DD3 0 3

Tabla 1 Algunos nuacutemeros maacutegicos (32 bits)

Ahora bien conociendo la tabla 1 sabiendo

que el nuacutemero cargado en esta ocasioacuten

corresponde al once lo que hace el coacutedigo es

multiplicar el resultado de la salida temporal por

aquel nuacutemero (Fig 11)

Figura 11 Multiplicacioacuten del resultante por el numero 11

Naturalmente la multiplicacioacuten por un nuacutemero

tan grande produce una especie de

desbordamiento en el registro contenedor del

resultado al exceder el tamantildeo de palabra del

procesador (en este caso de 32 bits) Estos bits

sobrantes se almacenan naturalmente en el

registro EDX registro que es contiguo a ECX

dentro de la memoria de los registros del

procesador

Ahora desplazamos un bit del registro EDX

(equivalente a una divisioacuten entera por dos) para

obtener la solucioacuten de la divisioacuten por once

generando una sencilla ecuacioacuten

Figura 12 Desplazamiento del bit de registro EDX

El uacuteltimo paso luego de documentar estos

resultados seraacute crear una aplicacioacuten que recree

esta foacutermula soacutelo en caso de tener intenciones de

re-codificacioacuten del desarrollo Consumando este

punto es sencillo confeccionar un diagrama con

todo el proceso anteriormente visto

XV CONCLUSIONES

Queda claro que el tema de la ingenieriacutea

inversa es uno de los toacutepicos maacutes interesantes a

los que podriacutea afrontarse un profesional de la

tecnologiacutea y en general disfrutar el largo proceso

involucrado gracias al desafiacuteo poco predecible

que presenta

En general podemos darnos cuenta de que no

existen muchas metodologiacuteas y teoriacuteas estrictas

sobre coacutemo aplicar las teacutecnicas de ingenieriacutea

inversa Afortunadamente un ingeniero estaacute

preparado para afrentar desafiacuteos de este tipo

Adicionalmente podemos deducir tambieacuten el

aspecto bidireccional de la ingenieriacutea inversa

pues como ya lo comprobamos no solo es un

desafiacuteo aplicarla sino que tambieacuten lo es tener que

dificultar el proceso o incluso tratar de impedirlo

si la situacioacuten lo requiere

REFERENCIAS

[12] Roger Pressman Ingenieriacutea de Software ―Un Enfoque Moderno 6th ed

MC Graw Hill [13] httpeswikipediaorgwikiIngenieria_inversa

[14] httpwwwinfosecwritersconntext_resourcespdfsoftware_security_and_r

everse_engineeringpdf [15] httperwinriedclmodo=visorampelemento=239

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

28

METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO Univ Alejandro Meacutendez Escobar

Universidad San Francisco de Asiacutes

Ingenieriacutea de Sistemas

Ingenieriacutea de Software I

La Paz - Bolivia

amendezusfaedubo

Resumenmdash Al adquirir el software educativo dentro del campo de

desarrollo de software una gran importancia y siendo este

inspiracioacuten de propuestas de innumerables metodologiacuteas que buscan

la elaboracioacuten de un software de calidad

Tomaremos la metodologiacutea Aacutencora enfocada a la fase de

requerimientos y que ofrece elementos que indican las actividades

que deben realizarse los artefactos que se producen y la forma de

obtenerlos

Usando al desarrollo de software educativo como ejemplo de una

mejor comprensioacuten de dicha metodologiacutea analizando la aplicacioacuten

del Aacutencora en un trabajo propuesto para el Instituto Tecnoloacutegico de

Orizaba Meacutexico

Palabras clave mdash Aacutencora Metodologiacutea Desarrollo de Software

Educativo Requerimientos Calidad

XVI INTRODUCCIOacuteN

Hoy en diacutea la tecnologiacutea esta dentro de las

actividades que realizamos es asiacute que la educacioacuten no

queda exenta de ella por o cual es necesario adaptarse

al movimiento tecnoloacutegico que nos trae grandes

ventajas en la transmisioacuten de conocimientos de una

manera sencilla y dinaacutemica

De esta manera han surgido infinidad de

metodologiacuteas de desarrollo de software educativo el

cual tiene como objetivo ser el apoyo para docentes

alumnos y toda persona que este dentro del proceso de

aprendizaje

Tomando en cuenta este ramillete infinito de

metodologiacuteas surge en el ejemplo propuesto la

adaptacioacuten del Aacutencora en el desarrollo de software

educativo teniendo como objetivo principal la

comprensioacuten de los elementos y conceptos de la

metodologiacutea Aacutencora

Aacutencora es una metodologiacutea enfocada a la

adquisicioacuten de requerimientos para software que

ofrece guiacuteas y elementos de apoyo para la obtencioacuten de

estos requerimientos Al mismo tiempo permite pasar a

la fase de disentildeo de manera sencilla Aprovechando las

ventajas que presenta Aacutencora se le hicieron algunas

adaptaciones con el fin de cubrir algunas

caracteriacutesticas del disentildeo instruccional y enriquecer

Aacutencora habilitaacutendola para la adquisicioacuten de

requerimientos de software educativo

XVII APLICACIOacuteN DE LA METODOLOGIacuteA AacuteNCORA

Como es el objetivo principal la comprensioacuten de la

aplicacioacuten de la metodologiacutea Aacutencora dentro del

desarrollo de software educativo de calidad solo

describiremos los meacutetodos del meacutetodo y los resultados

obtenidos

Claro esta que para ahondar maacutes en tema del

software educativo en si el lector puede recurrir a los

siguientes autores Metodologiacutea de desarrollo de

sistemas multimedia (Vaughan 2006) Propuesta de

metodologiacutea para el disentildeo desarrollo y evaluacioacuten

de software educativo (Reyes 2009) Ingenieriacutea de

software educativo con modelaje orientado por objetos

(Goacutemez 1998) asi como tambieacuten los siguientes

modelos ADDIE (Anaacutelisis Disentildeo Desarrollo

Implantacioacuten y Evaluacioacuten) de (McGriff 2000) y el

disentildeo instruccional aplicado al desarrollo de software

educativo EISE (Especificacioacuten Instruccional de

Software Educativo) de (Hernaacutendez 2005)

] INGENIERIacuteA DE SOFTWARE

29

INGENIERIacuteA DE SISTEMAS

Quienes tienen el mismo objetivo de crear software

educativo de calidad podemos sintetizar de ellos los

siguientes puntos

Anaacutelisis del puacuteblico al que se dirigiraacute el software

Problema oacute necesidad educativa a atender

Anaacutelisis de contenido (Tema a tratar actividades

para alcanzar el objetivo de ensentildeanza y forma de

evaluarlo)

Actividades oacute forma actual de llevar a cabo la

ensentildeanza del tema en cuestioacuten

Elaboracioacuten de guiones metaacuteforas escenarios

Creacioacuten de prototipo oacute Storyboard

Disentildeo de interfaz

Mapas de navegacioacuten

Modelos de datos

Elaboracioacuten de diagramas de contexto diagramas

de flujo o diagramas de casos de uso

Ahora enfocaacutendonos en el aacutencora se establece la

propuesta de seleccionar las actividades de Aacutencora que

permitan obtener los requerimientos de un software

educativo

La Tabla 1 presenta las actividades y artefactos

producidos en las fases de Aacutencora para la elaboracioacuten

de software educativo

TABLA 1 ACTIVIDADES Y ARTEFACTOS DE LA METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO

Metodologiacutea Aacutencora

Fases Actividades y artefactos

Anaacutelisis de

Requerimientos

A traveacutes de entrevistas con los clientes

(maestros y pedagogos) y de la lectura

del respectivo material proporcionado

por ellos se definiraacute la asignatura a la

que se enfocaraacute el software el tema a

tratar y la forma en que se abordaraacute y

evaluaraacute Tambieacuten se estableceraacute el

objetivo general de aprendizaje la

metaacutefora que se emplearaacute y se

determinaraacute el puacuteblico al que se

dirigiraacute el software

Artefactos

Documento que define la asignatura

contenido objetivo general de

aprendizaje metaacutefora y puacuteblico al que

se dirigiraacute el software Guion de la

situacioacuten actual

Recoleccioacuten y

clasificacioacuten de

requerimientos

El guion de la propuesta

computacional reflejaraacute la metaacutefora

que se sigue el ambiente de cada

escena

La bitaacutecora de desarrollo permitiraacute ver

coacutemo el sistema responderaacute a las

diversas acciones que realice el

usuario

En lugar del prototipo raacutepido se

elaboraraacute un Storyboard para presentar

graacuteficamente la estructura de sistema

propuesto

Artefactos

Guion de propuesta computacional

bitaacutecora de desarrollo Storyboard

Resolucioacuten de

conflictos

jerarquizacioacuten y

validacioacuten de

requerimientos

Modificaciones al guion de la

propuesta computacional de acuerdo a

los cambios propuestos por los

maestros y pedagogos

Artefactos

Guion de propuesta computacional e

Storyboard con adecuaciones sentildealas

Cierre

Trasladar los guiones a casos de uso

Artefactos

Casos de uso

Se agregaron algunas caracteriacutesticas a ciertos

artefactos de Aacutencora para poder cubrir los

requerimientos de software educativo Uno de estos

elementos es el guion de la propuesta computacional

al que se propone agregar lo siguiente

Conocimientos previos del usuario Se refiere a los

conocimientos baacutesicos o miacutenimos que debe tener el

alumno para poder interactuar con el moacutedulo

Objetivo de aprendizaje Es el aprendizaje que

debe obtener el alumno despueacutes de haber interactuado

con el moacutedulo

La Figura 1 se presenta la estructura sugerida para el

guion de la propuesta computacional En la bitaacutecora de

desarrollo se propone antildeadir una fila al final de cada

pista donde se describan las situaciones favorables y

no favorables para el cumplimiento del objetivo de

aprendizaje para esa pista en particular Por otra parte

en lugar del prototipo se sugiere utilizar el Storyboard

ya que permite mostrar de manera maacutes completa la

estructura del guion de la propuesta computacional La

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

30

Figura 2 muestra el formato para la elaboracioacuten del

Storyboard

Figura 1 Estructura del guion para la propuesta computacional

Figura 2 Formato para la elaboracioacuten del Storyboard

XVIII RESULTADOS

Aplicando Aacutencora en un ejemplo para la parte de

requerimientos se obtuvo la siguiente informacioacuten

Asignatura Matemaacuteticas

Contenido Estaacute articulado con base en seis ejes

con sus respectivos temas y subtemas que variacutean de

acuerdo al grado escolar Considerando lo anterior se

tiene lo siguiente

a) Grado escolar De segundo hasta quinto grado de

primaria

b) Temas Nuacutemeros naturales capacidad peso

tiempo y ubicacioacuten espacial planteamiento y

resolucioacuten de problemas sencillos en los que se

requiera recolectar y registrar informacioacuten

perioacutedicamente representacioacuten de informacioacuten en

tablas de frecuencia y graacuteficas de barras registros de

los resultados de experimentos aleatorios

representacioacuten de los resultados de un experimento

aleatorio en tablas y graacuteficas

c) Subtemas Planteamiento y resolucioacuten de

problemas que impliquen dos o maacutes operaciones con

nuacutemeros naturales

d) Ejes Introduccioacuten del kiloacutemetro como la unidad

que permite medir grandes distancias y recorridos

largos capacidad peso y tiempo uso del reloj y el

calendario los nuacutemeros sus relaciones y sus

operaciones medicioacuten la prediccioacuten y el azar

tratamiento de la informacioacuten

Objetivo general de aprendizaje Ejercitar las

operaciones aritmeacuteticas baacutesicas interpretar la

informacioacuten y los resultados de la informacioacuten dada

aplicada en situaciones de la vida cotidiana

Con las actividades hasta ahora realizadas se ha

observado que los artefactos de Aacutencora son flexibles y

pueden por lo tanto adaptarse de acuerdo a las

necesidades que implican la adquisicioacuten de

requerimientos de un software educativo Tambieacuten se

aprecian las ventajas de algunos artefactos como la

bitaacutecora de desarrollo que permite determinar las

respuestas del sistema ante las acciones del usuario y

estimar tambieacuten el tiempo que llevaraacute implementar

cada quinteta

La estimacioacuten del tiempo ayuda a tener un valor

aproximado del tiempo de desarrollo de software

Agregar el objetivo de aprendizaje a la bitaacutecora de

desarrollo puede parecer repetitivo despueacutes de

incluirlo en el Storyboard pero esto nos permite ver las

situaciones u obstaacuteculos que pueden impedir que el

objetivo de aprendizaje se alcance y por tanto tenerlos

presente durante el disentildeo A pesar de las ventajas de

la bitaacutecora de desarrollo un inconveniente hasta ahora

encontrado es lo tedioso al manejar muchas quintetas

] INGENIERIacuteA DE SOFTWARE

31

INGENIERIacuteA DE SISTEMAS

cuando por la naturaleza del guion se tienen varios

avisos y mensajes para el usuario Por otra parte los

guiones han ayudado a realizar de manera sencilla el

modelo de casos de uso

En lo referente a la presentacioacuten con los clientes el

guion es un artefacto que pude dar un panorama

general del software que se va a elaborar y queda

reforzada a traveacutes de los Storyboard Cuando se

requieren cambios solicitados por los clientes las

modificaciones a estos artefactos no han sido muy

complicadas dado que por su estructura es faacutecil de

ubicar las secciones y respectivos elementos

XIX CONCLUSIONES

Con los resultados hasta ahora obtenidos se puede

decir que la propuesta permite a los desarrolladores

con poca experiencia en desarrollo de software

educativo obtener los requerimientos de una manera

sencilla

Permite realizar un mejor relevamiento de informacioacuten

de los requerimientos del cliente enfocaacutendonos mas en

este

Es tambieacuten importante mencionar los avances que

tiene y seguiraacute teniendo el software educativo aplicado

no solo a nivel escolar sino tambieacuten al superior

Habiendo revisado el concepto y la aplicacioacuten de la

metodologiacutea Aacutencora en el desarrollo de software

educativo se llegoacute a una comprensioacuten mas extensa de

dicho meacutetodo el cual es de gran importancia dentro de

la ingenieriacutea de Software ya que nos

REFERENCIAS

httpwwwuvmxmisproductividaddocumentsCarmenChay_CIIM2010pdf

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 9: Revista de Ingenieria de Software

] INGENIERIacuteA DE SOFTWARE

9

INGENIERIacuteA DE SISTEMAS

Las metodologiacuteas aacutegiles ofrecen una solucioacuten casi a

medida para una gran cantidad de proyectos

La metodologiacutea XP es una de las metodologiacuteas aacutegiles maacutes

extendidas y populares ademaacutes es considerada como una

metodologiacutea posmoderna cuyas grandes capacidades se

generan a traveacutes de procesos emergentes

4 REFERENCIAS

httpwwwmetodologiasSoftcomdesarrolloagil

httpwwwwikipediacommetodologiaXP

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

10

Desarrollo de Scrum

Sergio J Guzmaacuten L Ingenieriacutea de Sistemas

Universidad San Francisco de Asiacutes

20 Octubre Esq Belisario Salinas

La Paz - Bolivia

sjguzmanusfaedubo

Resumenmdash Scrum es una metodologiacutea aacutegil de desarrollo de

proyectos que toma su nombre y principios de los estudios

realizados sobre nuevas praacutecticas de produccioacuten por

Hirotaka Takeuchi e Ikujijo Nonaka a mediados de los 80

En 1996 se definioacute por primera vez un patroacuten para aplicar

esos principios de desarrollo en ldquocampos de scrumrdquo al

software

Palabras clave mdash scrum metodologiacutea patroacuten software

sprint rol

I Que es Scrum

Scrum es una metodologiacutea aacutegil de desarrollo de proyectos

que toma su nombre y principios de los estudios

realizados sobre nuevas praacutecticas de produccioacuten por

Hirotaka Takeuchi e Ikujijo Nonaka a mediados de los 80

En 1996 se definioacute por primera vez un patroacuten para aplicar

esos principios de desarrollo en ―campos de scrum al

software

Esta fue la primera definicioacuten de un patroacuten Scrum aplicado

al software disentildeada por Jeff Sutherland y Ken Schwaber y

presentada en Object-Oriented Programming Systems

Languages amp Applications OOPSLA en 1996

II iquestCoacutemo incorporarla

La competitividad del mercado de desarrollo de Software y

la necesidad de los clientes de reducir el tiempo de

mercado obligan a las organizaciones de desarrollo de

software a ser agresivas en sus calendarios de entrega Esto

ha hecho que hayan surgido metodologiacuteas para la gestioacuten y

desarrollo de software basadas en un proceso iterativo e

incremental Su estructura estaacute basada en corto tiempo los

cuales son iteraciones de 1 a 4 semanas Scrum se usa en

proyectos de entorno complejos donde se desea obtener

resultados raacutepidos y la productividad es lo maacutes importante

En los proyectos basados en Scrum se consideran tres

roles

Duentildeo del producto Es quien determina las propiedades de

los entregables

Maestro de Scrum Administra y facilita la ejecucioacuten del

proceso

Equipo de Trabajo Trabajan en conjunto para entregar

resultados en cada sprint

Fig 1 El flujo de Scrum

Como se puede observar en medio de los participantes del

proceso no quedan claras las responsabilidades del

arquitecto de software Sin embargo como comenta

Charlie Alfred ―la arquitectura es al aceite y el filtro que

lubrica adecuadamente a Scrum

Fig 2 El flujo de Scrum

] INGENIERIacuteA DE SOFTWARE

11

INGENIERIacuteA DE SISTEMAS

Si se compara el rol del arquitecto de edificaciones con el

del arquitecto de software se puede observar que ambos

modelan las construcciones a un alto nivel de abstraccioacuten

proveen posibles soluciones mejoran la comunicacioacuten con

los miembros del equipo de construccioacuten a traveacutes de

modelos visualizan las generalidades del problema

definen los roles y las interacciones entre los componentes

de construccioacuten entre otras tareas Al igual que es

imposible pensar que un rascacielos puede ser construido

sin una arquitectura soacutelida es imposible pensar que

productos de software empresariales puedan ser

implementados sin una arquitectura bien pensada

Seguacuten Bass Clements y Kasman ―La arquitectura de

software de un programa o sistema informaacutetico es la

estructura o estructuras del sistema que incluyen elementos

de software las propiedades externamente visibles de esos

elementos y las relaciones entre ellos Esta definicioacuten nos

lleva a concluir que la arquitectura de software garantiza el

buen desarrollo del software y a tener un sistema que

cumpla con los requerimientos funcionales y no

funcionales del cliente Ademaacutes la arquitectura es clave en

la reutilizacioacuten de artefactos de software en sistemas de

liacutenea de productos de software

Viendo la importancia de la arquitectura en el desarrollo

del software en eacuteste artiacuteculo se presenta una propuesta para

gestionar la arquitectura de Software en Scrum En el

primer capiacutetulo se trata el tema de la localizacioacuten de la

arquitectura de software en el ciclo de desarrollo de Scrum

en el segundo capiacutetulo se describen las tareas del arquitecto

de software en Scrum finalmente se presentan las

conclusiones y el trabajo futuro

III Arquitectura de Software en el ciclo de desarrollo de

Scrum

La idea fundamental de la presente propuesta es adicionar

un sprint inicial llamado ―Sprint 0Prime al inicio del ciclo de

desarrollo El objetivo principal del arquitecto en el Sprint

0 es analizar y disentildear la generalidad del sistema que

satisfaga los requisitos y sea entendible por los miembros

del equipo desde sus diferentes puntos de vista durante el

desarrollo Un punto clave es reutilizar artefactos de

software creados a partir de la arquitectura para ser maacutes

aacutegiles en el desarrollo de productos especiacuteficos

El Sprint 0 comprende tres fases que fueron tomadas del

ciclo de vida de entregas evolutivas En el Sprint 0 se

construye la arquitectura de forma iterativa mediante un

anaacutelisis preliminar de los conductores arquitectoacutenicos

(requisitos funcionales de calidad y del negocio) y de un

estudio de factibilidad del proyecto No se necesita tener

todos los requisitos claros para comenzar la fase de disentildeo

arquitectoacutenico

Para determinar los conductores arquitectoacutenicos se debe

identificar los objetivos del negocio de maacutes alta prioridad

que son pocos Estos objetivos del negocio se convierten en

los escenarios de calidad o casos de uso De esta lista se

deben escoger los que tendraacuten un mayor impacto sobre la

arquitectura El disentildeo arquitectoacutenico puede comenzar una

vez que se encuentran definidos los conductores

arquitectoacutenicos El proceso de anaacutelisis de requisitos seraacute

entonces influenciado por las preguntas generadas durante

el disentildeo arquitectoacutenico

El resultado del Srpint 0 es un documento inicial que

explica la arquitectura El documento puede basarse en los

pasos definidos por el meacutetodo ADD (Attrbute Driver

Design) Este meacutetodo ha sido probado exitosamente en

proyectos anteriores Con ADD se puede definir una

arquitectura de software mediante un proceso de

descomposicioacuten basado en los atributos de calidad de

Software

El documento inicial de la arquitectura se debe avaluar con

el fin de saber si la arquitectura cumple con los requisitos

de calidad Para realizar esta evaluacioacuten se propone el

meacutetodo ATAM (Architecture Tradeoff Analysis Method)

El ATAM revela cuaacuten bien una arquitectura satisface los

objetivos particulares de calidad y provee una

aproximacioacuten de coacutemo los objetivos de calidad interactuacutean

Si la evaluacioacuten de la arquitectura se encuentra que se

deben realizar cambios a la misma entonces eacutesta se debe

refinar hasta llegar a tener como resultado del Sprint 0 el

documento puacuteblico de la arquitectura junto con el sistema

esqueleto Finalmente la arquitectura creada en el Sprint 0

beneficiaraacute el desarrollo en los siguientes sprints

IV Rol del arquitecto de Software en Scrum

El rol y actividades del arquitecto de software cambian de

enfoque dependiendo de si se estaacute en el Sprint 0 o en

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

12

sprints subsecuentes

Fig 3 La Comunicacioacuten

Sprint 0 En sistemas complejos una persona difiacutecilmente

puede cubrir con amplitud teacutecnica las decisiones

arquitectoacutenicas y dar credibilidad a la arquitectura de

software Esto quiere decir que la participacioacuten del equipo

es de vital importancia para la creacioacuten y el mantenimiento

de la arquitectura Un equipo de arquitectos de software

que se aiacutesle del equipo de Scrum puede producir una

arquitectura que corra el riesgo de ser rechazada Es por

esto que recomendamos que el arquitecto o los arquitectos

se software sean miembros del equipo de Scrum Una de

las actividades que se debe realizar en equipo es la

evaluacioacuten de la arquitectura Especiacuteficamente en el

meacutetodo ATAM se requiere la participacioacuten mutua de tres

equipos que trabajan en conjunto con los arquitectos de

software el de evaluacioacuten el de tomadores de decisiones

del proyecto y el de los involucrados en la arquitectura

Sprints subsecuentes El arquitecto de software asegura que

el equipo de Scrum entienda el enfoque y los retos

arquitectoacutenicos maacutes importantes en casa sprint Los

equipos de Scrum realizan construcciones cortas guiados

por las estrategias de la arquitectura A continuacioacuten se

nombran algunas de las responsabilidades del arquitecto de

software desde el Sprint 1 en adelante

El duentildeo del producto y el maestro del Scrum trabajan con

el arquitecto para priorizar los requisitos a implementar en

cada iteracioacuten

El arquitecto comunica las decisiones y facilita las

conversaciones arquitectoacutenicas de distintos puntos de vista

en cada sprint

El arquitecto asegura que haya conformidad entre las

entregas en cada sprint y la arquitectura

El arquitecto responde preguntas y da orientacioacuten

arquitectoacutenica cuando sea necesario

Junto con el maestro de Scrum coordina a los miembros

del equipo para adaptarse a la arquitectura previa

El arquitecto junto con el duentildeo del producto y los

miembros del equipo preparan el Product Backlog

V Conclusioacuten

En el presente artiacuteculo ofrecimos una propuesta para incluir

la arquitectura de software en Scrum En el Sprint 0 se

realizan las actividades concernientes al anaacutelisis y disentildeo

de la arquitectura de software y el sistema esqueleto En

los siguientes sprints el arquitecto de software se asegura

de que la implementacioacuten cumpla con la arquitectura

REFERENCIAS

[3] httpwwwsafecreativeorgwork

[4] Hirotaka Takeuchi es decano de la Graduate School of International

Corporate Strategy en la Universidad Hitotsubashi en Tokio y fue profesor visitante en la Escuela de Negocios Harvard entre 1989 y 1990

[5] Ikujiro NonakaNo soy un guruacute porque me falta carisma

] INGENIERIacuteA DE SOFTWARE

13

INGENIERIacuteA DE SISTEMAS

El futuro de la ingenieriacutea de software Luis E Aguirre

Ingenieriacutea de Sistemas

Universidad San Francisco de Asiacutes

20 de Octubre esq Belisario Salinas

La Paz - Bolivia leaguirreusfaedubo

Resumen El disentildeo de programas a partir de informacioacuten binaria

significoacute un paso sustantivo para la industria desarrolladora de

software Desde ese hallazgo ocurrido en la deacutecada de los

cincuenta hasta hoy el crecimiento de metodologiacuteas para su

desarrollo ha subido notablemente en complejidad Sin embargo

los ciacuterculos viciosos que acusa hoy la confeccioacuten de programas

informaacuteticos impiden conceptualizar el objeto a un nivel

superior de abstraccioacuten tal y como lo exige el avance tecnoloacutegico

y los procesos de negocios

Palabras clave mdash futuro software ingenieriacutea programador y

desarrollo

I Introduccioacuten

La calidad de los sistemas informaacuteticos satisfaccioacuten de sus

usuarios y clientes son temas ampliamente conocidos

recurrentes y de constante preocupacioacuten por parte de los

practicantes de la Ingenieriacutea de software

Esta joven y dinaacutemica ingenieriacutea siempre estaacute en busca de

mejoras en el desarrollo de sistemas aumento de

productividad del ingeniero de software mayor control del

proceso de desarrollo establecimiento de nuevos meacutetodos de

desarrollo

Fig 1 Primeros programas computacionales en formato de tarjeta perforada

Estos elementos combinados y aplicados de buena forma

logran un buen proceso de desarrollo y en definitiva un buen

producto

Identificar los pasos que ha recorrido esta ingenieriacutea analizar

su contexto actual y finalmente proyectar hacia doacutende se

dirige es el pilar de este artiacuteculo

II iquestSe aplica actualmente la ingenieriacutea del software

La investigacioacuten y el desarrollo de teacutecnicas y meacuteto

dos de ingenieriacutea del software son constantes y suelen suponer

interesantes avances en la resolucioacuten de problemas de

desarrollo de software Sin embargo es habitual que en la

praacutectica diaria profesional no se incluya praacutecticamente

ninguna de las recomendaciones maacutes elementales de la

ingenieriacutea del software En efecto es habitual que el

desarrollo de software se parezca maacutes al descontrol del cuento

de laquosi los programadores fueran albantildeilesraquo ([Novatica

1996]) que a una idiacutelica y bien organizada factoriacutea de

software (concepto de gran vigencia a finales de los ochenta

[Nunamaker et al 1988])

De hecho las evaluaciones de los procesos productivos de

software realizadas a raiacutez de los modelo de procesos de

software (por ejemplo con CMM [Paulk et al 1993])

confirman que el desarrollo de software suele estar

baacutesicamente en estado caoacutetico

Y no soacutelo en como uno podriacutea pensar pequentildeas

organizaciones de un paiacutes mediterraacuteneo como el nuestro sino

en tambieacuten en las empresas adjudicatarias de interesantes

contratos de defensa de paiacuteses laquoavanzadosraquo como EEUU o

Japoacuten Si bien estos modelos de evaluacioacuten auacuten acumulan

distintas acusaciones de rigidez o falta de contraste empiacuterico

los resultados obtenidos en sus evaluaciones resultan

consistentes con la sensacioacuten de constante laquoapagafuegosraquo que

suelen sufrir los profesionales del software Tambieacuten suelen

revelar la praacutectica despreocupacioacuten de los responsables de las

organizaciones de software por la mejora de la calidad de sus

procesos de trabajo o de sus productos bien sea por contar con

una situacioacuten interna de empresa poco propicia porque el

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

14

ambiente del mercado no fomenta la preocupacioacuten por estos

temas o bien por su poco intereacutes real en la buacutesqueda de la

calidad

III La actualidad

La gran mayoriacutea de los sistemas de software creados hoy en

diacutea son los llamados sistemas corporativos es decir son

orientados a formar una parte importante de los negocios de

las grandes empresas

Continuando en nuestro contexto se identifica un nuevo

enfoque del problema de desarrollo el apoyo en la

sincronizacioacuten de los procesos de negocio estructuras

complejas de informacioacuten manejada por el negocio todo esto

entrelazado por restricciones dadas por las reglas del negocio

La tecnologiacutea actual por otro lado ha alejado maacutes todaviacutea los

ingenieros de las maacutequinas sistemas operativos incluso de

las tareas de programacioacuten

El enfoque de la mayoriacutea de los equipos de desarrollo e

ingenieros participes en proyectos sigue siendo con un bajo

nivel de abstraccioacuten cerca de la codificacioacuten Se tiende a

pensar en la base de datos a utilizar establecer la navegacioacuten

de las paacuteginas programar los protocolos de comunicacioacuten etc

Esto lleva a utilizar las tareas de programacioacuten y de pruebas

para validar el entendimiento y cumplimiento de la

funcionalidad de los sistemas

Lo anteriormente expuesto muestra un problema

metodoloacutegico consecuencia de un desfase entre el enfoque

teoacuterico oacuteptimo (anaacutelisis de negocio) y el enfoque praacutectico real

(programacioacuten y pruebas) en los proyectos de hoy En otras

palabras la metodologiacutea actualmente usada estaacute atrasada con

respecto al avance tecnoloacutegico

Desarrollando maacutes esta idea se identifican algunos

problemas concretos de las metodologiacuteas

Ellas no obligan a sus ejecutores a respetar todas las

normas y los procedimientos establecidos especialmente

en las etapas tempranas del proyecto Es muy faacutecil y

tentador ―saltar una o maacutes de estas etapas uno o maacutes

documentos o modelos pasando directamente a

implementacioacuten produccioacuten y posterior correccioacuten de los

sistemas desarrollados

Control de calidad del producto final La codificacioacuten y

complejidad del programa es demasiada para ser revisada

y verificada fehacientemente Por otro lado los coacutedigos

fuentes y los ejecutables actualmente son los uacutenicos

entregables eficientemente verificables

Estos dos problemas al parecer forman una situacioacuten

contradictoria la metodologiacutea tradicional no permite validar

eficientemente la calidad de los sistemas antes de llegar al

coacutedigo fuente y por otro lado tampoco permite llegar

eficientemente a coacutedigos fuentes de calidad

IV Futuro

La salida de este ―ciacuterculo vicioso que se propone es

bastante natural analizar la situacioacuten actual de la ingenieriacutea

de software en la luz de sus tendencias histoacutericas

La primera de ellas relacionada con los problemas que

resuelven los sistemas obviamente presente y muy utilizada

en nuestra realidad los sistemas de hoy no soacutelo resuelven los

problemas del mundo real sino que estaacuten fuertemente influen-

ciando el desarrollo del mundo real

Fig2 Modela

El enfoque de los ingenieros desde hace unos antildeos no se ha

movido significativamente por el camino del aumento de

abstraccioacuten establecido histoacutericamente Se han hecho ciertos

avances en temas puntuales (como arquitecturas de

componentes patrones de disentildeo nuevos lenguajes de

programacioacuten etc) pero conceptualmente

metodoloacutegicamente la tarea de programacioacuten sigue siendo

ejecutada de la misma forma escribiendo coacutedigos fuentes en

forma de los programas textuales

Eacuteste es justamente el ―atraso metodoloacutegico que se

mencionoacute Para disminuir la brecha entre las tendencias

histoacutericas es necesario ajustar la metodologiacutea en teacuterminos de

aumentar la abstraccioacuten del enfoque de los ingenieros de

software y acercarlo a la abstraccioacuten del problema

El aumento de la abstraccioacuten del proceso de desarrollo del

software hace pensar que la proacutexima generacioacuten de meacutetodos

de desarrollo se perfila en un conceptualmente nuevo con-

] INGENIERIacuteA DE SOFTWARE

15

INGENIERIacuteA DE SISTEMAS

junto de herramientas que permitan aumentar en un mayor

grado al actual la abstraccioacuten escondiendo los detalles de maacutes

bajo nivel

Fig3 Probable modelo a futuro

Las nuevas herramientas permitiraacuten ―programar en nivel

de anaacutelisis generando coacutedigos en un lenguaje de

programacioacuten tradicional de forma automaacutetica tal como hoy

los compiladores generan el lenguaje maacutequina a partir del

coacutedigo fuente Nuevos ―lenguajes de programacioacuten

naturalmente seriacutean visuales y se pareceriacutean a las

especificaciones de software en uno de los lenguajes de

modelamiento por ejemplo UML

V Conclusioacuten

Es muy probable que estemos proacuteximos a ver un nuevo

paso evolutivo en la ingenieriacutea de software Tan grande como

el invento de lenguajes de alto nivel o anaacutelisis y disentildeo

orientado a objetos Una nueva generacioacuten que absorberaacute a la

actual automatizando la mayoriacutea de las buenas praacutecticas

usadas actualmente

Una pregunta natural es si una maacutequina puede llegar a

generar programas tan buenos como los hechos por un pro-

gramador experto En vez de ―romper la cabeza con esta

pregunta ahora quizaacutes seriacutea suficiente recordarse otra vez de

la historia Los primeros compiladores de ninguna generacioacuten

alcanzaban de inmediato lo deseable y oacuteptimo Sin embargo

con el paso del tiempo apoyados en la experiencia de los

ingenieros y en el avance tecnoloacutegico se mejoraban hasta el

nivel de superar significativamente las generaciones

anteriores

Es poco factible que hoy en diacutea alguien cuestione la calidad

de los compiladores de por ejemplo Java y la calidad del

coacutedigo de maacutequina generado por ellos

VI Referencias [6] Website [Online]

httpwwwenterpriseanalystnetdownloadmda_informaticap

df

[7] httpwwwslidesharenetamrrochafuturo-del-software-impacto-en-las-organizaciones-y-en-los-profesionales

[8] httpwwwdcubaareventseci2008conferenciasIngSoftHexacta

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

16

Ingenieriacutea de Software para

Desarrolladores de juegos Huascar Huanca Orozco

Ingenieria de Sistemas San francisco de Asis

Av20 de Octubre esq Belisario Salinas

hhuncausfaedubo

ResumenmdashEn este artiacuteculo veremos una lo que es ldquoIS para

Desarrolladores de juegosrdquo si crees que un juego es facil pues

te equivocas en este articulo mostramos el uso de la IS en la

cracion de juegos que metodos utilizan y la complejidad que

representa para el equipo de desarrollo

1) Palabras clave mdash UMLRequisitosjuegoequipo de trabajo motor del juego

IV INTRODUCCIOacuteN

En la ingenieriacutea de software (IS) el desarrollo

de videojuegos es uacutenico pero similares a los

esfuerzos de software Es la uacutenica que combina el

trabajo de los equipos que cubren muacuteltiples

disciplinas (arte muacutesica actuacioacuten

programacioacuten etc) y que el juego de

acoplamiento que se busca a traveacutes del uso de

prototipos e iteraciones Con ello el desarrollo

del juego se enfrenta a desafiacuteos que pueden ser

abordadas mediante las praacutecticas tradicionales de

SE La industria tiene que adoptar buenas

praacutecticas de SE para sus distintas necesidades

tales como la gestioacuten de activos multimedia y

encontrar el fundamento en el juego La industria

debe asumir los retos por la evolucioacuten de los

meacutetodos de SE para satisfacer sus necesidades

Este trabajo investiga estos desafiacuteos y praacutecticas

de ingenieriacutea destaca para mitigar estos

problemas

V ENTRA EN EL JUEGO

Lo que la IS para desarrolladores de juegos hace

es

Mezcla de ingenieriacutea y el arte El software como

una praacutectica como una preocupacioacuten profesional

Meacutetodos para aprender a disentildear y fabricar un

producto El desarrollo del personaje e ingenieriacutea

de software Estrategias para hacer el mejor uso

de la ingenieriacutea del conocimiento formalizado El

aprendizaje de las habilidades que se pueden

aplicar en cualquier lugar

VI REQUISITOS

Esta parte ofrece una visioacuten general de los

conceptos y herramientas necesarias para la

obtencioacuten de requisitos

IDENTIFICAR LO QUE SE CONSIDERA UN REQUISITO DE SOFTWARE

ESTABLECER LOS CRITERIOS PARA DAR SENTIDO A LOS REQUISITOS Y LA

ESCRITURA DETERMINAR LA MANERA DE REUNIR LOS REQUISITOS O DESCUBRIR

EXPLORAR COacuteMO EMPLEAR CASOS DE USO PARA PERFECCIONAR Y

ANALIZAR LAS NECESIDADES ENCONTRAR TEacuteCNICAS PARA CONFIRMAR QUE LOS REQUISITOS ESTEacuteN

COMPLETOS

VERIFICAR LA EXACTITUD DE LOS REQUISITOS TRACE CAMBIOS EN LOS REQUISITOS

VII PROGRAMADOR DEL MOTOR DEL JUEGO

Fig 1 Juego RPG

] INGENIERIacuteA DE SOFTWARE

17

INGENIERIacuteA DE SISTEMAS

Los programadores de juegos motores crear el

motor de base del juego incluyendo la fiacutesica de

simulacioacuten y disciplinas graacuteficas

A Fiacutesica del motor del programador

Programador de un juego de la fiacutesica se dedica

al desarrollo de las fiacutesica de un juego se emplean

Por lo general un juego de soacutelo simular algunos

aspectos de la fiacutesica del mundo real Por ejemplo

un juego de espacio puede necesitar simulada

gravedad pero no tendriacutea ninguna necesidad

para simular agua viscosidad

Para un juego de rol como World of Warcraft

soacutelo un programador de la fiacutesica puede ser

necesaria Para un juego de combate complejo

como Battlefield 1942 los equipos de

programadores de la fiacutesica pueden ser necesarias

B motor de graacuteficos del programador

A pesar de todos los programadores antildeadir

tanto los contenidos y la experiencia que ofrece

un juego un programador de juego se centra maacutes

en la estrategia de un juego la aplicacioacuten de la

mecaacutenica del juego y la loacutegica y la sensacioacuten

de un juego

Esto no suele ser una disciplina independiente

como lo que este programador es por lo general

se diferencia de un juego a otro y que

inevitablemente se veraacute involucrado con las aacutereas

maacutes especializadas de desarrollo del juego como

los graacuteficos o el sonido

VIII EQUIPO DE TRABAJO

Fig 2 Grupo de trabajo

Un equipo de desarrollo en una organizacioacuten de

ingenieriacutea de software se compone de un grupo

de personas que trabajan en funciones

especializadas para lograr un objetivo comuacuten El

objetivo es la realizacioacuten de un proyecto Un

proyecto se define como un esfuerzo temporal

emprendido para crear un producto uacutenico

servicio o resultado

Aquiacute una pequentildea lista incompleta de algunos de

los componentes de un equipo de trabajo para

Desarrollo de juegos

Analista de requerimientos recopilar y analizar

los requisitos para el software

Arquitecto de software determinar la mejor

arquitectura para el software Seleccionar

Los componentes del proveedor para su inclusioacuten

en el esfuerzo de desarrollo

Disentildeador de software acotar el software para

lograr un rendimiento y otros

Objetivos

Prueba de software probador del software para

garantizar que funcione de acuerdo a la

Requisitos

Programador senior desarrollar bajo nivel de

documentacioacuten de disentildeo sirven como una

tecno-

Ventaja teacutecnica para los demaacutes e implementar el

software de acuerdo

Para el disentildeo

Programador implementar el software de acuerdo

al disentildeo

Trabajos de mantenimiento en el programador de

software creado durante el desarrollo anterior

Los esfuerzos para agregar funcionalidad o

eliminar errores de trabajo con

Atencioacuten al cliente

IX LENGUAJE UNIFICADO DE MODELADO (UML)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

18

Tomando en cuenta que el UML es un estaacutendar

muy flexible Nos da razoacuten que podemos pensar

en el diagrama

como herramientas que permiten realizar

diferentes tipos de trabajo Para revisar un poco

Use un diagrama de casos de uso para reunir y estudiar los requisitos para los propoacutesitos de disentildeo o pruebas

Use un diagrama de actividades para explorar los escenarios de casos de uso

Use un diagrama de clases para identificar las clases y ver coacutemo las

clases se relacionan entre siacute Use un diagrama de objetos para ver coacutemo un objeto se comunica con

otro

Use un diagrama de estado para explorar los atributos de cambio de objeto

Use un diagrama de secuencia para explorar a fondo un caso de uso

mediante el trazado de la orden en el que los objetos enviar mensajes a siacute mismos o entre siacute

Use un diagrama de colaboracioacuten para ver la loacutegica del sistema y la

forma en que los objetos envian mensajes entre siacute Use un diagrama de componentes para explorar y si existen los

subsistemas dentro de su juego

Use un diagrama de implementacioacuten para encontrar la manera de

configurar el paquete de instalacioacuten para su juego

X CONCLUSIONES

El desarrollo de los juegos se han vueltos mas

complejos con el pasar del tiempo y para el

desarrollo de un juego que este a la vanguardia

de la competencia se debe trabajar con la IS es

una forma eficaz de conseguir un juego de

calidad internacional

Referencias [9] Software Engineering for Game Developers by john P Flynt with Omar

Salem [10] httpieeexploreieeeorgxplloginjsptp=amparnumber=5070627ampurl=http

3A2F2Fieeexploreieeeorg2Fiel52F50705742F50705752F05

070627pdf3Farnumber

[11] httpgamedevstackexchangecomquestions19934abstract-game-engine-design

] INGENIERIacuteA DE SOFTWARE

19

INGENIERIacuteA DE SISTEMAS

Estrategias de Prueba del Software Miguel Angel Callisaya Quispe Universidad San Francisco de Asiacutes Av 20 de Octubre La Paz Bolivia

maccc19hotmailcom

Resumen Una estrategia de software es un mecanismo que

proporciona una guiacutea o base pasa ver la forma como se debe

desarrollar la aplicacioacuten en cuanto a meacutetodos esfuerzo

tiempo y recursos que son necesarios para lograr un producto

exitoso

La frecuencia con las que realicen las pruebas es de gran

importancia ya que de estaacute manera se pueda la en encontrar

los errores antes de que se conviertan en errores para la

aplicacioacuten si no se lleva un orden de aplicacioacuten de las pruebas

se va a perder tiempo recurso y sobre todo esfuerzo

Durante las primeras etapas de las pruebas es importante

concentrar toda la atencioacuten en un pequentildeo grupo de

componentes o en un componente que se considere importante

para el desarrollo tanto en los datos como en la parte loacutegica de

la aplicacioacuten

El objetivo final de las estrategias de prueba es documentar la

forma en el que equipo ha hecho el desarrollo y el seguimiento

que se le ha hecho a cada una de las etapas durante las etapas

de desarrollo e implementacioacuten

Palabras clave Calidad Prueba Estrategias Sistema

I INTRODUCCIOacuteN

Durante este articulo es importante mencionar algunos

aspectos que determinan el eacutexito de la aplicacioacuten de las

estrategias de prueba como lo son el enfoque estrateacutegico

para la prueba de software aspectos estrateacutegicos

estrategias de prueba para software convencional

estrategias de prueba para software orientado a objeto

estrategia de prueba para webapps pruebas de validacioacuten y

por uacuteltimo las pruebas del sistema

IIESTRATEGIAS DE PRUEBA DEL SOFTWARE

Verificacioacuten Estamos construyendo el producto

correctamente

Validacioacuten Estamos construyendo el producto correcto

Integracioacuten descendente

La integracioacuten descendente es un planteamiento

incremental a la construccioacuten de la estructura de programas

Se integran los moacutedulos movieacutendose hacia abajo por la

jerarquiacutea de control comenzando por el moacutedulo de control

principal (programa principal) Los moacutedulos subordinados

(de cualquier modo subordinados) al moacutedulo de control

principal se van incorporando en la estructura bien de

forma primero-en-profundidad o bien de forma primero-en-

anchura Fig1

Integracioacuten ascendente

La prueba de la integracioacuten ascendente como su nombre

indica empieza la construccioacuten y la prueba con los

moacutedulos atoacutemicos (es decir moacutedulos de los niveles maacutes

bajos de la estructura del programa) Dado que los moacutedulos

se integran de abajo hacia arriba el proceso requerido de

los moacutedulos subordinados a un nivel dado siempre estaacuten

disponibles y se elimina la necesidad de resguardos Fig2

Fig 1 Integracioacuten descendente

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

20

Fig 3 Integracioacuten Ascendente

Aspectos Estrateacutegicos

Tom Gilb plantea que se deben abordar los

siguientes puntos si se desea implementar con

eacutexito una estrategia de prueba del software

Especificar los requisitos del producto de manera

cuantificable mucho antes de que comiencen las pruebas

-Establecer los objetivos de la prueba de manera expliacutecita (teacuterminos

medibles)

-Comprender queacute usuarios va a tener el software y desarrollar un perfil

-Desarrollar un plan de prueba que haga hincapieacute en la prueba de ciclo

raacutepido

-Construir un software ―robusto disentildeado para probarse a siacute mismo

-Usar revisiones teacutecnicas formales efectivas como filtro antes de la

prueba

Llevar a cabo revisiones teacutecnicas formales para evaluar la

estrategia de prueba y los propios casos de prueba

Desarrollar un enfoque de mejora continua al proceso de

prueba Deberiacutea medirse la estrategia de prueba

Prueba de Unidad

La prueba de unidad centra el proceso de

verificacioacuten en la menor unidad del disentildeo del

software el moacutedulo La prueba de unidad siempre

esta orientada a caja blanca y este paso se suele

llevar a cabo en paralelo para muacuteltiples moacutedulos

Pruebas de Alfa y Beta

C u a n d o s e c o n s t r u y e s o f t w a r e a m e d i d a s e

l l e v a n a c a b o u n a s e r i e d e p r u e b a s d e

a c e p t a c i oacute n p a r a permitir que el cliente valide todos

los requisitos La prueba alfa se lleva a cabo en el

lugar del desarrollo pero por un cliente Se usa el

software en forma normal con el desarrollador como

observador del usuario y registrando los errores y

problemas de uso(entorno controlado)La prueba beta se

lleva a cabo por los usuarios finales en los lugares

de trabajo de los clientes El cliente registra los

problemas y los informa a intervalos regulare

Pruebas del sistema

La prueba del sistema estaacute constituida por una

serie de pruebas diferentes cuyo propoacutesito es

ejercitar profundamente el sistema

Prueba de recuperacioacuten

E s l a p r u e b a d e l s i s t e m a q u e f u e r z a a l

f a l l o d e l s o f t w a r e d e m u c h a s f o r m a s y

v e r i f i c a q u e l a recuperacioacuten se lleva a cabo

apropiadamente Recuperacioacuten automaacutetica o manual

Prueba de seguridad

Intenta verificar que los mecanismos de proteccioacuten

incorporados en el sistema lo protegeraacute de hecho de

accesos impropios

Pruebas de Resistencia

Estaacuten disentildeadas para enfrentar a los programas con

situaciones anormales Una variante de la prueba de

resistencia es una teacutecnica denominada prueba de

sensibilidad intenta descubrir combinaciones de datos

dentro de una clase de entrada valida que pueda producir

inestabilidad o un proceso incorrecto

El arte de la depuracioacuten

La depuracioacuten ocurre como consecuencia de una

prueba efectiva Cuando un caso de prueba

descubre u n e r r o r l a d e p u r a c i oacute n e s e l

p r o c e s o q u e p r o v o c a l a e l i m i n a c i oacute n d e l

e r r o r E l p r o c e s o m e n t a l q u e conecta un siacutentoma

con una causa es la depuracioacuten

El proceso de la depuracioacuten

E l p r o c e s o d e d e p u r a c i oacute n i n t e n t a h a c e r

c o r r e s p o n d e r e l s iacute n t o m a c o n u n a c a u s a

l l e v a n d o a s iacute a l a correccioacuten del error El proceso de

depuracioacuten siempre tiene uno de los dos resultados

siguientes

(1)se encuentra la causa se corrige y se elimina

o

(2)no se encuentra la causa En eacuteste uacuteltimo caso la persona

que realiza la depuracioacuten debe sospechar la causa disentildear

un caso de prueba que ayude a confirmar sus sospechas y el

trabajo vuelve hacia atraacutes a la correccioacuten del error de una

forma iterativa iquestPor queacute es tan difiacutecil la depuracioacuten

Varias caracteriacutesticas de los errores nos dan algunas

] INGENIERIacuteA DE SOFTWARE

21

INGENIERIacuteA DE SISTEMAS

pistas1El siacutentoma y la causa pueden ser

geograacuteficamente remotos entre siacute2El siacutentoma

puede desaparecer (temporalmente) al corregir

otro error

3 E l s iacute n t o m a p u e d e r e a l m e n t e e s t a r

p r o d u c i d o p o r a l g o q u e n o e s u n e r r o r

( i n e x a c t i t u d d e l o s redondeos)

4El siacutentoma puede estar causado por un error

humano que no sea faacutecilmente detectado

5El siacutentoma puede ser el resultado de problemas

de temporizacioacuten en vez de problema s de proceso

6Puede ser difiacutecil reproducir exactamente las

condiciones de entrada

7 E l s iacute n t o m a p u e d e a p a r e c e r e n f o r m a

i n t e r m i t e n t e

8 E l s iacute n t o m a p u e d e s e r d e b i d o a c a u s a s q u e

s e d i s t r i b u y e n p o r u n a s e r i e d e t a r e a s

e j e c u t aacute n d o s e e n diferentes procesadores

IIICONCLUCIONES

Las estrategias de prueba del software es un mecanismo

que proporciona una guiacutea o base pasa ver la forma como se

debe desarrollar la aplicacioacuten en cuanto a meacutetodos para

logra un producto exitoso

IVREFERENCIAS

httpbuenastareascomensayosEstategias-de-prueba-de-

software3752643html

httpwwwestrategiascompruebaagil

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

22

Ingenieriacutea Inversa Juan Carlos Zenteno Sanga

1

Departamento de Ingenieriacutea de Sistemas Universidad San Francisco de Asiacutes

Direccioacuten Incluyendo el Paiacutes 1juanka_58hotmailcom

Resumenmdash La ingenieriacutea de Software es parte del modelo de

proceso de reingenieriacutea de software es el proceso de analizar

un programa con la finalidad de crear una representacioacuten del

programa en un grado mayor de abstraccioacuten del coacutedigo

fuente las herramientas de ingenieriacutea inversa obtienen

informacioacuten del disentildeo de datos arquitectoacutenico y de

procedimientos a partir de un programa existente

En el siguiente artiacuteculo se veraacuten los conceptos baacutesicos y se

denotara un ejemplo praacutectico para una mayor comprensioacuten

del tema

Palabras clave mdash Ingenieriacutea de Software Reingenieriacutea

Linux Ingenieriacutea Inversa

XI INTRODUCCIOacuteN

Inmersa en el aacuterea de conocimiento de la

ingenieriacutea de software se encuentra la ingenieriacutea

inversa como punto de apoyo para los procesos

de anaacutelisis y disentildeo propuestos en diferentes

meacutetodos de desarrollo

La ingenieriacutea inversa permite subsanar esta

deficiencia al documentar los productos de

software a partir del coacutedigo ejecutable con el fin

de obtener los artefactos de anaacutelisis y disentildeo

La ingenieriacutea inversa es ademaacutes una

herramienta uacutetil que ayuda en el proceso de

aseguramiento de la calidad del software

mediante la comparacioacuten de diagramas de fases

de anaacutelisis y desarrollo se apoya comuacutenmente en

la generacioacuten del diagrama de clases debido a la

importancia de este diagrama en la fase de disentildeo

y su facilidad de generacioacuten Existen tambieacuten

otros diagramas de intereacutes como el de

comunicacioacuten y el de secuencias que modelan

las caracteriacutesticas dinaacutemicas de un producto de

software

Hoy en diacutea los productos maacutes comuacutenmente

sometidos a la Ingenieriacutea Inversa son los

productos de Hardware y Software pero

cualquier producto puede ser sometido a este

proceso

Aplicar ingenieriacutea Inversa a algo supone

profundizar el estudio de su funcionamiento

En el caso concreto del Software se conoce

por ingenieriacutea de software a la actividad que se

ocupa de describir coacutemo funciona un programa

de cuyo coacutedigo no se dispone hasta el punto de

generar coacutedigo propio que cumpla con las

mismas funciones Un ejemplo claacutesico del uso de

esta teacutecnica es el software de pago donde las

empresas utilizan esta teacutecnica para proteger sus

productos contra posibles acceso no autorizados

o examinar el producto final para encontrar

posibles bugs inesperados en la ejecucioacuten de

dicho sistema

Existe una gran variedad de software

desensamblador y depurador para aplicar esta

teacutecnica

En resumen la idea general al aplicar

ingenieriacutea inversa es

Conocer a fondo la aplicacioacuten y generar un

mejor coacutedigo

Migrar la aplicacioacuten a un nuevo sistema operativo

Hacer o completar la documentacioacuten

] INGENIERIacuteA DE SOFTWARE

23

INGENIERIacuteA DE SISTEMAS

Verificar que el coacutedigo en estudio cumple las

especificaciones del disentildeo estaacutendar

La informacioacuten extraiacuteda de la lectura del

coacutedigo fuente son las especificaciones de disentildeo

modelos de flujo de control diagramas de disentildeo

documentos de especificacioacuten de disentildeo

pudiendo tomarse estas especificaciones como

nuevo punto de partida para aplicar ingenieriacutea

inversa y obtener informacioacuten a mayor nivel de

abstraccioacuten

Dado que es una labor estrateacutegica es

conveniente conocer cuando conviene realizar la

tarea de Ingenieriacutea inversa para una aplicacioacuten y

cuaacutendo es maacutes rentable sustituirla e implementar

una nueva Las aplicaciones para el primer paso

son aquellas en la que se produce las siguientes

situaciones

bull Fallos frecuentes que son difiacuteciles de

localizar

bull Son poco eficientes pero realizan la funcioacuten

esperada

bull Dificultades en la integracioacuten con otros

sistemas

bull Calidad pobre del software final

bull Resistencia a introducir cambios

bull Pocas personas capacitadas para realizar

modificaciones

bull Dificultades para realizar pruebas

bull El mantenimiento consume muchos recursos

XII LAS BASES DE LA INGENIERIA INVERSA

Los ejemplos maacutes trascendentes sobre los

inicios de la ingenieriacutea inversa son claramente las

investigaciones realizadas sobre antiguos

artefactos creados por humanos ancestrales con

el fin de descubrir la manera en que funcionaban

Uno de los maacutes conocidos es el llamado

mecanismo de Antikythera (Fig 1) el cual se

piensa que fue disentildeado para fines astronoacutemicos

por los griegos siendo uno de los primeros

artefactos que funcionaban con ruedas de

engranes

Figura 1 Antikythera (mecanismo presuntamente creado para fines astronoacutemicos)

Podemos entonces implantar un paralelo en aquella

mitoloacutegica buacutesqueda de descubrimiento sobre el

funcionamiento de esos artefactos y la ingenieriacutea inversa

actual usada en ingenieriacutea de software estableciendo un

importante factor en comuacuten la falta de documentacioacuten En

este ambiente es muy comuacuten contar con una especie de caja

negra en donde sabemos lo que ingresamos y el resultado

que obtenemos pero desconocemos el procedimiento con la

precisioacuten que necesitariacuteamos para replicarlo

Esta falta de documentacioacuten es el impulso

principal de toda la ingenieriacutea inversa las

finalidades de la misma pueden variar pero este

factor inicial nunca lo haraacute

XIII INGENIERIA INVERSA COMO UN PROCESO DE

REINGENIERIA

La ingenieriacutea inversa tiene la misioacuten de

desentrantildear los misterios y secretos de los

sistemas en uso

Baacutesicamente recupera el disentildeo de la

aplicacioacuten a partir del coacutedigo esto se realiza

mediante herramientas que extraen la

informacioacuten de los datos procedimientos y

arquitecturas del sistema

Es aplicable a sistemas con las siguientes

caracteriacutesticas

Documentacioacuten inexistente o totalmente obsoleta

Programacioacuten en bloque de coacutedigos muy grandes

yo sin estructural

La aplicacioacuten cubre gran parte de los requisitos

y el rendimiento esperado

A Nivel de abstraccioacuten

El nivel de Abstraccioacuten de un proceso de

Ingenieriacutea Inversa y las herramientas que se

utilizan para realizarlo aluden la sofisticacioacuten de

la informacioacuten de disentildeo que se puede extraer del

coacutedigo fuente Este proceso deberiacutea ser capaz de

derivar

Sus representaciones de disentildeo de procedimiento

(con un bajo nivel de abstraccioacuten)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

24

La informacioacuten de las estructuras de datos de

procedimiento (con un nivel de abstraccioacuten

ligeramente maacutes elevado)

Modelos de flujo de datos de control (un nivel de

abstraccioacuten relativamente alto)

Modelos de entidades y de relaciones (un elevado

nivel de abstraccioacuten)

B Completitud

En la mayoriacutea de los casos la completitud

decrece a medida que aumenta el grado de

abstraccioacuten

La completitud mejora en proporcioacuten directa a

la cantidad de anaacutelisis efectuado por la persona

que estaacute efectuando la ingenieriacutea inversa

C Interactividad

La interactividad alude al grado con el cual el

ser humano se integra con las herramientas

automatizadas para crear un proceso de

ingenieriacutea inversa efectivo

D Proceso

El Proceso de ingenieriacutea inversa (Fig 2) es el encargado

de reestructurar el coacutedigo fuente para que solamente

contenga instrucciones de programacioacuten estructurada Lo

que hace que el coacutedigo sea maacutes faacutecil de leer y proporciona

la base para las subsiguientes actividades de ingenieriacutea

inversa

Figura 2 Diagrama de Proceso de la Ingenieriacutea Inversa

E Reestructuracioacuten

La reestructuracioacuten del software modifica el

coacutedigo fuente y los datos en un intento adecuado

a futuros cambios esta no modifica la

arquitectura global del programa Tiene a

centrarse en los detalles de disentildeo de moacutedulos

individuales y en estructuras de datos locales

definidas dentro de los moacutedulos

Estos son algunos de los beneficios que se

pueden lograr cuando se reestructura el software

Programas de mayor calidad

Reduce el esfuerzo requerido para llevar a cabo

las actividades de mantenimiento

Hace el software maacutes sencillo para comprobar y

depurar

F Re documentacioacuten

Es el proceso mediante el cual se produce

documentacioacuten retroactivamente desde un

sistema existente

Es considerada una forma de ingenieriacutea inversa

porque la documentacioacuten reconstruida es usada

para ayudar al conocimiento del programa

XIV UTILIZANDO EL METODO CIENTIFICO EN LA

INGENIERIA INVERSA

Ante cualquier dificultad tecnoloacutegica el

meacutetodo cientiacutefico siempre es y seraacute nuestra maacutes

preciada arma Partamos imaginando un pequentildeo

dilema relacionado con el tema de ingenieriacutea de

software especiacuteficamente con un sencillo

programa (Fig 3)

Figura 3 Pantalla de aplicacioacuten que nos serviraacute de ejemplo

Esta sencilla aplicacioacuten mostraraacute un mensaje con cierto

resultado y aun siendo un problema demasiado sencillo

para considerarlo como un reto el objetivo es soacutelo describir

] INGENIERIacuteA DE SOFTWARE

25

INGENIERIacuteA DE SISTEMAS

las acciones usuales del proceso las cuales son aplicables

en escalas muy superiores

El resultado mostrado por el programa dentro del mensaje

emergente se basa en nuestra entrada pero nosotros

desconocemos en lo absoluto los procedimientos utilizados

sobre esta entrada para producir aquella respuesta

A La Observacioacuten es Trascendental

Primero es importante observar el problema su

comportamiento Es substancial tratar de lograr

un pensamiento inductivo en donde logremos

identificar el principio particular del problema

para poder llegar a extrapolarlo a una solucioacuten

general

El punto de quiebre se produce en este instante

Ya al haber observado la aplicacioacuten podriacuteamos

decidir procesar los datos que nos entrega y

lograr crear un coacutedigo equivalente o investigar el

funcionamiento interno

B Dentro de la aplicacioacuten

Luego de la formulacioacuten de una hipoacutetesis sobre

su funcionamiento necesitamos algunas

herramientas para comenzar con la investigacioacuten

En el caso de esta aplicacioacuten con un poco de

conocimientos del lenguaje ensamblador de

programacioacuten tradicional y un descompilador es

suficiente

Es importante emprender de buena forma

nuestro sondeo ser ordenados y metoacutedicos en la

tarea En este momento las capacidades analiacuteticas

y loacutegicas son muy importantes para alivianar

nuestra faena

Lo fundamental es conocer muy bien el

entorno en que nos desenvolveremos En este es

punto indispensable saber que una aplicacioacuten

para Windows necesita invocar internamente al

punto de entrada MessageBox o MessageBoxEx

de la libreriacutea de sistema user32dll para poder

desplegar un mensaje (Fig 4)

Figura 4 Resultado de la Aplicacioacuten

Ya con esa pista es sencillo encontrar el

fragmento de coacutedigo relacionado con las

operaciones relacionadas a nuestro nuacutemero de

entrada que tendriacutea una forma similar a la

mostrada a continuacioacuten en nuestro

descompilador (Fig 5)

Figura 5 Vista del Programa en Ensamblador

Cualquier programador intuiriacutea faacutecilmente lo

que hacen las liacuteneas superiores de esta aplicacioacuten

en especial sprintf es parte de la libreriacutea estaacutendar

de C++ Claramente vemos tambieacuten el tiacutetulo de la

ventana en el coacutedigo estos valores son

interpretados de forma inteligente por este

descompilador en especial y en particular nos

asiste de sobremanera a comprender el coacutedigo

Lo siguiente es sencillamente explorar paso a

paso las acciones superiores de caacutelculo del

resultado En esta instancia seraacute ideal realizar

numerosas pruebas para estar completamente

seguros de que logramos develar el secreto tras la

funcionalidad objetivo (Fig 6)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

26

Figura 6 Inicio del coacutedigo al que aplicaremos ingenieriacutea inversa

Hay que detenerse algunos segundos a

individualizar algunos procedimientos del

anaacutelisis que a simple vista pueden parecer

inconcebibles con el fin de poder generar una

tesis concluyente

Cabe destacar que se omitiraacuten pasos

intermedios de asignaciones de memoria y otros

formalismos propios de ensamblador para

favorecer el entendimiento del lector

Inicialmente tenemos el valor de entrada

supuestamente ya leiacutedo desde el cuadro de

diaacutelogo del programa ahora nos enfocamos en la

primera accioacuten importante Asumiremos el valor

de entrada como una incoacutegnita

En el siguiente trozo de coacutedigo la liacutenea

destacada antildeadioacute siete a nuestra incoacutegnita (Fig 7)

Figura 7 Coacutedigo donde se denota la adicioacuten de 7 a nuestra ecuacioacuten

A continuacioacuten se multiplica ese valor

resultante de la suma por el mismo (Fig 8)

Figura 8 Coacutedigo donde se denota la multiplicacioacuten del valor por la suma

Nuevamente multiplicamos el resultado por el

anterior proporcionado tras la suma En esta

segunda vez ya podemos expresar la operacioacuten

simplemente elevando al cubo la suma anterior

(Fig 9)

Figura 9 Coacutedigo que denota una nueva multiplicacioacuten del resultante

Ahora le restamos diez al resultado

El procedimiento que viene a continuacioacuten

propone un mayor desafiacuteo intelectual Un nuacutemero

constante en este caso el cargado al registro

EAX (Fig 10)

Figura 10 ubicacioacuten del nuacutemero constante EAX

Generalmente la divisioacuten es algo maacutes costosa

en tiempo de procesador que otras operaciones

por lo que ciertos compiladores incluyen tablas

de constantes las cuales son llamadas ―nuacutemeros

maacutegicos para la divisioacuten entera

d Con signo Sin signo

m (hex) s m (hex) a s

-5 99999999 1

-3 55555555 1

-2k 7FFFFFFF k-

1

1 mdash mdash 0 1 0

2k 80000001 k-

1 232-k 0 0

3 55555556 0 AAAAAAAB 0 1

5 66666667 1 CCCCCCCD 0 2

6 2AAAAAAB 0 AAAAAAAB 0 2

7 92492493 2 24924925 1 3

9 38E38E39 1 38E38E39 0 1

10 66666667 2 CCCCCCCD 0 3

11 2E8BA2E9 1 BA2E8BA3 0 3

] INGENIERIacuteA DE SOFTWARE

27

INGENIERIacuteA DE SISTEMAS

12 2AAAAAAB 1 AAAAAAAB 0 3

25 51EB851F 3 51EB851F 0 3

125 10624DD3 3 10624DD3 0 3

Tabla 1 Algunos nuacutemeros maacutegicos (32 bits)

Ahora bien conociendo la tabla 1 sabiendo

que el nuacutemero cargado en esta ocasioacuten

corresponde al once lo que hace el coacutedigo es

multiplicar el resultado de la salida temporal por

aquel nuacutemero (Fig 11)

Figura 11 Multiplicacioacuten del resultante por el numero 11

Naturalmente la multiplicacioacuten por un nuacutemero

tan grande produce una especie de

desbordamiento en el registro contenedor del

resultado al exceder el tamantildeo de palabra del

procesador (en este caso de 32 bits) Estos bits

sobrantes se almacenan naturalmente en el

registro EDX registro que es contiguo a ECX

dentro de la memoria de los registros del

procesador

Ahora desplazamos un bit del registro EDX

(equivalente a una divisioacuten entera por dos) para

obtener la solucioacuten de la divisioacuten por once

generando una sencilla ecuacioacuten

Figura 12 Desplazamiento del bit de registro EDX

El uacuteltimo paso luego de documentar estos

resultados seraacute crear una aplicacioacuten que recree

esta foacutermula soacutelo en caso de tener intenciones de

re-codificacioacuten del desarrollo Consumando este

punto es sencillo confeccionar un diagrama con

todo el proceso anteriormente visto

XV CONCLUSIONES

Queda claro que el tema de la ingenieriacutea

inversa es uno de los toacutepicos maacutes interesantes a

los que podriacutea afrontarse un profesional de la

tecnologiacutea y en general disfrutar el largo proceso

involucrado gracias al desafiacuteo poco predecible

que presenta

En general podemos darnos cuenta de que no

existen muchas metodologiacuteas y teoriacuteas estrictas

sobre coacutemo aplicar las teacutecnicas de ingenieriacutea

inversa Afortunadamente un ingeniero estaacute

preparado para afrentar desafiacuteos de este tipo

Adicionalmente podemos deducir tambieacuten el

aspecto bidireccional de la ingenieriacutea inversa

pues como ya lo comprobamos no solo es un

desafiacuteo aplicarla sino que tambieacuten lo es tener que

dificultar el proceso o incluso tratar de impedirlo

si la situacioacuten lo requiere

REFERENCIAS

[12] Roger Pressman Ingenieriacutea de Software ―Un Enfoque Moderno 6th ed

MC Graw Hill [13] httpeswikipediaorgwikiIngenieria_inversa

[14] httpwwwinfosecwritersconntext_resourcespdfsoftware_security_and_r

everse_engineeringpdf [15] httperwinriedclmodo=visorampelemento=239

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

28

METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO Univ Alejandro Meacutendez Escobar

Universidad San Francisco de Asiacutes

Ingenieriacutea de Sistemas

Ingenieriacutea de Software I

La Paz - Bolivia

amendezusfaedubo

Resumenmdash Al adquirir el software educativo dentro del campo de

desarrollo de software una gran importancia y siendo este

inspiracioacuten de propuestas de innumerables metodologiacuteas que buscan

la elaboracioacuten de un software de calidad

Tomaremos la metodologiacutea Aacutencora enfocada a la fase de

requerimientos y que ofrece elementos que indican las actividades

que deben realizarse los artefactos que se producen y la forma de

obtenerlos

Usando al desarrollo de software educativo como ejemplo de una

mejor comprensioacuten de dicha metodologiacutea analizando la aplicacioacuten

del Aacutencora en un trabajo propuesto para el Instituto Tecnoloacutegico de

Orizaba Meacutexico

Palabras clave mdash Aacutencora Metodologiacutea Desarrollo de Software

Educativo Requerimientos Calidad

XVI INTRODUCCIOacuteN

Hoy en diacutea la tecnologiacutea esta dentro de las

actividades que realizamos es asiacute que la educacioacuten no

queda exenta de ella por o cual es necesario adaptarse

al movimiento tecnoloacutegico que nos trae grandes

ventajas en la transmisioacuten de conocimientos de una

manera sencilla y dinaacutemica

De esta manera han surgido infinidad de

metodologiacuteas de desarrollo de software educativo el

cual tiene como objetivo ser el apoyo para docentes

alumnos y toda persona que este dentro del proceso de

aprendizaje

Tomando en cuenta este ramillete infinito de

metodologiacuteas surge en el ejemplo propuesto la

adaptacioacuten del Aacutencora en el desarrollo de software

educativo teniendo como objetivo principal la

comprensioacuten de los elementos y conceptos de la

metodologiacutea Aacutencora

Aacutencora es una metodologiacutea enfocada a la

adquisicioacuten de requerimientos para software que

ofrece guiacuteas y elementos de apoyo para la obtencioacuten de

estos requerimientos Al mismo tiempo permite pasar a

la fase de disentildeo de manera sencilla Aprovechando las

ventajas que presenta Aacutencora se le hicieron algunas

adaptaciones con el fin de cubrir algunas

caracteriacutesticas del disentildeo instruccional y enriquecer

Aacutencora habilitaacutendola para la adquisicioacuten de

requerimientos de software educativo

XVII APLICACIOacuteN DE LA METODOLOGIacuteA AacuteNCORA

Como es el objetivo principal la comprensioacuten de la

aplicacioacuten de la metodologiacutea Aacutencora dentro del

desarrollo de software educativo de calidad solo

describiremos los meacutetodos del meacutetodo y los resultados

obtenidos

Claro esta que para ahondar maacutes en tema del

software educativo en si el lector puede recurrir a los

siguientes autores Metodologiacutea de desarrollo de

sistemas multimedia (Vaughan 2006) Propuesta de

metodologiacutea para el disentildeo desarrollo y evaluacioacuten

de software educativo (Reyes 2009) Ingenieriacutea de

software educativo con modelaje orientado por objetos

(Goacutemez 1998) asi como tambieacuten los siguientes

modelos ADDIE (Anaacutelisis Disentildeo Desarrollo

Implantacioacuten y Evaluacioacuten) de (McGriff 2000) y el

disentildeo instruccional aplicado al desarrollo de software

educativo EISE (Especificacioacuten Instruccional de

Software Educativo) de (Hernaacutendez 2005)

] INGENIERIacuteA DE SOFTWARE

29

INGENIERIacuteA DE SISTEMAS

Quienes tienen el mismo objetivo de crear software

educativo de calidad podemos sintetizar de ellos los

siguientes puntos

Anaacutelisis del puacuteblico al que se dirigiraacute el software

Problema oacute necesidad educativa a atender

Anaacutelisis de contenido (Tema a tratar actividades

para alcanzar el objetivo de ensentildeanza y forma de

evaluarlo)

Actividades oacute forma actual de llevar a cabo la

ensentildeanza del tema en cuestioacuten

Elaboracioacuten de guiones metaacuteforas escenarios

Creacioacuten de prototipo oacute Storyboard

Disentildeo de interfaz

Mapas de navegacioacuten

Modelos de datos

Elaboracioacuten de diagramas de contexto diagramas

de flujo o diagramas de casos de uso

Ahora enfocaacutendonos en el aacutencora se establece la

propuesta de seleccionar las actividades de Aacutencora que

permitan obtener los requerimientos de un software

educativo

La Tabla 1 presenta las actividades y artefactos

producidos en las fases de Aacutencora para la elaboracioacuten

de software educativo

TABLA 1 ACTIVIDADES Y ARTEFACTOS DE LA METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO

Metodologiacutea Aacutencora

Fases Actividades y artefactos

Anaacutelisis de

Requerimientos

A traveacutes de entrevistas con los clientes

(maestros y pedagogos) y de la lectura

del respectivo material proporcionado

por ellos se definiraacute la asignatura a la

que se enfocaraacute el software el tema a

tratar y la forma en que se abordaraacute y

evaluaraacute Tambieacuten se estableceraacute el

objetivo general de aprendizaje la

metaacutefora que se emplearaacute y se

determinaraacute el puacuteblico al que se

dirigiraacute el software

Artefactos

Documento que define la asignatura

contenido objetivo general de

aprendizaje metaacutefora y puacuteblico al que

se dirigiraacute el software Guion de la

situacioacuten actual

Recoleccioacuten y

clasificacioacuten de

requerimientos

El guion de la propuesta

computacional reflejaraacute la metaacutefora

que se sigue el ambiente de cada

escena

La bitaacutecora de desarrollo permitiraacute ver

coacutemo el sistema responderaacute a las

diversas acciones que realice el

usuario

En lugar del prototipo raacutepido se

elaboraraacute un Storyboard para presentar

graacuteficamente la estructura de sistema

propuesto

Artefactos

Guion de propuesta computacional

bitaacutecora de desarrollo Storyboard

Resolucioacuten de

conflictos

jerarquizacioacuten y

validacioacuten de

requerimientos

Modificaciones al guion de la

propuesta computacional de acuerdo a

los cambios propuestos por los

maestros y pedagogos

Artefactos

Guion de propuesta computacional e

Storyboard con adecuaciones sentildealas

Cierre

Trasladar los guiones a casos de uso

Artefactos

Casos de uso

Se agregaron algunas caracteriacutesticas a ciertos

artefactos de Aacutencora para poder cubrir los

requerimientos de software educativo Uno de estos

elementos es el guion de la propuesta computacional

al que se propone agregar lo siguiente

Conocimientos previos del usuario Se refiere a los

conocimientos baacutesicos o miacutenimos que debe tener el

alumno para poder interactuar con el moacutedulo

Objetivo de aprendizaje Es el aprendizaje que

debe obtener el alumno despueacutes de haber interactuado

con el moacutedulo

La Figura 1 se presenta la estructura sugerida para el

guion de la propuesta computacional En la bitaacutecora de

desarrollo se propone antildeadir una fila al final de cada

pista donde se describan las situaciones favorables y

no favorables para el cumplimiento del objetivo de

aprendizaje para esa pista en particular Por otra parte

en lugar del prototipo se sugiere utilizar el Storyboard

ya que permite mostrar de manera maacutes completa la

estructura del guion de la propuesta computacional La

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

30

Figura 2 muestra el formato para la elaboracioacuten del

Storyboard

Figura 1 Estructura del guion para la propuesta computacional

Figura 2 Formato para la elaboracioacuten del Storyboard

XVIII RESULTADOS

Aplicando Aacutencora en un ejemplo para la parte de

requerimientos se obtuvo la siguiente informacioacuten

Asignatura Matemaacuteticas

Contenido Estaacute articulado con base en seis ejes

con sus respectivos temas y subtemas que variacutean de

acuerdo al grado escolar Considerando lo anterior se

tiene lo siguiente

a) Grado escolar De segundo hasta quinto grado de

primaria

b) Temas Nuacutemeros naturales capacidad peso

tiempo y ubicacioacuten espacial planteamiento y

resolucioacuten de problemas sencillos en los que se

requiera recolectar y registrar informacioacuten

perioacutedicamente representacioacuten de informacioacuten en

tablas de frecuencia y graacuteficas de barras registros de

los resultados de experimentos aleatorios

representacioacuten de los resultados de un experimento

aleatorio en tablas y graacuteficas

c) Subtemas Planteamiento y resolucioacuten de

problemas que impliquen dos o maacutes operaciones con

nuacutemeros naturales

d) Ejes Introduccioacuten del kiloacutemetro como la unidad

que permite medir grandes distancias y recorridos

largos capacidad peso y tiempo uso del reloj y el

calendario los nuacutemeros sus relaciones y sus

operaciones medicioacuten la prediccioacuten y el azar

tratamiento de la informacioacuten

Objetivo general de aprendizaje Ejercitar las

operaciones aritmeacuteticas baacutesicas interpretar la

informacioacuten y los resultados de la informacioacuten dada

aplicada en situaciones de la vida cotidiana

Con las actividades hasta ahora realizadas se ha

observado que los artefactos de Aacutencora son flexibles y

pueden por lo tanto adaptarse de acuerdo a las

necesidades que implican la adquisicioacuten de

requerimientos de un software educativo Tambieacuten se

aprecian las ventajas de algunos artefactos como la

bitaacutecora de desarrollo que permite determinar las

respuestas del sistema ante las acciones del usuario y

estimar tambieacuten el tiempo que llevaraacute implementar

cada quinteta

La estimacioacuten del tiempo ayuda a tener un valor

aproximado del tiempo de desarrollo de software

Agregar el objetivo de aprendizaje a la bitaacutecora de

desarrollo puede parecer repetitivo despueacutes de

incluirlo en el Storyboard pero esto nos permite ver las

situaciones u obstaacuteculos que pueden impedir que el

objetivo de aprendizaje se alcance y por tanto tenerlos

presente durante el disentildeo A pesar de las ventajas de

la bitaacutecora de desarrollo un inconveniente hasta ahora

encontrado es lo tedioso al manejar muchas quintetas

] INGENIERIacuteA DE SOFTWARE

31

INGENIERIacuteA DE SISTEMAS

cuando por la naturaleza del guion se tienen varios

avisos y mensajes para el usuario Por otra parte los

guiones han ayudado a realizar de manera sencilla el

modelo de casos de uso

En lo referente a la presentacioacuten con los clientes el

guion es un artefacto que pude dar un panorama

general del software que se va a elaborar y queda

reforzada a traveacutes de los Storyboard Cuando se

requieren cambios solicitados por los clientes las

modificaciones a estos artefactos no han sido muy

complicadas dado que por su estructura es faacutecil de

ubicar las secciones y respectivos elementos

XIX CONCLUSIONES

Con los resultados hasta ahora obtenidos se puede

decir que la propuesta permite a los desarrolladores

con poca experiencia en desarrollo de software

educativo obtener los requerimientos de una manera

sencilla

Permite realizar un mejor relevamiento de informacioacuten

de los requerimientos del cliente enfocaacutendonos mas en

este

Es tambieacuten importante mencionar los avances que

tiene y seguiraacute teniendo el software educativo aplicado

no solo a nivel escolar sino tambieacuten al superior

Habiendo revisado el concepto y la aplicacioacuten de la

metodologiacutea Aacutencora en el desarrollo de software

educativo se llegoacute a una comprensioacuten mas extensa de

dicho meacutetodo el cual es de gran importancia dentro de

la ingenieriacutea de Software ya que nos

REFERENCIAS

httpwwwuvmxmisproductividaddocumentsCarmenChay_CIIM2010pdf

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 10: Revista de Ingenieria de Software

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

10

Desarrollo de Scrum

Sergio J Guzmaacuten L Ingenieriacutea de Sistemas

Universidad San Francisco de Asiacutes

20 Octubre Esq Belisario Salinas

La Paz - Bolivia

sjguzmanusfaedubo

Resumenmdash Scrum es una metodologiacutea aacutegil de desarrollo de

proyectos que toma su nombre y principios de los estudios

realizados sobre nuevas praacutecticas de produccioacuten por

Hirotaka Takeuchi e Ikujijo Nonaka a mediados de los 80

En 1996 se definioacute por primera vez un patroacuten para aplicar

esos principios de desarrollo en ldquocampos de scrumrdquo al

software

Palabras clave mdash scrum metodologiacutea patroacuten software

sprint rol

I Que es Scrum

Scrum es una metodologiacutea aacutegil de desarrollo de proyectos

que toma su nombre y principios de los estudios

realizados sobre nuevas praacutecticas de produccioacuten por

Hirotaka Takeuchi e Ikujijo Nonaka a mediados de los 80

En 1996 se definioacute por primera vez un patroacuten para aplicar

esos principios de desarrollo en ―campos de scrum al

software

Esta fue la primera definicioacuten de un patroacuten Scrum aplicado

al software disentildeada por Jeff Sutherland y Ken Schwaber y

presentada en Object-Oriented Programming Systems

Languages amp Applications OOPSLA en 1996

II iquestCoacutemo incorporarla

La competitividad del mercado de desarrollo de Software y

la necesidad de los clientes de reducir el tiempo de

mercado obligan a las organizaciones de desarrollo de

software a ser agresivas en sus calendarios de entrega Esto

ha hecho que hayan surgido metodologiacuteas para la gestioacuten y

desarrollo de software basadas en un proceso iterativo e

incremental Su estructura estaacute basada en corto tiempo los

cuales son iteraciones de 1 a 4 semanas Scrum se usa en

proyectos de entorno complejos donde se desea obtener

resultados raacutepidos y la productividad es lo maacutes importante

En los proyectos basados en Scrum se consideran tres

roles

Duentildeo del producto Es quien determina las propiedades de

los entregables

Maestro de Scrum Administra y facilita la ejecucioacuten del

proceso

Equipo de Trabajo Trabajan en conjunto para entregar

resultados en cada sprint

Fig 1 El flujo de Scrum

Como se puede observar en medio de los participantes del

proceso no quedan claras las responsabilidades del

arquitecto de software Sin embargo como comenta

Charlie Alfred ―la arquitectura es al aceite y el filtro que

lubrica adecuadamente a Scrum

Fig 2 El flujo de Scrum

] INGENIERIacuteA DE SOFTWARE

11

INGENIERIacuteA DE SISTEMAS

Si se compara el rol del arquitecto de edificaciones con el

del arquitecto de software se puede observar que ambos

modelan las construcciones a un alto nivel de abstraccioacuten

proveen posibles soluciones mejoran la comunicacioacuten con

los miembros del equipo de construccioacuten a traveacutes de

modelos visualizan las generalidades del problema

definen los roles y las interacciones entre los componentes

de construccioacuten entre otras tareas Al igual que es

imposible pensar que un rascacielos puede ser construido

sin una arquitectura soacutelida es imposible pensar que

productos de software empresariales puedan ser

implementados sin una arquitectura bien pensada

Seguacuten Bass Clements y Kasman ―La arquitectura de

software de un programa o sistema informaacutetico es la

estructura o estructuras del sistema que incluyen elementos

de software las propiedades externamente visibles de esos

elementos y las relaciones entre ellos Esta definicioacuten nos

lleva a concluir que la arquitectura de software garantiza el

buen desarrollo del software y a tener un sistema que

cumpla con los requerimientos funcionales y no

funcionales del cliente Ademaacutes la arquitectura es clave en

la reutilizacioacuten de artefactos de software en sistemas de

liacutenea de productos de software

Viendo la importancia de la arquitectura en el desarrollo

del software en eacuteste artiacuteculo se presenta una propuesta para

gestionar la arquitectura de Software en Scrum En el

primer capiacutetulo se trata el tema de la localizacioacuten de la

arquitectura de software en el ciclo de desarrollo de Scrum

en el segundo capiacutetulo se describen las tareas del arquitecto

de software en Scrum finalmente se presentan las

conclusiones y el trabajo futuro

III Arquitectura de Software en el ciclo de desarrollo de

Scrum

La idea fundamental de la presente propuesta es adicionar

un sprint inicial llamado ―Sprint 0Prime al inicio del ciclo de

desarrollo El objetivo principal del arquitecto en el Sprint

0 es analizar y disentildear la generalidad del sistema que

satisfaga los requisitos y sea entendible por los miembros

del equipo desde sus diferentes puntos de vista durante el

desarrollo Un punto clave es reutilizar artefactos de

software creados a partir de la arquitectura para ser maacutes

aacutegiles en el desarrollo de productos especiacuteficos

El Sprint 0 comprende tres fases que fueron tomadas del

ciclo de vida de entregas evolutivas En el Sprint 0 se

construye la arquitectura de forma iterativa mediante un

anaacutelisis preliminar de los conductores arquitectoacutenicos

(requisitos funcionales de calidad y del negocio) y de un

estudio de factibilidad del proyecto No se necesita tener

todos los requisitos claros para comenzar la fase de disentildeo

arquitectoacutenico

Para determinar los conductores arquitectoacutenicos se debe

identificar los objetivos del negocio de maacutes alta prioridad

que son pocos Estos objetivos del negocio se convierten en

los escenarios de calidad o casos de uso De esta lista se

deben escoger los que tendraacuten un mayor impacto sobre la

arquitectura El disentildeo arquitectoacutenico puede comenzar una

vez que se encuentran definidos los conductores

arquitectoacutenicos El proceso de anaacutelisis de requisitos seraacute

entonces influenciado por las preguntas generadas durante

el disentildeo arquitectoacutenico

El resultado del Srpint 0 es un documento inicial que

explica la arquitectura El documento puede basarse en los

pasos definidos por el meacutetodo ADD (Attrbute Driver

Design) Este meacutetodo ha sido probado exitosamente en

proyectos anteriores Con ADD se puede definir una

arquitectura de software mediante un proceso de

descomposicioacuten basado en los atributos de calidad de

Software

El documento inicial de la arquitectura se debe avaluar con

el fin de saber si la arquitectura cumple con los requisitos

de calidad Para realizar esta evaluacioacuten se propone el

meacutetodo ATAM (Architecture Tradeoff Analysis Method)

El ATAM revela cuaacuten bien una arquitectura satisface los

objetivos particulares de calidad y provee una

aproximacioacuten de coacutemo los objetivos de calidad interactuacutean

Si la evaluacioacuten de la arquitectura se encuentra que se

deben realizar cambios a la misma entonces eacutesta se debe

refinar hasta llegar a tener como resultado del Sprint 0 el

documento puacuteblico de la arquitectura junto con el sistema

esqueleto Finalmente la arquitectura creada en el Sprint 0

beneficiaraacute el desarrollo en los siguientes sprints

IV Rol del arquitecto de Software en Scrum

El rol y actividades del arquitecto de software cambian de

enfoque dependiendo de si se estaacute en el Sprint 0 o en

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

12

sprints subsecuentes

Fig 3 La Comunicacioacuten

Sprint 0 En sistemas complejos una persona difiacutecilmente

puede cubrir con amplitud teacutecnica las decisiones

arquitectoacutenicas y dar credibilidad a la arquitectura de

software Esto quiere decir que la participacioacuten del equipo

es de vital importancia para la creacioacuten y el mantenimiento

de la arquitectura Un equipo de arquitectos de software

que se aiacutesle del equipo de Scrum puede producir una

arquitectura que corra el riesgo de ser rechazada Es por

esto que recomendamos que el arquitecto o los arquitectos

se software sean miembros del equipo de Scrum Una de

las actividades que se debe realizar en equipo es la

evaluacioacuten de la arquitectura Especiacuteficamente en el

meacutetodo ATAM se requiere la participacioacuten mutua de tres

equipos que trabajan en conjunto con los arquitectos de

software el de evaluacioacuten el de tomadores de decisiones

del proyecto y el de los involucrados en la arquitectura

Sprints subsecuentes El arquitecto de software asegura que

el equipo de Scrum entienda el enfoque y los retos

arquitectoacutenicos maacutes importantes en casa sprint Los

equipos de Scrum realizan construcciones cortas guiados

por las estrategias de la arquitectura A continuacioacuten se

nombran algunas de las responsabilidades del arquitecto de

software desde el Sprint 1 en adelante

El duentildeo del producto y el maestro del Scrum trabajan con

el arquitecto para priorizar los requisitos a implementar en

cada iteracioacuten

El arquitecto comunica las decisiones y facilita las

conversaciones arquitectoacutenicas de distintos puntos de vista

en cada sprint

El arquitecto asegura que haya conformidad entre las

entregas en cada sprint y la arquitectura

El arquitecto responde preguntas y da orientacioacuten

arquitectoacutenica cuando sea necesario

Junto con el maestro de Scrum coordina a los miembros

del equipo para adaptarse a la arquitectura previa

El arquitecto junto con el duentildeo del producto y los

miembros del equipo preparan el Product Backlog

V Conclusioacuten

En el presente artiacuteculo ofrecimos una propuesta para incluir

la arquitectura de software en Scrum En el Sprint 0 se

realizan las actividades concernientes al anaacutelisis y disentildeo

de la arquitectura de software y el sistema esqueleto En

los siguientes sprints el arquitecto de software se asegura

de que la implementacioacuten cumpla con la arquitectura

REFERENCIAS

[3] httpwwwsafecreativeorgwork

[4] Hirotaka Takeuchi es decano de la Graduate School of International

Corporate Strategy en la Universidad Hitotsubashi en Tokio y fue profesor visitante en la Escuela de Negocios Harvard entre 1989 y 1990

[5] Ikujiro NonakaNo soy un guruacute porque me falta carisma

] INGENIERIacuteA DE SOFTWARE

13

INGENIERIacuteA DE SISTEMAS

El futuro de la ingenieriacutea de software Luis E Aguirre

Ingenieriacutea de Sistemas

Universidad San Francisco de Asiacutes

20 de Octubre esq Belisario Salinas

La Paz - Bolivia leaguirreusfaedubo

Resumen El disentildeo de programas a partir de informacioacuten binaria

significoacute un paso sustantivo para la industria desarrolladora de

software Desde ese hallazgo ocurrido en la deacutecada de los

cincuenta hasta hoy el crecimiento de metodologiacuteas para su

desarrollo ha subido notablemente en complejidad Sin embargo

los ciacuterculos viciosos que acusa hoy la confeccioacuten de programas

informaacuteticos impiden conceptualizar el objeto a un nivel

superior de abstraccioacuten tal y como lo exige el avance tecnoloacutegico

y los procesos de negocios

Palabras clave mdash futuro software ingenieriacutea programador y

desarrollo

I Introduccioacuten

La calidad de los sistemas informaacuteticos satisfaccioacuten de sus

usuarios y clientes son temas ampliamente conocidos

recurrentes y de constante preocupacioacuten por parte de los

practicantes de la Ingenieriacutea de software

Esta joven y dinaacutemica ingenieriacutea siempre estaacute en busca de

mejoras en el desarrollo de sistemas aumento de

productividad del ingeniero de software mayor control del

proceso de desarrollo establecimiento de nuevos meacutetodos de

desarrollo

Fig 1 Primeros programas computacionales en formato de tarjeta perforada

Estos elementos combinados y aplicados de buena forma

logran un buen proceso de desarrollo y en definitiva un buen

producto

Identificar los pasos que ha recorrido esta ingenieriacutea analizar

su contexto actual y finalmente proyectar hacia doacutende se

dirige es el pilar de este artiacuteculo

II iquestSe aplica actualmente la ingenieriacutea del software

La investigacioacuten y el desarrollo de teacutecnicas y meacuteto

dos de ingenieriacutea del software son constantes y suelen suponer

interesantes avances en la resolucioacuten de problemas de

desarrollo de software Sin embargo es habitual que en la

praacutectica diaria profesional no se incluya praacutecticamente

ninguna de las recomendaciones maacutes elementales de la

ingenieriacutea del software En efecto es habitual que el

desarrollo de software se parezca maacutes al descontrol del cuento

de laquosi los programadores fueran albantildeilesraquo ([Novatica

1996]) que a una idiacutelica y bien organizada factoriacutea de

software (concepto de gran vigencia a finales de los ochenta

[Nunamaker et al 1988])

De hecho las evaluaciones de los procesos productivos de

software realizadas a raiacutez de los modelo de procesos de

software (por ejemplo con CMM [Paulk et al 1993])

confirman que el desarrollo de software suele estar

baacutesicamente en estado caoacutetico

Y no soacutelo en como uno podriacutea pensar pequentildeas

organizaciones de un paiacutes mediterraacuteneo como el nuestro sino

en tambieacuten en las empresas adjudicatarias de interesantes

contratos de defensa de paiacuteses laquoavanzadosraquo como EEUU o

Japoacuten Si bien estos modelos de evaluacioacuten auacuten acumulan

distintas acusaciones de rigidez o falta de contraste empiacuterico

los resultados obtenidos en sus evaluaciones resultan

consistentes con la sensacioacuten de constante laquoapagafuegosraquo que

suelen sufrir los profesionales del software Tambieacuten suelen

revelar la praacutectica despreocupacioacuten de los responsables de las

organizaciones de software por la mejora de la calidad de sus

procesos de trabajo o de sus productos bien sea por contar con

una situacioacuten interna de empresa poco propicia porque el

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

14

ambiente del mercado no fomenta la preocupacioacuten por estos

temas o bien por su poco intereacutes real en la buacutesqueda de la

calidad

III La actualidad

La gran mayoriacutea de los sistemas de software creados hoy en

diacutea son los llamados sistemas corporativos es decir son

orientados a formar una parte importante de los negocios de

las grandes empresas

Continuando en nuestro contexto se identifica un nuevo

enfoque del problema de desarrollo el apoyo en la

sincronizacioacuten de los procesos de negocio estructuras

complejas de informacioacuten manejada por el negocio todo esto

entrelazado por restricciones dadas por las reglas del negocio

La tecnologiacutea actual por otro lado ha alejado maacutes todaviacutea los

ingenieros de las maacutequinas sistemas operativos incluso de

las tareas de programacioacuten

El enfoque de la mayoriacutea de los equipos de desarrollo e

ingenieros participes en proyectos sigue siendo con un bajo

nivel de abstraccioacuten cerca de la codificacioacuten Se tiende a

pensar en la base de datos a utilizar establecer la navegacioacuten

de las paacuteginas programar los protocolos de comunicacioacuten etc

Esto lleva a utilizar las tareas de programacioacuten y de pruebas

para validar el entendimiento y cumplimiento de la

funcionalidad de los sistemas

Lo anteriormente expuesto muestra un problema

metodoloacutegico consecuencia de un desfase entre el enfoque

teoacuterico oacuteptimo (anaacutelisis de negocio) y el enfoque praacutectico real

(programacioacuten y pruebas) en los proyectos de hoy En otras

palabras la metodologiacutea actualmente usada estaacute atrasada con

respecto al avance tecnoloacutegico

Desarrollando maacutes esta idea se identifican algunos

problemas concretos de las metodologiacuteas

Ellas no obligan a sus ejecutores a respetar todas las

normas y los procedimientos establecidos especialmente

en las etapas tempranas del proyecto Es muy faacutecil y

tentador ―saltar una o maacutes de estas etapas uno o maacutes

documentos o modelos pasando directamente a

implementacioacuten produccioacuten y posterior correccioacuten de los

sistemas desarrollados

Control de calidad del producto final La codificacioacuten y

complejidad del programa es demasiada para ser revisada

y verificada fehacientemente Por otro lado los coacutedigos

fuentes y los ejecutables actualmente son los uacutenicos

entregables eficientemente verificables

Estos dos problemas al parecer forman una situacioacuten

contradictoria la metodologiacutea tradicional no permite validar

eficientemente la calidad de los sistemas antes de llegar al

coacutedigo fuente y por otro lado tampoco permite llegar

eficientemente a coacutedigos fuentes de calidad

IV Futuro

La salida de este ―ciacuterculo vicioso que se propone es

bastante natural analizar la situacioacuten actual de la ingenieriacutea

de software en la luz de sus tendencias histoacutericas

La primera de ellas relacionada con los problemas que

resuelven los sistemas obviamente presente y muy utilizada

en nuestra realidad los sistemas de hoy no soacutelo resuelven los

problemas del mundo real sino que estaacuten fuertemente influen-

ciando el desarrollo del mundo real

Fig2 Modela

El enfoque de los ingenieros desde hace unos antildeos no se ha

movido significativamente por el camino del aumento de

abstraccioacuten establecido histoacutericamente Se han hecho ciertos

avances en temas puntuales (como arquitecturas de

componentes patrones de disentildeo nuevos lenguajes de

programacioacuten etc) pero conceptualmente

metodoloacutegicamente la tarea de programacioacuten sigue siendo

ejecutada de la misma forma escribiendo coacutedigos fuentes en

forma de los programas textuales

Eacuteste es justamente el ―atraso metodoloacutegico que se

mencionoacute Para disminuir la brecha entre las tendencias

histoacutericas es necesario ajustar la metodologiacutea en teacuterminos de

aumentar la abstraccioacuten del enfoque de los ingenieros de

software y acercarlo a la abstraccioacuten del problema

El aumento de la abstraccioacuten del proceso de desarrollo del

software hace pensar que la proacutexima generacioacuten de meacutetodos

de desarrollo se perfila en un conceptualmente nuevo con-

] INGENIERIacuteA DE SOFTWARE

15

INGENIERIacuteA DE SISTEMAS

junto de herramientas que permitan aumentar en un mayor

grado al actual la abstraccioacuten escondiendo los detalles de maacutes

bajo nivel

Fig3 Probable modelo a futuro

Las nuevas herramientas permitiraacuten ―programar en nivel

de anaacutelisis generando coacutedigos en un lenguaje de

programacioacuten tradicional de forma automaacutetica tal como hoy

los compiladores generan el lenguaje maacutequina a partir del

coacutedigo fuente Nuevos ―lenguajes de programacioacuten

naturalmente seriacutean visuales y se pareceriacutean a las

especificaciones de software en uno de los lenguajes de

modelamiento por ejemplo UML

V Conclusioacuten

Es muy probable que estemos proacuteximos a ver un nuevo

paso evolutivo en la ingenieriacutea de software Tan grande como

el invento de lenguajes de alto nivel o anaacutelisis y disentildeo

orientado a objetos Una nueva generacioacuten que absorberaacute a la

actual automatizando la mayoriacutea de las buenas praacutecticas

usadas actualmente

Una pregunta natural es si una maacutequina puede llegar a

generar programas tan buenos como los hechos por un pro-

gramador experto En vez de ―romper la cabeza con esta

pregunta ahora quizaacutes seriacutea suficiente recordarse otra vez de

la historia Los primeros compiladores de ninguna generacioacuten

alcanzaban de inmediato lo deseable y oacuteptimo Sin embargo

con el paso del tiempo apoyados en la experiencia de los

ingenieros y en el avance tecnoloacutegico se mejoraban hasta el

nivel de superar significativamente las generaciones

anteriores

Es poco factible que hoy en diacutea alguien cuestione la calidad

de los compiladores de por ejemplo Java y la calidad del

coacutedigo de maacutequina generado por ellos

VI Referencias [6] Website [Online]

httpwwwenterpriseanalystnetdownloadmda_informaticap

df

[7] httpwwwslidesharenetamrrochafuturo-del-software-impacto-en-las-organizaciones-y-en-los-profesionales

[8] httpwwwdcubaareventseci2008conferenciasIngSoftHexacta

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

16

Ingenieriacutea de Software para

Desarrolladores de juegos Huascar Huanca Orozco

Ingenieria de Sistemas San francisco de Asis

Av20 de Octubre esq Belisario Salinas

hhuncausfaedubo

ResumenmdashEn este artiacuteculo veremos una lo que es ldquoIS para

Desarrolladores de juegosrdquo si crees que un juego es facil pues

te equivocas en este articulo mostramos el uso de la IS en la

cracion de juegos que metodos utilizan y la complejidad que

representa para el equipo de desarrollo

1) Palabras clave mdash UMLRequisitosjuegoequipo de trabajo motor del juego

IV INTRODUCCIOacuteN

En la ingenieriacutea de software (IS) el desarrollo

de videojuegos es uacutenico pero similares a los

esfuerzos de software Es la uacutenica que combina el

trabajo de los equipos que cubren muacuteltiples

disciplinas (arte muacutesica actuacioacuten

programacioacuten etc) y que el juego de

acoplamiento que se busca a traveacutes del uso de

prototipos e iteraciones Con ello el desarrollo

del juego se enfrenta a desafiacuteos que pueden ser

abordadas mediante las praacutecticas tradicionales de

SE La industria tiene que adoptar buenas

praacutecticas de SE para sus distintas necesidades

tales como la gestioacuten de activos multimedia y

encontrar el fundamento en el juego La industria

debe asumir los retos por la evolucioacuten de los

meacutetodos de SE para satisfacer sus necesidades

Este trabajo investiga estos desafiacuteos y praacutecticas

de ingenieriacutea destaca para mitigar estos

problemas

V ENTRA EN EL JUEGO

Lo que la IS para desarrolladores de juegos hace

es

Mezcla de ingenieriacutea y el arte El software como

una praacutectica como una preocupacioacuten profesional

Meacutetodos para aprender a disentildear y fabricar un

producto El desarrollo del personaje e ingenieriacutea

de software Estrategias para hacer el mejor uso

de la ingenieriacutea del conocimiento formalizado El

aprendizaje de las habilidades que se pueden

aplicar en cualquier lugar

VI REQUISITOS

Esta parte ofrece una visioacuten general de los

conceptos y herramientas necesarias para la

obtencioacuten de requisitos

IDENTIFICAR LO QUE SE CONSIDERA UN REQUISITO DE SOFTWARE

ESTABLECER LOS CRITERIOS PARA DAR SENTIDO A LOS REQUISITOS Y LA

ESCRITURA DETERMINAR LA MANERA DE REUNIR LOS REQUISITOS O DESCUBRIR

EXPLORAR COacuteMO EMPLEAR CASOS DE USO PARA PERFECCIONAR Y

ANALIZAR LAS NECESIDADES ENCONTRAR TEacuteCNICAS PARA CONFIRMAR QUE LOS REQUISITOS ESTEacuteN

COMPLETOS

VERIFICAR LA EXACTITUD DE LOS REQUISITOS TRACE CAMBIOS EN LOS REQUISITOS

VII PROGRAMADOR DEL MOTOR DEL JUEGO

Fig 1 Juego RPG

] INGENIERIacuteA DE SOFTWARE

17

INGENIERIacuteA DE SISTEMAS

Los programadores de juegos motores crear el

motor de base del juego incluyendo la fiacutesica de

simulacioacuten y disciplinas graacuteficas

A Fiacutesica del motor del programador

Programador de un juego de la fiacutesica se dedica

al desarrollo de las fiacutesica de un juego se emplean

Por lo general un juego de soacutelo simular algunos

aspectos de la fiacutesica del mundo real Por ejemplo

un juego de espacio puede necesitar simulada

gravedad pero no tendriacutea ninguna necesidad

para simular agua viscosidad

Para un juego de rol como World of Warcraft

soacutelo un programador de la fiacutesica puede ser

necesaria Para un juego de combate complejo

como Battlefield 1942 los equipos de

programadores de la fiacutesica pueden ser necesarias

B motor de graacuteficos del programador

A pesar de todos los programadores antildeadir

tanto los contenidos y la experiencia que ofrece

un juego un programador de juego se centra maacutes

en la estrategia de un juego la aplicacioacuten de la

mecaacutenica del juego y la loacutegica y la sensacioacuten

de un juego

Esto no suele ser una disciplina independiente

como lo que este programador es por lo general

se diferencia de un juego a otro y que

inevitablemente se veraacute involucrado con las aacutereas

maacutes especializadas de desarrollo del juego como

los graacuteficos o el sonido

VIII EQUIPO DE TRABAJO

Fig 2 Grupo de trabajo

Un equipo de desarrollo en una organizacioacuten de

ingenieriacutea de software se compone de un grupo

de personas que trabajan en funciones

especializadas para lograr un objetivo comuacuten El

objetivo es la realizacioacuten de un proyecto Un

proyecto se define como un esfuerzo temporal

emprendido para crear un producto uacutenico

servicio o resultado

Aquiacute una pequentildea lista incompleta de algunos de

los componentes de un equipo de trabajo para

Desarrollo de juegos

Analista de requerimientos recopilar y analizar

los requisitos para el software

Arquitecto de software determinar la mejor

arquitectura para el software Seleccionar

Los componentes del proveedor para su inclusioacuten

en el esfuerzo de desarrollo

Disentildeador de software acotar el software para

lograr un rendimiento y otros

Objetivos

Prueba de software probador del software para

garantizar que funcione de acuerdo a la

Requisitos

Programador senior desarrollar bajo nivel de

documentacioacuten de disentildeo sirven como una

tecno-

Ventaja teacutecnica para los demaacutes e implementar el

software de acuerdo

Para el disentildeo

Programador implementar el software de acuerdo

al disentildeo

Trabajos de mantenimiento en el programador de

software creado durante el desarrollo anterior

Los esfuerzos para agregar funcionalidad o

eliminar errores de trabajo con

Atencioacuten al cliente

IX LENGUAJE UNIFICADO DE MODELADO (UML)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

18

Tomando en cuenta que el UML es un estaacutendar

muy flexible Nos da razoacuten que podemos pensar

en el diagrama

como herramientas que permiten realizar

diferentes tipos de trabajo Para revisar un poco

Use un diagrama de casos de uso para reunir y estudiar los requisitos para los propoacutesitos de disentildeo o pruebas

Use un diagrama de actividades para explorar los escenarios de casos de uso

Use un diagrama de clases para identificar las clases y ver coacutemo las

clases se relacionan entre siacute Use un diagrama de objetos para ver coacutemo un objeto se comunica con

otro

Use un diagrama de estado para explorar los atributos de cambio de objeto

Use un diagrama de secuencia para explorar a fondo un caso de uso

mediante el trazado de la orden en el que los objetos enviar mensajes a siacute mismos o entre siacute

Use un diagrama de colaboracioacuten para ver la loacutegica del sistema y la

forma en que los objetos envian mensajes entre siacute Use un diagrama de componentes para explorar y si existen los

subsistemas dentro de su juego

Use un diagrama de implementacioacuten para encontrar la manera de

configurar el paquete de instalacioacuten para su juego

X CONCLUSIONES

El desarrollo de los juegos se han vueltos mas

complejos con el pasar del tiempo y para el

desarrollo de un juego que este a la vanguardia

de la competencia se debe trabajar con la IS es

una forma eficaz de conseguir un juego de

calidad internacional

Referencias [9] Software Engineering for Game Developers by john P Flynt with Omar

Salem [10] httpieeexploreieeeorgxplloginjsptp=amparnumber=5070627ampurl=http

3A2F2Fieeexploreieeeorg2Fiel52F50705742F50705752F05

070627pdf3Farnumber

[11] httpgamedevstackexchangecomquestions19934abstract-game-engine-design

] INGENIERIacuteA DE SOFTWARE

19

INGENIERIacuteA DE SISTEMAS

Estrategias de Prueba del Software Miguel Angel Callisaya Quispe Universidad San Francisco de Asiacutes Av 20 de Octubre La Paz Bolivia

maccc19hotmailcom

Resumen Una estrategia de software es un mecanismo que

proporciona una guiacutea o base pasa ver la forma como se debe

desarrollar la aplicacioacuten en cuanto a meacutetodos esfuerzo

tiempo y recursos que son necesarios para lograr un producto

exitoso

La frecuencia con las que realicen las pruebas es de gran

importancia ya que de estaacute manera se pueda la en encontrar

los errores antes de que se conviertan en errores para la

aplicacioacuten si no se lleva un orden de aplicacioacuten de las pruebas

se va a perder tiempo recurso y sobre todo esfuerzo

Durante las primeras etapas de las pruebas es importante

concentrar toda la atencioacuten en un pequentildeo grupo de

componentes o en un componente que se considere importante

para el desarrollo tanto en los datos como en la parte loacutegica de

la aplicacioacuten

El objetivo final de las estrategias de prueba es documentar la

forma en el que equipo ha hecho el desarrollo y el seguimiento

que se le ha hecho a cada una de las etapas durante las etapas

de desarrollo e implementacioacuten

Palabras clave Calidad Prueba Estrategias Sistema

I INTRODUCCIOacuteN

Durante este articulo es importante mencionar algunos

aspectos que determinan el eacutexito de la aplicacioacuten de las

estrategias de prueba como lo son el enfoque estrateacutegico

para la prueba de software aspectos estrateacutegicos

estrategias de prueba para software convencional

estrategias de prueba para software orientado a objeto

estrategia de prueba para webapps pruebas de validacioacuten y

por uacuteltimo las pruebas del sistema

IIESTRATEGIAS DE PRUEBA DEL SOFTWARE

Verificacioacuten Estamos construyendo el producto

correctamente

Validacioacuten Estamos construyendo el producto correcto

Integracioacuten descendente

La integracioacuten descendente es un planteamiento

incremental a la construccioacuten de la estructura de programas

Se integran los moacutedulos movieacutendose hacia abajo por la

jerarquiacutea de control comenzando por el moacutedulo de control

principal (programa principal) Los moacutedulos subordinados

(de cualquier modo subordinados) al moacutedulo de control

principal se van incorporando en la estructura bien de

forma primero-en-profundidad o bien de forma primero-en-

anchura Fig1

Integracioacuten ascendente

La prueba de la integracioacuten ascendente como su nombre

indica empieza la construccioacuten y la prueba con los

moacutedulos atoacutemicos (es decir moacutedulos de los niveles maacutes

bajos de la estructura del programa) Dado que los moacutedulos

se integran de abajo hacia arriba el proceso requerido de

los moacutedulos subordinados a un nivel dado siempre estaacuten

disponibles y se elimina la necesidad de resguardos Fig2

Fig 1 Integracioacuten descendente

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

20

Fig 3 Integracioacuten Ascendente

Aspectos Estrateacutegicos

Tom Gilb plantea que se deben abordar los

siguientes puntos si se desea implementar con

eacutexito una estrategia de prueba del software

Especificar los requisitos del producto de manera

cuantificable mucho antes de que comiencen las pruebas

-Establecer los objetivos de la prueba de manera expliacutecita (teacuterminos

medibles)

-Comprender queacute usuarios va a tener el software y desarrollar un perfil

-Desarrollar un plan de prueba que haga hincapieacute en la prueba de ciclo

raacutepido

-Construir un software ―robusto disentildeado para probarse a siacute mismo

-Usar revisiones teacutecnicas formales efectivas como filtro antes de la

prueba

Llevar a cabo revisiones teacutecnicas formales para evaluar la

estrategia de prueba y los propios casos de prueba

Desarrollar un enfoque de mejora continua al proceso de

prueba Deberiacutea medirse la estrategia de prueba

Prueba de Unidad

La prueba de unidad centra el proceso de

verificacioacuten en la menor unidad del disentildeo del

software el moacutedulo La prueba de unidad siempre

esta orientada a caja blanca y este paso se suele

llevar a cabo en paralelo para muacuteltiples moacutedulos

Pruebas de Alfa y Beta

C u a n d o s e c o n s t r u y e s o f t w a r e a m e d i d a s e

l l e v a n a c a b o u n a s e r i e d e p r u e b a s d e

a c e p t a c i oacute n p a r a permitir que el cliente valide todos

los requisitos La prueba alfa se lleva a cabo en el

lugar del desarrollo pero por un cliente Se usa el

software en forma normal con el desarrollador como

observador del usuario y registrando los errores y

problemas de uso(entorno controlado)La prueba beta se

lleva a cabo por los usuarios finales en los lugares

de trabajo de los clientes El cliente registra los

problemas y los informa a intervalos regulare

Pruebas del sistema

La prueba del sistema estaacute constituida por una

serie de pruebas diferentes cuyo propoacutesito es

ejercitar profundamente el sistema

Prueba de recuperacioacuten

E s l a p r u e b a d e l s i s t e m a q u e f u e r z a a l

f a l l o d e l s o f t w a r e d e m u c h a s f o r m a s y

v e r i f i c a q u e l a recuperacioacuten se lleva a cabo

apropiadamente Recuperacioacuten automaacutetica o manual

Prueba de seguridad

Intenta verificar que los mecanismos de proteccioacuten

incorporados en el sistema lo protegeraacute de hecho de

accesos impropios

Pruebas de Resistencia

Estaacuten disentildeadas para enfrentar a los programas con

situaciones anormales Una variante de la prueba de

resistencia es una teacutecnica denominada prueba de

sensibilidad intenta descubrir combinaciones de datos

dentro de una clase de entrada valida que pueda producir

inestabilidad o un proceso incorrecto

El arte de la depuracioacuten

La depuracioacuten ocurre como consecuencia de una

prueba efectiva Cuando un caso de prueba

descubre u n e r r o r l a d e p u r a c i oacute n e s e l

p r o c e s o q u e p r o v o c a l a e l i m i n a c i oacute n d e l

e r r o r E l p r o c e s o m e n t a l q u e conecta un siacutentoma

con una causa es la depuracioacuten

El proceso de la depuracioacuten

E l p r o c e s o d e d e p u r a c i oacute n i n t e n t a h a c e r

c o r r e s p o n d e r e l s iacute n t o m a c o n u n a c a u s a

l l e v a n d o a s iacute a l a correccioacuten del error El proceso de

depuracioacuten siempre tiene uno de los dos resultados

siguientes

(1)se encuentra la causa se corrige y se elimina

o

(2)no se encuentra la causa En eacuteste uacuteltimo caso la persona

que realiza la depuracioacuten debe sospechar la causa disentildear

un caso de prueba que ayude a confirmar sus sospechas y el

trabajo vuelve hacia atraacutes a la correccioacuten del error de una

forma iterativa iquestPor queacute es tan difiacutecil la depuracioacuten

Varias caracteriacutesticas de los errores nos dan algunas

] INGENIERIacuteA DE SOFTWARE

21

INGENIERIacuteA DE SISTEMAS

pistas1El siacutentoma y la causa pueden ser

geograacuteficamente remotos entre siacute2El siacutentoma

puede desaparecer (temporalmente) al corregir

otro error

3 E l s iacute n t o m a p u e d e r e a l m e n t e e s t a r

p r o d u c i d o p o r a l g o q u e n o e s u n e r r o r

( i n e x a c t i t u d d e l o s redondeos)

4El siacutentoma puede estar causado por un error

humano que no sea faacutecilmente detectado

5El siacutentoma puede ser el resultado de problemas

de temporizacioacuten en vez de problema s de proceso

6Puede ser difiacutecil reproducir exactamente las

condiciones de entrada

7 E l s iacute n t o m a p u e d e a p a r e c e r e n f o r m a

i n t e r m i t e n t e

8 E l s iacute n t o m a p u e d e s e r d e b i d o a c a u s a s q u e

s e d i s t r i b u y e n p o r u n a s e r i e d e t a r e a s

e j e c u t aacute n d o s e e n diferentes procesadores

IIICONCLUCIONES

Las estrategias de prueba del software es un mecanismo

que proporciona una guiacutea o base pasa ver la forma como se

debe desarrollar la aplicacioacuten en cuanto a meacutetodos para

logra un producto exitoso

IVREFERENCIAS

httpbuenastareascomensayosEstategias-de-prueba-de-

software3752643html

httpwwwestrategiascompruebaagil

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

22

Ingenieriacutea Inversa Juan Carlos Zenteno Sanga

1

Departamento de Ingenieriacutea de Sistemas Universidad San Francisco de Asiacutes

Direccioacuten Incluyendo el Paiacutes 1juanka_58hotmailcom

Resumenmdash La ingenieriacutea de Software es parte del modelo de

proceso de reingenieriacutea de software es el proceso de analizar

un programa con la finalidad de crear una representacioacuten del

programa en un grado mayor de abstraccioacuten del coacutedigo

fuente las herramientas de ingenieriacutea inversa obtienen

informacioacuten del disentildeo de datos arquitectoacutenico y de

procedimientos a partir de un programa existente

En el siguiente artiacuteculo se veraacuten los conceptos baacutesicos y se

denotara un ejemplo praacutectico para una mayor comprensioacuten

del tema

Palabras clave mdash Ingenieriacutea de Software Reingenieriacutea

Linux Ingenieriacutea Inversa

XI INTRODUCCIOacuteN

Inmersa en el aacuterea de conocimiento de la

ingenieriacutea de software se encuentra la ingenieriacutea

inversa como punto de apoyo para los procesos

de anaacutelisis y disentildeo propuestos en diferentes

meacutetodos de desarrollo

La ingenieriacutea inversa permite subsanar esta

deficiencia al documentar los productos de

software a partir del coacutedigo ejecutable con el fin

de obtener los artefactos de anaacutelisis y disentildeo

La ingenieriacutea inversa es ademaacutes una

herramienta uacutetil que ayuda en el proceso de

aseguramiento de la calidad del software

mediante la comparacioacuten de diagramas de fases

de anaacutelisis y desarrollo se apoya comuacutenmente en

la generacioacuten del diagrama de clases debido a la

importancia de este diagrama en la fase de disentildeo

y su facilidad de generacioacuten Existen tambieacuten

otros diagramas de intereacutes como el de

comunicacioacuten y el de secuencias que modelan

las caracteriacutesticas dinaacutemicas de un producto de

software

Hoy en diacutea los productos maacutes comuacutenmente

sometidos a la Ingenieriacutea Inversa son los

productos de Hardware y Software pero

cualquier producto puede ser sometido a este

proceso

Aplicar ingenieriacutea Inversa a algo supone

profundizar el estudio de su funcionamiento

En el caso concreto del Software se conoce

por ingenieriacutea de software a la actividad que se

ocupa de describir coacutemo funciona un programa

de cuyo coacutedigo no se dispone hasta el punto de

generar coacutedigo propio que cumpla con las

mismas funciones Un ejemplo claacutesico del uso de

esta teacutecnica es el software de pago donde las

empresas utilizan esta teacutecnica para proteger sus

productos contra posibles acceso no autorizados

o examinar el producto final para encontrar

posibles bugs inesperados en la ejecucioacuten de

dicho sistema

Existe una gran variedad de software

desensamblador y depurador para aplicar esta

teacutecnica

En resumen la idea general al aplicar

ingenieriacutea inversa es

Conocer a fondo la aplicacioacuten y generar un

mejor coacutedigo

Migrar la aplicacioacuten a un nuevo sistema operativo

Hacer o completar la documentacioacuten

] INGENIERIacuteA DE SOFTWARE

23

INGENIERIacuteA DE SISTEMAS

Verificar que el coacutedigo en estudio cumple las

especificaciones del disentildeo estaacutendar

La informacioacuten extraiacuteda de la lectura del

coacutedigo fuente son las especificaciones de disentildeo

modelos de flujo de control diagramas de disentildeo

documentos de especificacioacuten de disentildeo

pudiendo tomarse estas especificaciones como

nuevo punto de partida para aplicar ingenieriacutea

inversa y obtener informacioacuten a mayor nivel de

abstraccioacuten

Dado que es una labor estrateacutegica es

conveniente conocer cuando conviene realizar la

tarea de Ingenieriacutea inversa para una aplicacioacuten y

cuaacutendo es maacutes rentable sustituirla e implementar

una nueva Las aplicaciones para el primer paso

son aquellas en la que se produce las siguientes

situaciones

bull Fallos frecuentes que son difiacuteciles de

localizar

bull Son poco eficientes pero realizan la funcioacuten

esperada

bull Dificultades en la integracioacuten con otros

sistemas

bull Calidad pobre del software final

bull Resistencia a introducir cambios

bull Pocas personas capacitadas para realizar

modificaciones

bull Dificultades para realizar pruebas

bull El mantenimiento consume muchos recursos

XII LAS BASES DE LA INGENIERIA INVERSA

Los ejemplos maacutes trascendentes sobre los

inicios de la ingenieriacutea inversa son claramente las

investigaciones realizadas sobre antiguos

artefactos creados por humanos ancestrales con

el fin de descubrir la manera en que funcionaban

Uno de los maacutes conocidos es el llamado

mecanismo de Antikythera (Fig 1) el cual se

piensa que fue disentildeado para fines astronoacutemicos

por los griegos siendo uno de los primeros

artefactos que funcionaban con ruedas de

engranes

Figura 1 Antikythera (mecanismo presuntamente creado para fines astronoacutemicos)

Podemos entonces implantar un paralelo en aquella

mitoloacutegica buacutesqueda de descubrimiento sobre el

funcionamiento de esos artefactos y la ingenieriacutea inversa

actual usada en ingenieriacutea de software estableciendo un

importante factor en comuacuten la falta de documentacioacuten En

este ambiente es muy comuacuten contar con una especie de caja

negra en donde sabemos lo que ingresamos y el resultado

que obtenemos pero desconocemos el procedimiento con la

precisioacuten que necesitariacuteamos para replicarlo

Esta falta de documentacioacuten es el impulso

principal de toda la ingenieriacutea inversa las

finalidades de la misma pueden variar pero este

factor inicial nunca lo haraacute

XIII INGENIERIA INVERSA COMO UN PROCESO DE

REINGENIERIA

La ingenieriacutea inversa tiene la misioacuten de

desentrantildear los misterios y secretos de los

sistemas en uso

Baacutesicamente recupera el disentildeo de la

aplicacioacuten a partir del coacutedigo esto se realiza

mediante herramientas que extraen la

informacioacuten de los datos procedimientos y

arquitecturas del sistema

Es aplicable a sistemas con las siguientes

caracteriacutesticas

Documentacioacuten inexistente o totalmente obsoleta

Programacioacuten en bloque de coacutedigos muy grandes

yo sin estructural

La aplicacioacuten cubre gran parte de los requisitos

y el rendimiento esperado

A Nivel de abstraccioacuten

El nivel de Abstraccioacuten de un proceso de

Ingenieriacutea Inversa y las herramientas que se

utilizan para realizarlo aluden la sofisticacioacuten de

la informacioacuten de disentildeo que se puede extraer del

coacutedigo fuente Este proceso deberiacutea ser capaz de

derivar

Sus representaciones de disentildeo de procedimiento

(con un bajo nivel de abstraccioacuten)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

24

La informacioacuten de las estructuras de datos de

procedimiento (con un nivel de abstraccioacuten

ligeramente maacutes elevado)

Modelos de flujo de datos de control (un nivel de

abstraccioacuten relativamente alto)

Modelos de entidades y de relaciones (un elevado

nivel de abstraccioacuten)

B Completitud

En la mayoriacutea de los casos la completitud

decrece a medida que aumenta el grado de

abstraccioacuten

La completitud mejora en proporcioacuten directa a

la cantidad de anaacutelisis efectuado por la persona

que estaacute efectuando la ingenieriacutea inversa

C Interactividad

La interactividad alude al grado con el cual el

ser humano se integra con las herramientas

automatizadas para crear un proceso de

ingenieriacutea inversa efectivo

D Proceso

El Proceso de ingenieriacutea inversa (Fig 2) es el encargado

de reestructurar el coacutedigo fuente para que solamente

contenga instrucciones de programacioacuten estructurada Lo

que hace que el coacutedigo sea maacutes faacutecil de leer y proporciona

la base para las subsiguientes actividades de ingenieriacutea

inversa

Figura 2 Diagrama de Proceso de la Ingenieriacutea Inversa

E Reestructuracioacuten

La reestructuracioacuten del software modifica el

coacutedigo fuente y los datos en un intento adecuado

a futuros cambios esta no modifica la

arquitectura global del programa Tiene a

centrarse en los detalles de disentildeo de moacutedulos

individuales y en estructuras de datos locales

definidas dentro de los moacutedulos

Estos son algunos de los beneficios que se

pueden lograr cuando se reestructura el software

Programas de mayor calidad

Reduce el esfuerzo requerido para llevar a cabo

las actividades de mantenimiento

Hace el software maacutes sencillo para comprobar y

depurar

F Re documentacioacuten

Es el proceso mediante el cual se produce

documentacioacuten retroactivamente desde un

sistema existente

Es considerada una forma de ingenieriacutea inversa

porque la documentacioacuten reconstruida es usada

para ayudar al conocimiento del programa

XIV UTILIZANDO EL METODO CIENTIFICO EN LA

INGENIERIA INVERSA

Ante cualquier dificultad tecnoloacutegica el

meacutetodo cientiacutefico siempre es y seraacute nuestra maacutes

preciada arma Partamos imaginando un pequentildeo

dilema relacionado con el tema de ingenieriacutea de

software especiacuteficamente con un sencillo

programa (Fig 3)

Figura 3 Pantalla de aplicacioacuten que nos serviraacute de ejemplo

Esta sencilla aplicacioacuten mostraraacute un mensaje con cierto

resultado y aun siendo un problema demasiado sencillo

para considerarlo como un reto el objetivo es soacutelo describir

] INGENIERIacuteA DE SOFTWARE

25

INGENIERIacuteA DE SISTEMAS

las acciones usuales del proceso las cuales son aplicables

en escalas muy superiores

El resultado mostrado por el programa dentro del mensaje

emergente se basa en nuestra entrada pero nosotros

desconocemos en lo absoluto los procedimientos utilizados

sobre esta entrada para producir aquella respuesta

A La Observacioacuten es Trascendental

Primero es importante observar el problema su

comportamiento Es substancial tratar de lograr

un pensamiento inductivo en donde logremos

identificar el principio particular del problema

para poder llegar a extrapolarlo a una solucioacuten

general

El punto de quiebre se produce en este instante

Ya al haber observado la aplicacioacuten podriacuteamos

decidir procesar los datos que nos entrega y

lograr crear un coacutedigo equivalente o investigar el

funcionamiento interno

B Dentro de la aplicacioacuten

Luego de la formulacioacuten de una hipoacutetesis sobre

su funcionamiento necesitamos algunas

herramientas para comenzar con la investigacioacuten

En el caso de esta aplicacioacuten con un poco de

conocimientos del lenguaje ensamblador de

programacioacuten tradicional y un descompilador es

suficiente

Es importante emprender de buena forma

nuestro sondeo ser ordenados y metoacutedicos en la

tarea En este momento las capacidades analiacuteticas

y loacutegicas son muy importantes para alivianar

nuestra faena

Lo fundamental es conocer muy bien el

entorno en que nos desenvolveremos En este es

punto indispensable saber que una aplicacioacuten

para Windows necesita invocar internamente al

punto de entrada MessageBox o MessageBoxEx

de la libreriacutea de sistema user32dll para poder

desplegar un mensaje (Fig 4)

Figura 4 Resultado de la Aplicacioacuten

Ya con esa pista es sencillo encontrar el

fragmento de coacutedigo relacionado con las

operaciones relacionadas a nuestro nuacutemero de

entrada que tendriacutea una forma similar a la

mostrada a continuacioacuten en nuestro

descompilador (Fig 5)

Figura 5 Vista del Programa en Ensamblador

Cualquier programador intuiriacutea faacutecilmente lo

que hacen las liacuteneas superiores de esta aplicacioacuten

en especial sprintf es parte de la libreriacutea estaacutendar

de C++ Claramente vemos tambieacuten el tiacutetulo de la

ventana en el coacutedigo estos valores son

interpretados de forma inteligente por este

descompilador en especial y en particular nos

asiste de sobremanera a comprender el coacutedigo

Lo siguiente es sencillamente explorar paso a

paso las acciones superiores de caacutelculo del

resultado En esta instancia seraacute ideal realizar

numerosas pruebas para estar completamente

seguros de que logramos develar el secreto tras la

funcionalidad objetivo (Fig 6)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

26

Figura 6 Inicio del coacutedigo al que aplicaremos ingenieriacutea inversa

Hay que detenerse algunos segundos a

individualizar algunos procedimientos del

anaacutelisis que a simple vista pueden parecer

inconcebibles con el fin de poder generar una

tesis concluyente

Cabe destacar que se omitiraacuten pasos

intermedios de asignaciones de memoria y otros

formalismos propios de ensamblador para

favorecer el entendimiento del lector

Inicialmente tenemos el valor de entrada

supuestamente ya leiacutedo desde el cuadro de

diaacutelogo del programa ahora nos enfocamos en la

primera accioacuten importante Asumiremos el valor

de entrada como una incoacutegnita

En el siguiente trozo de coacutedigo la liacutenea

destacada antildeadioacute siete a nuestra incoacutegnita (Fig 7)

Figura 7 Coacutedigo donde se denota la adicioacuten de 7 a nuestra ecuacioacuten

A continuacioacuten se multiplica ese valor

resultante de la suma por el mismo (Fig 8)

Figura 8 Coacutedigo donde se denota la multiplicacioacuten del valor por la suma

Nuevamente multiplicamos el resultado por el

anterior proporcionado tras la suma En esta

segunda vez ya podemos expresar la operacioacuten

simplemente elevando al cubo la suma anterior

(Fig 9)

Figura 9 Coacutedigo que denota una nueva multiplicacioacuten del resultante

Ahora le restamos diez al resultado

El procedimiento que viene a continuacioacuten

propone un mayor desafiacuteo intelectual Un nuacutemero

constante en este caso el cargado al registro

EAX (Fig 10)

Figura 10 ubicacioacuten del nuacutemero constante EAX

Generalmente la divisioacuten es algo maacutes costosa

en tiempo de procesador que otras operaciones

por lo que ciertos compiladores incluyen tablas

de constantes las cuales son llamadas ―nuacutemeros

maacutegicos para la divisioacuten entera

d Con signo Sin signo

m (hex) s m (hex) a s

-5 99999999 1

-3 55555555 1

-2k 7FFFFFFF k-

1

1 mdash mdash 0 1 0

2k 80000001 k-

1 232-k 0 0

3 55555556 0 AAAAAAAB 0 1

5 66666667 1 CCCCCCCD 0 2

6 2AAAAAAB 0 AAAAAAAB 0 2

7 92492493 2 24924925 1 3

9 38E38E39 1 38E38E39 0 1

10 66666667 2 CCCCCCCD 0 3

11 2E8BA2E9 1 BA2E8BA3 0 3

] INGENIERIacuteA DE SOFTWARE

27

INGENIERIacuteA DE SISTEMAS

12 2AAAAAAB 1 AAAAAAAB 0 3

25 51EB851F 3 51EB851F 0 3

125 10624DD3 3 10624DD3 0 3

Tabla 1 Algunos nuacutemeros maacutegicos (32 bits)

Ahora bien conociendo la tabla 1 sabiendo

que el nuacutemero cargado en esta ocasioacuten

corresponde al once lo que hace el coacutedigo es

multiplicar el resultado de la salida temporal por

aquel nuacutemero (Fig 11)

Figura 11 Multiplicacioacuten del resultante por el numero 11

Naturalmente la multiplicacioacuten por un nuacutemero

tan grande produce una especie de

desbordamiento en el registro contenedor del

resultado al exceder el tamantildeo de palabra del

procesador (en este caso de 32 bits) Estos bits

sobrantes se almacenan naturalmente en el

registro EDX registro que es contiguo a ECX

dentro de la memoria de los registros del

procesador

Ahora desplazamos un bit del registro EDX

(equivalente a una divisioacuten entera por dos) para

obtener la solucioacuten de la divisioacuten por once

generando una sencilla ecuacioacuten

Figura 12 Desplazamiento del bit de registro EDX

El uacuteltimo paso luego de documentar estos

resultados seraacute crear una aplicacioacuten que recree

esta foacutermula soacutelo en caso de tener intenciones de

re-codificacioacuten del desarrollo Consumando este

punto es sencillo confeccionar un diagrama con

todo el proceso anteriormente visto

XV CONCLUSIONES

Queda claro que el tema de la ingenieriacutea

inversa es uno de los toacutepicos maacutes interesantes a

los que podriacutea afrontarse un profesional de la

tecnologiacutea y en general disfrutar el largo proceso

involucrado gracias al desafiacuteo poco predecible

que presenta

En general podemos darnos cuenta de que no

existen muchas metodologiacuteas y teoriacuteas estrictas

sobre coacutemo aplicar las teacutecnicas de ingenieriacutea

inversa Afortunadamente un ingeniero estaacute

preparado para afrentar desafiacuteos de este tipo

Adicionalmente podemos deducir tambieacuten el

aspecto bidireccional de la ingenieriacutea inversa

pues como ya lo comprobamos no solo es un

desafiacuteo aplicarla sino que tambieacuten lo es tener que

dificultar el proceso o incluso tratar de impedirlo

si la situacioacuten lo requiere

REFERENCIAS

[12] Roger Pressman Ingenieriacutea de Software ―Un Enfoque Moderno 6th ed

MC Graw Hill [13] httpeswikipediaorgwikiIngenieria_inversa

[14] httpwwwinfosecwritersconntext_resourcespdfsoftware_security_and_r

everse_engineeringpdf [15] httperwinriedclmodo=visorampelemento=239

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

28

METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO Univ Alejandro Meacutendez Escobar

Universidad San Francisco de Asiacutes

Ingenieriacutea de Sistemas

Ingenieriacutea de Software I

La Paz - Bolivia

amendezusfaedubo

Resumenmdash Al adquirir el software educativo dentro del campo de

desarrollo de software una gran importancia y siendo este

inspiracioacuten de propuestas de innumerables metodologiacuteas que buscan

la elaboracioacuten de un software de calidad

Tomaremos la metodologiacutea Aacutencora enfocada a la fase de

requerimientos y que ofrece elementos que indican las actividades

que deben realizarse los artefactos que se producen y la forma de

obtenerlos

Usando al desarrollo de software educativo como ejemplo de una

mejor comprensioacuten de dicha metodologiacutea analizando la aplicacioacuten

del Aacutencora en un trabajo propuesto para el Instituto Tecnoloacutegico de

Orizaba Meacutexico

Palabras clave mdash Aacutencora Metodologiacutea Desarrollo de Software

Educativo Requerimientos Calidad

XVI INTRODUCCIOacuteN

Hoy en diacutea la tecnologiacutea esta dentro de las

actividades que realizamos es asiacute que la educacioacuten no

queda exenta de ella por o cual es necesario adaptarse

al movimiento tecnoloacutegico que nos trae grandes

ventajas en la transmisioacuten de conocimientos de una

manera sencilla y dinaacutemica

De esta manera han surgido infinidad de

metodologiacuteas de desarrollo de software educativo el

cual tiene como objetivo ser el apoyo para docentes

alumnos y toda persona que este dentro del proceso de

aprendizaje

Tomando en cuenta este ramillete infinito de

metodologiacuteas surge en el ejemplo propuesto la

adaptacioacuten del Aacutencora en el desarrollo de software

educativo teniendo como objetivo principal la

comprensioacuten de los elementos y conceptos de la

metodologiacutea Aacutencora

Aacutencora es una metodologiacutea enfocada a la

adquisicioacuten de requerimientos para software que

ofrece guiacuteas y elementos de apoyo para la obtencioacuten de

estos requerimientos Al mismo tiempo permite pasar a

la fase de disentildeo de manera sencilla Aprovechando las

ventajas que presenta Aacutencora se le hicieron algunas

adaptaciones con el fin de cubrir algunas

caracteriacutesticas del disentildeo instruccional y enriquecer

Aacutencora habilitaacutendola para la adquisicioacuten de

requerimientos de software educativo

XVII APLICACIOacuteN DE LA METODOLOGIacuteA AacuteNCORA

Como es el objetivo principal la comprensioacuten de la

aplicacioacuten de la metodologiacutea Aacutencora dentro del

desarrollo de software educativo de calidad solo

describiremos los meacutetodos del meacutetodo y los resultados

obtenidos

Claro esta que para ahondar maacutes en tema del

software educativo en si el lector puede recurrir a los

siguientes autores Metodologiacutea de desarrollo de

sistemas multimedia (Vaughan 2006) Propuesta de

metodologiacutea para el disentildeo desarrollo y evaluacioacuten

de software educativo (Reyes 2009) Ingenieriacutea de

software educativo con modelaje orientado por objetos

(Goacutemez 1998) asi como tambieacuten los siguientes

modelos ADDIE (Anaacutelisis Disentildeo Desarrollo

Implantacioacuten y Evaluacioacuten) de (McGriff 2000) y el

disentildeo instruccional aplicado al desarrollo de software

educativo EISE (Especificacioacuten Instruccional de

Software Educativo) de (Hernaacutendez 2005)

] INGENIERIacuteA DE SOFTWARE

29

INGENIERIacuteA DE SISTEMAS

Quienes tienen el mismo objetivo de crear software

educativo de calidad podemos sintetizar de ellos los

siguientes puntos

Anaacutelisis del puacuteblico al que se dirigiraacute el software

Problema oacute necesidad educativa a atender

Anaacutelisis de contenido (Tema a tratar actividades

para alcanzar el objetivo de ensentildeanza y forma de

evaluarlo)

Actividades oacute forma actual de llevar a cabo la

ensentildeanza del tema en cuestioacuten

Elaboracioacuten de guiones metaacuteforas escenarios

Creacioacuten de prototipo oacute Storyboard

Disentildeo de interfaz

Mapas de navegacioacuten

Modelos de datos

Elaboracioacuten de diagramas de contexto diagramas

de flujo o diagramas de casos de uso

Ahora enfocaacutendonos en el aacutencora se establece la

propuesta de seleccionar las actividades de Aacutencora que

permitan obtener los requerimientos de un software

educativo

La Tabla 1 presenta las actividades y artefactos

producidos en las fases de Aacutencora para la elaboracioacuten

de software educativo

TABLA 1 ACTIVIDADES Y ARTEFACTOS DE LA METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO

Metodologiacutea Aacutencora

Fases Actividades y artefactos

Anaacutelisis de

Requerimientos

A traveacutes de entrevistas con los clientes

(maestros y pedagogos) y de la lectura

del respectivo material proporcionado

por ellos se definiraacute la asignatura a la

que se enfocaraacute el software el tema a

tratar y la forma en que se abordaraacute y

evaluaraacute Tambieacuten se estableceraacute el

objetivo general de aprendizaje la

metaacutefora que se emplearaacute y se

determinaraacute el puacuteblico al que se

dirigiraacute el software

Artefactos

Documento que define la asignatura

contenido objetivo general de

aprendizaje metaacutefora y puacuteblico al que

se dirigiraacute el software Guion de la

situacioacuten actual

Recoleccioacuten y

clasificacioacuten de

requerimientos

El guion de la propuesta

computacional reflejaraacute la metaacutefora

que se sigue el ambiente de cada

escena

La bitaacutecora de desarrollo permitiraacute ver

coacutemo el sistema responderaacute a las

diversas acciones que realice el

usuario

En lugar del prototipo raacutepido se

elaboraraacute un Storyboard para presentar

graacuteficamente la estructura de sistema

propuesto

Artefactos

Guion de propuesta computacional

bitaacutecora de desarrollo Storyboard

Resolucioacuten de

conflictos

jerarquizacioacuten y

validacioacuten de

requerimientos

Modificaciones al guion de la

propuesta computacional de acuerdo a

los cambios propuestos por los

maestros y pedagogos

Artefactos

Guion de propuesta computacional e

Storyboard con adecuaciones sentildealas

Cierre

Trasladar los guiones a casos de uso

Artefactos

Casos de uso

Se agregaron algunas caracteriacutesticas a ciertos

artefactos de Aacutencora para poder cubrir los

requerimientos de software educativo Uno de estos

elementos es el guion de la propuesta computacional

al que se propone agregar lo siguiente

Conocimientos previos del usuario Se refiere a los

conocimientos baacutesicos o miacutenimos que debe tener el

alumno para poder interactuar con el moacutedulo

Objetivo de aprendizaje Es el aprendizaje que

debe obtener el alumno despueacutes de haber interactuado

con el moacutedulo

La Figura 1 se presenta la estructura sugerida para el

guion de la propuesta computacional En la bitaacutecora de

desarrollo se propone antildeadir una fila al final de cada

pista donde se describan las situaciones favorables y

no favorables para el cumplimiento del objetivo de

aprendizaje para esa pista en particular Por otra parte

en lugar del prototipo se sugiere utilizar el Storyboard

ya que permite mostrar de manera maacutes completa la

estructura del guion de la propuesta computacional La

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

30

Figura 2 muestra el formato para la elaboracioacuten del

Storyboard

Figura 1 Estructura del guion para la propuesta computacional

Figura 2 Formato para la elaboracioacuten del Storyboard

XVIII RESULTADOS

Aplicando Aacutencora en un ejemplo para la parte de

requerimientos se obtuvo la siguiente informacioacuten

Asignatura Matemaacuteticas

Contenido Estaacute articulado con base en seis ejes

con sus respectivos temas y subtemas que variacutean de

acuerdo al grado escolar Considerando lo anterior se

tiene lo siguiente

a) Grado escolar De segundo hasta quinto grado de

primaria

b) Temas Nuacutemeros naturales capacidad peso

tiempo y ubicacioacuten espacial planteamiento y

resolucioacuten de problemas sencillos en los que se

requiera recolectar y registrar informacioacuten

perioacutedicamente representacioacuten de informacioacuten en

tablas de frecuencia y graacuteficas de barras registros de

los resultados de experimentos aleatorios

representacioacuten de los resultados de un experimento

aleatorio en tablas y graacuteficas

c) Subtemas Planteamiento y resolucioacuten de

problemas que impliquen dos o maacutes operaciones con

nuacutemeros naturales

d) Ejes Introduccioacuten del kiloacutemetro como la unidad

que permite medir grandes distancias y recorridos

largos capacidad peso y tiempo uso del reloj y el

calendario los nuacutemeros sus relaciones y sus

operaciones medicioacuten la prediccioacuten y el azar

tratamiento de la informacioacuten

Objetivo general de aprendizaje Ejercitar las

operaciones aritmeacuteticas baacutesicas interpretar la

informacioacuten y los resultados de la informacioacuten dada

aplicada en situaciones de la vida cotidiana

Con las actividades hasta ahora realizadas se ha

observado que los artefactos de Aacutencora son flexibles y

pueden por lo tanto adaptarse de acuerdo a las

necesidades que implican la adquisicioacuten de

requerimientos de un software educativo Tambieacuten se

aprecian las ventajas de algunos artefactos como la

bitaacutecora de desarrollo que permite determinar las

respuestas del sistema ante las acciones del usuario y

estimar tambieacuten el tiempo que llevaraacute implementar

cada quinteta

La estimacioacuten del tiempo ayuda a tener un valor

aproximado del tiempo de desarrollo de software

Agregar el objetivo de aprendizaje a la bitaacutecora de

desarrollo puede parecer repetitivo despueacutes de

incluirlo en el Storyboard pero esto nos permite ver las

situaciones u obstaacuteculos que pueden impedir que el

objetivo de aprendizaje se alcance y por tanto tenerlos

presente durante el disentildeo A pesar de las ventajas de

la bitaacutecora de desarrollo un inconveniente hasta ahora

encontrado es lo tedioso al manejar muchas quintetas

] INGENIERIacuteA DE SOFTWARE

31

INGENIERIacuteA DE SISTEMAS

cuando por la naturaleza del guion se tienen varios

avisos y mensajes para el usuario Por otra parte los

guiones han ayudado a realizar de manera sencilla el

modelo de casos de uso

En lo referente a la presentacioacuten con los clientes el

guion es un artefacto que pude dar un panorama

general del software que se va a elaborar y queda

reforzada a traveacutes de los Storyboard Cuando se

requieren cambios solicitados por los clientes las

modificaciones a estos artefactos no han sido muy

complicadas dado que por su estructura es faacutecil de

ubicar las secciones y respectivos elementos

XIX CONCLUSIONES

Con los resultados hasta ahora obtenidos se puede

decir que la propuesta permite a los desarrolladores

con poca experiencia en desarrollo de software

educativo obtener los requerimientos de una manera

sencilla

Permite realizar un mejor relevamiento de informacioacuten

de los requerimientos del cliente enfocaacutendonos mas en

este

Es tambieacuten importante mencionar los avances que

tiene y seguiraacute teniendo el software educativo aplicado

no solo a nivel escolar sino tambieacuten al superior

Habiendo revisado el concepto y la aplicacioacuten de la

metodologiacutea Aacutencora en el desarrollo de software

educativo se llegoacute a una comprensioacuten mas extensa de

dicho meacutetodo el cual es de gran importancia dentro de

la ingenieriacutea de Software ya que nos

REFERENCIAS

httpwwwuvmxmisproductividaddocumentsCarmenChay_CIIM2010pdf

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 11: Revista de Ingenieria de Software

] INGENIERIacuteA DE SOFTWARE

11

INGENIERIacuteA DE SISTEMAS

Si se compara el rol del arquitecto de edificaciones con el

del arquitecto de software se puede observar que ambos

modelan las construcciones a un alto nivel de abstraccioacuten

proveen posibles soluciones mejoran la comunicacioacuten con

los miembros del equipo de construccioacuten a traveacutes de

modelos visualizan las generalidades del problema

definen los roles y las interacciones entre los componentes

de construccioacuten entre otras tareas Al igual que es

imposible pensar que un rascacielos puede ser construido

sin una arquitectura soacutelida es imposible pensar que

productos de software empresariales puedan ser

implementados sin una arquitectura bien pensada

Seguacuten Bass Clements y Kasman ―La arquitectura de

software de un programa o sistema informaacutetico es la

estructura o estructuras del sistema que incluyen elementos

de software las propiedades externamente visibles de esos

elementos y las relaciones entre ellos Esta definicioacuten nos

lleva a concluir que la arquitectura de software garantiza el

buen desarrollo del software y a tener un sistema que

cumpla con los requerimientos funcionales y no

funcionales del cliente Ademaacutes la arquitectura es clave en

la reutilizacioacuten de artefactos de software en sistemas de

liacutenea de productos de software

Viendo la importancia de la arquitectura en el desarrollo

del software en eacuteste artiacuteculo se presenta una propuesta para

gestionar la arquitectura de Software en Scrum En el

primer capiacutetulo se trata el tema de la localizacioacuten de la

arquitectura de software en el ciclo de desarrollo de Scrum

en el segundo capiacutetulo se describen las tareas del arquitecto

de software en Scrum finalmente se presentan las

conclusiones y el trabajo futuro

III Arquitectura de Software en el ciclo de desarrollo de

Scrum

La idea fundamental de la presente propuesta es adicionar

un sprint inicial llamado ―Sprint 0Prime al inicio del ciclo de

desarrollo El objetivo principal del arquitecto en el Sprint

0 es analizar y disentildear la generalidad del sistema que

satisfaga los requisitos y sea entendible por los miembros

del equipo desde sus diferentes puntos de vista durante el

desarrollo Un punto clave es reutilizar artefactos de

software creados a partir de la arquitectura para ser maacutes

aacutegiles en el desarrollo de productos especiacuteficos

El Sprint 0 comprende tres fases que fueron tomadas del

ciclo de vida de entregas evolutivas En el Sprint 0 se

construye la arquitectura de forma iterativa mediante un

anaacutelisis preliminar de los conductores arquitectoacutenicos

(requisitos funcionales de calidad y del negocio) y de un

estudio de factibilidad del proyecto No se necesita tener

todos los requisitos claros para comenzar la fase de disentildeo

arquitectoacutenico

Para determinar los conductores arquitectoacutenicos se debe

identificar los objetivos del negocio de maacutes alta prioridad

que son pocos Estos objetivos del negocio se convierten en

los escenarios de calidad o casos de uso De esta lista se

deben escoger los que tendraacuten un mayor impacto sobre la

arquitectura El disentildeo arquitectoacutenico puede comenzar una

vez que se encuentran definidos los conductores

arquitectoacutenicos El proceso de anaacutelisis de requisitos seraacute

entonces influenciado por las preguntas generadas durante

el disentildeo arquitectoacutenico

El resultado del Srpint 0 es un documento inicial que

explica la arquitectura El documento puede basarse en los

pasos definidos por el meacutetodo ADD (Attrbute Driver

Design) Este meacutetodo ha sido probado exitosamente en

proyectos anteriores Con ADD se puede definir una

arquitectura de software mediante un proceso de

descomposicioacuten basado en los atributos de calidad de

Software

El documento inicial de la arquitectura se debe avaluar con

el fin de saber si la arquitectura cumple con los requisitos

de calidad Para realizar esta evaluacioacuten se propone el

meacutetodo ATAM (Architecture Tradeoff Analysis Method)

El ATAM revela cuaacuten bien una arquitectura satisface los

objetivos particulares de calidad y provee una

aproximacioacuten de coacutemo los objetivos de calidad interactuacutean

Si la evaluacioacuten de la arquitectura se encuentra que se

deben realizar cambios a la misma entonces eacutesta se debe

refinar hasta llegar a tener como resultado del Sprint 0 el

documento puacuteblico de la arquitectura junto con el sistema

esqueleto Finalmente la arquitectura creada en el Sprint 0

beneficiaraacute el desarrollo en los siguientes sprints

IV Rol del arquitecto de Software en Scrum

El rol y actividades del arquitecto de software cambian de

enfoque dependiendo de si se estaacute en el Sprint 0 o en

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

12

sprints subsecuentes

Fig 3 La Comunicacioacuten

Sprint 0 En sistemas complejos una persona difiacutecilmente

puede cubrir con amplitud teacutecnica las decisiones

arquitectoacutenicas y dar credibilidad a la arquitectura de

software Esto quiere decir que la participacioacuten del equipo

es de vital importancia para la creacioacuten y el mantenimiento

de la arquitectura Un equipo de arquitectos de software

que se aiacutesle del equipo de Scrum puede producir una

arquitectura que corra el riesgo de ser rechazada Es por

esto que recomendamos que el arquitecto o los arquitectos

se software sean miembros del equipo de Scrum Una de

las actividades que se debe realizar en equipo es la

evaluacioacuten de la arquitectura Especiacuteficamente en el

meacutetodo ATAM se requiere la participacioacuten mutua de tres

equipos que trabajan en conjunto con los arquitectos de

software el de evaluacioacuten el de tomadores de decisiones

del proyecto y el de los involucrados en la arquitectura

Sprints subsecuentes El arquitecto de software asegura que

el equipo de Scrum entienda el enfoque y los retos

arquitectoacutenicos maacutes importantes en casa sprint Los

equipos de Scrum realizan construcciones cortas guiados

por las estrategias de la arquitectura A continuacioacuten se

nombran algunas de las responsabilidades del arquitecto de

software desde el Sprint 1 en adelante

El duentildeo del producto y el maestro del Scrum trabajan con

el arquitecto para priorizar los requisitos a implementar en

cada iteracioacuten

El arquitecto comunica las decisiones y facilita las

conversaciones arquitectoacutenicas de distintos puntos de vista

en cada sprint

El arquitecto asegura que haya conformidad entre las

entregas en cada sprint y la arquitectura

El arquitecto responde preguntas y da orientacioacuten

arquitectoacutenica cuando sea necesario

Junto con el maestro de Scrum coordina a los miembros

del equipo para adaptarse a la arquitectura previa

El arquitecto junto con el duentildeo del producto y los

miembros del equipo preparan el Product Backlog

V Conclusioacuten

En el presente artiacuteculo ofrecimos una propuesta para incluir

la arquitectura de software en Scrum En el Sprint 0 se

realizan las actividades concernientes al anaacutelisis y disentildeo

de la arquitectura de software y el sistema esqueleto En

los siguientes sprints el arquitecto de software se asegura

de que la implementacioacuten cumpla con la arquitectura

REFERENCIAS

[3] httpwwwsafecreativeorgwork

[4] Hirotaka Takeuchi es decano de la Graduate School of International

Corporate Strategy en la Universidad Hitotsubashi en Tokio y fue profesor visitante en la Escuela de Negocios Harvard entre 1989 y 1990

[5] Ikujiro NonakaNo soy un guruacute porque me falta carisma

] INGENIERIacuteA DE SOFTWARE

13

INGENIERIacuteA DE SISTEMAS

El futuro de la ingenieriacutea de software Luis E Aguirre

Ingenieriacutea de Sistemas

Universidad San Francisco de Asiacutes

20 de Octubre esq Belisario Salinas

La Paz - Bolivia leaguirreusfaedubo

Resumen El disentildeo de programas a partir de informacioacuten binaria

significoacute un paso sustantivo para la industria desarrolladora de

software Desde ese hallazgo ocurrido en la deacutecada de los

cincuenta hasta hoy el crecimiento de metodologiacuteas para su

desarrollo ha subido notablemente en complejidad Sin embargo

los ciacuterculos viciosos que acusa hoy la confeccioacuten de programas

informaacuteticos impiden conceptualizar el objeto a un nivel

superior de abstraccioacuten tal y como lo exige el avance tecnoloacutegico

y los procesos de negocios

Palabras clave mdash futuro software ingenieriacutea programador y

desarrollo

I Introduccioacuten

La calidad de los sistemas informaacuteticos satisfaccioacuten de sus

usuarios y clientes son temas ampliamente conocidos

recurrentes y de constante preocupacioacuten por parte de los

practicantes de la Ingenieriacutea de software

Esta joven y dinaacutemica ingenieriacutea siempre estaacute en busca de

mejoras en el desarrollo de sistemas aumento de

productividad del ingeniero de software mayor control del

proceso de desarrollo establecimiento de nuevos meacutetodos de

desarrollo

Fig 1 Primeros programas computacionales en formato de tarjeta perforada

Estos elementos combinados y aplicados de buena forma

logran un buen proceso de desarrollo y en definitiva un buen

producto

Identificar los pasos que ha recorrido esta ingenieriacutea analizar

su contexto actual y finalmente proyectar hacia doacutende se

dirige es el pilar de este artiacuteculo

II iquestSe aplica actualmente la ingenieriacutea del software

La investigacioacuten y el desarrollo de teacutecnicas y meacuteto

dos de ingenieriacutea del software son constantes y suelen suponer

interesantes avances en la resolucioacuten de problemas de

desarrollo de software Sin embargo es habitual que en la

praacutectica diaria profesional no se incluya praacutecticamente

ninguna de las recomendaciones maacutes elementales de la

ingenieriacutea del software En efecto es habitual que el

desarrollo de software se parezca maacutes al descontrol del cuento

de laquosi los programadores fueran albantildeilesraquo ([Novatica

1996]) que a una idiacutelica y bien organizada factoriacutea de

software (concepto de gran vigencia a finales de los ochenta

[Nunamaker et al 1988])

De hecho las evaluaciones de los procesos productivos de

software realizadas a raiacutez de los modelo de procesos de

software (por ejemplo con CMM [Paulk et al 1993])

confirman que el desarrollo de software suele estar

baacutesicamente en estado caoacutetico

Y no soacutelo en como uno podriacutea pensar pequentildeas

organizaciones de un paiacutes mediterraacuteneo como el nuestro sino

en tambieacuten en las empresas adjudicatarias de interesantes

contratos de defensa de paiacuteses laquoavanzadosraquo como EEUU o

Japoacuten Si bien estos modelos de evaluacioacuten auacuten acumulan

distintas acusaciones de rigidez o falta de contraste empiacuterico

los resultados obtenidos en sus evaluaciones resultan

consistentes con la sensacioacuten de constante laquoapagafuegosraquo que

suelen sufrir los profesionales del software Tambieacuten suelen

revelar la praacutectica despreocupacioacuten de los responsables de las

organizaciones de software por la mejora de la calidad de sus

procesos de trabajo o de sus productos bien sea por contar con

una situacioacuten interna de empresa poco propicia porque el

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

14

ambiente del mercado no fomenta la preocupacioacuten por estos

temas o bien por su poco intereacutes real en la buacutesqueda de la

calidad

III La actualidad

La gran mayoriacutea de los sistemas de software creados hoy en

diacutea son los llamados sistemas corporativos es decir son

orientados a formar una parte importante de los negocios de

las grandes empresas

Continuando en nuestro contexto se identifica un nuevo

enfoque del problema de desarrollo el apoyo en la

sincronizacioacuten de los procesos de negocio estructuras

complejas de informacioacuten manejada por el negocio todo esto

entrelazado por restricciones dadas por las reglas del negocio

La tecnologiacutea actual por otro lado ha alejado maacutes todaviacutea los

ingenieros de las maacutequinas sistemas operativos incluso de

las tareas de programacioacuten

El enfoque de la mayoriacutea de los equipos de desarrollo e

ingenieros participes en proyectos sigue siendo con un bajo

nivel de abstraccioacuten cerca de la codificacioacuten Se tiende a

pensar en la base de datos a utilizar establecer la navegacioacuten

de las paacuteginas programar los protocolos de comunicacioacuten etc

Esto lleva a utilizar las tareas de programacioacuten y de pruebas

para validar el entendimiento y cumplimiento de la

funcionalidad de los sistemas

Lo anteriormente expuesto muestra un problema

metodoloacutegico consecuencia de un desfase entre el enfoque

teoacuterico oacuteptimo (anaacutelisis de negocio) y el enfoque praacutectico real

(programacioacuten y pruebas) en los proyectos de hoy En otras

palabras la metodologiacutea actualmente usada estaacute atrasada con

respecto al avance tecnoloacutegico

Desarrollando maacutes esta idea se identifican algunos

problemas concretos de las metodologiacuteas

Ellas no obligan a sus ejecutores a respetar todas las

normas y los procedimientos establecidos especialmente

en las etapas tempranas del proyecto Es muy faacutecil y

tentador ―saltar una o maacutes de estas etapas uno o maacutes

documentos o modelos pasando directamente a

implementacioacuten produccioacuten y posterior correccioacuten de los

sistemas desarrollados

Control de calidad del producto final La codificacioacuten y

complejidad del programa es demasiada para ser revisada

y verificada fehacientemente Por otro lado los coacutedigos

fuentes y los ejecutables actualmente son los uacutenicos

entregables eficientemente verificables

Estos dos problemas al parecer forman una situacioacuten

contradictoria la metodologiacutea tradicional no permite validar

eficientemente la calidad de los sistemas antes de llegar al

coacutedigo fuente y por otro lado tampoco permite llegar

eficientemente a coacutedigos fuentes de calidad

IV Futuro

La salida de este ―ciacuterculo vicioso que se propone es

bastante natural analizar la situacioacuten actual de la ingenieriacutea

de software en la luz de sus tendencias histoacutericas

La primera de ellas relacionada con los problemas que

resuelven los sistemas obviamente presente y muy utilizada

en nuestra realidad los sistemas de hoy no soacutelo resuelven los

problemas del mundo real sino que estaacuten fuertemente influen-

ciando el desarrollo del mundo real

Fig2 Modela

El enfoque de los ingenieros desde hace unos antildeos no se ha

movido significativamente por el camino del aumento de

abstraccioacuten establecido histoacutericamente Se han hecho ciertos

avances en temas puntuales (como arquitecturas de

componentes patrones de disentildeo nuevos lenguajes de

programacioacuten etc) pero conceptualmente

metodoloacutegicamente la tarea de programacioacuten sigue siendo

ejecutada de la misma forma escribiendo coacutedigos fuentes en

forma de los programas textuales

Eacuteste es justamente el ―atraso metodoloacutegico que se

mencionoacute Para disminuir la brecha entre las tendencias

histoacutericas es necesario ajustar la metodologiacutea en teacuterminos de

aumentar la abstraccioacuten del enfoque de los ingenieros de

software y acercarlo a la abstraccioacuten del problema

El aumento de la abstraccioacuten del proceso de desarrollo del

software hace pensar que la proacutexima generacioacuten de meacutetodos

de desarrollo se perfila en un conceptualmente nuevo con-

] INGENIERIacuteA DE SOFTWARE

15

INGENIERIacuteA DE SISTEMAS

junto de herramientas que permitan aumentar en un mayor

grado al actual la abstraccioacuten escondiendo los detalles de maacutes

bajo nivel

Fig3 Probable modelo a futuro

Las nuevas herramientas permitiraacuten ―programar en nivel

de anaacutelisis generando coacutedigos en un lenguaje de

programacioacuten tradicional de forma automaacutetica tal como hoy

los compiladores generan el lenguaje maacutequina a partir del

coacutedigo fuente Nuevos ―lenguajes de programacioacuten

naturalmente seriacutean visuales y se pareceriacutean a las

especificaciones de software en uno de los lenguajes de

modelamiento por ejemplo UML

V Conclusioacuten

Es muy probable que estemos proacuteximos a ver un nuevo

paso evolutivo en la ingenieriacutea de software Tan grande como

el invento de lenguajes de alto nivel o anaacutelisis y disentildeo

orientado a objetos Una nueva generacioacuten que absorberaacute a la

actual automatizando la mayoriacutea de las buenas praacutecticas

usadas actualmente

Una pregunta natural es si una maacutequina puede llegar a

generar programas tan buenos como los hechos por un pro-

gramador experto En vez de ―romper la cabeza con esta

pregunta ahora quizaacutes seriacutea suficiente recordarse otra vez de

la historia Los primeros compiladores de ninguna generacioacuten

alcanzaban de inmediato lo deseable y oacuteptimo Sin embargo

con el paso del tiempo apoyados en la experiencia de los

ingenieros y en el avance tecnoloacutegico se mejoraban hasta el

nivel de superar significativamente las generaciones

anteriores

Es poco factible que hoy en diacutea alguien cuestione la calidad

de los compiladores de por ejemplo Java y la calidad del

coacutedigo de maacutequina generado por ellos

VI Referencias [6] Website [Online]

httpwwwenterpriseanalystnetdownloadmda_informaticap

df

[7] httpwwwslidesharenetamrrochafuturo-del-software-impacto-en-las-organizaciones-y-en-los-profesionales

[8] httpwwwdcubaareventseci2008conferenciasIngSoftHexacta

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

16

Ingenieriacutea de Software para

Desarrolladores de juegos Huascar Huanca Orozco

Ingenieria de Sistemas San francisco de Asis

Av20 de Octubre esq Belisario Salinas

hhuncausfaedubo

ResumenmdashEn este artiacuteculo veremos una lo que es ldquoIS para

Desarrolladores de juegosrdquo si crees que un juego es facil pues

te equivocas en este articulo mostramos el uso de la IS en la

cracion de juegos que metodos utilizan y la complejidad que

representa para el equipo de desarrollo

1) Palabras clave mdash UMLRequisitosjuegoequipo de trabajo motor del juego

IV INTRODUCCIOacuteN

En la ingenieriacutea de software (IS) el desarrollo

de videojuegos es uacutenico pero similares a los

esfuerzos de software Es la uacutenica que combina el

trabajo de los equipos que cubren muacuteltiples

disciplinas (arte muacutesica actuacioacuten

programacioacuten etc) y que el juego de

acoplamiento que se busca a traveacutes del uso de

prototipos e iteraciones Con ello el desarrollo

del juego se enfrenta a desafiacuteos que pueden ser

abordadas mediante las praacutecticas tradicionales de

SE La industria tiene que adoptar buenas

praacutecticas de SE para sus distintas necesidades

tales como la gestioacuten de activos multimedia y

encontrar el fundamento en el juego La industria

debe asumir los retos por la evolucioacuten de los

meacutetodos de SE para satisfacer sus necesidades

Este trabajo investiga estos desafiacuteos y praacutecticas

de ingenieriacutea destaca para mitigar estos

problemas

V ENTRA EN EL JUEGO

Lo que la IS para desarrolladores de juegos hace

es

Mezcla de ingenieriacutea y el arte El software como

una praacutectica como una preocupacioacuten profesional

Meacutetodos para aprender a disentildear y fabricar un

producto El desarrollo del personaje e ingenieriacutea

de software Estrategias para hacer el mejor uso

de la ingenieriacutea del conocimiento formalizado El

aprendizaje de las habilidades que se pueden

aplicar en cualquier lugar

VI REQUISITOS

Esta parte ofrece una visioacuten general de los

conceptos y herramientas necesarias para la

obtencioacuten de requisitos

IDENTIFICAR LO QUE SE CONSIDERA UN REQUISITO DE SOFTWARE

ESTABLECER LOS CRITERIOS PARA DAR SENTIDO A LOS REQUISITOS Y LA

ESCRITURA DETERMINAR LA MANERA DE REUNIR LOS REQUISITOS O DESCUBRIR

EXPLORAR COacuteMO EMPLEAR CASOS DE USO PARA PERFECCIONAR Y

ANALIZAR LAS NECESIDADES ENCONTRAR TEacuteCNICAS PARA CONFIRMAR QUE LOS REQUISITOS ESTEacuteN

COMPLETOS

VERIFICAR LA EXACTITUD DE LOS REQUISITOS TRACE CAMBIOS EN LOS REQUISITOS

VII PROGRAMADOR DEL MOTOR DEL JUEGO

Fig 1 Juego RPG

] INGENIERIacuteA DE SOFTWARE

17

INGENIERIacuteA DE SISTEMAS

Los programadores de juegos motores crear el

motor de base del juego incluyendo la fiacutesica de

simulacioacuten y disciplinas graacuteficas

A Fiacutesica del motor del programador

Programador de un juego de la fiacutesica se dedica

al desarrollo de las fiacutesica de un juego se emplean

Por lo general un juego de soacutelo simular algunos

aspectos de la fiacutesica del mundo real Por ejemplo

un juego de espacio puede necesitar simulada

gravedad pero no tendriacutea ninguna necesidad

para simular agua viscosidad

Para un juego de rol como World of Warcraft

soacutelo un programador de la fiacutesica puede ser

necesaria Para un juego de combate complejo

como Battlefield 1942 los equipos de

programadores de la fiacutesica pueden ser necesarias

B motor de graacuteficos del programador

A pesar de todos los programadores antildeadir

tanto los contenidos y la experiencia que ofrece

un juego un programador de juego se centra maacutes

en la estrategia de un juego la aplicacioacuten de la

mecaacutenica del juego y la loacutegica y la sensacioacuten

de un juego

Esto no suele ser una disciplina independiente

como lo que este programador es por lo general

se diferencia de un juego a otro y que

inevitablemente se veraacute involucrado con las aacutereas

maacutes especializadas de desarrollo del juego como

los graacuteficos o el sonido

VIII EQUIPO DE TRABAJO

Fig 2 Grupo de trabajo

Un equipo de desarrollo en una organizacioacuten de

ingenieriacutea de software se compone de un grupo

de personas que trabajan en funciones

especializadas para lograr un objetivo comuacuten El

objetivo es la realizacioacuten de un proyecto Un

proyecto se define como un esfuerzo temporal

emprendido para crear un producto uacutenico

servicio o resultado

Aquiacute una pequentildea lista incompleta de algunos de

los componentes de un equipo de trabajo para

Desarrollo de juegos

Analista de requerimientos recopilar y analizar

los requisitos para el software

Arquitecto de software determinar la mejor

arquitectura para el software Seleccionar

Los componentes del proveedor para su inclusioacuten

en el esfuerzo de desarrollo

Disentildeador de software acotar el software para

lograr un rendimiento y otros

Objetivos

Prueba de software probador del software para

garantizar que funcione de acuerdo a la

Requisitos

Programador senior desarrollar bajo nivel de

documentacioacuten de disentildeo sirven como una

tecno-

Ventaja teacutecnica para los demaacutes e implementar el

software de acuerdo

Para el disentildeo

Programador implementar el software de acuerdo

al disentildeo

Trabajos de mantenimiento en el programador de

software creado durante el desarrollo anterior

Los esfuerzos para agregar funcionalidad o

eliminar errores de trabajo con

Atencioacuten al cliente

IX LENGUAJE UNIFICADO DE MODELADO (UML)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

18

Tomando en cuenta que el UML es un estaacutendar

muy flexible Nos da razoacuten que podemos pensar

en el diagrama

como herramientas que permiten realizar

diferentes tipos de trabajo Para revisar un poco

Use un diagrama de casos de uso para reunir y estudiar los requisitos para los propoacutesitos de disentildeo o pruebas

Use un diagrama de actividades para explorar los escenarios de casos de uso

Use un diagrama de clases para identificar las clases y ver coacutemo las

clases se relacionan entre siacute Use un diagrama de objetos para ver coacutemo un objeto se comunica con

otro

Use un diagrama de estado para explorar los atributos de cambio de objeto

Use un diagrama de secuencia para explorar a fondo un caso de uso

mediante el trazado de la orden en el que los objetos enviar mensajes a siacute mismos o entre siacute

Use un diagrama de colaboracioacuten para ver la loacutegica del sistema y la

forma en que los objetos envian mensajes entre siacute Use un diagrama de componentes para explorar y si existen los

subsistemas dentro de su juego

Use un diagrama de implementacioacuten para encontrar la manera de

configurar el paquete de instalacioacuten para su juego

X CONCLUSIONES

El desarrollo de los juegos se han vueltos mas

complejos con el pasar del tiempo y para el

desarrollo de un juego que este a la vanguardia

de la competencia se debe trabajar con la IS es

una forma eficaz de conseguir un juego de

calidad internacional

Referencias [9] Software Engineering for Game Developers by john P Flynt with Omar

Salem [10] httpieeexploreieeeorgxplloginjsptp=amparnumber=5070627ampurl=http

3A2F2Fieeexploreieeeorg2Fiel52F50705742F50705752F05

070627pdf3Farnumber

[11] httpgamedevstackexchangecomquestions19934abstract-game-engine-design

] INGENIERIacuteA DE SOFTWARE

19

INGENIERIacuteA DE SISTEMAS

Estrategias de Prueba del Software Miguel Angel Callisaya Quispe Universidad San Francisco de Asiacutes Av 20 de Octubre La Paz Bolivia

maccc19hotmailcom

Resumen Una estrategia de software es un mecanismo que

proporciona una guiacutea o base pasa ver la forma como se debe

desarrollar la aplicacioacuten en cuanto a meacutetodos esfuerzo

tiempo y recursos que son necesarios para lograr un producto

exitoso

La frecuencia con las que realicen las pruebas es de gran

importancia ya que de estaacute manera se pueda la en encontrar

los errores antes de que se conviertan en errores para la

aplicacioacuten si no se lleva un orden de aplicacioacuten de las pruebas

se va a perder tiempo recurso y sobre todo esfuerzo

Durante las primeras etapas de las pruebas es importante

concentrar toda la atencioacuten en un pequentildeo grupo de

componentes o en un componente que se considere importante

para el desarrollo tanto en los datos como en la parte loacutegica de

la aplicacioacuten

El objetivo final de las estrategias de prueba es documentar la

forma en el que equipo ha hecho el desarrollo y el seguimiento

que se le ha hecho a cada una de las etapas durante las etapas

de desarrollo e implementacioacuten

Palabras clave Calidad Prueba Estrategias Sistema

I INTRODUCCIOacuteN

Durante este articulo es importante mencionar algunos

aspectos que determinan el eacutexito de la aplicacioacuten de las

estrategias de prueba como lo son el enfoque estrateacutegico

para la prueba de software aspectos estrateacutegicos

estrategias de prueba para software convencional

estrategias de prueba para software orientado a objeto

estrategia de prueba para webapps pruebas de validacioacuten y

por uacuteltimo las pruebas del sistema

IIESTRATEGIAS DE PRUEBA DEL SOFTWARE

Verificacioacuten Estamos construyendo el producto

correctamente

Validacioacuten Estamos construyendo el producto correcto

Integracioacuten descendente

La integracioacuten descendente es un planteamiento

incremental a la construccioacuten de la estructura de programas

Se integran los moacutedulos movieacutendose hacia abajo por la

jerarquiacutea de control comenzando por el moacutedulo de control

principal (programa principal) Los moacutedulos subordinados

(de cualquier modo subordinados) al moacutedulo de control

principal se van incorporando en la estructura bien de

forma primero-en-profundidad o bien de forma primero-en-

anchura Fig1

Integracioacuten ascendente

La prueba de la integracioacuten ascendente como su nombre

indica empieza la construccioacuten y la prueba con los

moacutedulos atoacutemicos (es decir moacutedulos de los niveles maacutes

bajos de la estructura del programa) Dado que los moacutedulos

se integran de abajo hacia arriba el proceso requerido de

los moacutedulos subordinados a un nivel dado siempre estaacuten

disponibles y se elimina la necesidad de resguardos Fig2

Fig 1 Integracioacuten descendente

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

20

Fig 3 Integracioacuten Ascendente

Aspectos Estrateacutegicos

Tom Gilb plantea que se deben abordar los

siguientes puntos si se desea implementar con

eacutexito una estrategia de prueba del software

Especificar los requisitos del producto de manera

cuantificable mucho antes de que comiencen las pruebas

-Establecer los objetivos de la prueba de manera expliacutecita (teacuterminos

medibles)

-Comprender queacute usuarios va a tener el software y desarrollar un perfil

-Desarrollar un plan de prueba que haga hincapieacute en la prueba de ciclo

raacutepido

-Construir un software ―robusto disentildeado para probarse a siacute mismo

-Usar revisiones teacutecnicas formales efectivas como filtro antes de la

prueba

Llevar a cabo revisiones teacutecnicas formales para evaluar la

estrategia de prueba y los propios casos de prueba

Desarrollar un enfoque de mejora continua al proceso de

prueba Deberiacutea medirse la estrategia de prueba

Prueba de Unidad

La prueba de unidad centra el proceso de

verificacioacuten en la menor unidad del disentildeo del

software el moacutedulo La prueba de unidad siempre

esta orientada a caja blanca y este paso se suele

llevar a cabo en paralelo para muacuteltiples moacutedulos

Pruebas de Alfa y Beta

C u a n d o s e c o n s t r u y e s o f t w a r e a m e d i d a s e

l l e v a n a c a b o u n a s e r i e d e p r u e b a s d e

a c e p t a c i oacute n p a r a permitir que el cliente valide todos

los requisitos La prueba alfa se lleva a cabo en el

lugar del desarrollo pero por un cliente Se usa el

software en forma normal con el desarrollador como

observador del usuario y registrando los errores y

problemas de uso(entorno controlado)La prueba beta se

lleva a cabo por los usuarios finales en los lugares

de trabajo de los clientes El cliente registra los

problemas y los informa a intervalos regulare

Pruebas del sistema

La prueba del sistema estaacute constituida por una

serie de pruebas diferentes cuyo propoacutesito es

ejercitar profundamente el sistema

Prueba de recuperacioacuten

E s l a p r u e b a d e l s i s t e m a q u e f u e r z a a l

f a l l o d e l s o f t w a r e d e m u c h a s f o r m a s y

v e r i f i c a q u e l a recuperacioacuten se lleva a cabo

apropiadamente Recuperacioacuten automaacutetica o manual

Prueba de seguridad

Intenta verificar que los mecanismos de proteccioacuten

incorporados en el sistema lo protegeraacute de hecho de

accesos impropios

Pruebas de Resistencia

Estaacuten disentildeadas para enfrentar a los programas con

situaciones anormales Una variante de la prueba de

resistencia es una teacutecnica denominada prueba de

sensibilidad intenta descubrir combinaciones de datos

dentro de una clase de entrada valida que pueda producir

inestabilidad o un proceso incorrecto

El arte de la depuracioacuten

La depuracioacuten ocurre como consecuencia de una

prueba efectiva Cuando un caso de prueba

descubre u n e r r o r l a d e p u r a c i oacute n e s e l

p r o c e s o q u e p r o v o c a l a e l i m i n a c i oacute n d e l

e r r o r E l p r o c e s o m e n t a l q u e conecta un siacutentoma

con una causa es la depuracioacuten

El proceso de la depuracioacuten

E l p r o c e s o d e d e p u r a c i oacute n i n t e n t a h a c e r

c o r r e s p o n d e r e l s iacute n t o m a c o n u n a c a u s a

l l e v a n d o a s iacute a l a correccioacuten del error El proceso de

depuracioacuten siempre tiene uno de los dos resultados

siguientes

(1)se encuentra la causa se corrige y se elimina

o

(2)no se encuentra la causa En eacuteste uacuteltimo caso la persona

que realiza la depuracioacuten debe sospechar la causa disentildear

un caso de prueba que ayude a confirmar sus sospechas y el

trabajo vuelve hacia atraacutes a la correccioacuten del error de una

forma iterativa iquestPor queacute es tan difiacutecil la depuracioacuten

Varias caracteriacutesticas de los errores nos dan algunas

] INGENIERIacuteA DE SOFTWARE

21

INGENIERIacuteA DE SISTEMAS

pistas1El siacutentoma y la causa pueden ser

geograacuteficamente remotos entre siacute2El siacutentoma

puede desaparecer (temporalmente) al corregir

otro error

3 E l s iacute n t o m a p u e d e r e a l m e n t e e s t a r

p r o d u c i d o p o r a l g o q u e n o e s u n e r r o r

( i n e x a c t i t u d d e l o s redondeos)

4El siacutentoma puede estar causado por un error

humano que no sea faacutecilmente detectado

5El siacutentoma puede ser el resultado de problemas

de temporizacioacuten en vez de problema s de proceso

6Puede ser difiacutecil reproducir exactamente las

condiciones de entrada

7 E l s iacute n t o m a p u e d e a p a r e c e r e n f o r m a

i n t e r m i t e n t e

8 E l s iacute n t o m a p u e d e s e r d e b i d o a c a u s a s q u e

s e d i s t r i b u y e n p o r u n a s e r i e d e t a r e a s

e j e c u t aacute n d o s e e n diferentes procesadores

IIICONCLUCIONES

Las estrategias de prueba del software es un mecanismo

que proporciona una guiacutea o base pasa ver la forma como se

debe desarrollar la aplicacioacuten en cuanto a meacutetodos para

logra un producto exitoso

IVREFERENCIAS

httpbuenastareascomensayosEstategias-de-prueba-de-

software3752643html

httpwwwestrategiascompruebaagil

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

22

Ingenieriacutea Inversa Juan Carlos Zenteno Sanga

1

Departamento de Ingenieriacutea de Sistemas Universidad San Francisco de Asiacutes

Direccioacuten Incluyendo el Paiacutes 1juanka_58hotmailcom

Resumenmdash La ingenieriacutea de Software es parte del modelo de

proceso de reingenieriacutea de software es el proceso de analizar

un programa con la finalidad de crear una representacioacuten del

programa en un grado mayor de abstraccioacuten del coacutedigo

fuente las herramientas de ingenieriacutea inversa obtienen

informacioacuten del disentildeo de datos arquitectoacutenico y de

procedimientos a partir de un programa existente

En el siguiente artiacuteculo se veraacuten los conceptos baacutesicos y se

denotara un ejemplo praacutectico para una mayor comprensioacuten

del tema

Palabras clave mdash Ingenieriacutea de Software Reingenieriacutea

Linux Ingenieriacutea Inversa

XI INTRODUCCIOacuteN

Inmersa en el aacuterea de conocimiento de la

ingenieriacutea de software se encuentra la ingenieriacutea

inversa como punto de apoyo para los procesos

de anaacutelisis y disentildeo propuestos en diferentes

meacutetodos de desarrollo

La ingenieriacutea inversa permite subsanar esta

deficiencia al documentar los productos de

software a partir del coacutedigo ejecutable con el fin

de obtener los artefactos de anaacutelisis y disentildeo

La ingenieriacutea inversa es ademaacutes una

herramienta uacutetil que ayuda en el proceso de

aseguramiento de la calidad del software

mediante la comparacioacuten de diagramas de fases

de anaacutelisis y desarrollo se apoya comuacutenmente en

la generacioacuten del diagrama de clases debido a la

importancia de este diagrama en la fase de disentildeo

y su facilidad de generacioacuten Existen tambieacuten

otros diagramas de intereacutes como el de

comunicacioacuten y el de secuencias que modelan

las caracteriacutesticas dinaacutemicas de un producto de

software

Hoy en diacutea los productos maacutes comuacutenmente

sometidos a la Ingenieriacutea Inversa son los

productos de Hardware y Software pero

cualquier producto puede ser sometido a este

proceso

Aplicar ingenieriacutea Inversa a algo supone

profundizar el estudio de su funcionamiento

En el caso concreto del Software se conoce

por ingenieriacutea de software a la actividad que se

ocupa de describir coacutemo funciona un programa

de cuyo coacutedigo no se dispone hasta el punto de

generar coacutedigo propio que cumpla con las

mismas funciones Un ejemplo claacutesico del uso de

esta teacutecnica es el software de pago donde las

empresas utilizan esta teacutecnica para proteger sus

productos contra posibles acceso no autorizados

o examinar el producto final para encontrar

posibles bugs inesperados en la ejecucioacuten de

dicho sistema

Existe una gran variedad de software

desensamblador y depurador para aplicar esta

teacutecnica

En resumen la idea general al aplicar

ingenieriacutea inversa es

Conocer a fondo la aplicacioacuten y generar un

mejor coacutedigo

Migrar la aplicacioacuten a un nuevo sistema operativo

Hacer o completar la documentacioacuten

] INGENIERIacuteA DE SOFTWARE

23

INGENIERIacuteA DE SISTEMAS

Verificar que el coacutedigo en estudio cumple las

especificaciones del disentildeo estaacutendar

La informacioacuten extraiacuteda de la lectura del

coacutedigo fuente son las especificaciones de disentildeo

modelos de flujo de control diagramas de disentildeo

documentos de especificacioacuten de disentildeo

pudiendo tomarse estas especificaciones como

nuevo punto de partida para aplicar ingenieriacutea

inversa y obtener informacioacuten a mayor nivel de

abstraccioacuten

Dado que es una labor estrateacutegica es

conveniente conocer cuando conviene realizar la

tarea de Ingenieriacutea inversa para una aplicacioacuten y

cuaacutendo es maacutes rentable sustituirla e implementar

una nueva Las aplicaciones para el primer paso

son aquellas en la que se produce las siguientes

situaciones

bull Fallos frecuentes que son difiacuteciles de

localizar

bull Son poco eficientes pero realizan la funcioacuten

esperada

bull Dificultades en la integracioacuten con otros

sistemas

bull Calidad pobre del software final

bull Resistencia a introducir cambios

bull Pocas personas capacitadas para realizar

modificaciones

bull Dificultades para realizar pruebas

bull El mantenimiento consume muchos recursos

XII LAS BASES DE LA INGENIERIA INVERSA

Los ejemplos maacutes trascendentes sobre los

inicios de la ingenieriacutea inversa son claramente las

investigaciones realizadas sobre antiguos

artefactos creados por humanos ancestrales con

el fin de descubrir la manera en que funcionaban

Uno de los maacutes conocidos es el llamado

mecanismo de Antikythera (Fig 1) el cual se

piensa que fue disentildeado para fines astronoacutemicos

por los griegos siendo uno de los primeros

artefactos que funcionaban con ruedas de

engranes

Figura 1 Antikythera (mecanismo presuntamente creado para fines astronoacutemicos)

Podemos entonces implantar un paralelo en aquella

mitoloacutegica buacutesqueda de descubrimiento sobre el

funcionamiento de esos artefactos y la ingenieriacutea inversa

actual usada en ingenieriacutea de software estableciendo un

importante factor en comuacuten la falta de documentacioacuten En

este ambiente es muy comuacuten contar con una especie de caja

negra en donde sabemos lo que ingresamos y el resultado

que obtenemos pero desconocemos el procedimiento con la

precisioacuten que necesitariacuteamos para replicarlo

Esta falta de documentacioacuten es el impulso

principal de toda la ingenieriacutea inversa las

finalidades de la misma pueden variar pero este

factor inicial nunca lo haraacute

XIII INGENIERIA INVERSA COMO UN PROCESO DE

REINGENIERIA

La ingenieriacutea inversa tiene la misioacuten de

desentrantildear los misterios y secretos de los

sistemas en uso

Baacutesicamente recupera el disentildeo de la

aplicacioacuten a partir del coacutedigo esto se realiza

mediante herramientas que extraen la

informacioacuten de los datos procedimientos y

arquitecturas del sistema

Es aplicable a sistemas con las siguientes

caracteriacutesticas

Documentacioacuten inexistente o totalmente obsoleta

Programacioacuten en bloque de coacutedigos muy grandes

yo sin estructural

La aplicacioacuten cubre gran parte de los requisitos

y el rendimiento esperado

A Nivel de abstraccioacuten

El nivel de Abstraccioacuten de un proceso de

Ingenieriacutea Inversa y las herramientas que se

utilizan para realizarlo aluden la sofisticacioacuten de

la informacioacuten de disentildeo que se puede extraer del

coacutedigo fuente Este proceso deberiacutea ser capaz de

derivar

Sus representaciones de disentildeo de procedimiento

(con un bajo nivel de abstraccioacuten)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

24

La informacioacuten de las estructuras de datos de

procedimiento (con un nivel de abstraccioacuten

ligeramente maacutes elevado)

Modelos de flujo de datos de control (un nivel de

abstraccioacuten relativamente alto)

Modelos de entidades y de relaciones (un elevado

nivel de abstraccioacuten)

B Completitud

En la mayoriacutea de los casos la completitud

decrece a medida que aumenta el grado de

abstraccioacuten

La completitud mejora en proporcioacuten directa a

la cantidad de anaacutelisis efectuado por la persona

que estaacute efectuando la ingenieriacutea inversa

C Interactividad

La interactividad alude al grado con el cual el

ser humano se integra con las herramientas

automatizadas para crear un proceso de

ingenieriacutea inversa efectivo

D Proceso

El Proceso de ingenieriacutea inversa (Fig 2) es el encargado

de reestructurar el coacutedigo fuente para que solamente

contenga instrucciones de programacioacuten estructurada Lo

que hace que el coacutedigo sea maacutes faacutecil de leer y proporciona

la base para las subsiguientes actividades de ingenieriacutea

inversa

Figura 2 Diagrama de Proceso de la Ingenieriacutea Inversa

E Reestructuracioacuten

La reestructuracioacuten del software modifica el

coacutedigo fuente y los datos en un intento adecuado

a futuros cambios esta no modifica la

arquitectura global del programa Tiene a

centrarse en los detalles de disentildeo de moacutedulos

individuales y en estructuras de datos locales

definidas dentro de los moacutedulos

Estos son algunos de los beneficios que se

pueden lograr cuando se reestructura el software

Programas de mayor calidad

Reduce el esfuerzo requerido para llevar a cabo

las actividades de mantenimiento

Hace el software maacutes sencillo para comprobar y

depurar

F Re documentacioacuten

Es el proceso mediante el cual se produce

documentacioacuten retroactivamente desde un

sistema existente

Es considerada una forma de ingenieriacutea inversa

porque la documentacioacuten reconstruida es usada

para ayudar al conocimiento del programa

XIV UTILIZANDO EL METODO CIENTIFICO EN LA

INGENIERIA INVERSA

Ante cualquier dificultad tecnoloacutegica el

meacutetodo cientiacutefico siempre es y seraacute nuestra maacutes

preciada arma Partamos imaginando un pequentildeo

dilema relacionado con el tema de ingenieriacutea de

software especiacuteficamente con un sencillo

programa (Fig 3)

Figura 3 Pantalla de aplicacioacuten que nos serviraacute de ejemplo

Esta sencilla aplicacioacuten mostraraacute un mensaje con cierto

resultado y aun siendo un problema demasiado sencillo

para considerarlo como un reto el objetivo es soacutelo describir

] INGENIERIacuteA DE SOFTWARE

25

INGENIERIacuteA DE SISTEMAS

las acciones usuales del proceso las cuales son aplicables

en escalas muy superiores

El resultado mostrado por el programa dentro del mensaje

emergente se basa en nuestra entrada pero nosotros

desconocemos en lo absoluto los procedimientos utilizados

sobre esta entrada para producir aquella respuesta

A La Observacioacuten es Trascendental

Primero es importante observar el problema su

comportamiento Es substancial tratar de lograr

un pensamiento inductivo en donde logremos

identificar el principio particular del problema

para poder llegar a extrapolarlo a una solucioacuten

general

El punto de quiebre se produce en este instante

Ya al haber observado la aplicacioacuten podriacuteamos

decidir procesar los datos que nos entrega y

lograr crear un coacutedigo equivalente o investigar el

funcionamiento interno

B Dentro de la aplicacioacuten

Luego de la formulacioacuten de una hipoacutetesis sobre

su funcionamiento necesitamos algunas

herramientas para comenzar con la investigacioacuten

En el caso de esta aplicacioacuten con un poco de

conocimientos del lenguaje ensamblador de

programacioacuten tradicional y un descompilador es

suficiente

Es importante emprender de buena forma

nuestro sondeo ser ordenados y metoacutedicos en la

tarea En este momento las capacidades analiacuteticas

y loacutegicas son muy importantes para alivianar

nuestra faena

Lo fundamental es conocer muy bien el

entorno en que nos desenvolveremos En este es

punto indispensable saber que una aplicacioacuten

para Windows necesita invocar internamente al

punto de entrada MessageBox o MessageBoxEx

de la libreriacutea de sistema user32dll para poder

desplegar un mensaje (Fig 4)

Figura 4 Resultado de la Aplicacioacuten

Ya con esa pista es sencillo encontrar el

fragmento de coacutedigo relacionado con las

operaciones relacionadas a nuestro nuacutemero de

entrada que tendriacutea una forma similar a la

mostrada a continuacioacuten en nuestro

descompilador (Fig 5)

Figura 5 Vista del Programa en Ensamblador

Cualquier programador intuiriacutea faacutecilmente lo

que hacen las liacuteneas superiores de esta aplicacioacuten

en especial sprintf es parte de la libreriacutea estaacutendar

de C++ Claramente vemos tambieacuten el tiacutetulo de la

ventana en el coacutedigo estos valores son

interpretados de forma inteligente por este

descompilador en especial y en particular nos

asiste de sobremanera a comprender el coacutedigo

Lo siguiente es sencillamente explorar paso a

paso las acciones superiores de caacutelculo del

resultado En esta instancia seraacute ideal realizar

numerosas pruebas para estar completamente

seguros de que logramos develar el secreto tras la

funcionalidad objetivo (Fig 6)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

26

Figura 6 Inicio del coacutedigo al que aplicaremos ingenieriacutea inversa

Hay que detenerse algunos segundos a

individualizar algunos procedimientos del

anaacutelisis que a simple vista pueden parecer

inconcebibles con el fin de poder generar una

tesis concluyente

Cabe destacar que se omitiraacuten pasos

intermedios de asignaciones de memoria y otros

formalismos propios de ensamblador para

favorecer el entendimiento del lector

Inicialmente tenemos el valor de entrada

supuestamente ya leiacutedo desde el cuadro de

diaacutelogo del programa ahora nos enfocamos en la

primera accioacuten importante Asumiremos el valor

de entrada como una incoacutegnita

En el siguiente trozo de coacutedigo la liacutenea

destacada antildeadioacute siete a nuestra incoacutegnita (Fig 7)

Figura 7 Coacutedigo donde se denota la adicioacuten de 7 a nuestra ecuacioacuten

A continuacioacuten se multiplica ese valor

resultante de la suma por el mismo (Fig 8)

Figura 8 Coacutedigo donde se denota la multiplicacioacuten del valor por la suma

Nuevamente multiplicamos el resultado por el

anterior proporcionado tras la suma En esta

segunda vez ya podemos expresar la operacioacuten

simplemente elevando al cubo la suma anterior

(Fig 9)

Figura 9 Coacutedigo que denota una nueva multiplicacioacuten del resultante

Ahora le restamos diez al resultado

El procedimiento que viene a continuacioacuten

propone un mayor desafiacuteo intelectual Un nuacutemero

constante en este caso el cargado al registro

EAX (Fig 10)

Figura 10 ubicacioacuten del nuacutemero constante EAX

Generalmente la divisioacuten es algo maacutes costosa

en tiempo de procesador que otras operaciones

por lo que ciertos compiladores incluyen tablas

de constantes las cuales son llamadas ―nuacutemeros

maacutegicos para la divisioacuten entera

d Con signo Sin signo

m (hex) s m (hex) a s

-5 99999999 1

-3 55555555 1

-2k 7FFFFFFF k-

1

1 mdash mdash 0 1 0

2k 80000001 k-

1 232-k 0 0

3 55555556 0 AAAAAAAB 0 1

5 66666667 1 CCCCCCCD 0 2

6 2AAAAAAB 0 AAAAAAAB 0 2

7 92492493 2 24924925 1 3

9 38E38E39 1 38E38E39 0 1

10 66666667 2 CCCCCCCD 0 3

11 2E8BA2E9 1 BA2E8BA3 0 3

] INGENIERIacuteA DE SOFTWARE

27

INGENIERIacuteA DE SISTEMAS

12 2AAAAAAB 1 AAAAAAAB 0 3

25 51EB851F 3 51EB851F 0 3

125 10624DD3 3 10624DD3 0 3

Tabla 1 Algunos nuacutemeros maacutegicos (32 bits)

Ahora bien conociendo la tabla 1 sabiendo

que el nuacutemero cargado en esta ocasioacuten

corresponde al once lo que hace el coacutedigo es

multiplicar el resultado de la salida temporal por

aquel nuacutemero (Fig 11)

Figura 11 Multiplicacioacuten del resultante por el numero 11

Naturalmente la multiplicacioacuten por un nuacutemero

tan grande produce una especie de

desbordamiento en el registro contenedor del

resultado al exceder el tamantildeo de palabra del

procesador (en este caso de 32 bits) Estos bits

sobrantes se almacenan naturalmente en el

registro EDX registro que es contiguo a ECX

dentro de la memoria de los registros del

procesador

Ahora desplazamos un bit del registro EDX

(equivalente a una divisioacuten entera por dos) para

obtener la solucioacuten de la divisioacuten por once

generando una sencilla ecuacioacuten

Figura 12 Desplazamiento del bit de registro EDX

El uacuteltimo paso luego de documentar estos

resultados seraacute crear una aplicacioacuten que recree

esta foacutermula soacutelo en caso de tener intenciones de

re-codificacioacuten del desarrollo Consumando este

punto es sencillo confeccionar un diagrama con

todo el proceso anteriormente visto

XV CONCLUSIONES

Queda claro que el tema de la ingenieriacutea

inversa es uno de los toacutepicos maacutes interesantes a

los que podriacutea afrontarse un profesional de la

tecnologiacutea y en general disfrutar el largo proceso

involucrado gracias al desafiacuteo poco predecible

que presenta

En general podemos darnos cuenta de que no

existen muchas metodologiacuteas y teoriacuteas estrictas

sobre coacutemo aplicar las teacutecnicas de ingenieriacutea

inversa Afortunadamente un ingeniero estaacute

preparado para afrentar desafiacuteos de este tipo

Adicionalmente podemos deducir tambieacuten el

aspecto bidireccional de la ingenieriacutea inversa

pues como ya lo comprobamos no solo es un

desafiacuteo aplicarla sino que tambieacuten lo es tener que

dificultar el proceso o incluso tratar de impedirlo

si la situacioacuten lo requiere

REFERENCIAS

[12] Roger Pressman Ingenieriacutea de Software ―Un Enfoque Moderno 6th ed

MC Graw Hill [13] httpeswikipediaorgwikiIngenieria_inversa

[14] httpwwwinfosecwritersconntext_resourcespdfsoftware_security_and_r

everse_engineeringpdf [15] httperwinriedclmodo=visorampelemento=239

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

28

METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO Univ Alejandro Meacutendez Escobar

Universidad San Francisco de Asiacutes

Ingenieriacutea de Sistemas

Ingenieriacutea de Software I

La Paz - Bolivia

amendezusfaedubo

Resumenmdash Al adquirir el software educativo dentro del campo de

desarrollo de software una gran importancia y siendo este

inspiracioacuten de propuestas de innumerables metodologiacuteas que buscan

la elaboracioacuten de un software de calidad

Tomaremos la metodologiacutea Aacutencora enfocada a la fase de

requerimientos y que ofrece elementos que indican las actividades

que deben realizarse los artefactos que se producen y la forma de

obtenerlos

Usando al desarrollo de software educativo como ejemplo de una

mejor comprensioacuten de dicha metodologiacutea analizando la aplicacioacuten

del Aacutencora en un trabajo propuesto para el Instituto Tecnoloacutegico de

Orizaba Meacutexico

Palabras clave mdash Aacutencora Metodologiacutea Desarrollo de Software

Educativo Requerimientos Calidad

XVI INTRODUCCIOacuteN

Hoy en diacutea la tecnologiacutea esta dentro de las

actividades que realizamos es asiacute que la educacioacuten no

queda exenta de ella por o cual es necesario adaptarse

al movimiento tecnoloacutegico que nos trae grandes

ventajas en la transmisioacuten de conocimientos de una

manera sencilla y dinaacutemica

De esta manera han surgido infinidad de

metodologiacuteas de desarrollo de software educativo el

cual tiene como objetivo ser el apoyo para docentes

alumnos y toda persona que este dentro del proceso de

aprendizaje

Tomando en cuenta este ramillete infinito de

metodologiacuteas surge en el ejemplo propuesto la

adaptacioacuten del Aacutencora en el desarrollo de software

educativo teniendo como objetivo principal la

comprensioacuten de los elementos y conceptos de la

metodologiacutea Aacutencora

Aacutencora es una metodologiacutea enfocada a la

adquisicioacuten de requerimientos para software que

ofrece guiacuteas y elementos de apoyo para la obtencioacuten de

estos requerimientos Al mismo tiempo permite pasar a

la fase de disentildeo de manera sencilla Aprovechando las

ventajas que presenta Aacutencora se le hicieron algunas

adaptaciones con el fin de cubrir algunas

caracteriacutesticas del disentildeo instruccional y enriquecer

Aacutencora habilitaacutendola para la adquisicioacuten de

requerimientos de software educativo

XVII APLICACIOacuteN DE LA METODOLOGIacuteA AacuteNCORA

Como es el objetivo principal la comprensioacuten de la

aplicacioacuten de la metodologiacutea Aacutencora dentro del

desarrollo de software educativo de calidad solo

describiremos los meacutetodos del meacutetodo y los resultados

obtenidos

Claro esta que para ahondar maacutes en tema del

software educativo en si el lector puede recurrir a los

siguientes autores Metodologiacutea de desarrollo de

sistemas multimedia (Vaughan 2006) Propuesta de

metodologiacutea para el disentildeo desarrollo y evaluacioacuten

de software educativo (Reyes 2009) Ingenieriacutea de

software educativo con modelaje orientado por objetos

(Goacutemez 1998) asi como tambieacuten los siguientes

modelos ADDIE (Anaacutelisis Disentildeo Desarrollo

Implantacioacuten y Evaluacioacuten) de (McGriff 2000) y el

disentildeo instruccional aplicado al desarrollo de software

educativo EISE (Especificacioacuten Instruccional de

Software Educativo) de (Hernaacutendez 2005)

] INGENIERIacuteA DE SOFTWARE

29

INGENIERIacuteA DE SISTEMAS

Quienes tienen el mismo objetivo de crear software

educativo de calidad podemos sintetizar de ellos los

siguientes puntos

Anaacutelisis del puacuteblico al que se dirigiraacute el software

Problema oacute necesidad educativa a atender

Anaacutelisis de contenido (Tema a tratar actividades

para alcanzar el objetivo de ensentildeanza y forma de

evaluarlo)

Actividades oacute forma actual de llevar a cabo la

ensentildeanza del tema en cuestioacuten

Elaboracioacuten de guiones metaacuteforas escenarios

Creacioacuten de prototipo oacute Storyboard

Disentildeo de interfaz

Mapas de navegacioacuten

Modelos de datos

Elaboracioacuten de diagramas de contexto diagramas

de flujo o diagramas de casos de uso

Ahora enfocaacutendonos en el aacutencora se establece la

propuesta de seleccionar las actividades de Aacutencora que

permitan obtener los requerimientos de un software

educativo

La Tabla 1 presenta las actividades y artefactos

producidos en las fases de Aacutencora para la elaboracioacuten

de software educativo

TABLA 1 ACTIVIDADES Y ARTEFACTOS DE LA METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO

Metodologiacutea Aacutencora

Fases Actividades y artefactos

Anaacutelisis de

Requerimientos

A traveacutes de entrevistas con los clientes

(maestros y pedagogos) y de la lectura

del respectivo material proporcionado

por ellos se definiraacute la asignatura a la

que se enfocaraacute el software el tema a

tratar y la forma en que se abordaraacute y

evaluaraacute Tambieacuten se estableceraacute el

objetivo general de aprendizaje la

metaacutefora que se emplearaacute y se

determinaraacute el puacuteblico al que se

dirigiraacute el software

Artefactos

Documento que define la asignatura

contenido objetivo general de

aprendizaje metaacutefora y puacuteblico al que

se dirigiraacute el software Guion de la

situacioacuten actual

Recoleccioacuten y

clasificacioacuten de

requerimientos

El guion de la propuesta

computacional reflejaraacute la metaacutefora

que se sigue el ambiente de cada

escena

La bitaacutecora de desarrollo permitiraacute ver

coacutemo el sistema responderaacute a las

diversas acciones que realice el

usuario

En lugar del prototipo raacutepido se

elaboraraacute un Storyboard para presentar

graacuteficamente la estructura de sistema

propuesto

Artefactos

Guion de propuesta computacional

bitaacutecora de desarrollo Storyboard

Resolucioacuten de

conflictos

jerarquizacioacuten y

validacioacuten de

requerimientos

Modificaciones al guion de la

propuesta computacional de acuerdo a

los cambios propuestos por los

maestros y pedagogos

Artefactos

Guion de propuesta computacional e

Storyboard con adecuaciones sentildealas

Cierre

Trasladar los guiones a casos de uso

Artefactos

Casos de uso

Se agregaron algunas caracteriacutesticas a ciertos

artefactos de Aacutencora para poder cubrir los

requerimientos de software educativo Uno de estos

elementos es el guion de la propuesta computacional

al que se propone agregar lo siguiente

Conocimientos previos del usuario Se refiere a los

conocimientos baacutesicos o miacutenimos que debe tener el

alumno para poder interactuar con el moacutedulo

Objetivo de aprendizaje Es el aprendizaje que

debe obtener el alumno despueacutes de haber interactuado

con el moacutedulo

La Figura 1 se presenta la estructura sugerida para el

guion de la propuesta computacional En la bitaacutecora de

desarrollo se propone antildeadir una fila al final de cada

pista donde se describan las situaciones favorables y

no favorables para el cumplimiento del objetivo de

aprendizaje para esa pista en particular Por otra parte

en lugar del prototipo se sugiere utilizar el Storyboard

ya que permite mostrar de manera maacutes completa la

estructura del guion de la propuesta computacional La

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

30

Figura 2 muestra el formato para la elaboracioacuten del

Storyboard

Figura 1 Estructura del guion para la propuesta computacional

Figura 2 Formato para la elaboracioacuten del Storyboard

XVIII RESULTADOS

Aplicando Aacutencora en un ejemplo para la parte de

requerimientos se obtuvo la siguiente informacioacuten

Asignatura Matemaacuteticas

Contenido Estaacute articulado con base en seis ejes

con sus respectivos temas y subtemas que variacutean de

acuerdo al grado escolar Considerando lo anterior se

tiene lo siguiente

a) Grado escolar De segundo hasta quinto grado de

primaria

b) Temas Nuacutemeros naturales capacidad peso

tiempo y ubicacioacuten espacial planteamiento y

resolucioacuten de problemas sencillos en los que se

requiera recolectar y registrar informacioacuten

perioacutedicamente representacioacuten de informacioacuten en

tablas de frecuencia y graacuteficas de barras registros de

los resultados de experimentos aleatorios

representacioacuten de los resultados de un experimento

aleatorio en tablas y graacuteficas

c) Subtemas Planteamiento y resolucioacuten de

problemas que impliquen dos o maacutes operaciones con

nuacutemeros naturales

d) Ejes Introduccioacuten del kiloacutemetro como la unidad

que permite medir grandes distancias y recorridos

largos capacidad peso y tiempo uso del reloj y el

calendario los nuacutemeros sus relaciones y sus

operaciones medicioacuten la prediccioacuten y el azar

tratamiento de la informacioacuten

Objetivo general de aprendizaje Ejercitar las

operaciones aritmeacuteticas baacutesicas interpretar la

informacioacuten y los resultados de la informacioacuten dada

aplicada en situaciones de la vida cotidiana

Con las actividades hasta ahora realizadas se ha

observado que los artefactos de Aacutencora son flexibles y

pueden por lo tanto adaptarse de acuerdo a las

necesidades que implican la adquisicioacuten de

requerimientos de un software educativo Tambieacuten se

aprecian las ventajas de algunos artefactos como la

bitaacutecora de desarrollo que permite determinar las

respuestas del sistema ante las acciones del usuario y

estimar tambieacuten el tiempo que llevaraacute implementar

cada quinteta

La estimacioacuten del tiempo ayuda a tener un valor

aproximado del tiempo de desarrollo de software

Agregar el objetivo de aprendizaje a la bitaacutecora de

desarrollo puede parecer repetitivo despueacutes de

incluirlo en el Storyboard pero esto nos permite ver las

situaciones u obstaacuteculos que pueden impedir que el

objetivo de aprendizaje se alcance y por tanto tenerlos

presente durante el disentildeo A pesar de las ventajas de

la bitaacutecora de desarrollo un inconveniente hasta ahora

encontrado es lo tedioso al manejar muchas quintetas

] INGENIERIacuteA DE SOFTWARE

31

INGENIERIacuteA DE SISTEMAS

cuando por la naturaleza del guion se tienen varios

avisos y mensajes para el usuario Por otra parte los

guiones han ayudado a realizar de manera sencilla el

modelo de casos de uso

En lo referente a la presentacioacuten con los clientes el

guion es un artefacto que pude dar un panorama

general del software que se va a elaborar y queda

reforzada a traveacutes de los Storyboard Cuando se

requieren cambios solicitados por los clientes las

modificaciones a estos artefactos no han sido muy

complicadas dado que por su estructura es faacutecil de

ubicar las secciones y respectivos elementos

XIX CONCLUSIONES

Con los resultados hasta ahora obtenidos se puede

decir que la propuesta permite a los desarrolladores

con poca experiencia en desarrollo de software

educativo obtener los requerimientos de una manera

sencilla

Permite realizar un mejor relevamiento de informacioacuten

de los requerimientos del cliente enfocaacutendonos mas en

este

Es tambieacuten importante mencionar los avances que

tiene y seguiraacute teniendo el software educativo aplicado

no solo a nivel escolar sino tambieacuten al superior

Habiendo revisado el concepto y la aplicacioacuten de la

metodologiacutea Aacutencora en el desarrollo de software

educativo se llegoacute a una comprensioacuten mas extensa de

dicho meacutetodo el cual es de gran importancia dentro de

la ingenieriacutea de Software ya que nos

REFERENCIAS

httpwwwuvmxmisproductividaddocumentsCarmenChay_CIIM2010pdf

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 12: Revista de Ingenieria de Software

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

12

sprints subsecuentes

Fig 3 La Comunicacioacuten

Sprint 0 En sistemas complejos una persona difiacutecilmente

puede cubrir con amplitud teacutecnica las decisiones

arquitectoacutenicas y dar credibilidad a la arquitectura de

software Esto quiere decir que la participacioacuten del equipo

es de vital importancia para la creacioacuten y el mantenimiento

de la arquitectura Un equipo de arquitectos de software

que se aiacutesle del equipo de Scrum puede producir una

arquitectura que corra el riesgo de ser rechazada Es por

esto que recomendamos que el arquitecto o los arquitectos

se software sean miembros del equipo de Scrum Una de

las actividades que se debe realizar en equipo es la

evaluacioacuten de la arquitectura Especiacuteficamente en el

meacutetodo ATAM se requiere la participacioacuten mutua de tres

equipos que trabajan en conjunto con los arquitectos de

software el de evaluacioacuten el de tomadores de decisiones

del proyecto y el de los involucrados en la arquitectura

Sprints subsecuentes El arquitecto de software asegura que

el equipo de Scrum entienda el enfoque y los retos

arquitectoacutenicos maacutes importantes en casa sprint Los

equipos de Scrum realizan construcciones cortas guiados

por las estrategias de la arquitectura A continuacioacuten se

nombran algunas de las responsabilidades del arquitecto de

software desde el Sprint 1 en adelante

El duentildeo del producto y el maestro del Scrum trabajan con

el arquitecto para priorizar los requisitos a implementar en

cada iteracioacuten

El arquitecto comunica las decisiones y facilita las

conversaciones arquitectoacutenicas de distintos puntos de vista

en cada sprint

El arquitecto asegura que haya conformidad entre las

entregas en cada sprint y la arquitectura

El arquitecto responde preguntas y da orientacioacuten

arquitectoacutenica cuando sea necesario

Junto con el maestro de Scrum coordina a los miembros

del equipo para adaptarse a la arquitectura previa

El arquitecto junto con el duentildeo del producto y los

miembros del equipo preparan el Product Backlog

V Conclusioacuten

En el presente artiacuteculo ofrecimos una propuesta para incluir

la arquitectura de software en Scrum En el Sprint 0 se

realizan las actividades concernientes al anaacutelisis y disentildeo

de la arquitectura de software y el sistema esqueleto En

los siguientes sprints el arquitecto de software se asegura

de que la implementacioacuten cumpla con la arquitectura

REFERENCIAS

[3] httpwwwsafecreativeorgwork

[4] Hirotaka Takeuchi es decano de la Graduate School of International

Corporate Strategy en la Universidad Hitotsubashi en Tokio y fue profesor visitante en la Escuela de Negocios Harvard entre 1989 y 1990

[5] Ikujiro NonakaNo soy un guruacute porque me falta carisma

] INGENIERIacuteA DE SOFTWARE

13

INGENIERIacuteA DE SISTEMAS

El futuro de la ingenieriacutea de software Luis E Aguirre

Ingenieriacutea de Sistemas

Universidad San Francisco de Asiacutes

20 de Octubre esq Belisario Salinas

La Paz - Bolivia leaguirreusfaedubo

Resumen El disentildeo de programas a partir de informacioacuten binaria

significoacute un paso sustantivo para la industria desarrolladora de

software Desde ese hallazgo ocurrido en la deacutecada de los

cincuenta hasta hoy el crecimiento de metodologiacuteas para su

desarrollo ha subido notablemente en complejidad Sin embargo

los ciacuterculos viciosos que acusa hoy la confeccioacuten de programas

informaacuteticos impiden conceptualizar el objeto a un nivel

superior de abstraccioacuten tal y como lo exige el avance tecnoloacutegico

y los procesos de negocios

Palabras clave mdash futuro software ingenieriacutea programador y

desarrollo

I Introduccioacuten

La calidad de los sistemas informaacuteticos satisfaccioacuten de sus

usuarios y clientes son temas ampliamente conocidos

recurrentes y de constante preocupacioacuten por parte de los

practicantes de la Ingenieriacutea de software

Esta joven y dinaacutemica ingenieriacutea siempre estaacute en busca de

mejoras en el desarrollo de sistemas aumento de

productividad del ingeniero de software mayor control del

proceso de desarrollo establecimiento de nuevos meacutetodos de

desarrollo

Fig 1 Primeros programas computacionales en formato de tarjeta perforada

Estos elementos combinados y aplicados de buena forma

logran un buen proceso de desarrollo y en definitiva un buen

producto

Identificar los pasos que ha recorrido esta ingenieriacutea analizar

su contexto actual y finalmente proyectar hacia doacutende se

dirige es el pilar de este artiacuteculo

II iquestSe aplica actualmente la ingenieriacutea del software

La investigacioacuten y el desarrollo de teacutecnicas y meacuteto

dos de ingenieriacutea del software son constantes y suelen suponer

interesantes avances en la resolucioacuten de problemas de

desarrollo de software Sin embargo es habitual que en la

praacutectica diaria profesional no se incluya praacutecticamente

ninguna de las recomendaciones maacutes elementales de la

ingenieriacutea del software En efecto es habitual que el

desarrollo de software se parezca maacutes al descontrol del cuento

de laquosi los programadores fueran albantildeilesraquo ([Novatica

1996]) que a una idiacutelica y bien organizada factoriacutea de

software (concepto de gran vigencia a finales de los ochenta

[Nunamaker et al 1988])

De hecho las evaluaciones de los procesos productivos de

software realizadas a raiacutez de los modelo de procesos de

software (por ejemplo con CMM [Paulk et al 1993])

confirman que el desarrollo de software suele estar

baacutesicamente en estado caoacutetico

Y no soacutelo en como uno podriacutea pensar pequentildeas

organizaciones de un paiacutes mediterraacuteneo como el nuestro sino

en tambieacuten en las empresas adjudicatarias de interesantes

contratos de defensa de paiacuteses laquoavanzadosraquo como EEUU o

Japoacuten Si bien estos modelos de evaluacioacuten auacuten acumulan

distintas acusaciones de rigidez o falta de contraste empiacuterico

los resultados obtenidos en sus evaluaciones resultan

consistentes con la sensacioacuten de constante laquoapagafuegosraquo que

suelen sufrir los profesionales del software Tambieacuten suelen

revelar la praacutectica despreocupacioacuten de los responsables de las

organizaciones de software por la mejora de la calidad de sus

procesos de trabajo o de sus productos bien sea por contar con

una situacioacuten interna de empresa poco propicia porque el

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

14

ambiente del mercado no fomenta la preocupacioacuten por estos

temas o bien por su poco intereacutes real en la buacutesqueda de la

calidad

III La actualidad

La gran mayoriacutea de los sistemas de software creados hoy en

diacutea son los llamados sistemas corporativos es decir son

orientados a formar una parte importante de los negocios de

las grandes empresas

Continuando en nuestro contexto se identifica un nuevo

enfoque del problema de desarrollo el apoyo en la

sincronizacioacuten de los procesos de negocio estructuras

complejas de informacioacuten manejada por el negocio todo esto

entrelazado por restricciones dadas por las reglas del negocio

La tecnologiacutea actual por otro lado ha alejado maacutes todaviacutea los

ingenieros de las maacutequinas sistemas operativos incluso de

las tareas de programacioacuten

El enfoque de la mayoriacutea de los equipos de desarrollo e

ingenieros participes en proyectos sigue siendo con un bajo

nivel de abstraccioacuten cerca de la codificacioacuten Se tiende a

pensar en la base de datos a utilizar establecer la navegacioacuten

de las paacuteginas programar los protocolos de comunicacioacuten etc

Esto lleva a utilizar las tareas de programacioacuten y de pruebas

para validar el entendimiento y cumplimiento de la

funcionalidad de los sistemas

Lo anteriormente expuesto muestra un problema

metodoloacutegico consecuencia de un desfase entre el enfoque

teoacuterico oacuteptimo (anaacutelisis de negocio) y el enfoque praacutectico real

(programacioacuten y pruebas) en los proyectos de hoy En otras

palabras la metodologiacutea actualmente usada estaacute atrasada con

respecto al avance tecnoloacutegico

Desarrollando maacutes esta idea se identifican algunos

problemas concretos de las metodologiacuteas

Ellas no obligan a sus ejecutores a respetar todas las

normas y los procedimientos establecidos especialmente

en las etapas tempranas del proyecto Es muy faacutecil y

tentador ―saltar una o maacutes de estas etapas uno o maacutes

documentos o modelos pasando directamente a

implementacioacuten produccioacuten y posterior correccioacuten de los

sistemas desarrollados

Control de calidad del producto final La codificacioacuten y

complejidad del programa es demasiada para ser revisada

y verificada fehacientemente Por otro lado los coacutedigos

fuentes y los ejecutables actualmente son los uacutenicos

entregables eficientemente verificables

Estos dos problemas al parecer forman una situacioacuten

contradictoria la metodologiacutea tradicional no permite validar

eficientemente la calidad de los sistemas antes de llegar al

coacutedigo fuente y por otro lado tampoco permite llegar

eficientemente a coacutedigos fuentes de calidad

IV Futuro

La salida de este ―ciacuterculo vicioso que se propone es

bastante natural analizar la situacioacuten actual de la ingenieriacutea

de software en la luz de sus tendencias histoacutericas

La primera de ellas relacionada con los problemas que

resuelven los sistemas obviamente presente y muy utilizada

en nuestra realidad los sistemas de hoy no soacutelo resuelven los

problemas del mundo real sino que estaacuten fuertemente influen-

ciando el desarrollo del mundo real

Fig2 Modela

El enfoque de los ingenieros desde hace unos antildeos no se ha

movido significativamente por el camino del aumento de

abstraccioacuten establecido histoacutericamente Se han hecho ciertos

avances en temas puntuales (como arquitecturas de

componentes patrones de disentildeo nuevos lenguajes de

programacioacuten etc) pero conceptualmente

metodoloacutegicamente la tarea de programacioacuten sigue siendo

ejecutada de la misma forma escribiendo coacutedigos fuentes en

forma de los programas textuales

Eacuteste es justamente el ―atraso metodoloacutegico que se

mencionoacute Para disminuir la brecha entre las tendencias

histoacutericas es necesario ajustar la metodologiacutea en teacuterminos de

aumentar la abstraccioacuten del enfoque de los ingenieros de

software y acercarlo a la abstraccioacuten del problema

El aumento de la abstraccioacuten del proceso de desarrollo del

software hace pensar que la proacutexima generacioacuten de meacutetodos

de desarrollo se perfila en un conceptualmente nuevo con-

] INGENIERIacuteA DE SOFTWARE

15

INGENIERIacuteA DE SISTEMAS

junto de herramientas que permitan aumentar en un mayor

grado al actual la abstraccioacuten escondiendo los detalles de maacutes

bajo nivel

Fig3 Probable modelo a futuro

Las nuevas herramientas permitiraacuten ―programar en nivel

de anaacutelisis generando coacutedigos en un lenguaje de

programacioacuten tradicional de forma automaacutetica tal como hoy

los compiladores generan el lenguaje maacutequina a partir del

coacutedigo fuente Nuevos ―lenguajes de programacioacuten

naturalmente seriacutean visuales y se pareceriacutean a las

especificaciones de software en uno de los lenguajes de

modelamiento por ejemplo UML

V Conclusioacuten

Es muy probable que estemos proacuteximos a ver un nuevo

paso evolutivo en la ingenieriacutea de software Tan grande como

el invento de lenguajes de alto nivel o anaacutelisis y disentildeo

orientado a objetos Una nueva generacioacuten que absorberaacute a la

actual automatizando la mayoriacutea de las buenas praacutecticas

usadas actualmente

Una pregunta natural es si una maacutequina puede llegar a

generar programas tan buenos como los hechos por un pro-

gramador experto En vez de ―romper la cabeza con esta

pregunta ahora quizaacutes seriacutea suficiente recordarse otra vez de

la historia Los primeros compiladores de ninguna generacioacuten

alcanzaban de inmediato lo deseable y oacuteptimo Sin embargo

con el paso del tiempo apoyados en la experiencia de los

ingenieros y en el avance tecnoloacutegico se mejoraban hasta el

nivel de superar significativamente las generaciones

anteriores

Es poco factible que hoy en diacutea alguien cuestione la calidad

de los compiladores de por ejemplo Java y la calidad del

coacutedigo de maacutequina generado por ellos

VI Referencias [6] Website [Online]

httpwwwenterpriseanalystnetdownloadmda_informaticap

df

[7] httpwwwslidesharenetamrrochafuturo-del-software-impacto-en-las-organizaciones-y-en-los-profesionales

[8] httpwwwdcubaareventseci2008conferenciasIngSoftHexacta

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

16

Ingenieriacutea de Software para

Desarrolladores de juegos Huascar Huanca Orozco

Ingenieria de Sistemas San francisco de Asis

Av20 de Octubre esq Belisario Salinas

hhuncausfaedubo

ResumenmdashEn este artiacuteculo veremos una lo que es ldquoIS para

Desarrolladores de juegosrdquo si crees que un juego es facil pues

te equivocas en este articulo mostramos el uso de la IS en la

cracion de juegos que metodos utilizan y la complejidad que

representa para el equipo de desarrollo

1) Palabras clave mdash UMLRequisitosjuegoequipo de trabajo motor del juego

IV INTRODUCCIOacuteN

En la ingenieriacutea de software (IS) el desarrollo

de videojuegos es uacutenico pero similares a los

esfuerzos de software Es la uacutenica que combina el

trabajo de los equipos que cubren muacuteltiples

disciplinas (arte muacutesica actuacioacuten

programacioacuten etc) y que el juego de

acoplamiento que se busca a traveacutes del uso de

prototipos e iteraciones Con ello el desarrollo

del juego se enfrenta a desafiacuteos que pueden ser

abordadas mediante las praacutecticas tradicionales de

SE La industria tiene que adoptar buenas

praacutecticas de SE para sus distintas necesidades

tales como la gestioacuten de activos multimedia y

encontrar el fundamento en el juego La industria

debe asumir los retos por la evolucioacuten de los

meacutetodos de SE para satisfacer sus necesidades

Este trabajo investiga estos desafiacuteos y praacutecticas

de ingenieriacutea destaca para mitigar estos

problemas

V ENTRA EN EL JUEGO

Lo que la IS para desarrolladores de juegos hace

es

Mezcla de ingenieriacutea y el arte El software como

una praacutectica como una preocupacioacuten profesional

Meacutetodos para aprender a disentildear y fabricar un

producto El desarrollo del personaje e ingenieriacutea

de software Estrategias para hacer el mejor uso

de la ingenieriacutea del conocimiento formalizado El

aprendizaje de las habilidades que se pueden

aplicar en cualquier lugar

VI REQUISITOS

Esta parte ofrece una visioacuten general de los

conceptos y herramientas necesarias para la

obtencioacuten de requisitos

IDENTIFICAR LO QUE SE CONSIDERA UN REQUISITO DE SOFTWARE

ESTABLECER LOS CRITERIOS PARA DAR SENTIDO A LOS REQUISITOS Y LA

ESCRITURA DETERMINAR LA MANERA DE REUNIR LOS REQUISITOS O DESCUBRIR

EXPLORAR COacuteMO EMPLEAR CASOS DE USO PARA PERFECCIONAR Y

ANALIZAR LAS NECESIDADES ENCONTRAR TEacuteCNICAS PARA CONFIRMAR QUE LOS REQUISITOS ESTEacuteN

COMPLETOS

VERIFICAR LA EXACTITUD DE LOS REQUISITOS TRACE CAMBIOS EN LOS REQUISITOS

VII PROGRAMADOR DEL MOTOR DEL JUEGO

Fig 1 Juego RPG

] INGENIERIacuteA DE SOFTWARE

17

INGENIERIacuteA DE SISTEMAS

Los programadores de juegos motores crear el

motor de base del juego incluyendo la fiacutesica de

simulacioacuten y disciplinas graacuteficas

A Fiacutesica del motor del programador

Programador de un juego de la fiacutesica se dedica

al desarrollo de las fiacutesica de un juego se emplean

Por lo general un juego de soacutelo simular algunos

aspectos de la fiacutesica del mundo real Por ejemplo

un juego de espacio puede necesitar simulada

gravedad pero no tendriacutea ninguna necesidad

para simular agua viscosidad

Para un juego de rol como World of Warcraft

soacutelo un programador de la fiacutesica puede ser

necesaria Para un juego de combate complejo

como Battlefield 1942 los equipos de

programadores de la fiacutesica pueden ser necesarias

B motor de graacuteficos del programador

A pesar de todos los programadores antildeadir

tanto los contenidos y la experiencia que ofrece

un juego un programador de juego se centra maacutes

en la estrategia de un juego la aplicacioacuten de la

mecaacutenica del juego y la loacutegica y la sensacioacuten

de un juego

Esto no suele ser una disciplina independiente

como lo que este programador es por lo general

se diferencia de un juego a otro y que

inevitablemente se veraacute involucrado con las aacutereas

maacutes especializadas de desarrollo del juego como

los graacuteficos o el sonido

VIII EQUIPO DE TRABAJO

Fig 2 Grupo de trabajo

Un equipo de desarrollo en una organizacioacuten de

ingenieriacutea de software se compone de un grupo

de personas que trabajan en funciones

especializadas para lograr un objetivo comuacuten El

objetivo es la realizacioacuten de un proyecto Un

proyecto se define como un esfuerzo temporal

emprendido para crear un producto uacutenico

servicio o resultado

Aquiacute una pequentildea lista incompleta de algunos de

los componentes de un equipo de trabajo para

Desarrollo de juegos

Analista de requerimientos recopilar y analizar

los requisitos para el software

Arquitecto de software determinar la mejor

arquitectura para el software Seleccionar

Los componentes del proveedor para su inclusioacuten

en el esfuerzo de desarrollo

Disentildeador de software acotar el software para

lograr un rendimiento y otros

Objetivos

Prueba de software probador del software para

garantizar que funcione de acuerdo a la

Requisitos

Programador senior desarrollar bajo nivel de

documentacioacuten de disentildeo sirven como una

tecno-

Ventaja teacutecnica para los demaacutes e implementar el

software de acuerdo

Para el disentildeo

Programador implementar el software de acuerdo

al disentildeo

Trabajos de mantenimiento en el programador de

software creado durante el desarrollo anterior

Los esfuerzos para agregar funcionalidad o

eliminar errores de trabajo con

Atencioacuten al cliente

IX LENGUAJE UNIFICADO DE MODELADO (UML)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

18

Tomando en cuenta que el UML es un estaacutendar

muy flexible Nos da razoacuten que podemos pensar

en el diagrama

como herramientas que permiten realizar

diferentes tipos de trabajo Para revisar un poco

Use un diagrama de casos de uso para reunir y estudiar los requisitos para los propoacutesitos de disentildeo o pruebas

Use un diagrama de actividades para explorar los escenarios de casos de uso

Use un diagrama de clases para identificar las clases y ver coacutemo las

clases se relacionan entre siacute Use un diagrama de objetos para ver coacutemo un objeto se comunica con

otro

Use un diagrama de estado para explorar los atributos de cambio de objeto

Use un diagrama de secuencia para explorar a fondo un caso de uso

mediante el trazado de la orden en el que los objetos enviar mensajes a siacute mismos o entre siacute

Use un diagrama de colaboracioacuten para ver la loacutegica del sistema y la

forma en que los objetos envian mensajes entre siacute Use un diagrama de componentes para explorar y si existen los

subsistemas dentro de su juego

Use un diagrama de implementacioacuten para encontrar la manera de

configurar el paquete de instalacioacuten para su juego

X CONCLUSIONES

El desarrollo de los juegos se han vueltos mas

complejos con el pasar del tiempo y para el

desarrollo de un juego que este a la vanguardia

de la competencia se debe trabajar con la IS es

una forma eficaz de conseguir un juego de

calidad internacional

Referencias [9] Software Engineering for Game Developers by john P Flynt with Omar

Salem [10] httpieeexploreieeeorgxplloginjsptp=amparnumber=5070627ampurl=http

3A2F2Fieeexploreieeeorg2Fiel52F50705742F50705752F05

070627pdf3Farnumber

[11] httpgamedevstackexchangecomquestions19934abstract-game-engine-design

] INGENIERIacuteA DE SOFTWARE

19

INGENIERIacuteA DE SISTEMAS

Estrategias de Prueba del Software Miguel Angel Callisaya Quispe Universidad San Francisco de Asiacutes Av 20 de Octubre La Paz Bolivia

maccc19hotmailcom

Resumen Una estrategia de software es un mecanismo que

proporciona una guiacutea o base pasa ver la forma como se debe

desarrollar la aplicacioacuten en cuanto a meacutetodos esfuerzo

tiempo y recursos que son necesarios para lograr un producto

exitoso

La frecuencia con las que realicen las pruebas es de gran

importancia ya que de estaacute manera se pueda la en encontrar

los errores antes de que se conviertan en errores para la

aplicacioacuten si no se lleva un orden de aplicacioacuten de las pruebas

se va a perder tiempo recurso y sobre todo esfuerzo

Durante las primeras etapas de las pruebas es importante

concentrar toda la atencioacuten en un pequentildeo grupo de

componentes o en un componente que se considere importante

para el desarrollo tanto en los datos como en la parte loacutegica de

la aplicacioacuten

El objetivo final de las estrategias de prueba es documentar la

forma en el que equipo ha hecho el desarrollo y el seguimiento

que se le ha hecho a cada una de las etapas durante las etapas

de desarrollo e implementacioacuten

Palabras clave Calidad Prueba Estrategias Sistema

I INTRODUCCIOacuteN

Durante este articulo es importante mencionar algunos

aspectos que determinan el eacutexito de la aplicacioacuten de las

estrategias de prueba como lo son el enfoque estrateacutegico

para la prueba de software aspectos estrateacutegicos

estrategias de prueba para software convencional

estrategias de prueba para software orientado a objeto

estrategia de prueba para webapps pruebas de validacioacuten y

por uacuteltimo las pruebas del sistema

IIESTRATEGIAS DE PRUEBA DEL SOFTWARE

Verificacioacuten Estamos construyendo el producto

correctamente

Validacioacuten Estamos construyendo el producto correcto

Integracioacuten descendente

La integracioacuten descendente es un planteamiento

incremental a la construccioacuten de la estructura de programas

Se integran los moacutedulos movieacutendose hacia abajo por la

jerarquiacutea de control comenzando por el moacutedulo de control

principal (programa principal) Los moacutedulos subordinados

(de cualquier modo subordinados) al moacutedulo de control

principal se van incorporando en la estructura bien de

forma primero-en-profundidad o bien de forma primero-en-

anchura Fig1

Integracioacuten ascendente

La prueba de la integracioacuten ascendente como su nombre

indica empieza la construccioacuten y la prueba con los

moacutedulos atoacutemicos (es decir moacutedulos de los niveles maacutes

bajos de la estructura del programa) Dado que los moacutedulos

se integran de abajo hacia arriba el proceso requerido de

los moacutedulos subordinados a un nivel dado siempre estaacuten

disponibles y se elimina la necesidad de resguardos Fig2

Fig 1 Integracioacuten descendente

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

20

Fig 3 Integracioacuten Ascendente

Aspectos Estrateacutegicos

Tom Gilb plantea que se deben abordar los

siguientes puntos si se desea implementar con

eacutexito una estrategia de prueba del software

Especificar los requisitos del producto de manera

cuantificable mucho antes de que comiencen las pruebas

-Establecer los objetivos de la prueba de manera expliacutecita (teacuterminos

medibles)

-Comprender queacute usuarios va a tener el software y desarrollar un perfil

-Desarrollar un plan de prueba que haga hincapieacute en la prueba de ciclo

raacutepido

-Construir un software ―robusto disentildeado para probarse a siacute mismo

-Usar revisiones teacutecnicas formales efectivas como filtro antes de la

prueba

Llevar a cabo revisiones teacutecnicas formales para evaluar la

estrategia de prueba y los propios casos de prueba

Desarrollar un enfoque de mejora continua al proceso de

prueba Deberiacutea medirse la estrategia de prueba

Prueba de Unidad

La prueba de unidad centra el proceso de

verificacioacuten en la menor unidad del disentildeo del

software el moacutedulo La prueba de unidad siempre

esta orientada a caja blanca y este paso se suele

llevar a cabo en paralelo para muacuteltiples moacutedulos

Pruebas de Alfa y Beta

C u a n d o s e c o n s t r u y e s o f t w a r e a m e d i d a s e

l l e v a n a c a b o u n a s e r i e d e p r u e b a s d e

a c e p t a c i oacute n p a r a permitir que el cliente valide todos

los requisitos La prueba alfa se lleva a cabo en el

lugar del desarrollo pero por un cliente Se usa el

software en forma normal con el desarrollador como

observador del usuario y registrando los errores y

problemas de uso(entorno controlado)La prueba beta se

lleva a cabo por los usuarios finales en los lugares

de trabajo de los clientes El cliente registra los

problemas y los informa a intervalos regulare

Pruebas del sistema

La prueba del sistema estaacute constituida por una

serie de pruebas diferentes cuyo propoacutesito es

ejercitar profundamente el sistema

Prueba de recuperacioacuten

E s l a p r u e b a d e l s i s t e m a q u e f u e r z a a l

f a l l o d e l s o f t w a r e d e m u c h a s f o r m a s y

v e r i f i c a q u e l a recuperacioacuten se lleva a cabo

apropiadamente Recuperacioacuten automaacutetica o manual

Prueba de seguridad

Intenta verificar que los mecanismos de proteccioacuten

incorporados en el sistema lo protegeraacute de hecho de

accesos impropios

Pruebas de Resistencia

Estaacuten disentildeadas para enfrentar a los programas con

situaciones anormales Una variante de la prueba de

resistencia es una teacutecnica denominada prueba de

sensibilidad intenta descubrir combinaciones de datos

dentro de una clase de entrada valida que pueda producir

inestabilidad o un proceso incorrecto

El arte de la depuracioacuten

La depuracioacuten ocurre como consecuencia de una

prueba efectiva Cuando un caso de prueba

descubre u n e r r o r l a d e p u r a c i oacute n e s e l

p r o c e s o q u e p r o v o c a l a e l i m i n a c i oacute n d e l

e r r o r E l p r o c e s o m e n t a l q u e conecta un siacutentoma

con una causa es la depuracioacuten

El proceso de la depuracioacuten

E l p r o c e s o d e d e p u r a c i oacute n i n t e n t a h a c e r

c o r r e s p o n d e r e l s iacute n t o m a c o n u n a c a u s a

l l e v a n d o a s iacute a l a correccioacuten del error El proceso de

depuracioacuten siempre tiene uno de los dos resultados

siguientes

(1)se encuentra la causa se corrige y se elimina

o

(2)no se encuentra la causa En eacuteste uacuteltimo caso la persona

que realiza la depuracioacuten debe sospechar la causa disentildear

un caso de prueba que ayude a confirmar sus sospechas y el

trabajo vuelve hacia atraacutes a la correccioacuten del error de una

forma iterativa iquestPor queacute es tan difiacutecil la depuracioacuten

Varias caracteriacutesticas de los errores nos dan algunas

] INGENIERIacuteA DE SOFTWARE

21

INGENIERIacuteA DE SISTEMAS

pistas1El siacutentoma y la causa pueden ser

geograacuteficamente remotos entre siacute2El siacutentoma

puede desaparecer (temporalmente) al corregir

otro error

3 E l s iacute n t o m a p u e d e r e a l m e n t e e s t a r

p r o d u c i d o p o r a l g o q u e n o e s u n e r r o r

( i n e x a c t i t u d d e l o s redondeos)

4El siacutentoma puede estar causado por un error

humano que no sea faacutecilmente detectado

5El siacutentoma puede ser el resultado de problemas

de temporizacioacuten en vez de problema s de proceso

6Puede ser difiacutecil reproducir exactamente las

condiciones de entrada

7 E l s iacute n t o m a p u e d e a p a r e c e r e n f o r m a

i n t e r m i t e n t e

8 E l s iacute n t o m a p u e d e s e r d e b i d o a c a u s a s q u e

s e d i s t r i b u y e n p o r u n a s e r i e d e t a r e a s

e j e c u t aacute n d o s e e n diferentes procesadores

IIICONCLUCIONES

Las estrategias de prueba del software es un mecanismo

que proporciona una guiacutea o base pasa ver la forma como se

debe desarrollar la aplicacioacuten en cuanto a meacutetodos para

logra un producto exitoso

IVREFERENCIAS

httpbuenastareascomensayosEstategias-de-prueba-de-

software3752643html

httpwwwestrategiascompruebaagil

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

22

Ingenieriacutea Inversa Juan Carlos Zenteno Sanga

1

Departamento de Ingenieriacutea de Sistemas Universidad San Francisco de Asiacutes

Direccioacuten Incluyendo el Paiacutes 1juanka_58hotmailcom

Resumenmdash La ingenieriacutea de Software es parte del modelo de

proceso de reingenieriacutea de software es el proceso de analizar

un programa con la finalidad de crear una representacioacuten del

programa en un grado mayor de abstraccioacuten del coacutedigo

fuente las herramientas de ingenieriacutea inversa obtienen

informacioacuten del disentildeo de datos arquitectoacutenico y de

procedimientos a partir de un programa existente

En el siguiente artiacuteculo se veraacuten los conceptos baacutesicos y se

denotara un ejemplo praacutectico para una mayor comprensioacuten

del tema

Palabras clave mdash Ingenieriacutea de Software Reingenieriacutea

Linux Ingenieriacutea Inversa

XI INTRODUCCIOacuteN

Inmersa en el aacuterea de conocimiento de la

ingenieriacutea de software se encuentra la ingenieriacutea

inversa como punto de apoyo para los procesos

de anaacutelisis y disentildeo propuestos en diferentes

meacutetodos de desarrollo

La ingenieriacutea inversa permite subsanar esta

deficiencia al documentar los productos de

software a partir del coacutedigo ejecutable con el fin

de obtener los artefactos de anaacutelisis y disentildeo

La ingenieriacutea inversa es ademaacutes una

herramienta uacutetil que ayuda en el proceso de

aseguramiento de la calidad del software

mediante la comparacioacuten de diagramas de fases

de anaacutelisis y desarrollo se apoya comuacutenmente en

la generacioacuten del diagrama de clases debido a la

importancia de este diagrama en la fase de disentildeo

y su facilidad de generacioacuten Existen tambieacuten

otros diagramas de intereacutes como el de

comunicacioacuten y el de secuencias que modelan

las caracteriacutesticas dinaacutemicas de un producto de

software

Hoy en diacutea los productos maacutes comuacutenmente

sometidos a la Ingenieriacutea Inversa son los

productos de Hardware y Software pero

cualquier producto puede ser sometido a este

proceso

Aplicar ingenieriacutea Inversa a algo supone

profundizar el estudio de su funcionamiento

En el caso concreto del Software se conoce

por ingenieriacutea de software a la actividad que se

ocupa de describir coacutemo funciona un programa

de cuyo coacutedigo no se dispone hasta el punto de

generar coacutedigo propio que cumpla con las

mismas funciones Un ejemplo claacutesico del uso de

esta teacutecnica es el software de pago donde las

empresas utilizan esta teacutecnica para proteger sus

productos contra posibles acceso no autorizados

o examinar el producto final para encontrar

posibles bugs inesperados en la ejecucioacuten de

dicho sistema

Existe una gran variedad de software

desensamblador y depurador para aplicar esta

teacutecnica

En resumen la idea general al aplicar

ingenieriacutea inversa es

Conocer a fondo la aplicacioacuten y generar un

mejor coacutedigo

Migrar la aplicacioacuten a un nuevo sistema operativo

Hacer o completar la documentacioacuten

] INGENIERIacuteA DE SOFTWARE

23

INGENIERIacuteA DE SISTEMAS

Verificar que el coacutedigo en estudio cumple las

especificaciones del disentildeo estaacutendar

La informacioacuten extraiacuteda de la lectura del

coacutedigo fuente son las especificaciones de disentildeo

modelos de flujo de control diagramas de disentildeo

documentos de especificacioacuten de disentildeo

pudiendo tomarse estas especificaciones como

nuevo punto de partida para aplicar ingenieriacutea

inversa y obtener informacioacuten a mayor nivel de

abstraccioacuten

Dado que es una labor estrateacutegica es

conveniente conocer cuando conviene realizar la

tarea de Ingenieriacutea inversa para una aplicacioacuten y

cuaacutendo es maacutes rentable sustituirla e implementar

una nueva Las aplicaciones para el primer paso

son aquellas en la que se produce las siguientes

situaciones

bull Fallos frecuentes que son difiacuteciles de

localizar

bull Son poco eficientes pero realizan la funcioacuten

esperada

bull Dificultades en la integracioacuten con otros

sistemas

bull Calidad pobre del software final

bull Resistencia a introducir cambios

bull Pocas personas capacitadas para realizar

modificaciones

bull Dificultades para realizar pruebas

bull El mantenimiento consume muchos recursos

XII LAS BASES DE LA INGENIERIA INVERSA

Los ejemplos maacutes trascendentes sobre los

inicios de la ingenieriacutea inversa son claramente las

investigaciones realizadas sobre antiguos

artefactos creados por humanos ancestrales con

el fin de descubrir la manera en que funcionaban

Uno de los maacutes conocidos es el llamado

mecanismo de Antikythera (Fig 1) el cual se

piensa que fue disentildeado para fines astronoacutemicos

por los griegos siendo uno de los primeros

artefactos que funcionaban con ruedas de

engranes

Figura 1 Antikythera (mecanismo presuntamente creado para fines astronoacutemicos)

Podemos entonces implantar un paralelo en aquella

mitoloacutegica buacutesqueda de descubrimiento sobre el

funcionamiento de esos artefactos y la ingenieriacutea inversa

actual usada en ingenieriacutea de software estableciendo un

importante factor en comuacuten la falta de documentacioacuten En

este ambiente es muy comuacuten contar con una especie de caja

negra en donde sabemos lo que ingresamos y el resultado

que obtenemos pero desconocemos el procedimiento con la

precisioacuten que necesitariacuteamos para replicarlo

Esta falta de documentacioacuten es el impulso

principal de toda la ingenieriacutea inversa las

finalidades de la misma pueden variar pero este

factor inicial nunca lo haraacute

XIII INGENIERIA INVERSA COMO UN PROCESO DE

REINGENIERIA

La ingenieriacutea inversa tiene la misioacuten de

desentrantildear los misterios y secretos de los

sistemas en uso

Baacutesicamente recupera el disentildeo de la

aplicacioacuten a partir del coacutedigo esto se realiza

mediante herramientas que extraen la

informacioacuten de los datos procedimientos y

arquitecturas del sistema

Es aplicable a sistemas con las siguientes

caracteriacutesticas

Documentacioacuten inexistente o totalmente obsoleta

Programacioacuten en bloque de coacutedigos muy grandes

yo sin estructural

La aplicacioacuten cubre gran parte de los requisitos

y el rendimiento esperado

A Nivel de abstraccioacuten

El nivel de Abstraccioacuten de un proceso de

Ingenieriacutea Inversa y las herramientas que se

utilizan para realizarlo aluden la sofisticacioacuten de

la informacioacuten de disentildeo que se puede extraer del

coacutedigo fuente Este proceso deberiacutea ser capaz de

derivar

Sus representaciones de disentildeo de procedimiento

(con un bajo nivel de abstraccioacuten)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

24

La informacioacuten de las estructuras de datos de

procedimiento (con un nivel de abstraccioacuten

ligeramente maacutes elevado)

Modelos de flujo de datos de control (un nivel de

abstraccioacuten relativamente alto)

Modelos de entidades y de relaciones (un elevado

nivel de abstraccioacuten)

B Completitud

En la mayoriacutea de los casos la completitud

decrece a medida que aumenta el grado de

abstraccioacuten

La completitud mejora en proporcioacuten directa a

la cantidad de anaacutelisis efectuado por la persona

que estaacute efectuando la ingenieriacutea inversa

C Interactividad

La interactividad alude al grado con el cual el

ser humano se integra con las herramientas

automatizadas para crear un proceso de

ingenieriacutea inversa efectivo

D Proceso

El Proceso de ingenieriacutea inversa (Fig 2) es el encargado

de reestructurar el coacutedigo fuente para que solamente

contenga instrucciones de programacioacuten estructurada Lo

que hace que el coacutedigo sea maacutes faacutecil de leer y proporciona

la base para las subsiguientes actividades de ingenieriacutea

inversa

Figura 2 Diagrama de Proceso de la Ingenieriacutea Inversa

E Reestructuracioacuten

La reestructuracioacuten del software modifica el

coacutedigo fuente y los datos en un intento adecuado

a futuros cambios esta no modifica la

arquitectura global del programa Tiene a

centrarse en los detalles de disentildeo de moacutedulos

individuales y en estructuras de datos locales

definidas dentro de los moacutedulos

Estos son algunos de los beneficios que se

pueden lograr cuando se reestructura el software

Programas de mayor calidad

Reduce el esfuerzo requerido para llevar a cabo

las actividades de mantenimiento

Hace el software maacutes sencillo para comprobar y

depurar

F Re documentacioacuten

Es el proceso mediante el cual se produce

documentacioacuten retroactivamente desde un

sistema existente

Es considerada una forma de ingenieriacutea inversa

porque la documentacioacuten reconstruida es usada

para ayudar al conocimiento del programa

XIV UTILIZANDO EL METODO CIENTIFICO EN LA

INGENIERIA INVERSA

Ante cualquier dificultad tecnoloacutegica el

meacutetodo cientiacutefico siempre es y seraacute nuestra maacutes

preciada arma Partamos imaginando un pequentildeo

dilema relacionado con el tema de ingenieriacutea de

software especiacuteficamente con un sencillo

programa (Fig 3)

Figura 3 Pantalla de aplicacioacuten que nos serviraacute de ejemplo

Esta sencilla aplicacioacuten mostraraacute un mensaje con cierto

resultado y aun siendo un problema demasiado sencillo

para considerarlo como un reto el objetivo es soacutelo describir

] INGENIERIacuteA DE SOFTWARE

25

INGENIERIacuteA DE SISTEMAS

las acciones usuales del proceso las cuales son aplicables

en escalas muy superiores

El resultado mostrado por el programa dentro del mensaje

emergente se basa en nuestra entrada pero nosotros

desconocemos en lo absoluto los procedimientos utilizados

sobre esta entrada para producir aquella respuesta

A La Observacioacuten es Trascendental

Primero es importante observar el problema su

comportamiento Es substancial tratar de lograr

un pensamiento inductivo en donde logremos

identificar el principio particular del problema

para poder llegar a extrapolarlo a una solucioacuten

general

El punto de quiebre se produce en este instante

Ya al haber observado la aplicacioacuten podriacuteamos

decidir procesar los datos que nos entrega y

lograr crear un coacutedigo equivalente o investigar el

funcionamiento interno

B Dentro de la aplicacioacuten

Luego de la formulacioacuten de una hipoacutetesis sobre

su funcionamiento necesitamos algunas

herramientas para comenzar con la investigacioacuten

En el caso de esta aplicacioacuten con un poco de

conocimientos del lenguaje ensamblador de

programacioacuten tradicional y un descompilador es

suficiente

Es importante emprender de buena forma

nuestro sondeo ser ordenados y metoacutedicos en la

tarea En este momento las capacidades analiacuteticas

y loacutegicas son muy importantes para alivianar

nuestra faena

Lo fundamental es conocer muy bien el

entorno en que nos desenvolveremos En este es

punto indispensable saber que una aplicacioacuten

para Windows necesita invocar internamente al

punto de entrada MessageBox o MessageBoxEx

de la libreriacutea de sistema user32dll para poder

desplegar un mensaje (Fig 4)

Figura 4 Resultado de la Aplicacioacuten

Ya con esa pista es sencillo encontrar el

fragmento de coacutedigo relacionado con las

operaciones relacionadas a nuestro nuacutemero de

entrada que tendriacutea una forma similar a la

mostrada a continuacioacuten en nuestro

descompilador (Fig 5)

Figura 5 Vista del Programa en Ensamblador

Cualquier programador intuiriacutea faacutecilmente lo

que hacen las liacuteneas superiores de esta aplicacioacuten

en especial sprintf es parte de la libreriacutea estaacutendar

de C++ Claramente vemos tambieacuten el tiacutetulo de la

ventana en el coacutedigo estos valores son

interpretados de forma inteligente por este

descompilador en especial y en particular nos

asiste de sobremanera a comprender el coacutedigo

Lo siguiente es sencillamente explorar paso a

paso las acciones superiores de caacutelculo del

resultado En esta instancia seraacute ideal realizar

numerosas pruebas para estar completamente

seguros de que logramos develar el secreto tras la

funcionalidad objetivo (Fig 6)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

26

Figura 6 Inicio del coacutedigo al que aplicaremos ingenieriacutea inversa

Hay que detenerse algunos segundos a

individualizar algunos procedimientos del

anaacutelisis que a simple vista pueden parecer

inconcebibles con el fin de poder generar una

tesis concluyente

Cabe destacar que se omitiraacuten pasos

intermedios de asignaciones de memoria y otros

formalismos propios de ensamblador para

favorecer el entendimiento del lector

Inicialmente tenemos el valor de entrada

supuestamente ya leiacutedo desde el cuadro de

diaacutelogo del programa ahora nos enfocamos en la

primera accioacuten importante Asumiremos el valor

de entrada como una incoacutegnita

En el siguiente trozo de coacutedigo la liacutenea

destacada antildeadioacute siete a nuestra incoacutegnita (Fig 7)

Figura 7 Coacutedigo donde se denota la adicioacuten de 7 a nuestra ecuacioacuten

A continuacioacuten se multiplica ese valor

resultante de la suma por el mismo (Fig 8)

Figura 8 Coacutedigo donde se denota la multiplicacioacuten del valor por la suma

Nuevamente multiplicamos el resultado por el

anterior proporcionado tras la suma En esta

segunda vez ya podemos expresar la operacioacuten

simplemente elevando al cubo la suma anterior

(Fig 9)

Figura 9 Coacutedigo que denota una nueva multiplicacioacuten del resultante

Ahora le restamos diez al resultado

El procedimiento que viene a continuacioacuten

propone un mayor desafiacuteo intelectual Un nuacutemero

constante en este caso el cargado al registro

EAX (Fig 10)

Figura 10 ubicacioacuten del nuacutemero constante EAX

Generalmente la divisioacuten es algo maacutes costosa

en tiempo de procesador que otras operaciones

por lo que ciertos compiladores incluyen tablas

de constantes las cuales son llamadas ―nuacutemeros

maacutegicos para la divisioacuten entera

d Con signo Sin signo

m (hex) s m (hex) a s

-5 99999999 1

-3 55555555 1

-2k 7FFFFFFF k-

1

1 mdash mdash 0 1 0

2k 80000001 k-

1 232-k 0 0

3 55555556 0 AAAAAAAB 0 1

5 66666667 1 CCCCCCCD 0 2

6 2AAAAAAB 0 AAAAAAAB 0 2

7 92492493 2 24924925 1 3

9 38E38E39 1 38E38E39 0 1

10 66666667 2 CCCCCCCD 0 3

11 2E8BA2E9 1 BA2E8BA3 0 3

] INGENIERIacuteA DE SOFTWARE

27

INGENIERIacuteA DE SISTEMAS

12 2AAAAAAB 1 AAAAAAAB 0 3

25 51EB851F 3 51EB851F 0 3

125 10624DD3 3 10624DD3 0 3

Tabla 1 Algunos nuacutemeros maacutegicos (32 bits)

Ahora bien conociendo la tabla 1 sabiendo

que el nuacutemero cargado en esta ocasioacuten

corresponde al once lo que hace el coacutedigo es

multiplicar el resultado de la salida temporal por

aquel nuacutemero (Fig 11)

Figura 11 Multiplicacioacuten del resultante por el numero 11

Naturalmente la multiplicacioacuten por un nuacutemero

tan grande produce una especie de

desbordamiento en el registro contenedor del

resultado al exceder el tamantildeo de palabra del

procesador (en este caso de 32 bits) Estos bits

sobrantes se almacenan naturalmente en el

registro EDX registro que es contiguo a ECX

dentro de la memoria de los registros del

procesador

Ahora desplazamos un bit del registro EDX

(equivalente a una divisioacuten entera por dos) para

obtener la solucioacuten de la divisioacuten por once

generando una sencilla ecuacioacuten

Figura 12 Desplazamiento del bit de registro EDX

El uacuteltimo paso luego de documentar estos

resultados seraacute crear una aplicacioacuten que recree

esta foacutermula soacutelo en caso de tener intenciones de

re-codificacioacuten del desarrollo Consumando este

punto es sencillo confeccionar un diagrama con

todo el proceso anteriormente visto

XV CONCLUSIONES

Queda claro que el tema de la ingenieriacutea

inversa es uno de los toacutepicos maacutes interesantes a

los que podriacutea afrontarse un profesional de la

tecnologiacutea y en general disfrutar el largo proceso

involucrado gracias al desafiacuteo poco predecible

que presenta

En general podemos darnos cuenta de que no

existen muchas metodologiacuteas y teoriacuteas estrictas

sobre coacutemo aplicar las teacutecnicas de ingenieriacutea

inversa Afortunadamente un ingeniero estaacute

preparado para afrentar desafiacuteos de este tipo

Adicionalmente podemos deducir tambieacuten el

aspecto bidireccional de la ingenieriacutea inversa

pues como ya lo comprobamos no solo es un

desafiacuteo aplicarla sino que tambieacuten lo es tener que

dificultar el proceso o incluso tratar de impedirlo

si la situacioacuten lo requiere

REFERENCIAS

[12] Roger Pressman Ingenieriacutea de Software ―Un Enfoque Moderno 6th ed

MC Graw Hill [13] httpeswikipediaorgwikiIngenieria_inversa

[14] httpwwwinfosecwritersconntext_resourcespdfsoftware_security_and_r

everse_engineeringpdf [15] httperwinriedclmodo=visorampelemento=239

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

28

METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO Univ Alejandro Meacutendez Escobar

Universidad San Francisco de Asiacutes

Ingenieriacutea de Sistemas

Ingenieriacutea de Software I

La Paz - Bolivia

amendezusfaedubo

Resumenmdash Al adquirir el software educativo dentro del campo de

desarrollo de software una gran importancia y siendo este

inspiracioacuten de propuestas de innumerables metodologiacuteas que buscan

la elaboracioacuten de un software de calidad

Tomaremos la metodologiacutea Aacutencora enfocada a la fase de

requerimientos y que ofrece elementos que indican las actividades

que deben realizarse los artefactos que se producen y la forma de

obtenerlos

Usando al desarrollo de software educativo como ejemplo de una

mejor comprensioacuten de dicha metodologiacutea analizando la aplicacioacuten

del Aacutencora en un trabajo propuesto para el Instituto Tecnoloacutegico de

Orizaba Meacutexico

Palabras clave mdash Aacutencora Metodologiacutea Desarrollo de Software

Educativo Requerimientos Calidad

XVI INTRODUCCIOacuteN

Hoy en diacutea la tecnologiacutea esta dentro de las

actividades que realizamos es asiacute que la educacioacuten no

queda exenta de ella por o cual es necesario adaptarse

al movimiento tecnoloacutegico que nos trae grandes

ventajas en la transmisioacuten de conocimientos de una

manera sencilla y dinaacutemica

De esta manera han surgido infinidad de

metodologiacuteas de desarrollo de software educativo el

cual tiene como objetivo ser el apoyo para docentes

alumnos y toda persona que este dentro del proceso de

aprendizaje

Tomando en cuenta este ramillete infinito de

metodologiacuteas surge en el ejemplo propuesto la

adaptacioacuten del Aacutencora en el desarrollo de software

educativo teniendo como objetivo principal la

comprensioacuten de los elementos y conceptos de la

metodologiacutea Aacutencora

Aacutencora es una metodologiacutea enfocada a la

adquisicioacuten de requerimientos para software que

ofrece guiacuteas y elementos de apoyo para la obtencioacuten de

estos requerimientos Al mismo tiempo permite pasar a

la fase de disentildeo de manera sencilla Aprovechando las

ventajas que presenta Aacutencora se le hicieron algunas

adaptaciones con el fin de cubrir algunas

caracteriacutesticas del disentildeo instruccional y enriquecer

Aacutencora habilitaacutendola para la adquisicioacuten de

requerimientos de software educativo

XVII APLICACIOacuteN DE LA METODOLOGIacuteA AacuteNCORA

Como es el objetivo principal la comprensioacuten de la

aplicacioacuten de la metodologiacutea Aacutencora dentro del

desarrollo de software educativo de calidad solo

describiremos los meacutetodos del meacutetodo y los resultados

obtenidos

Claro esta que para ahondar maacutes en tema del

software educativo en si el lector puede recurrir a los

siguientes autores Metodologiacutea de desarrollo de

sistemas multimedia (Vaughan 2006) Propuesta de

metodologiacutea para el disentildeo desarrollo y evaluacioacuten

de software educativo (Reyes 2009) Ingenieriacutea de

software educativo con modelaje orientado por objetos

(Goacutemez 1998) asi como tambieacuten los siguientes

modelos ADDIE (Anaacutelisis Disentildeo Desarrollo

Implantacioacuten y Evaluacioacuten) de (McGriff 2000) y el

disentildeo instruccional aplicado al desarrollo de software

educativo EISE (Especificacioacuten Instruccional de

Software Educativo) de (Hernaacutendez 2005)

] INGENIERIacuteA DE SOFTWARE

29

INGENIERIacuteA DE SISTEMAS

Quienes tienen el mismo objetivo de crear software

educativo de calidad podemos sintetizar de ellos los

siguientes puntos

Anaacutelisis del puacuteblico al que se dirigiraacute el software

Problema oacute necesidad educativa a atender

Anaacutelisis de contenido (Tema a tratar actividades

para alcanzar el objetivo de ensentildeanza y forma de

evaluarlo)

Actividades oacute forma actual de llevar a cabo la

ensentildeanza del tema en cuestioacuten

Elaboracioacuten de guiones metaacuteforas escenarios

Creacioacuten de prototipo oacute Storyboard

Disentildeo de interfaz

Mapas de navegacioacuten

Modelos de datos

Elaboracioacuten de diagramas de contexto diagramas

de flujo o diagramas de casos de uso

Ahora enfocaacutendonos en el aacutencora se establece la

propuesta de seleccionar las actividades de Aacutencora que

permitan obtener los requerimientos de un software

educativo

La Tabla 1 presenta las actividades y artefactos

producidos en las fases de Aacutencora para la elaboracioacuten

de software educativo

TABLA 1 ACTIVIDADES Y ARTEFACTOS DE LA METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO

Metodologiacutea Aacutencora

Fases Actividades y artefactos

Anaacutelisis de

Requerimientos

A traveacutes de entrevistas con los clientes

(maestros y pedagogos) y de la lectura

del respectivo material proporcionado

por ellos se definiraacute la asignatura a la

que se enfocaraacute el software el tema a

tratar y la forma en que se abordaraacute y

evaluaraacute Tambieacuten se estableceraacute el

objetivo general de aprendizaje la

metaacutefora que se emplearaacute y se

determinaraacute el puacuteblico al que se

dirigiraacute el software

Artefactos

Documento que define la asignatura

contenido objetivo general de

aprendizaje metaacutefora y puacuteblico al que

se dirigiraacute el software Guion de la

situacioacuten actual

Recoleccioacuten y

clasificacioacuten de

requerimientos

El guion de la propuesta

computacional reflejaraacute la metaacutefora

que se sigue el ambiente de cada

escena

La bitaacutecora de desarrollo permitiraacute ver

coacutemo el sistema responderaacute a las

diversas acciones que realice el

usuario

En lugar del prototipo raacutepido se

elaboraraacute un Storyboard para presentar

graacuteficamente la estructura de sistema

propuesto

Artefactos

Guion de propuesta computacional

bitaacutecora de desarrollo Storyboard

Resolucioacuten de

conflictos

jerarquizacioacuten y

validacioacuten de

requerimientos

Modificaciones al guion de la

propuesta computacional de acuerdo a

los cambios propuestos por los

maestros y pedagogos

Artefactos

Guion de propuesta computacional e

Storyboard con adecuaciones sentildealas

Cierre

Trasladar los guiones a casos de uso

Artefactos

Casos de uso

Se agregaron algunas caracteriacutesticas a ciertos

artefactos de Aacutencora para poder cubrir los

requerimientos de software educativo Uno de estos

elementos es el guion de la propuesta computacional

al que se propone agregar lo siguiente

Conocimientos previos del usuario Se refiere a los

conocimientos baacutesicos o miacutenimos que debe tener el

alumno para poder interactuar con el moacutedulo

Objetivo de aprendizaje Es el aprendizaje que

debe obtener el alumno despueacutes de haber interactuado

con el moacutedulo

La Figura 1 se presenta la estructura sugerida para el

guion de la propuesta computacional En la bitaacutecora de

desarrollo se propone antildeadir una fila al final de cada

pista donde se describan las situaciones favorables y

no favorables para el cumplimiento del objetivo de

aprendizaje para esa pista en particular Por otra parte

en lugar del prototipo se sugiere utilizar el Storyboard

ya que permite mostrar de manera maacutes completa la

estructura del guion de la propuesta computacional La

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

30

Figura 2 muestra el formato para la elaboracioacuten del

Storyboard

Figura 1 Estructura del guion para la propuesta computacional

Figura 2 Formato para la elaboracioacuten del Storyboard

XVIII RESULTADOS

Aplicando Aacutencora en un ejemplo para la parte de

requerimientos se obtuvo la siguiente informacioacuten

Asignatura Matemaacuteticas

Contenido Estaacute articulado con base en seis ejes

con sus respectivos temas y subtemas que variacutean de

acuerdo al grado escolar Considerando lo anterior se

tiene lo siguiente

a) Grado escolar De segundo hasta quinto grado de

primaria

b) Temas Nuacutemeros naturales capacidad peso

tiempo y ubicacioacuten espacial planteamiento y

resolucioacuten de problemas sencillos en los que se

requiera recolectar y registrar informacioacuten

perioacutedicamente representacioacuten de informacioacuten en

tablas de frecuencia y graacuteficas de barras registros de

los resultados de experimentos aleatorios

representacioacuten de los resultados de un experimento

aleatorio en tablas y graacuteficas

c) Subtemas Planteamiento y resolucioacuten de

problemas que impliquen dos o maacutes operaciones con

nuacutemeros naturales

d) Ejes Introduccioacuten del kiloacutemetro como la unidad

que permite medir grandes distancias y recorridos

largos capacidad peso y tiempo uso del reloj y el

calendario los nuacutemeros sus relaciones y sus

operaciones medicioacuten la prediccioacuten y el azar

tratamiento de la informacioacuten

Objetivo general de aprendizaje Ejercitar las

operaciones aritmeacuteticas baacutesicas interpretar la

informacioacuten y los resultados de la informacioacuten dada

aplicada en situaciones de la vida cotidiana

Con las actividades hasta ahora realizadas se ha

observado que los artefactos de Aacutencora son flexibles y

pueden por lo tanto adaptarse de acuerdo a las

necesidades que implican la adquisicioacuten de

requerimientos de un software educativo Tambieacuten se

aprecian las ventajas de algunos artefactos como la

bitaacutecora de desarrollo que permite determinar las

respuestas del sistema ante las acciones del usuario y

estimar tambieacuten el tiempo que llevaraacute implementar

cada quinteta

La estimacioacuten del tiempo ayuda a tener un valor

aproximado del tiempo de desarrollo de software

Agregar el objetivo de aprendizaje a la bitaacutecora de

desarrollo puede parecer repetitivo despueacutes de

incluirlo en el Storyboard pero esto nos permite ver las

situaciones u obstaacuteculos que pueden impedir que el

objetivo de aprendizaje se alcance y por tanto tenerlos

presente durante el disentildeo A pesar de las ventajas de

la bitaacutecora de desarrollo un inconveniente hasta ahora

encontrado es lo tedioso al manejar muchas quintetas

] INGENIERIacuteA DE SOFTWARE

31

INGENIERIacuteA DE SISTEMAS

cuando por la naturaleza del guion se tienen varios

avisos y mensajes para el usuario Por otra parte los

guiones han ayudado a realizar de manera sencilla el

modelo de casos de uso

En lo referente a la presentacioacuten con los clientes el

guion es un artefacto que pude dar un panorama

general del software que se va a elaborar y queda

reforzada a traveacutes de los Storyboard Cuando se

requieren cambios solicitados por los clientes las

modificaciones a estos artefactos no han sido muy

complicadas dado que por su estructura es faacutecil de

ubicar las secciones y respectivos elementos

XIX CONCLUSIONES

Con los resultados hasta ahora obtenidos se puede

decir que la propuesta permite a los desarrolladores

con poca experiencia en desarrollo de software

educativo obtener los requerimientos de una manera

sencilla

Permite realizar un mejor relevamiento de informacioacuten

de los requerimientos del cliente enfocaacutendonos mas en

este

Es tambieacuten importante mencionar los avances que

tiene y seguiraacute teniendo el software educativo aplicado

no solo a nivel escolar sino tambieacuten al superior

Habiendo revisado el concepto y la aplicacioacuten de la

metodologiacutea Aacutencora en el desarrollo de software

educativo se llegoacute a una comprensioacuten mas extensa de

dicho meacutetodo el cual es de gran importancia dentro de

la ingenieriacutea de Software ya que nos

REFERENCIAS

httpwwwuvmxmisproductividaddocumentsCarmenChay_CIIM2010pdf

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 13: Revista de Ingenieria de Software

] INGENIERIacuteA DE SOFTWARE

13

INGENIERIacuteA DE SISTEMAS

El futuro de la ingenieriacutea de software Luis E Aguirre

Ingenieriacutea de Sistemas

Universidad San Francisco de Asiacutes

20 de Octubre esq Belisario Salinas

La Paz - Bolivia leaguirreusfaedubo

Resumen El disentildeo de programas a partir de informacioacuten binaria

significoacute un paso sustantivo para la industria desarrolladora de

software Desde ese hallazgo ocurrido en la deacutecada de los

cincuenta hasta hoy el crecimiento de metodologiacuteas para su

desarrollo ha subido notablemente en complejidad Sin embargo

los ciacuterculos viciosos que acusa hoy la confeccioacuten de programas

informaacuteticos impiden conceptualizar el objeto a un nivel

superior de abstraccioacuten tal y como lo exige el avance tecnoloacutegico

y los procesos de negocios

Palabras clave mdash futuro software ingenieriacutea programador y

desarrollo

I Introduccioacuten

La calidad de los sistemas informaacuteticos satisfaccioacuten de sus

usuarios y clientes son temas ampliamente conocidos

recurrentes y de constante preocupacioacuten por parte de los

practicantes de la Ingenieriacutea de software

Esta joven y dinaacutemica ingenieriacutea siempre estaacute en busca de

mejoras en el desarrollo de sistemas aumento de

productividad del ingeniero de software mayor control del

proceso de desarrollo establecimiento de nuevos meacutetodos de

desarrollo

Fig 1 Primeros programas computacionales en formato de tarjeta perforada

Estos elementos combinados y aplicados de buena forma

logran un buen proceso de desarrollo y en definitiva un buen

producto

Identificar los pasos que ha recorrido esta ingenieriacutea analizar

su contexto actual y finalmente proyectar hacia doacutende se

dirige es el pilar de este artiacuteculo

II iquestSe aplica actualmente la ingenieriacutea del software

La investigacioacuten y el desarrollo de teacutecnicas y meacuteto

dos de ingenieriacutea del software son constantes y suelen suponer

interesantes avances en la resolucioacuten de problemas de

desarrollo de software Sin embargo es habitual que en la

praacutectica diaria profesional no se incluya praacutecticamente

ninguna de las recomendaciones maacutes elementales de la

ingenieriacutea del software En efecto es habitual que el

desarrollo de software se parezca maacutes al descontrol del cuento

de laquosi los programadores fueran albantildeilesraquo ([Novatica

1996]) que a una idiacutelica y bien organizada factoriacutea de

software (concepto de gran vigencia a finales de los ochenta

[Nunamaker et al 1988])

De hecho las evaluaciones de los procesos productivos de

software realizadas a raiacutez de los modelo de procesos de

software (por ejemplo con CMM [Paulk et al 1993])

confirman que el desarrollo de software suele estar

baacutesicamente en estado caoacutetico

Y no soacutelo en como uno podriacutea pensar pequentildeas

organizaciones de un paiacutes mediterraacuteneo como el nuestro sino

en tambieacuten en las empresas adjudicatarias de interesantes

contratos de defensa de paiacuteses laquoavanzadosraquo como EEUU o

Japoacuten Si bien estos modelos de evaluacioacuten auacuten acumulan

distintas acusaciones de rigidez o falta de contraste empiacuterico

los resultados obtenidos en sus evaluaciones resultan

consistentes con la sensacioacuten de constante laquoapagafuegosraquo que

suelen sufrir los profesionales del software Tambieacuten suelen

revelar la praacutectica despreocupacioacuten de los responsables de las

organizaciones de software por la mejora de la calidad de sus

procesos de trabajo o de sus productos bien sea por contar con

una situacioacuten interna de empresa poco propicia porque el

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

14

ambiente del mercado no fomenta la preocupacioacuten por estos

temas o bien por su poco intereacutes real en la buacutesqueda de la

calidad

III La actualidad

La gran mayoriacutea de los sistemas de software creados hoy en

diacutea son los llamados sistemas corporativos es decir son

orientados a formar una parte importante de los negocios de

las grandes empresas

Continuando en nuestro contexto se identifica un nuevo

enfoque del problema de desarrollo el apoyo en la

sincronizacioacuten de los procesos de negocio estructuras

complejas de informacioacuten manejada por el negocio todo esto

entrelazado por restricciones dadas por las reglas del negocio

La tecnologiacutea actual por otro lado ha alejado maacutes todaviacutea los

ingenieros de las maacutequinas sistemas operativos incluso de

las tareas de programacioacuten

El enfoque de la mayoriacutea de los equipos de desarrollo e

ingenieros participes en proyectos sigue siendo con un bajo

nivel de abstraccioacuten cerca de la codificacioacuten Se tiende a

pensar en la base de datos a utilizar establecer la navegacioacuten

de las paacuteginas programar los protocolos de comunicacioacuten etc

Esto lleva a utilizar las tareas de programacioacuten y de pruebas

para validar el entendimiento y cumplimiento de la

funcionalidad de los sistemas

Lo anteriormente expuesto muestra un problema

metodoloacutegico consecuencia de un desfase entre el enfoque

teoacuterico oacuteptimo (anaacutelisis de negocio) y el enfoque praacutectico real

(programacioacuten y pruebas) en los proyectos de hoy En otras

palabras la metodologiacutea actualmente usada estaacute atrasada con

respecto al avance tecnoloacutegico

Desarrollando maacutes esta idea se identifican algunos

problemas concretos de las metodologiacuteas

Ellas no obligan a sus ejecutores a respetar todas las

normas y los procedimientos establecidos especialmente

en las etapas tempranas del proyecto Es muy faacutecil y

tentador ―saltar una o maacutes de estas etapas uno o maacutes

documentos o modelos pasando directamente a

implementacioacuten produccioacuten y posterior correccioacuten de los

sistemas desarrollados

Control de calidad del producto final La codificacioacuten y

complejidad del programa es demasiada para ser revisada

y verificada fehacientemente Por otro lado los coacutedigos

fuentes y los ejecutables actualmente son los uacutenicos

entregables eficientemente verificables

Estos dos problemas al parecer forman una situacioacuten

contradictoria la metodologiacutea tradicional no permite validar

eficientemente la calidad de los sistemas antes de llegar al

coacutedigo fuente y por otro lado tampoco permite llegar

eficientemente a coacutedigos fuentes de calidad

IV Futuro

La salida de este ―ciacuterculo vicioso que se propone es

bastante natural analizar la situacioacuten actual de la ingenieriacutea

de software en la luz de sus tendencias histoacutericas

La primera de ellas relacionada con los problemas que

resuelven los sistemas obviamente presente y muy utilizada

en nuestra realidad los sistemas de hoy no soacutelo resuelven los

problemas del mundo real sino que estaacuten fuertemente influen-

ciando el desarrollo del mundo real

Fig2 Modela

El enfoque de los ingenieros desde hace unos antildeos no se ha

movido significativamente por el camino del aumento de

abstraccioacuten establecido histoacutericamente Se han hecho ciertos

avances en temas puntuales (como arquitecturas de

componentes patrones de disentildeo nuevos lenguajes de

programacioacuten etc) pero conceptualmente

metodoloacutegicamente la tarea de programacioacuten sigue siendo

ejecutada de la misma forma escribiendo coacutedigos fuentes en

forma de los programas textuales

Eacuteste es justamente el ―atraso metodoloacutegico que se

mencionoacute Para disminuir la brecha entre las tendencias

histoacutericas es necesario ajustar la metodologiacutea en teacuterminos de

aumentar la abstraccioacuten del enfoque de los ingenieros de

software y acercarlo a la abstraccioacuten del problema

El aumento de la abstraccioacuten del proceso de desarrollo del

software hace pensar que la proacutexima generacioacuten de meacutetodos

de desarrollo se perfila en un conceptualmente nuevo con-

] INGENIERIacuteA DE SOFTWARE

15

INGENIERIacuteA DE SISTEMAS

junto de herramientas que permitan aumentar en un mayor

grado al actual la abstraccioacuten escondiendo los detalles de maacutes

bajo nivel

Fig3 Probable modelo a futuro

Las nuevas herramientas permitiraacuten ―programar en nivel

de anaacutelisis generando coacutedigos en un lenguaje de

programacioacuten tradicional de forma automaacutetica tal como hoy

los compiladores generan el lenguaje maacutequina a partir del

coacutedigo fuente Nuevos ―lenguajes de programacioacuten

naturalmente seriacutean visuales y se pareceriacutean a las

especificaciones de software en uno de los lenguajes de

modelamiento por ejemplo UML

V Conclusioacuten

Es muy probable que estemos proacuteximos a ver un nuevo

paso evolutivo en la ingenieriacutea de software Tan grande como

el invento de lenguajes de alto nivel o anaacutelisis y disentildeo

orientado a objetos Una nueva generacioacuten que absorberaacute a la

actual automatizando la mayoriacutea de las buenas praacutecticas

usadas actualmente

Una pregunta natural es si una maacutequina puede llegar a

generar programas tan buenos como los hechos por un pro-

gramador experto En vez de ―romper la cabeza con esta

pregunta ahora quizaacutes seriacutea suficiente recordarse otra vez de

la historia Los primeros compiladores de ninguna generacioacuten

alcanzaban de inmediato lo deseable y oacuteptimo Sin embargo

con el paso del tiempo apoyados en la experiencia de los

ingenieros y en el avance tecnoloacutegico se mejoraban hasta el

nivel de superar significativamente las generaciones

anteriores

Es poco factible que hoy en diacutea alguien cuestione la calidad

de los compiladores de por ejemplo Java y la calidad del

coacutedigo de maacutequina generado por ellos

VI Referencias [6] Website [Online]

httpwwwenterpriseanalystnetdownloadmda_informaticap

df

[7] httpwwwslidesharenetamrrochafuturo-del-software-impacto-en-las-organizaciones-y-en-los-profesionales

[8] httpwwwdcubaareventseci2008conferenciasIngSoftHexacta

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

16

Ingenieriacutea de Software para

Desarrolladores de juegos Huascar Huanca Orozco

Ingenieria de Sistemas San francisco de Asis

Av20 de Octubre esq Belisario Salinas

hhuncausfaedubo

ResumenmdashEn este artiacuteculo veremos una lo que es ldquoIS para

Desarrolladores de juegosrdquo si crees que un juego es facil pues

te equivocas en este articulo mostramos el uso de la IS en la

cracion de juegos que metodos utilizan y la complejidad que

representa para el equipo de desarrollo

1) Palabras clave mdash UMLRequisitosjuegoequipo de trabajo motor del juego

IV INTRODUCCIOacuteN

En la ingenieriacutea de software (IS) el desarrollo

de videojuegos es uacutenico pero similares a los

esfuerzos de software Es la uacutenica que combina el

trabajo de los equipos que cubren muacuteltiples

disciplinas (arte muacutesica actuacioacuten

programacioacuten etc) y que el juego de

acoplamiento que se busca a traveacutes del uso de

prototipos e iteraciones Con ello el desarrollo

del juego se enfrenta a desafiacuteos que pueden ser

abordadas mediante las praacutecticas tradicionales de

SE La industria tiene que adoptar buenas

praacutecticas de SE para sus distintas necesidades

tales como la gestioacuten de activos multimedia y

encontrar el fundamento en el juego La industria

debe asumir los retos por la evolucioacuten de los

meacutetodos de SE para satisfacer sus necesidades

Este trabajo investiga estos desafiacuteos y praacutecticas

de ingenieriacutea destaca para mitigar estos

problemas

V ENTRA EN EL JUEGO

Lo que la IS para desarrolladores de juegos hace

es

Mezcla de ingenieriacutea y el arte El software como

una praacutectica como una preocupacioacuten profesional

Meacutetodos para aprender a disentildear y fabricar un

producto El desarrollo del personaje e ingenieriacutea

de software Estrategias para hacer el mejor uso

de la ingenieriacutea del conocimiento formalizado El

aprendizaje de las habilidades que se pueden

aplicar en cualquier lugar

VI REQUISITOS

Esta parte ofrece una visioacuten general de los

conceptos y herramientas necesarias para la

obtencioacuten de requisitos

IDENTIFICAR LO QUE SE CONSIDERA UN REQUISITO DE SOFTWARE

ESTABLECER LOS CRITERIOS PARA DAR SENTIDO A LOS REQUISITOS Y LA

ESCRITURA DETERMINAR LA MANERA DE REUNIR LOS REQUISITOS O DESCUBRIR

EXPLORAR COacuteMO EMPLEAR CASOS DE USO PARA PERFECCIONAR Y

ANALIZAR LAS NECESIDADES ENCONTRAR TEacuteCNICAS PARA CONFIRMAR QUE LOS REQUISITOS ESTEacuteN

COMPLETOS

VERIFICAR LA EXACTITUD DE LOS REQUISITOS TRACE CAMBIOS EN LOS REQUISITOS

VII PROGRAMADOR DEL MOTOR DEL JUEGO

Fig 1 Juego RPG

] INGENIERIacuteA DE SOFTWARE

17

INGENIERIacuteA DE SISTEMAS

Los programadores de juegos motores crear el

motor de base del juego incluyendo la fiacutesica de

simulacioacuten y disciplinas graacuteficas

A Fiacutesica del motor del programador

Programador de un juego de la fiacutesica se dedica

al desarrollo de las fiacutesica de un juego se emplean

Por lo general un juego de soacutelo simular algunos

aspectos de la fiacutesica del mundo real Por ejemplo

un juego de espacio puede necesitar simulada

gravedad pero no tendriacutea ninguna necesidad

para simular agua viscosidad

Para un juego de rol como World of Warcraft

soacutelo un programador de la fiacutesica puede ser

necesaria Para un juego de combate complejo

como Battlefield 1942 los equipos de

programadores de la fiacutesica pueden ser necesarias

B motor de graacuteficos del programador

A pesar de todos los programadores antildeadir

tanto los contenidos y la experiencia que ofrece

un juego un programador de juego se centra maacutes

en la estrategia de un juego la aplicacioacuten de la

mecaacutenica del juego y la loacutegica y la sensacioacuten

de un juego

Esto no suele ser una disciplina independiente

como lo que este programador es por lo general

se diferencia de un juego a otro y que

inevitablemente se veraacute involucrado con las aacutereas

maacutes especializadas de desarrollo del juego como

los graacuteficos o el sonido

VIII EQUIPO DE TRABAJO

Fig 2 Grupo de trabajo

Un equipo de desarrollo en una organizacioacuten de

ingenieriacutea de software se compone de un grupo

de personas que trabajan en funciones

especializadas para lograr un objetivo comuacuten El

objetivo es la realizacioacuten de un proyecto Un

proyecto se define como un esfuerzo temporal

emprendido para crear un producto uacutenico

servicio o resultado

Aquiacute una pequentildea lista incompleta de algunos de

los componentes de un equipo de trabajo para

Desarrollo de juegos

Analista de requerimientos recopilar y analizar

los requisitos para el software

Arquitecto de software determinar la mejor

arquitectura para el software Seleccionar

Los componentes del proveedor para su inclusioacuten

en el esfuerzo de desarrollo

Disentildeador de software acotar el software para

lograr un rendimiento y otros

Objetivos

Prueba de software probador del software para

garantizar que funcione de acuerdo a la

Requisitos

Programador senior desarrollar bajo nivel de

documentacioacuten de disentildeo sirven como una

tecno-

Ventaja teacutecnica para los demaacutes e implementar el

software de acuerdo

Para el disentildeo

Programador implementar el software de acuerdo

al disentildeo

Trabajos de mantenimiento en el programador de

software creado durante el desarrollo anterior

Los esfuerzos para agregar funcionalidad o

eliminar errores de trabajo con

Atencioacuten al cliente

IX LENGUAJE UNIFICADO DE MODELADO (UML)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

18

Tomando en cuenta que el UML es un estaacutendar

muy flexible Nos da razoacuten que podemos pensar

en el diagrama

como herramientas que permiten realizar

diferentes tipos de trabajo Para revisar un poco

Use un diagrama de casos de uso para reunir y estudiar los requisitos para los propoacutesitos de disentildeo o pruebas

Use un diagrama de actividades para explorar los escenarios de casos de uso

Use un diagrama de clases para identificar las clases y ver coacutemo las

clases se relacionan entre siacute Use un diagrama de objetos para ver coacutemo un objeto se comunica con

otro

Use un diagrama de estado para explorar los atributos de cambio de objeto

Use un diagrama de secuencia para explorar a fondo un caso de uso

mediante el trazado de la orden en el que los objetos enviar mensajes a siacute mismos o entre siacute

Use un diagrama de colaboracioacuten para ver la loacutegica del sistema y la

forma en que los objetos envian mensajes entre siacute Use un diagrama de componentes para explorar y si existen los

subsistemas dentro de su juego

Use un diagrama de implementacioacuten para encontrar la manera de

configurar el paquete de instalacioacuten para su juego

X CONCLUSIONES

El desarrollo de los juegos se han vueltos mas

complejos con el pasar del tiempo y para el

desarrollo de un juego que este a la vanguardia

de la competencia se debe trabajar con la IS es

una forma eficaz de conseguir un juego de

calidad internacional

Referencias [9] Software Engineering for Game Developers by john P Flynt with Omar

Salem [10] httpieeexploreieeeorgxplloginjsptp=amparnumber=5070627ampurl=http

3A2F2Fieeexploreieeeorg2Fiel52F50705742F50705752F05

070627pdf3Farnumber

[11] httpgamedevstackexchangecomquestions19934abstract-game-engine-design

] INGENIERIacuteA DE SOFTWARE

19

INGENIERIacuteA DE SISTEMAS

Estrategias de Prueba del Software Miguel Angel Callisaya Quispe Universidad San Francisco de Asiacutes Av 20 de Octubre La Paz Bolivia

maccc19hotmailcom

Resumen Una estrategia de software es un mecanismo que

proporciona una guiacutea o base pasa ver la forma como se debe

desarrollar la aplicacioacuten en cuanto a meacutetodos esfuerzo

tiempo y recursos que son necesarios para lograr un producto

exitoso

La frecuencia con las que realicen las pruebas es de gran

importancia ya que de estaacute manera se pueda la en encontrar

los errores antes de que se conviertan en errores para la

aplicacioacuten si no se lleva un orden de aplicacioacuten de las pruebas

se va a perder tiempo recurso y sobre todo esfuerzo

Durante las primeras etapas de las pruebas es importante

concentrar toda la atencioacuten en un pequentildeo grupo de

componentes o en un componente que se considere importante

para el desarrollo tanto en los datos como en la parte loacutegica de

la aplicacioacuten

El objetivo final de las estrategias de prueba es documentar la

forma en el que equipo ha hecho el desarrollo y el seguimiento

que se le ha hecho a cada una de las etapas durante las etapas

de desarrollo e implementacioacuten

Palabras clave Calidad Prueba Estrategias Sistema

I INTRODUCCIOacuteN

Durante este articulo es importante mencionar algunos

aspectos que determinan el eacutexito de la aplicacioacuten de las

estrategias de prueba como lo son el enfoque estrateacutegico

para la prueba de software aspectos estrateacutegicos

estrategias de prueba para software convencional

estrategias de prueba para software orientado a objeto

estrategia de prueba para webapps pruebas de validacioacuten y

por uacuteltimo las pruebas del sistema

IIESTRATEGIAS DE PRUEBA DEL SOFTWARE

Verificacioacuten Estamos construyendo el producto

correctamente

Validacioacuten Estamos construyendo el producto correcto

Integracioacuten descendente

La integracioacuten descendente es un planteamiento

incremental a la construccioacuten de la estructura de programas

Se integran los moacutedulos movieacutendose hacia abajo por la

jerarquiacutea de control comenzando por el moacutedulo de control

principal (programa principal) Los moacutedulos subordinados

(de cualquier modo subordinados) al moacutedulo de control

principal se van incorporando en la estructura bien de

forma primero-en-profundidad o bien de forma primero-en-

anchura Fig1

Integracioacuten ascendente

La prueba de la integracioacuten ascendente como su nombre

indica empieza la construccioacuten y la prueba con los

moacutedulos atoacutemicos (es decir moacutedulos de los niveles maacutes

bajos de la estructura del programa) Dado que los moacutedulos

se integran de abajo hacia arriba el proceso requerido de

los moacutedulos subordinados a un nivel dado siempre estaacuten

disponibles y se elimina la necesidad de resguardos Fig2

Fig 1 Integracioacuten descendente

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

20

Fig 3 Integracioacuten Ascendente

Aspectos Estrateacutegicos

Tom Gilb plantea que se deben abordar los

siguientes puntos si se desea implementar con

eacutexito una estrategia de prueba del software

Especificar los requisitos del producto de manera

cuantificable mucho antes de que comiencen las pruebas

-Establecer los objetivos de la prueba de manera expliacutecita (teacuterminos

medibles)

-Comprender queacute usuarios va a tener el software y desarrollar un perfil

-Desarrollar un plan de prueba que haga hincapieacute en la prueba de ciclo

raacutepido

-Construir un software ―robusto disentildeado para probarse a siacute mismo

-Usar revisiones teacutecnicas formales efectivas como filtro antes de la

prueba

Llevar a cabo revisiones teacutecnicas formales para evaluar la

estrategia de prueba y los propios casos de prueba

Desarrollar un enfoque de mejora continua al proceso de

prueba Deberiacutea medirse la estrategia de prueba

Prueba de Unidad

La prueba de unidad centra el proceso de

verificacioacuten en la menor unidad del disentildeo del

software el moacutedulo La prueba de unidad siempre

esta orientada a caja blanca y este paso se suele

llevar a cabo en paralelo para muacuteltiples moacutedulos

Pruebas de Alfa y Beta

C u a n d o s e c o n s t r u y e s o f t w a r e a m e d i d a s e

l l e v a n a c a b o u n a s e r i e d e p r u e b a s d e

a c e p t a c i oacute n p a r a permitir que el cliente valide todos

los requisitos La prueba alfa se lleva a cabo en el

lugar del desarrollo pero por un cliente Se usa el

software en forma normal con el desarrollador como

observador del usuario y registrando los errores y

problemas de uso(entorno controlado)La prueba beta se

lleva a cabo por los usuarios finales en los lugares

de trabajo de los clientes El cliente registra los

problemas y los informa a intervalos regulare

Pruebas del sistema

La prueba del sistema estaacute constituida por una

serie de pruebas diferentes cuyo propoacutesito es

ejercitar profundamente el sistema

Prueba de recuperacioacuten

E s l a p r u e b a d e l s i s t e m a q u e f u e r z a a l

f a l l o d e l s o f t w a r e d e m u c h a s f o r m a s y

v e r i f i c a q u e l a recuperacioacuten se lleva a cabo

apropiadamente Recuperacioacuten automaacutetica o manual

Prueba de seguridad

Intenta verificar que los mecanismos de proteccioacuten

incorporados en el sistema lo protegeraacute de hecho de

accesos impropios

Pruebas de Resistencia

Estaacuten disentildeadas para enfrentar a los programas con

situaciones anormales Una variante de la prueba de

resistencia es una teacutecnica denominada prueba de

sensibilidad intenta descubrir combinaciones de datos

dentro de una clase de entrada valida que pueda producir

inestabilidad o un proceso incorrecto

El arte de la depuracioacuten

La depuracioacuten ocurre como consecuencia de una

prueba efectiva Cuando un caso de prueba

descubre u n e r r o r l a d e p u r a c i oacute n e s e l

p r o c e s o q u e p r o v o c a l a e l i m i n a c i oacute n d e l

e r r o r E l p r o c e s o m e n t a l q u e conecta un siacutentoma

con una causa es la depuracioacuten

El proceso de la depuracioacuten

E l p r o c e s o d e d e p u r a c i oacute n i n t e n t a h a c e r

c o r r e s p o n d e r e l s iacute n t o m a c o n u n a c a u s a

l l e v a n d o a s iacute a l a correccioacuten del error El proceso de

depuracioacuten siempre tiene uno de los dos resultados

siguientes

(1)se encuentra la causa se corrige y se elimina

o

(2)no se encuentra la causa En eacuteste uacuteltimo caso la persona

que realiza la depuracioacuten debe sospechar la causa disentildear

un caso de prueba que ayude a confirmar sus sospechas y el

trabajo vuelve hacia atraacutes a la correccioacuten del error de una

forma iterativa iquestPor queacute es tan difiacutecil la depuracioacuten

Varias caracteriacutesticas de los errores nos dan algunas

] INGENIERIacuteA DE SOFTWARE

21

INGENIERIacuteA DE SISTEMAS

pistas1El siacutentoma y la causa pueden ser

geograacuteficamente remotos entre siacute2El siacutentoma

puede desaparecer (temporalmente) al corregir

otro error

3 E l s iacute n t o m a p u e d e r e a l m e n t e e s t a r

p r o d u c i d o p o r a l g o q u e n o e s u n e r r o r

( i n e x a c t i t u d d e l o s redondeos)

4El siacutentoma puede estar causado por un error

humano que no sea faacutecilmente detectado

5El siacutentoma puede ser el resultado de problemas

de temporizacioacuten en vez de problema s de proceso

6Puede ser difiacutecil reproducir exactamente las

condiciones de entrada

7 E l s iacute n t o m a p u e d e a p a r e c e r e n f o r m a

i n t e r m i t e n t e

8 E l s iacute n t o m a p u e d e s e r d e b i d o a c a u s a s q u e

s e d i s t r i b u y e n p o r u n a s e r i e d e t a r e a s

e j e c u t aacute n d o s e e n diferentes procesadores

IIICONCLUCIONES

Las estrategias de prueba del software es un mecanismo

que proporciona una guiacutea o base pasa ver la forma como se

debe desarrollar la aplicacioacuten en cuanto a meacutetodos para

logra un producto exitoso

IVREFERENCIAS

httpbuenastareascomensayosEstategias-de-prueba-de-

software3752643html

httpwwwestrategiascompruebaagil

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

22

Ingenieriacutea Inversa Juan Carlos Zenteno Sanga

1

Departamento de Ingenieriacutea de Sistemas Universidad San Francisco de Asiacutes

Direccioacuten Incluyendo el Paiacutes 1juanka_58hotmailcom

Resumenmdash La ingenieriacutea de Software es parte del modelo de

proceso de reingenieriacutea de software es el proceso de analizar

un programa con la finalidad de crear una representacioacuten del

programa en un grado mayor de abstraccioacuten del coacutedigo

fuente las herramientas de ingenieriacutea inversa obtienen

informacioacuten del disentildeo de datos arquitectoacutenico y de

procedimientos a partir de un programa existente

En el siguiente artiacuteculo se veraacuten los conceptos baacutesicos y se

denotara un ejemplo praacutectico para una mayor comprensioacuten

del tema

Palabras clave mdash Ingenieriacutea de Software Reingenieriacutea

Linux Ingenieriacutea Inversa

XI INTRODUCCIOacuteN

Inmersa en el aacuterea de conocimiento de la

ingenieriacutea de software se encuentra la ingenieriacutea

inversa como punto de apoyo para los procesos

de anaacutelisis y disentildeo propuestos en diferentes

meacutetodos de desarrollo

La ingenieriacutea inversa permite subsanar esta

deficiencia al documentar los productos de

software a partir del coacutedigo ejecutable con el fin

de obtener los artefactos de anaacutelisis y disentildeo

La ingenieriacutea inversa es ademaacutes una

herramienta uacutetil que ayuda en el proceso de

aseguramiento de la calidad del software

mediante la comparacioacuten de diagramas de fases

de anaacutelisis y desarrollo se apoya comuacutenmente en

la generacioacuten del diagrama de clases debido a la

importancia de este diagrama en la fase de disentildeo

y su facilidad de generacioacuten Existen tambieacuten

otros diagramas de intereacutes como el de

comunicacioacuten y el de secuencias que modelan

las caracteriacutesticas dinaacutemicas de un producto de

software

Hoy en diacutea los productos maacutes comuacutenmente

sometidos a la Ingenieriacutea Inversa son los

productos de Hardware y Software pero

cualquier producto puede ser sometido a este

proceso

Aplicar ingenieriacutea Inversa a algo supone

profundizar el estudio de su funcionamiento

En el caso concreto del Software se conoce

por ingenieriacutea de software a la actividad que se

ocupa de describir coacutemo funciona un programa

de cuyo coacutedigo no se dispone hasta el punto de

generar coacutedigo propio que cumpla con las

mismas funciones Un ejemplo claacutesico del uso de

esta teacutecnica es el software de pago donde las

empresas utilizan esta teacutecnica para proteger sus

productos contra posibles acceso no autorizados

o examinar el producto final para encontrar

posibles bugs inesperados en la ejecucioacuten de

dicho sistema

Existe una gran variedad de software

desensamblador y depurador para aplicar esta

teacutecnica

En resumen la idea general al aplicar

ingenieriacutea inversa es

Conocer a fondo la aplicacioacuten y generar un

mejor coacutedigo

Migrar la aplicacioacuten a un nuevo sistema operativo

Hacer o completar la documentacioacuten

] INGENIERIacuteA DE SOFTWARE

23

INGENIERIacuteA DE SISTEMAS

Verificar que el coacutedigo en estudio cumple las

especificaciones del disentildeo estaacutendar

La informacioacuten extraiacuteda de la lectura del

coacutedigo fuente son las especificaciones de disentildeo

modelos de flujo de control diagramas de disentildeo

documentos de especificacioacuten de disentildeo

pudiendo tomarse estas especificaciones como

nuevo punto de partida para aplicar ingenieriacutea

inversa y obtener informacioacuten a mayor nivel de

abstraccioacuten

Dado que es una labor estrateacutegica es

conveniente conocer cuando conviene realizar la

tarea de Ingenieriacutea inversa para una aplicacioacuten y

cuaacutendo es maacutes rentable sustituirla e implementar

una nueva Las aplicaciones para el primer paso

son aquellas en la que se produce las siguientes

situaciones

bull Fallos frecuentes que son difiacuteciles de

localizar

bull Son poco eficientes pero realizan la funcioacuten

esperada

bull Dificultades en la integracioacuten con otros

sistemas

bull Calidad pobre del software final

bull Resistencia a introducir cambios

bull Pocas personas capacitadas para realizar

modificaciones

bull Dificultades para realizar pruebas

bull El mantenimiento consume muchos recursos

XII LAS BASES DE LA INGENIERIA INVERSA

Los ejemplos maacutes trascendentes sobre los

inicios de la ingenieriacutea inversa son claramente las

investigaciones realizadas sobre antiguos

artefactos creados por humanos ancestrales con

el fin de descubrir la manera en que funcionaban

Uno de los maacutes conocidos es el llamado

mecanismo de Antikythera (Fig 1) el cual se

piensa que fue disentildeado para fines astronoacutemicos

por los griegos siendo uno de los primeros

artefactos que funcionaban con ruedas de

engranes

Figura 1 Antikythera (mecanismo presuntamente creado para fines astronoacutemicos)

Podemos entonces implantar un paralelo en aquella

mitoloacutegica buacutesqueda de descubrimiento sobre el

funcionamiento de esos artefactos y la ingenieriacutea inversa

actual usada en ingenieriacutea de software estableciendo un

importante factor en comuacuten la falta de documentacioacuten En

este ambiente es muy comuacuten contar con una especie de caja

negra en donde sabemos lo que ingresamos y el resultado

que obtenemos pero desconocemos el procedimiento con la

precisioacuten que necesitariacuteamos para replicarlo

Esta falta de documentacioacuten es el impulso

principal de toda la ingenieriacutea inversa las

finalidades de la misma pueden variar pero este

factor inicial nunca lo haraacute

XIII INGENIERIA INVERSA COMO UN PROCESO DE

REINGENIERIA

La ingenieriacutea inversa tiene la misioacuten de

desentrantildear los misterios y secretos de los

sistemas en uso

Baacutesicamente recupera el disentildeo de la

aplicacioacuten a partir del coacutedigo esto se realiza

mediante herramientas que extraen la

informacioacuten de los datos procedimientos y

arquitecturas del sistema

Es aplicable a sistemas con las siguientes

caracteriacutesticas

Documentacioacuten inexistente o totalmente obsoleta

Programacioacuten en bloque de coacutedigos muy grandes

yo sin estructural

La aplicacioacuten cubre gran parte de los requisitos

y el rendimiento esperado

A Nivel de abstraccioacuten

El nivel de Abstraccioacuten de un proceso de

Ingenieriacutea Inversa y las herramientas que se

utilizan para realizarlo aluden la sofisticacioacuten de

la informacioacuten de disentildeo que se puede extraer del

coacutedigo fuente Este proceso deberiacutea ser capaz de

derivar

Sus representaciones de disentildeo de procedimiento

(con un bajo nivel de abstraccioacuten)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

24

La informacioacuten de las estructuras de datos de

procedimiento (con un nivel de abstraccioacuten

ligeramente maacutes elevado)

Modelos de flujo de datos de control (un nivel de

abstraccioacuten relativamente alto)

Modelos de entidades y de relaciones (un elevado

nivel de abstraccioacuten)

B Completitud

En la mayoriacutea de los casos la completitud

decrece a medida que aumenta el grado de

abstraccioacuten

La completitud mejora en proporcioacuten directa a

la cantidad de anaacutelisis efectuado por la persona

que estaacute efectuando la ingenieriacutea inversa

C Interactividad

La interactividad alude al grado con el cual el

ser humano se integra con las herramientas

automatizadas para crear un proceso de

ingenieriacutea inversa efectivo

D Proceso

El Proceso de ingenieriacutea inversa (Fig 2) es el encargado

de reestructurar el coacutedigo fuente para que solamente

contenga instrucciones de programacioacuten estructurada Lo

que hace que el coacutedigo sea maacutes faacutecil de leer y proporciona

la base para las subsiguientes actividades de ingenieriacutea

inversa

Figura 2 Diagrama de Proceso de la Ingenieriacutea Inversa

E Reestructuracioacuten

La reestructuracioacuten del software modifica el

coacutedigo fuente y los datos en un intento adecuado

a futuros cambios esta no modifica la

arquitectura global del programa Tiene a

centrarse en los detalles de disentildeo de moacutedulos

individuales y en estructuras de datos locales

definidas dentro de los moacutedulos

Estos son algunos de los beneficios que se

pueden lograr cuando se reestructura el software

Programas de mayor calidad

Reduce el esfuerzo requerido para llevar a cabo

las actividades de mantenimiento

Hace el software maacutes sencillo para comprobar y

depurar

F Re documentacioacuten

Es el proceso mediante el cual se produce

documentacioacuten retroactivamente desde un

sistema existente

Es considerada una forma de ingenieriacutea inversa

porque la documentacioacuten reconstruida es usada

para ayudar al conocimiento del programa

XIV UTILIZANDO EL METODO CIENTIFICO EN LA

INGENIERIA INVERSA

Ante cualquier dificultad tecnoloacutegica el

meacutetodo cientiacutefico siempre es y seraacute nuestra maacutes

preciada arma Partamos imaginando un pequentildeo

dilema relacionado con el tema de ingenieriacutea de

software especiacuteficamente con un sencillo

programa (Fig 3)

Figura 3 Pantalla de aplicacioacuten que nos serviraacute de ejemplo

Esta sencilla aplicacioacuten mostraraacute un mensaje con cierto

resultado y aun siendo un problema demasiado sencillo

para considerarlo como un reto el objetivo es soacutelo describir

] INGENIERIacuteA DE SOFTWARE

25

INGENIERIacuteA DE SISTEMAS

las acciones usuales del proceso las cuales son aplicables

en escalas muy superiores

El resultado mostrado por el programa dentro del mensaje

emergente se basa en nuestra entrada pero nosotros

desconocemos en lo absoluto los procedimientos utilizados

sobre esta entrada para producir aquella respuesta

A La Observacioacuten es Trascendental

Primero es importante observar el problema su

comportamiento Es substancial tratar de lograr

un pensamiento inductivo en donde logremos

identificar el principio particular del problema

para poder llegar a extrapolarlo a una solucioacuten

general

El punto de quiebre se produce en este instante

Ya al haber observado la aplicacioacuten podriacuteamos

decidir procesar los datos que nos entrega y

lograr crear un coacutedigo equivalente o investigar el

funcionamiento interno

B Dentro de la aplicacioacuten

Luego de la formulacioacuten de una hipoacutetesis sobre

su funcionamiento necesitamos algunas

herramientas para comenzar con la investigacioacuten

En el caso de esta aplicacioacuten con un poco de

conocimientos del lenguaje ensamblador de

programacioacuten tradicional y un descompilador es

suficiente

Es importante emprender de buena forma

nuestro sondeo ser ordenados y metoacutedicos en la

tarea En este momento las capacidades analiacuteticas

y loacutegicas son muy importantes para alivianar

nuestra faena

Lo fundamental es conocer muy bien el

entorno en que nos desenvolveremos En este es

punto indispensable saber que una aplicacioacuten

para Windows necesita invocar internamente al

punto de entrada MessageBox o MessageBoxEx

de la libreriacutea de sistema user32dll para poder

desplegar un mensaje (Fig 4)

Figura 4 Resultado de la Aplicacioacuten

Ya con esa pista es sencillo encontrar el

fragmento de coacutedigo relacionado con las

operaciones relacionadas a nuestro nuacutemero de

entrada que tendriacutea una forma similar a la

mostrada a continuacioacuten en nuestro

descompilador (Fig 5)

Figura 5 Vista del Programa en Ensamblador

Cualquier programador intuiriacutea faacutecilmente lo

que hacen las liacuteneas superiores de esta aplicacioacuten

en especial sprintf es parte de la libreriacutea estaacutendar

de C++ Claramente vemos tambieacuten el tiacutetulo de la

ventana en el coacutedigo estos valores son

interpretados de forma inteligente por este

descompilador en especial y en particular nos

asiste de sobremanera a comprender el coacutedigo

Lo siguiente es sencillamente explorar paso a

paso las acciones superiores de caacutelculo del

resultado En esta instancia seraacute ideal realizar

numerosas pruebas para estar completamente

seguros de que logramos develar el secreto tras la

funcionalidad objetivo (Fig 6)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

26

Figura 6 Inicio del coacutedigo al que aplicaremos ingenieriacutea inversa

Hay que detenerse algunos segundos a

individualizar algunos procedimientos del

anaacutelisis que a simple vista pueden parecer

inconcebibles con el fin de poder generar una

tesis concluyente

Cabe destacar que se omitiraacuten pasos

intermedios de asignaciones de memoria y otros

formalismos propios de ensamblador para

favorecer el entendimiento del lector

Inicialmente tenemos el valor de entrada

supuestamente ya leiacutedo desde el cuadro de

diaacutelogo del programa ahora nos enfocamos en la

primera accioacuten importante Asumiremos el valor

de entrada como una incoacutegnita

En el siguiente trozo de coacutedigo la liacutenea

destacada antildeadioacute siete a nuestra incoacutegnita (Fig 7)

Figura 7 Coacutedigo donde se denota la adicioacuten de 7 a nuestra ecuacioacuten

A continuacioacuten se multiplica ese valor

resultante de la suma por el mismo (Fig 8)

Figura 8 Coacutedigo donde se denota la multiplicacioacuten del valor por la suma

Nuevamente multiplicamos el resultado por el

anterior proporcionado tras la suma En esta

segunda vez ya podemos expresar la operacioacuten

simplemente elevando al cubo la suma anterior

(Fig 9)

Figura 9 Coacutedigo que denota una nueva multiplicacioacuten del resultante

Ahora le restamos diez al resultado

El procedimiento que viene a continuacioacuten

propone un mayor desafiacuteo intelectual Un nuacutemero

constante en este caso el cargado al registro

EAX (Fig 10)

Figura 10 ubicacioacuten del nuacutemero constante EAX

Generalmente la divisioacuten es algo maacutes costosa

en tiempo de procesador que otras operaciones

por lo que ciertos compiladores incluyen tablas

de constantes las cuales son llamadas ―nuacutemeros

maacutegicos para la divisioacuten entera

d Con signo Sin signo

m (hex) s m (hex) a s

-5 99999999 1

-3 55555555 1

-2k 7FFFFFFF k-

1

1 mdash mdash 0 1 0

2k 80000001 k-

1 232-k 0 0

3 55555556 0 AAAAAAAB 0 1

5 66666667 1 CCCCCCCD 0 2

6 2AAAAAAB 0 AAAAAAAB 0 2

7 92492493 2 24924925 1 3

9 38E38E39 1 38E38E39 0 1

10 66666667 2 CCCCCCCD 0 3

11 2E8BA2E9 1 BA2E8BA3 0 3

] INGENIERIacuteA DE SOFTWARE

27

INGENIERIacuteA DE SISTEMAS

12 2AAAAAAB 1 AAAAAAAB 0 3

25 51EB851F 3 51EB851F 0 3

125 10624DD3 3 10624DD3 0 3

Tabla 1 Algunos nuacutemeros maacutegicos (32 bits)

Ahora bien conociendo la tabla 1 sabiendo

que el nuacutemero cargado en esta ocasioacuten

corresponde al once lo que hace el coacutedigo es

multiplicar el resultado de la salida temporal por

aquel nuacutemero (Fig 11)

Figura 11 Multiplicacioacuten del resultante por el numero 11

Naturalmente la multiplicacioacuten por un nuacutemero

tan grande produce una especie de

desbordamiento en el registro contenedor del

resultado al exceder el tamantildeo de palabra del

procesador (en este caso de 32 bits) Estos bits

sobrantes se almacenan naturalmente en el

registro EDX registro que es contiguo a ECX

dentro de la memoria de los registros del

procesador

Ahora desplazamos un bit del registro EDX

(equivalente a una divisioacuten entera por dos) para

obtener la solucioacuten de la divisioacuten por once

generando una sencilla ecuacioacuten

Figura 12 Desplazamiento del bit de registro EDX

El uacuteltimo paso luego de documentar estos

resultados seraacute crear una aplicacioacuten que recree

esta foacutermula soacutelo en caso de tener intenciones de

re-codificacioacuten del desarrollo Consumando este

punto es sencillo confeccionar un diagrama con

todo el proceso anteriormente visto

XV CONCLUSIONES

Queda claro que el tema de la ingenieriacutea

inversa es uno de los toacutepicos maacutes interesantes a

los que podriacutea afrontarse un profesional de la

tecnologiacutea y en general disfrutar el largo proceso

involucrado gracias al desafiacuteo poco predecible

que presenta

En general podemos darnos cuenta de que no

existen muchas metodologiacuteas y teoriacuteas estrictas

sobre coacutemo aplicar las teacutecnicas de ingenieriacutea

inversa Afortunadamente un ingeniero estaacute

preparado para afrentar desafiacuteos de este tipo

Adicionalmente podemos deducir tambieacuten el

aspecto bidireccional de la ingenieriacutea inversa

pues como ya lo comprobamos no solo es un

desafiacuteo aplicarla sino que tambieacuten lo es tener que

dificultar el proceso o incluso tratar de impedirlo

si la situacioacuten lo requiere

REFERENCIAS

[12] Roger Pressman Ingenieriacutea de Software ―Un Enfoque Moderno 6th ed

MC Graw Hill [13] httpeswikipediaorgwikiIngenieria_inversa

[14] httpwwwinfosecwritersconntext_resourcespdfsoftware_security_and_r

everse_engineeringpdf [15] httperwinriedclmodo=visorampelemento=239

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

28

METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO Univ Alejandro Meacutendez Escobar

Universidad San Francisco de Asiacutes

Ingenieriacutea de Sistemas

Ingenieriacutea de Software I

La Paz - Bolivia

amendezusfaedubo

Resumenmdash Al adquirir el software educativo dentro del campo de

desarrollo de software una gran importancia y siendo este

inspiracioacuten de propuestas de innumerables metodologiacuteas que buscan

la elaboracioacuten de un software de calidad

Tomaremos la metodologiacutea Aacutencora enfocada a la fase de

requerimientos y que ofrece elementos que indican las actividades

que deben realizarse los artefactos que se producen y la forma de

obtenerlos

Usando al desarrollo de software educativo como ejemplo de una

mejor comprensioacuten de dicha metodologiacutea analizando la aplicacioacuten

del Aacutencora en un trabajo propuesto para el Instituto Tecnoloacutegico de

Orizaba Meacutexico

Palabras clave mdash Aacutencora Metodologiacutea Desarrollo de Software

Educativo Requerimientos Calidad

XVI INTRODUCCIOacuteN

Hoy en diacutea la tecnologiacutea esta dentro de las

actividades que realizamos es asiacute que la educacioacuten no

queda exenta de ella por o cual es necesario adaptarse

al movimiento tecnoloacutegico que nos trae grandes

ventajas en la transmisioacuten de conocimientos de una

manera sencilla y dinaacutemica

De esta manera han surgido infinidad de

metodologiacuteas de desarrollo de software educativo el

cual tiene como objetivo ser el apoyo para docentes

alumnos y toda persona que este dentro del proceso de

aprendizaje

Tomando en cuenta este ramillete infinito de

metodologiacuteas surge en el ejemplo propuesto la

adaptacioacuten del Aacutencora en el desarrollo de software

educativo teniendo como objetivo principal la

comprensioacuten de los elementos y conceptos de la

metodologiacutea Aacutencora

Aacutencora es una metodologiacutea enfocada a la

adquisicioacuten de requerimientos para software que

ofrece guiacuteas y elementos de apoyo para la obtencioacuten de

estos requerimientos Al mismo tiempo permite pasar a

la fase de disentildeo de manera sencilla Aprovechando las

ventajas que presenta Aacutencora se le hicieron algunas

adaptaciones con el fin de cubrir algunas

caracteriacutesticas del disentildeo instruccional y enriquecer

Aacutencora habilitaacutendola para la adquisicioacuten de

requerimientos de software educativo

XVII APLICACIOacuteN DE LA METODOLOGIacuteA AacuteNCORA

Como es el objetivo principal la comprensioacuten de la

aplicacioacuten de la metodologiacutea Aacutencora dentro del

desarrollo de software educativo de calidad solo

describiremos los meacutetodos del meacutetodo y los resultados

obtenidos

Claro esta que para ahondar maacutes en tema del

software educativo en si el lector puede recurrir a los

siguientes autores Metodologiacutea de desarrollo de

sistemas multimedia (Vaughan 2006) Propuesta de

metodologiacutea para el disentildeo desarrollo y evaluacioacuten

de software educativo (Reyes 2009) Ingenieriacutea de

software educativo con modelaje orientado por objetos

(Goacutemez 1998) asi como tambieacuten los siguientes

modelos ADDIE (Anaacutelisis Disentildeo Desarrollo

Implantacioacuten y Evaluacioacuten) de (McGriff 2000) y el

disentildeo instruccional aplicado al desarrollo de software

educativo EISE (Especificacioacuten Instruccional de

Software Educativo) de (Hernaacutendez 2005)

] INGENIERIacuteA DE SOFTWARE

29

INGENIERIacuteA DE SISTEMAS

Quienes tienen el mismo objetivo de crear software

educativo de calidad podemos sintetizar de ellos los

siguientes puntos

Anaacutelisis del puacuteblico al que se dirigiraacute el software

Problema oacute necesidad educativa a atender

Anaacutelisis de contenido (Tema a tratar actividades

para alcanzar el objetivo de ensentildeanza y forma de

evaluarlo)

Actividades oacute forma actual de llevar a cabo la

ensentildeanza del tema en cuestioacuten

Elaboracioacuten de guiones metaacuteforas escenarios

Creacioacuten de prototipo oacute Storyboard

Disentildeo de interfaz

Mapas de navegacioacuten

Modelos de datos

Elaboracioacuten de diagramas de contexto diagramas

de flujo o diagramas de casos de uso

Ahora enfocaacutendonos en el aacutencora se establece la

propuesta de seleccionar las actividades de Aacutencora que

permitan obtener los requerimientos de un software

educativo

La Tabla 1 presenta las actividades y artefactos

producidos en las fases de Aacutencora para la elaboracioacuten

de software educativo

TABLA 1 ACTIVIDADES Y ARTEFACTOS DE LA METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO

Metodologiacutea Aacutencora

Fases Actividades y artefactos

Anaacutelisis de

Requerimientos

A traveacutes de entrevistas con los clientes

(maestros y pedagogos) y de la lectura

del respectivo material proporcionado

por ellos se definiraacute la asignatura a la

que se enfocaraacute el software el tema a

tratar y la forma en que se abordaraacute y

evaluaraacute Tambieacuten se estableceraacute el

objetivo general de aprendizaje la

metaacutefora que se emplearaacute y se

determinaraacute el puacuteblico al que se

dirigiraacute el software

Artefactos

Documento que define la asignatura

contenido objetivo general de

aprendizaje metaacutefora y puacuteblico al que

se dirigiraacute el software Guion de la

situacioacuten actual

Recoleccioacuten y

clasificacioacuten de

requerimientos

El guion de la propuesta

computacional reflejaraacute la metaacutefora

que se sigue el ambiente de cada

escena

La bitaacutecora de desarrollo permitiraacute ver

coacutemo el sistema responderaacute a las

diversas acciones que realice el

usuario

En lugar del prototipo raacutepido se

elaboraraacute un Storyboard para presentar

graacuteficamente la estructura de sistema

propuesto

Artefactos

Guion de propuesta computacional

bitaacutecora de desarrollo Storyboard

Resolucioacuten de

conflictos

jerarquizacioacuten y

validacioacuten de

requerimientos

Modificaciones al guion de la

propuesta computacional de acuerdo a

los cambios propuestos por los

maestros y pedagogos

Artefactos

Guion de propuesta computacional e

Storyboard con adecuaciones sentildealas

Cierre

Trasladar los guiones a casos de uso

Artefactos

Casos de uso

Se agregaron algunas caracteriacutesticas a ciertos

artefactos de Aacutencora para poder cubrir los

requerimientos de software educativo Uno de estos

elementos es el guion de la propuesta computacional

al que se propone agregar lo siguiente

Conocimientos previos del usuario Se refiere a los

conocimientos baacutesicos o miacutenimos que debe tener el

alumno para poder interactuar con el moacutedulo

Objetivo de aprendizaje Es el aprendizaje que

debe obtener el alumno despueacutes de haber interactuado

con el moacutedulo

La Figura 1 se presenta la estructura sugerida para el

guion de la propuesta computacional En la bitaacutecora de

desarrollo se propone antildeadir una fila al final de cada

pista donde se describan las situaciones favorables y

no favorables para el cumplimiento del objetivo de

aprendizaje para esa pista en particular Por otra parte

en lugar del prototipo se sugiere utilizar el Storyboard

ya que permite mostrar de manera maacutes completa la

estructura del guion de la propuesta computacional La

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

30

Figura 2 muestra el formato para la elaboracioacuten del

Storyboard

Figura 1 Estructura del guion para la propuesta computacional

Figura 2 Formato para la elaboracioacuten del Storyboard

XVIII RESULTADOS

Aplicando Aacutencora en un ejemplo para la parte de

requerimientos se obtuvo la siguiente informacioacuten

Asignatura Matemaacuteticas

Contenido Estaacute articulado con base en seis ejes

con sus respectivos temas y subtemas que variacutean de

acuerdo al grado escolar Considerando lo anterior se

tiene lo siguiente

a) Grado escolar De segundo hasta quinto grado de

primaria

b) Temas Nuacutemeros naturales capacidad peso

tiempo y ubicacioacuten espacial planteamiento y

resolucioacuten de problemas sencillos en los que se

requiera recolectar y registrar informacioacuten

perioacutedicamente representacioacuten de informacioacuten en

tablas de frecuencia y graacuteficas de barras registros de

los resultados de experimentos aleatorios

representacioacuten de los resultados de un experimento

aleatorio en tablas y graacuteficas

c) Subtemas Planteamiento y resolucioacuten de

problemas que impliquen dos o maacutes operaciones con

nuacutemeros naturales

d) Ejes Introduccioacuten del kiloacutemetro como la unidad

que permite medir grandes distancias y recorridos

largos capacidad peso y tiempo uso del reloj y el

calendario los nuacutemeros sus relaciones y sus

operaciones medicioacuten la prediccioacuten y el azar

tratamiento de la informacioacuten

Objetivo general de aprendizaje Ejercitar las

operaciones aritmeacuteticas baacutesicas interpretar la

informacioacuten y los resultados de la informacioacuten dada

aplicada en situaciones de la vida cotidiana

Con las actividades hasta ahora realizadas se ha

observado que los artefactos de Aacutencora son flexibles y

pueden por lo tanto adaptarse de acuerdo a las

necesidades que implican la adquisicioacuten de

requerimientos de un software educativo Tambieacuten se

aprecian las ventajas de algunos artefactos como la

bitaacutecora de desarrollo que permite determinar las

respuestas del sistema ante las acciones del usuario y

estimar tambieacuten el tiempo que llevaraacute implementar

cada quinteta

La estimacioacuten del tiempo ayuda a tener un valor

aproximado del tiempo de desarrollo de software

Agregar el objetivo de aprendizaje a la bitaacutecora de

desarrollo puede parecer repetitivo despueacutes de

incluirlo en el Storyboard pero esto nos permite ver las

situaciones u obstaacuteculos que pueden impedir que el

objetivo de aprendizaje se alcance y por tanto tenerlos

presente durante el disentildeo A pesar de las ventajas de

la bitaacutecora de desarrollo un inconveniente hasta ahora

encontrado es lo tedioso al manejar muchas quintetas

] INGENIERIacuteA DE SOFTWARE

31

INGENIERIacuteA DE SISTEMAS

cuando por la naturaleza del guion se tienen varios

avisos y mensajes para el usuario Por otra parte los

guiones han ayudado a realizar de manera sencilla el

modelo de casos de uso

En lo referente a la presentacioacuten con los clientes el

guion es un artefacto que pude dar un panorama

general del software que se va a elaborar y queda

reforzada a traveacutes de los Storyboard Cuando se

requieren cambios solicitados por los clientes las

modificaciones a estos artefactos no han sido muy

complicadas dado que por su estructura es faacutecil de

ubicar las secciones y respectivos elementos

XIX CONCLUSIONES

Con los resultados hasta ahora obtenidos se puede

decir que la propuesta permite a los desarrolladores

con poca experiencia en desarrollo de software

educativo obtener los requerimientos de una manera

sencilla

Permite realizar un mejor relevamiento de informacioacuten

de los requerimientos del cliente enfocaacutendonos mas en

este

Es tambieacuten importante mencionar los avances que

tiene y seguiraacute teniendo el software educativo aplicado

no solo a nivel escolar sino tambieacuten al superior

Habiendo revisado el concepto y la aplicacioacuten de la

metodologiacutea Aacutencora en el desarrollo de software

educativo se llegoacute a una comprensioacuten mas extensa de

dicho meacutetodo el cual es de gran importancia dentro de

la ingenieriacutea de Software ya que nos

REFERENCIAS

httpwwwuvmxmisproductividaddocumentsCarmenChay_CIIM2010pdf

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 14: Revista de Ingenieria de Software

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

14

ambiente del mercado no fomenta la preocupacioacuten por estos

temas o bien por su poco intereacutes real en la buacutesqueda de la

calidad

III La actualidad

La gran mayoriacutea de los sistemas de software creados hoy en

diacutea son los llamados sistemas corporativos es decir son

orientados a formar una parte importante de los negocios de

las grandes empresas

Continuando en nuestro contexto se identifica un nuevo

enfoque del problema de desarrollo el apoyo en la

sincronizacioacuten de los procesos de negocio estructuras

complejas de informacioacuten manejada por el negocio todo esto

entrelazado por restricciones dadas por las reglas del negocio

La tecnologiacutea actual por otro lado ha alejado maacutes todaviacutea los

ingenieros de las maacutequinas sistemas operativos incluso de

las tareas de programacioacuten

El enfoque de la mayoriacutea de los equipos de desarrollo e

ingenieros participes en proyectos sigue siendo con un bajo

nivel de abstraccioacuten cerca de la codificacioacuten Se tiende a

pensar en la base de datos a utilizar establecer la navegacioacuten

de las paacuteginas programar los protocolos de comunicacioacuten etc

Esto lleva a utilizar las tareas de programacioacuten y de pruebas

para validar el entendimiento y cumplimiento de la

funcionalidad de los sistemas

Lo anteriormente expuesto muestra un problema

metodoloacutegico consecuencia de un desfase entre el enfoque

teoacuterico oacuteptimo (anaacutelisis de negocio) y el enfoque praacutectico real

(programacioacuten y pruebas) en los proyectos de hoy En otras

palabras la metodologiacutea actualmente usada estaacute atrasada con

respecto al avance tecnoloacutegico

Desarrollando maacutes esta idea se identifican algunos

problemas concretos de las metodologiacuteas

Ellas no obligan a sus ejecutores a respetar todas las

normas y los procedimientos establecidos especialmente

en las etapas tempranas del proyecto Es muy faacutecil y

tentador ―saltar una o maacutes de estas etapas uno o maacutes

documentos o modelos pasando directamente a

implementacioacuten produccioacuten y posterior correccioacuten de los

sistemas desarrollados

Control de calidad del producto final La codificacioacuten y

complejidad del programa es demasiada para ser revisada

y verificada fehacientemente Por otro lado los coacutedigos

fuentes y los ejecutables actualmente son los uacutenicos

entregables eficientemente verificables

Estos dos problemas al parecer forman una situacioacuten

contradictoria la metodologiacutea tradicional no permite validar

eficientemente la calidad de los sistemas antes de llegar al

coacutedigo fuente y por otro lado tampoco permite llegar

eficientemente a coacutedigos fuentes de calidad

IV Futuro

La salida de este ―ciacuterculo vicioso que se propone es

bastante natural analizar la situacioacuten actual de la ingenieriacutea

de software en la luz de sus tendencias histoacutericas

La primera de ellas relacionada con los problemas que

resuelven los sistemas obviamente presente y muy utilizada

en nuestra realidad los sistemas de hoy no soacutelo resuelven los

problemas del mundo real sino que estaacuten fuertemente influen-

ciando el desarrollo del mundo real

Fig2 Modela

El enfoque de los ingenieros desde hace unos antildeos no se ha

movido significativamente por el camino del aumento de

abstraccioacuten establecido histoacutericamente Se han hecho ciertos

avances en temas puntuales (como arquitecturas de

componentes patrones de disentildeo nuevos lenguajes de

programacioacuten etc) pero conceptualmente

metodoloacutegicamente la tarea de programacioacuten sigue siendo

ejecutada de la misma forma escribiendo coacutedigos fuentes en

forma de los programas textuales

Eacuteste es justamente el ―atraso metodoloacutegico que se

mencionoacute Para disminuir la brecha entre las tendencias

histoacutericas es necesario ajustar la metodologiacutea en teacuterminos de

aumentar la abstraccioacuten del enfoque de los ingenieros de

software y acercarlo a la abstraccioacuten del problema

El aumento de la abstraccioacuten del proceso de desarrollo del

software hace pensar que la proacutexima generacioacuten de meacutetodos

de desarrollo se perfila en un conceptualmente nuevo con-

] INGENIERIacuteA DE SOFTWARE

15

INGENIERIacuteA DE SISTEMAS

junto de herramientas que permitan aumentar en un mayor

grado al actual la abstraccioacuten escondiendo los detalles de maacutes

bajo nivel

Fig3 Probable modelo a futuro

Las nuevas herramientas permitiraacuten ―programar en nivel

de anaacutelisis generando coacutedigos en un lenguaje de

programacioacuten tradicional de forma automaacutetica tal como hoy

los compiladores generan el lenguaje maacutequina a partir del

coacutedigo fuente Nuevos ―lenguajes de programacioacuten

naturalmente seriacutean visuales y se pareceriacutean a las

especificaciones de software en uno de los lenguajes de

modelamiento por ejemplo UML

V Conclusioacuten

Es muy probable que estemos proacuteximos a ver un nuevo

paso evolutivo en la ingenieriacutea de software Tan grande como

el invento de lenguajes de alto nivel o anaacutelisis y disentildeo

orientado a objetos Una nueva generacioacuten que absorberaacute a la

actual automatizando la mayoriacutea de las buenas praacutecticas

usadas actualmente

Una pregunta natural es si una maacutequina puede llegar a

generar programas tan buenos como los hechos por un pro-

gramador experto En vez de ―romper la cabeza con esta

pregunta ahora quizaacutes seriacutea suficiente recordarse otra vez de

la historia Los primeros compiladores de ninguna generacioacuten

alcanzaban de inmediato lo deseable y oacuteptimo Sin embargo

con el paso del tiempo apoyados en la experiencia de los

ingenieros y en el avance tecnoloacutegico se mejoraban hasta el

nivel de superar significativamente las generaciones

anteriores

Es poco factible que hoy en diacutea alguien cuestione la calidad

de los compiladores de por ejemplo Java y la calidad del

coacutedigo de maacutequina generado por ellos

VI Referencias [6] Website [Online]

httpwwwenterpriseanalystnetdownloadmda_informaticap

df

[7] httpwwwslidesharenetamrrochafuturo-del-software-impacto-en-las-organizaciones-y-en-los-profesionales

[8] httpwwwdcubaareventseci2008conferenciasIngSoftHexacta

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

16

Ingenieriacutea de Software para

Desarrolladores de juegos Huascar Huanca Orozco

Ingenieria de Sistemas San francisco de Asis

Av20 de Octubre esq Belisario Salinas

hhuncausfaedubo

ResumenmdashEn este artiacuteculo veremos una lo que es ldquoIS para

Desarrolladores de juegosrdquo si crees que un juego es facil pues

te equivocas en este articulo mostramos el uso de la IS en la

cracion de juegos que metodos utilizan y la complejidad que

representa para el equipo de desarrollo

1) Palabras clave mdash UMLRequisitosjuegoequipo de trabajo motor del juego

IV INTRODUCCIOacuteN

En la ingenieriacutea de software (IS) el desarrollo

de videojuegos es uacutenico pero similares a los

esfuerzos de software Es la uacutenica que combina el

trabajo de los equipos que cubren muacuteltiples

disciplinas (arte muacutesica actuacioacuten

programacioacuten etc) y que el juego de

acoplamiento que se busca a traveacutes del uso de

prototipos e iteraciones Con ello el desarrollo

del juego se enfrenta a desafiacuteos que pueden ser

abordadas mediante las praacutecticas tradicionales de

SE La industria tiene que adoptar buenas

praacutecticas de SE para sus distintas necesidades

tales como la gestioacuten de activos multimedia y

encontrar el fundamento en el juego La industria

debe asumir los retos por la evolucioacuten de los

meacutetodos de SE para satisfacer sus necesidades

Este trabajo investiga estos desafiacuteos y praacutecticas

de ingenieriacutea destaca para mitigar estos

problemas

V ENTRA EN EL JUEGO

Lo que la IS para desarrolladores de juegos hace

es

Mezcla de ingenieriacutea y el arte El software como

una praacutectica como una preocupacioacuten profesional

Meacutetodos para aprender a disentildear y fabricar un

producto El desarrollo del personaje e ingenieriacutea

de software Estrategias para hacer el mejor uso

de la ingenieriacutea del conocimiento formalizado El

aprendizaje de las habilidades que se pueden

aplicar en cualquier lugar

VI REQUISITOS

Esta parte ofrece una visioacuten general de los

conceptos y herramientas necesarias para la

obtencioacuten de requisitos

IDENTIFICAR LO QUE SE CONSIDERA UN REQUISITO DE SOFTWARE

ESTABLECER LOS CRITERIOS PARA DAR SENTIDO A LOS REQUISITOS Y LA

ESCRITURA DETERMINAR LA MANERA DE REUNIR LOS REQUISITOS O DESCUBRIR

EXPLORAR COacuteMO EMPLEAR CASOS DE USO PARA PERFECCIONAR Y

ANALIZAR LAS NECESIDADES ENCONTRAR TEacuteCNICAS PARA CONFIRMAR QUE LOS REQUISITOS ESTEacuteN

COMPLETOS

VERIFICAR LA EXACTITUD DE LOS REQUISITOS TRACE CAMBIOS EN LOS REQUISITOS

VII PROGRAMADOR DEL MOTOR DEL JUEGO

Fig 1 Juego RPG

] INGENIERIacuteA DE SOFTWARE

17

INGENIERIacuteA DE SISTEMAS

Los programadores de juegos motores crear el

motor de base del juego incluyendo la fiacutesica de

simulacioacuten y disciplinas graacuteficas

A Fiacutesica del motor del programador

Programador de un juego de la fiacutesica se dedica

al desarrollo de las fiacutesica de un juego se emplean

Por lo general un juego de soacutelo simular algunos

aspectos de la fiacutesica del mundo real Por ejemplo

un juego de espacio puede necesitar simulada

gravedad pero no tendriacutea ninguna necesidad

para simular agua viscosidad

Para un juego de rol como World of Warcraft

soacutelo un programador de la fiacutesica puede ser

necesaria Para un juego de combate complejo

como Battlefield 1942 los equipos de

programadores de la fiacutesica pueden ser necesarias

B motor de graacuteficos del programador

A pesar de todos los programadores antildeadir

tanto los contenidos y la experiencia que ofrece

un juego un programador de juego se centra maacutes

en la estrategia de un juego la aplicacioacuten de la

mecaacutenica del juego y la loacutegica y la sensacioacuten

de un juego

Esto no suele ser una disciplina independiente

como lo que este programador es por lo general

se diferencia de un juego a otro y que

inevitablemente se veraacute involucrado con las aacutereas

maacutes especializadas de desarrollo del juego como

los graacuteficos o el sonido

VIII EQUIPO DE TRABAJO

Fig 2 Grupo de trabajo

Un equipo de desarrollo en una organizacioacuten de

ingenieriacutea de software se compone de un grupo

de personas que trabajan en funciones

especializadas para lograr un objetivo comuacuten El

objetivo es la realizacioacuten de un proyecto Un

proyecto se define como un esfuerzo temporal

emprendido para crear un producto uacutenico

servicio o resultado

Aquiacute una pequentildea lista incompleta de algunos de

los componentes de un equipo de trabajo para

Desarrollo de juegos

Analista de requerimientos recopilar y analizar

los requisitos para el software

Arquitecto de software determinar la mejor

arquitectura para el software Seleccionar

Los componentes del proveedor para su inclusioacuten

en el esfuerzo de desarrollo

Disentildeador de software acotar el software para

lograr un rendimiento y otros

Objetivos

Prueba de software probador del software para

garantizar que funcione de acuerdo a la

Requisitos

Programador senior desarrollar bajo nivel de

documentacioacuten de disentildeo sirven como una

tecno-

Ventaja teacutecnica para los demaacutes e implementar el

software de acuerdo

Para el disentildeo

Programador implementar el software de acuerdo

al disentildeo

Trabajos de mantenimiento en el programador de

software creado durante el desarrollo anterior

Los esfuerzos para agregar funcionalidad o

eliminar errores de trabajo con

Atencioacuten al cliente

IX LENGUAJE UNIFICADO DE MODELADO (UML)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

18

Tomando en cuenta que el UML es un estaacutendar

muy flexible Nos da razoacuten que podemos pensar

en el diagrama

como herramientas que permiten realizar

diferentes tipos de trabajo Para revisar un poco

Use un diagrama de casos de uso para reunir y estudiar los requisitos para los propoacutesitos de disentildeo o pruebas

Use un diagrama de actividades para explorar los escenarios de casos de uso

Use un diagrama de clases para identificar las clases y ver coacutemo las

clases se relacionan entre siacute Use un diagrama de objetos para ver coacutemo un objeto se comunica con

otro

Use un diagrama de estado para explorar los atributos de cambio de objeto

Use un diagrama de secuencia para explorar a fondo un caso de uso

mediante el trazado de la orden en el que los objetos enviar mensajes a siacute mismos o entre siacute

Use un diagrama de colaboracioacuten para ver la loacutegica del sistema y la

forma en que los objetos envian mensajes entre siacute Use un diagrama de componentes para explorar y si existen los

subsistemas dentro de su juego

Use un diagrama de implementacioacuten para encontrar la manera de

configurar el paquete de instalacioacuten para su juego

X CONCLUSIONES

El desarrollo de los juegos se han vueltos mas

complejos con el pasar del tiempo y para el

desarrollo de un juego que este a la vanguardia

de la competencia se debe trabajar con la IS es

una forma eficaz de conseguir un juego de

calidad internacional

Referencias [9] Software Engineering for Game Developers by john P Flynt with Omar

Salem [10] httpieeexploreieeeorgxplloginjsptp=amparnumber=5070627ampurl=http

3A2F2Fieeexploreieeeorg2Fiel52F50705742F50705752F05

070627pdf3Farnumber

[11] httpgamedevstackexchangecomquestions19934abstract-game-engine-design

] INGENIERIacuteA DE SOFTWARE

19

INGENIERIacuteA DE SISTEMAS

Estrategias de Prueba del Software Miguel Angel Callisaya Quispe Universidad San Francisco de Asiacutes Av 20 de Octubre La Paz Bolivia

maccc19hotmailcom

Resumen Una estrategia de software es un mecanismo que

proporciona una guiacutea o base pasa ver la forma como se debe

desarrollar la aplicacioacuten en cuanto a meacutetodos esfuerzo

tiempo y recursos que son necesarios para lograr un producto

exitoso

La frecuencia con las que realicen las pruebas es de gran

importancia ya que de estaacute manera se pueda la en encontrar

los errores antes de que se conviertan en errores para la

aplicacioacuten si no se lleva un orden de aplicacioacuten de las pruebas

se va a perder tiempo recurso y sobre todo esfuerzo

Durante las primeras etapas de las pruebas es importante

concentrar toda la atencioacuten en un pequentildeo grupo de

componentes o en un componente que se considere importante

para el desarrollo tanto en los datos como en la parte loacutegica de

la aplicacioacuten

El objetivo final de las estrategias de prueba es documentar la

forma en el que equipo ha hecho el desarrollo y el seguimiento

que se le ha hecho a cada una de las etapas durante las etapas

de desarrollo e implementacioacuten

Palabras clave Calidad Prueba Estrategias Sistema

I INTRODUCCIOacuteN

Durante este articulo es importante mencionar algunos

aspectos que determinan el eacutexito de la aplicacioacuten de las

estrategias de prueba como lo son el enfoque estrateacutegico

para la prueba de software aspectos estrateacutegicos

estrategias de prueba para software convencional

estrategias de prueba para software orientado a objeto

estrategia de prueba para webapps pruebas de validacioacuten y

por uacuteltimo las pruebas del sistema

IIESTRATEGIAS DE PRUEBA DEL SOFTWARE

Verificacioacuten Estamos construyendo el producto

correctamente

Validacioacuten Estamos construyendo el producto correcto

Integracioacuten descendente

La integracioacuten descendente es un planteamiento

incremental a la construccioacuten de la estructura de programas

Se integran los moacutedulos movieacutendose hacia abajo por la

jerarquiacutea de control comenzando por el moacutedulo de control

principal (programa principal) Los moacutedulos subordinados

(de cualquier modo subordinados) al moacutedulo de control

principal se van incorporando en la estructura bien de

forma primero-en-profundidad o bien de forma primero-en-

anchura Fig1

Integracioacuten ascendente

La prueba de la integracioacuten ascendente como su nombre

indica empieza la construccioacuten y la prueba con los

moacutedulos atoacutemicos (es decir moacutedulos de los niveles maacutes

bajos de la estructura del programa) Dado que los moacutedulos

se integran de abajo hacia arriba el proceso requerido de

los moacutedulos subordinados a un nivel dado siempre estaacuten

disponibles y se elimina la necesidad de resguardos Fig2

Fig 1 Integracioacuten descendente

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

20

Fig 3 Integracioacuten Ascendente

Aspectos Estrateacutegicos

Tom Gilb plantea que se deben abordar los

siguientes puntos si se desea implementar con

eacutexito una estrategia de prueba del software

Especificar los requisitos del producto de manera

cuantificable mucho antes de que comiencen las pruebas

-Establecer los objetivos de la prueba de manera expliacutecita (teacuterminos

medibles)

-Comprender queacute usuarios va a tener el software y desarrollar un perfil

-Desarrollar un plan de prueba que haga hincapieacute en la prueba de ciclo

raacutepido

-Construir un software ―robusto disentildeado para probarse a siacute mismo

-Usar revisiones teacutecnicas formales efectivas como filtro antes de la

prueba

Llevar a cabo revisiones teacutecnicas formales para evaluar la

estrategia de prueba y los propios casos de prueba

Desarrollar un enfoque de mejora continua al proceso de

prueba Deberiacutea medirse la estrategia de prueba

Prueba de Unidad

La prueba de unidad centra el proceso de

verificacioacuten en la menor unidad del disentildeo del

software el moacutedulo La prueba de unidad siempre

esta orientada a caja blanca y este paso se suele

llevar a cabo en paralelo para muacuteltiples moacutedulos

Pruebas de Alfa y Beta

C u a n d o s e c o n s t r u y e s o f t w a r e a m e d i d a s e

l l e v a n a c a b o u n a s e r i e d e p r u e b a s d e

a c e p t a c i oacute n p a r a permitir que el cliente valide todos

los requisitos La prueba alfa se lleva a cabo en el

lugar del desarrollo pero por un cliente Se usa el

software en forma normal con el desarrollador como

observador del usuario y registrando los errores y

problemas de uso(entorno controlado)La prueba beta se

lleva a cabo por los usuarios finales en los lugares

de trabajo de los clientes El cliente registra los

problemas y los informa a intervalos regulare

Pruebas del sistema

La prueba del sistema estaacute constituida por una

serie de pruebas diferentes cuyo propoacutesito es

ejercitar profundamente el sistema

Prueba de recuperacioacuten

E s l a p r u e b a d e l s i s t e m a q u e f u e r z a a l

f a l l o d e l s o f t w a r e d e m u c h a s f o r m a s y

v e r i f i c a q u e l a recuperacioacuten se lleva a cabo

apropiadamente Recuperacioacuten automaacutetica o manual

Prueba de seguridad

Intenta verificar que los mecanismos de proteccioacuten

incorporados en el sistema lo protegeraacute de hecho de

accesos impropios

Pruebas de Resistencia

Estaacuten disentildeadas para enfrentar a los programas con

situaciones anormales Una variante de la prueba de

resistencia es una teacutecnica denominada prueba de

sensibilidad intenta descubrir combinaciones de datos

dentro de una clase de entrada valida que pueda producir

inestabilidad o un proceso incorrecto

El arte de la depuracioacuten

La depuracioacuten ocurre como consecuencia de una

prueba efectiva Cuando un caso de prueba

descubre u n e r r o r l a d e p u r a c i oacute n e s e l

p r o c e s o q u e p r o v o c a l a e l i m i n a c i oacute n d e l

e r r o r E l p r o c e s o m e n t a l q u e conecta un siacutentoma

con una causa es la depuracioacuten

El proceso de la depuracioacuten

E l p r o c e s o d e d e p u r a c i oacute n i n t e n t a h a c e r

c o r r e s p o n d e r e l s iacute n t o m a c o n u n a c a u s a

l l e v a n d o a s iacute a l a correccioacuten del error El proceso de

depuracioacuten siempre tiene uno de los dos resultados

siguientes

(1)se encuentra la causa se corrige y se elimina

o

(2)no se encuentra la causa En eacuteste uacuteltimo caso la persona

que realiza la depuracioacuten debe sospechar la causa disentildear

un caso de prueba que ayude a confirmar sus sospechas y el

trabajo vuelve hacia atraacutes a la correccioacuten del error de una

forma iterativa iquestPor queacute es tan difiacutecil la depuracioacuten

Varias caracteriacutesticas de los errores nos dan algunas

] INGENIERIacuteA DE SOFTWARE

21

INGENIERIacuteA DE SISTEMAS

pistas1El siacutentoma y la causa pueden ser

geograacuteficamente remotos entre siacute2El siacutentoma

puede desaparecer (temporalmente) al corregir

otro error

3 E l s iacute n t o m a p u e d e r e a l m e n t e e s t a r

p r o d u c i d o p o r a l g o q u e n o e s u n e r r o r

( i n e x a c t i t u d d e l o s redondeos)

4El siacutentoma puede estar causado por un error

humano que no sea faacutecilmente detectado

5El siacutentoma puede ser el resultado de problemas

de temporizacioacuten en vez de problema s de proceso

6Puede ser difiacutecil reproducir exactamente las

condiciones de entrada

7 E l s iacute n t o m a p u e d e a p a r e c e r e n f o r m a

i n t e r m i t e n t e

8 E l s iacute n t o m a p u e d e s e r d e b i d o a c a u s a s q u e

s e d i s t r i b u y e n p o r u n a s e r i e d e t a r e a s

e j e c u t aacute n d o s e e n diferentes procesadores

IIICONCLUCIONES

Las estrategias de prueba del software es un mecanismo

que proporciona una guiacutea o base pasa ver la forma como se

debe desarrollar la aplicacioacuten en cuanto a meacutetodos para

logra un producto exitoso

IVREFERENCIAS

httpbuenastareascomensayosEstategias-de-prueba-de-

software3752643html

httpwwwestrategiascompruebaagil

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

22

Ingenieriacutea Inversa Juan Carlos Zenteno Sanga

1

Departamento de Ingenieriacutea de Sistemas Universidad San Francisco de Asiacutes

Direccioacuten Incluyendo el Paiacutes 1juanka_58hotmailcom

Resumenmdash La ingenieriacutea de Software es parte del modelo de

proceso de reingenieriacutea de software es el proceso de analizar

un programa con la finalidad de crear una representacioacuten del

programa en un grado mayor de abstraccioacuten del coacutedigo

fuente las herramientas de ingenieriacutea inversa obtienen

informacioacuten del disentildeo de datos arquitectoacutenico y de

procedimientos a partir de un programa existente

En el siguiente artiacuteculo se veraacuten los conceptos baacutesicos y se

denotara un ejemplo praacutectico para una mayor comprensioacuten

del tema

Palabras clave mdash Ingenieriacutea de Software Reingenieriacutea

Linux Ingenieriacutea Inversa

XI INTRODUCCIOacuteN

Inmersa en el aacuterea de conocimiento de la

ingenieriacutea de software se encuentra la ingenieriacutea

inversa como punto de apoyo para los procesos

de anaacutelisis y disentildeo propuestos en diferentes

meacutetodos de desarrollo

La ingenieriacutea inversa permite subsanar esta

deficiencia al documentar los productos de

software a partir del coacutedigo ejecutable con el fin

de obtener los artefactos de anaacutelisis y disentildeo

La ingenieriacutea inversa es ademaacutes una

herramienta uacutetil que ayuda en el proceso de

aseguramiento de la calidad del software

mediante la comparacioacuten de diagramas de fases

de anaacutelisis y desarrollo se apoya comuacutenmente en

la generacioacuten del diagrama de clases debido a la

importancia de este diagrama en la fase de disentildeo

y su facilidad de generacioacuten Existen tambieacuten

otros diagramas de intereacutes como el de

comunicacioacuten y el de secuencias que modelan

las caracteriacutesticas dinaacutemicas de un producto de

software

Hoy en diacutea los productos maacutes comuacutenmente

sometidos a la Ingenieriacutea Inversa son los

productos de Hardware y Software pero

cualquier producto puede ser sometido a este

proceso

Aplicar ingenieriacutea Inversa a algo supone

profundizar el estudio de su funcionamiento

En el caso concreto del Software se conoce

por ingenieriacutea de software a la actividad que se

ocupa de describir coacutemo funciona un programa

de cuyo coacutedigo no se dispone hasta el punto de

generar coacutedigo propio que cumpla con las

mismas funciones Un ejemplo claacutesico del uso de

esta teacutecnica es el software de pago donde las

empresas utilizan esta teacutecnica para proteger sus

productos contra posibles acceso no autorizados

o examinar el producto final para encontrar

posibles bugs inesperados en la ejecucioacuten de

dicho sistema

Existe una gran variedad de software

desensamblador y depurador para aplicar esta

teacutecnica

En resumen la idea general al aplicar

ingenieriacutea inversa es

Conocer a fondo la aplicacioacuten y generar un

mejor coacutedigo

Migrar la aplicacioacuten a un nuevo sistema operativo

Hacer o completar la documentacioacuten

] INGENIERIacuteA DE SOFTWARE

23

INGENIERIacuteA DE SISTEMAS

Verificar que el coacutedigo en estudio cumple las

especificaciones del disentildeo estaacutendar

La informacioacuten extraiacuteda de la lectura del

coacutedigo fuente son las especificaciones de disentildeo

modelos de flujo de control diagramas de disentildeo

documentos de especificacioacuten de disentildeo

pudiendo tomarse estas especificaciones como

nuevo punto de partida para aplicar ingenieriacutea

inversa y obtener informacioacuten a mayor nivel de

abstraccioacuten

Dado que es una labor estrateacutegica es

conveniente conocer cuando conviene realizar la

tarea de Ingenieriacutea inversa para una aplicacioacuten y

cuaacutendo es maacutes rentable sustituirla e implementar

una nueva Las aplicaciones para el primer paso

son aquellas en la que se produce las siguientes

situaciones

bull Fallos frecuentes que son difiacuteciles de

localizar

bull Son poco eficientes pero realizan la funcioacuten

esperada

bull Dificultades en la integracioacuten con otros

sistemas

bull Calidad pobre del software final

bull Resistencia a introducir cambios

bull Pocas personas capacitadas para realizar

modificaciones

bull Dificultades para realizar pruebas

bull El mantenimiento consume muchos recursos

XII LAS BASES DE LA INGENIERIA INVERSA

Los ejemplos maacutes trascendentes sobre los

inicios de la ingenieriacutea inversa son claramente las

investigaciones realizadas sobre antiguos

artefactos creados por humanos ancestrales con

el fin de descubrir la manera en que funcionaban

Uno de los maacutes conocidos es el llamado

mecanismo de Antikythera (Fig 1) el cual se

piensa que fue disentildeado para fines astronoacutemicos

por los griegos siendo uno de los primeros

artefactos que funcionaban con ruedas de

engranes

Figura 1 Antikythera (mecanismo presuntamente creado para fines astronoacutemicos)

Podemos entonces implantar un paralelo en aquella

mitoloacutegica buacutesqueda de descubrimiento sobre el

funcionamiento de esos artefactos y la ingenieriacutea inversa

actual usada en ingenieriacutea de software estableciendo un

importante factor en comuacuten la falta de documentacioacuten En

este ambiente es muy comuacuten contar con una especie de caja

negra en donde sabemos lo que ingresamos y el resultado

que obtenemos pero desconocemos el procedimiento con la

precisioacuten que necesitariacuteamos para replicarlo

Esta falta de documentacioacuten es el impulso

principal de toda la ingenieriacutea inversa las

finalidades de la misma pueden variar pero este

factor inicial nunca lo haraacute

XIII INGENIERIA INVERSA COMO UN PROCESO DE

REINGENIERIA

La ingenieriacutea inversa tiene la misioacuten de

desentrantildear los misterios y secretos de los

sistemas en uso

Baacutesicamente recupera el disentildeo de la

aplicacioacuten a partir del coacutedigo esto se realiza

mediante herramientas que extraen la

informacioacuten de los datos procedimientos y

arquitecturas del sistema

Es aplicable a sistemas con las siguientes

caracteriacutesticas

Documentacioacuten inexistente o totalmente obsoleta

Programacioacuten en bloque de coacutedigos muy grandes

yo sin estructural

La aplicacioacuten cubre gran parte de los requisitos

y el rendimiento esperado

A Nivel de abstraccioacuten

El nivel de Abstraccioacuten de un proceso de

Ingenieriacutea Inversa y las herramientas que se

utilizan para realizarlo aluden la sofisticacioacuten de

la informacioacuten de disentildeo que se puede extraer del

coacutedigo fuente Este proceso deberiacutea ser capaz de

derivar

Sus representaciones de disentildeo de procedimiento

(con un bajo nivel de abstraccioacuten)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

24

La informacioacuten de las estructuras de datos de

procedimiento (con un nivel de abstraccioacuten

ligeramente maacutes elevado)

Modelos de flujo de datos de control (un nivel de

abstraccioacuten relativamente alto)

Modelos de entidades y de relaciones (un elevado

nivel de abstraccioacuten)

B Completitud

En la mayoriacutea de los casos la completitud

decrece a medida que aumenta el grado de

abstraccioacuten

La completitud mejora en proporcioacuten directa a

la cantidad de anaacutelisis efectuado por la persona

que estaacute efectuando la ingenieriacutea inversa

C Interactividad

La interactividad alude al grado con el cual el

ser humano se integra con las herramientas

automatizadas para crear un proceso de

ingenieriacutea inversa efectivo

D Proceso

El Proceso de ingenieriacutea inversa (Fig 2) es el encargado

de reestructurar el coacutedigo fuente para que solamente

contenga instrucciones de programacioacuten estructurada Lo

que hace que el coacutedigo sea maacutes faacutecil de leer y proporciona

la base para las subsiguientes actividades de ingenieriacutea

inversa

Figura 2 Diagrama de Proceso de la Ingenieriacutea Inversa

E Reestructuracioacuten

La reestructuracioacuten del software modifica el

coacutedigo fuente y los datos en un intento adecuado

a futuros cambios esta no modifica la

arquitectura global del programa Tiene a

centrarse en los detalles de disentildeo de moacutedulos

individuales y en estructuras de datos locales

definidas dentro de los moacutedulos

Estos son algunos de los beneficios que se

pueden lograr cuando se reestructura el software

Programas de mayor calidad

Reduce el esfuerzo requerido para llevar a cabo

las actividades de mantenimiento

Hace el software maacutes sencillo para comprobar y

depurar

F Re documentacioacuten

Es el proceso mediante el cual se produce

documentacioacuten retroactivamente desde un

sistema existente

Es considerada una forma de ingenieriacutea inversa

porque la documentacioacuten reconstruida es usada

para ayudar al conocimiento del programa

XIV UTILIZANDO EL METODO CIENTIFICO EN LA

INGENIERIA INVERSA

Ante cualquier dificultad tecnoloacutegica el

meacutetodo cientiacutefico siempre es y seraacute nuestra maacutes

preciada arma Partamos imaginando un pequentildeo

dilema relacionado con el tema de ingenieriacutea de

software especiacuteficamente con un sencillo

programa (Fig 3)

Figura 3 Pantalla de aplicacioacuten que nos serviraacute de ejemplo

Esta sencilla aplicacioacuten mostraraacute un mensaje con cierto

resultado y aun siendo un problema demasiado sencillo

para considerarlo como un reto el objetivo es soacutelo describir

] INGENIERIacuteA DE SOFTWARE

25

INGENIERIacuteA DE SISTEMAS

las acciones usuales del proceso las cuales son aplicables

en escalas muy superiores

El resultado mostrado por el programa dentro del mensaje

emergente se basa en nuestra entrada pero nosotros

desconocemos en lo absoluto los procedimientos utilizados

sobre esta entrada para producir aquella respuesta

A La Observacioacuten es Trascendental

Primero es importante observar el problema su

comportamiento Es substancial tratar de lograr

un pensamiento inductivo en donde logremos

identificar el principio particular del problema

para poder llegar a extrapolarlo a una solucioacuten

general

El punto de quiebre se produce en este instante

Ya al haber observado la aplicacioacuten podriacuteamos

decidir procesar los datos que nos entrega y

lograr crear un coacutedigo equivalente o investigar el

funcionamiento interno

B Dentro de la aplicacioacuten

Luego de la formulacioacuten de una hipoacutetesis sobre

su funcionamiento necesitamos algunas

herramientas para comenzar con la investigacioacuten

En el caso de esta aplicacioacuten con un poco de

conocimientos del lenguaje ensamblador de

programacioacuten tradicional y un descompilador es

suficiente

Es importante emprender de buena forma

nuestro sondeo ser ordenados y metoacutedicos en la

tarea En este momento las capacidades analiacuteticas

y loacutegicas son muy importantes para alivianar

nuestra faena

Lo fundamental es conocer muy bien el

entorno en que nos desenvolveremos En este es

punto indispensable saber que una aplicacioacuten

para Windows necesita invocar internamente al

punto de entrada MessageBox o MessageBoxEx

de la libreriacutea de sistema user32dll para poder

desplegar un mensaje (Fig 4)

Figura 4 Resultado de la Aplicacioacuten

Ya con esa pista es sencillo encontrar el

fragmento de coacutedigo relacionado con las

operaciones relacionadas a nuestro nuacutemero de

entrada que tendriacutea una forma similar a la

mostrada a continuacioacuten en nuestro

descompilador (Fig 5)

Figura 5 Vista del Programa en Ensamblador

Cualquier programador intuiriacutea faacutecilmente lo

que hacen las liacuteneas superiores de esta aplicacioacuten

en especial sprintf es parte de la libreriacutea estaacutendar

de C++ Claramente vemos tambieacuten el tiacutetulo de la

ventana en el coacutedigo estos valores son

interpretados de forma inteligente por este

descompilador en especial y en particular nos

asiste de sobremanera a comprender el coacutedigo

Lo siguiente es sencillamente explorar paso a

paso las acciones superiores de caacutelculo del

resultado En esta instancia seraacute ideal realizar

numerosas pruebas para estar completamente

seguros de que logramos develar el secreto tras la

funcionalidad objetivo (Fig 6)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

26

Figura 6 Inicio del coacutedigo al que aplicaremos ingenieriacutea inversa

Hay que detenerse algunos segundos a

individualizar algunos procedimientos del

anaacutelisis que a simple vista pueden parecer

inconcebibles con el fin de poder generar una

tesis concluyente

Cabe destacar que se omitiraacuten pasos

intermedios de asignaciones de memoria y otros

formalismos propios de ensamblador para

favorecer el entendimiento del lector

Inicialmente tenemos el valor de entrada

supuestamente ya leiacutedo desde el cuadro de

diaacutelogo del programa ahora nos enfocamos en la

primera accioacuten importante Asumiremos el valor

de entrada como una incoacutegnita

En el siguiente trozo de coacutedigo la liacutenea

destacada antildeadioacute siete a nuestra incoacutegnita (Fig 7)

Figura 7 Coacutedigo donde se denota la adicioacuten de 7 a nuestra ecuacioacuten

A continuacioacuten se multiplica ese valor

resultante de la suma por el mismo (Fig 8)

Figura 8 Coacutedigo donde se denota la multiplicacioacuten del valor por la suma

Nuevamente multiplicamos el resultado por el

anterior proporcionado tras la suma En esta

segunda vez ya podemos expresar la operacioacuten

simplemente elevando al cubo la suma anterior

(Fig 9)

Figura 9 Coacutedigo que denota una nueva multiplicacioacuten del resultante

Ahora le restamos diez al resultado

El procedimiento que viene a continuacioacuten

propone un mayor desafiacuteo intelectual Un nuacutemero

constante en este caso el cargado al registro

EAX (Fig 10)

Figura 10 ubicacioacuten del nuacutemero constante EAX

Generalmente la divisioacuten es algo maacutes costosa

en tiempo de procesador que otras operaciones

por lo que ciertos compiladores incluyen tablas

de constantes las cuales son llamadas ―nuacutemeros

maacutegicos para la divisioacuten entera

d Con signo Sin signo

m (hex) s m (hex) a s

-5 99999999 1

-3 55555555 1

-2k 7FFFFFFF k-

1

1 mdash mdash 0 1 0

2k 80000001 k-

1 232-k 0 0

3 55555556 0 AAAAAAAB 0 1

5 66666667 1 CCCCCCCD 0 2

6 2AAAAAAB 0 AAAAAAAB 0 2

7 92492493 2 24924925 1 3

9 38E38E39 1 38E38E39 0 1

10 66666667 2 CCCCCCCD 0 3

11 2E8BA2E9 1 BA2E8BA3 0 3

] INGENIERIacuteA DE SOFTWARE

27

INGENIERIacuteA DE SISTEMAS

12 2AAAAAAB 1 AAAAAAAB 0 3

25 51EB851F 3 51EB851F 0 3

125 10624DD3 3 10624DD3 0 3

Tabla 1 Algunos nuacutemeros maacutegicos (32 bits)

Ahora bien conociendo la tabla 1 sabiendo

que el nuacutemero cargado en esta ocasioacuten

corresponde al once lo que hace el coacutedigo es

multiplicar el resultado de la salida temporal por

aquel nuacutemero (Fig 11)

Figura 11 Multiplicacioacuten del resultante por el numero 11

Naturalmente la multiplicacioacuten por un nuacutemero

tan grande produce una especie de

desbordamiento en el registro contenedor del

resultado al exceder el tamantildeo de palabra del

procesador (en este caso de 32 bits) Estos bits

sobrantes se almacenan naturalmente en el

registro EDX registro que es contiguo a ECX

dentro de la memoria de los registros del

procesador

Ahora desplazamos un bit del registro EDX

(equivalente a una divisioacuten entera por dos) para

obtener la solucioacuten de la divisioacuten por once

generando una sencilla ecuacioacuten

Figura 12 Desplazamiento del bit de registro EDX

El uacuteltimo paso luego de documentar estos

resultados seraacute crear una aplicacioacuten que recree

esta foacutermula soacutelo en caso de tener intenciones de

re-codificacioacuten del desarrollo Consumando este

punto es sencillo confeccionar un diagrama con

todo el proceso anteriormente visto

XV CONCLUSIONES

Queda claro que el tema de la ingenieriacutea

inversa es uno de los toacutepicos maacutes interesantes a

los que podriacutea afrontarse un profesional de la

tecnologiacutea y en general disfrutar el largo proceso

involucrado gracias al desafiacuteo poco predecible

que presenta

En general podemos darnos cuenta de que no

existen muchas metodologiacuteas y teoriacuteas estrictas

sobre coacutemo aplicar las teacutecnicas de ingenieriacutea

inversa Afortunadamente un ingeniero estaacute

preparado para afrentar desafiacuteos de este tipo

Adicionalmente podemos deducir tambieacuten el

aspecto bidireccional de la ingenieriacutea inversa

pues como ya lo comprobamos no solo es un

desafiacuteo aplicarla sino que tambieacuten lo es tener que

dificultar el proceso o incluso tratar de impedirlo

si la situacioacuten lo requiere

REFERENCIAS

[12] Roger Pressman Ingenieriacutea de Software ―Un Enfoque Moderno 6th ed

MC Graw Hill [13] httpeswikipediaorgwikiIngenieria_inversa

[14] httpwwwinfosecwritersconntext_resourcespdfsoftware_security_and_r

everse_engineeringpdf [15] httperwinriedclmodo=visorampelemento=239

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

28

METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO Univ Alejandro Meacutendez Escobar

Universidad San Francisco de Asiacutes

Ingenieriacutea de Sistemas

Ingenieriacutea de Software I

La Paz - Bolivia

amendezusfaedubo

Resumenmdash Al adquirir el software educativo dentro del campo de

desarrollo de software una gran importancia y siendo este

inspiracioacuten de propuestas de innumerables metodologiacuteas que buscan

la elaboracioacuten de un software de calidad

Tomaremos la metodologiacutea Aacutencora enfocada a la fase de

requerimientos y que ofrece elementos que indican las actividades

que deben realizarse los artefactos que se producen y la forma de

obtenerlos

Usando al desarrollo de software educativo como ejemplo de una

mejor comprensioacuten de dicha metodologiacutea analizando la aplicacioacuten

del Aacutencora en un trabajo propuesto para el Instituto Tecnoloacutegico de

Orizaba Meacutexico

Palabras clave mdash Aacutencora Metodologiacutea Desarrollo de Software

Educativo Requerimientos Calidad

XVI INTRODUCCIOacuteN

Hoy en diacutea la tecnologiacutea esta dentro de las

actividades que realizamos es asiacute que la educacioacuten no

queda exenta de ella por o cual es necesario adaptarse

al movimiento tecnoloacutegico que nos trae grandes

ventajas en la transmisioacuten de conocimientos de una

manera sencilla y dinaacutemica

De esta manera han surgido infinidad de

metodologiacuteas de desarrollo de software educativo el

cual tiene como objetivo ser el apoyo para docentes

alumnos y toda persona que este dentro del proceso de

aprendizaje

Tomando en cuenta este ramillete infinito de

metodologiacuteas surge en el ejemplo propuesto la

adaptacioacuten del Aacutencora en el desarrollo de software

educativo teniendo como objetivo principal la

comprensioacuten de los elementos y conceptos de la

metodologiacutea Aacutencora

Aacutencora es una metodologiacutea enfocada a la

adquisicioacuten de requerimientos para software que

ofrece guiacuteas y elementos de apoyo para la obtencioacuten de

estos requerimientos Al mismo tiempo permite pasar a

la fase de disentildeo de manera sencilla Aprovechando las

ventajas que presenta Aacutencora se le hicieron algunas

adaptaciones con el fin de cubrir algunas

caracteriacutesticas del disentildeo instruccional y enriquecer

Aacutencora habilitaacutendola para la adquisicioacuten de

requerimientos de software educativo

XVII APLICACIOacuteN DE LA METODOLOGIacuteA AacuteNCORA

Como es el objetivo principal la comprensioacuten de la

aplicacioacuten de la metodologiacutea Aacutencora dentro del

desarrollo de software educativo de calidad solo

describiremos los meacutetodos del meacutetodo y los resultados

obtenidos

Claro esta que para ahondar maacutes en tema del

software educativo en si el lector puede recurrir a los

siguientes autores Metodologiacutea de desarrollo de

sistemas multimedia (Vaughan 2006) Propuesta de

metodologiacutea para el disentildeo desarrollo y evaluacioacuten

de software educativo (Reyes 2009) Ingenieriacutea de

software educativo con modelaje orientado por objetos

(Goacutemez 1998) asi como tambieacuten los siguientes

modelos ADDIE (Anaacutelisis Disentildeo Desarrollo

Implantacioacuten y Evaluacioacuten) de (McGriff 2000) y el

disentildeo instruccional aplicado al desarrollo de software

educativo EISE (Especificacioacuten Instruccional de

Software Educativo) de (Hernaacutendez 2005)

] INGENIERIacuteA DE SOFTWARE

29

INGENIERIacuteA DE SISTEMAS

Quienes tienen el mismo objetivo de crear software

educativo de calidad podemos sintetizar de ellos los

siguientes puntos

Anaacutelisis del puacuteblico al que se dirigiraacute el software

Problema oacute necesidad educativa a atender

Anaacutelisis de contenido (Tema a tratar actividades

para alcanzar el objetivo de ensentildeanza y forma de

evaluarlo)

Actividades oacute forma actual de llevar a cabo la

ensentildeanza del tema en cuestioacuten

Elaboracioacuten de guiones metaacuteforas escenarios

Creacioacuten de prototipo oacute Storyboard

Disentildeo de interfaz

Mapas de navegacioacuten

Modelos de datos

Elaboracioacuten de diagramas de contexto diagramas

de flujo o diagramas de casos de uso

Ahora enfocaacutendonos en el aacutencora se establece la

propuesta de seleccionar las actividades de Aacutencora que

permitan obtener los requerimientos de un software

educativo

La Tabla 1 presenta las actividades y artefactos

producidos en las fases de Aacutencora para la elaboracioacuten

de software educativo

TABLA 1 ACTIVIDADES Y ARTEFACTOS DE LA METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO

Metodologiacutea Aacutencora

Fases Actividades y artefactos

Anaacutelisis de

Requerimientos

A traveacutes de entrevistas con los clientes

(maestros y pedagogos) y de la lectura

del respectivo material proporcionado

por ellos se definiraacute la asignatura a la

que se enfocaraacute el software el tema a

tratar y la forma en que se abordaraacute y

evaluaraacute Tambieacuten se estableceraacute el

objetivo general de aprendizaje la

metaacutefora que se emplearaacute y se

determinaraacute el puacuteblico al que se

dirigiraacute el software

Artefactos

Documento que define la asignatura

contenido objetivo general de

aprendizaje metaacutefora y puacuteblico al que

se dirigiraacute el software Guion de la

situacioacuten actual

Recoleccioacuten y

clasificacioacuten de

requerimientos

El guion de la propuesta

computacional reflejaraacute la metaacutefora

que se sigue el ambiente de cada

escena

La bitaacutecora de desarrollo permitiraacute ver

coacutemo el sistema responderaacute a las

diversas acciones que realice el

usuario

En lugar del prototipo raacutepido se

elaboraraacute un Storyboard para presentar

graacuteficamente la estructura de sistema

propuesto

Artefactos

Guion de propuesta computacional

bitaacutecora de desarrollo Storyboard

Resolucioacuten de

conflictos

jerarquizacioacuten y

validacioacuten de

requerimientos

Modificaciones al guion de la

propuesta computacional de acuerdo a

los cambios propuestos por los

maestros y pedagogos

Artefactos

Guion de propuesta computacional e

Storyboard con adecuaciones sentildealas

Cierre

Trasladar los guiones a casos de uso

Artefactos

Casos de uso

Se agregaron algunas caracteriacutesticas a ciertos

artefactos de Aacutencora para poder cubrir los

requerimientos de software educativo Uno de estos

elementos es el guion de la propuesta computacional

al que se propone agregar lo siguiente

Conocimientos previos del usuario Se refiere a los

conocimientos baacutesicos o miacutenimos que debe tener el

alumno para poder interactuar con el moacutedulo

Objetivo de aprendizaje Es el aprendizaje que

debe obtener el alumno despueacutes de haber interactuado

con el moacutedulo

La Figura 1 se presenta la estructura sugerida para el

guion de la propuesta computacional En la bitaacutecora de

desarrollo se propone antildeadir una fila al final de cada

pista donde se describan las situaciones favorables y

no favorables para el cumplimiento del objetivo de

aprendizaje para esa pista en particular Por otra parte

en lugar del prototipo se sugiere utilizar el Storyboard

ya que permite mostrar de manera maacutes completa la

estructura del guion de la propuesta computacional La

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

30

Figura 2 muestra el formato para la elaboracioacuten del

Storyboard

Figura 1 Estructura del guion para la propuesta computacional

Figura 2 Formato para la elaboracioacuten del Storyboard

XVIII RESULTADOS

Aplicando Aacutencora en un ejemplo para la parte de

requerimientos se obtuvo la siguiente informacioacuten

Asignatura Matemaacuteticas

Contenido Estaacute articulado con base en seis ejes

con sus respectivos temas y subtemas que variacutean de

acuerdo al grado escolar Considerando lo anterior se

tiene lo siguiente

a) Grado escolar De segundo hasta quinto grado de

primaria

b) Temas Nuacutemeros naturales capacidad peso

tiempo y ubicacioacuten espacial planteamiento y

resolucioacuten de problemas sencillos en los que se

requiera recolectar y registrar informacioacuten

perioacutedicamente representacioacuten de informacioacuten en

tablas de frecuencia y graacuteficas de barras registros de

los resultados de experimentos aleatorios

representacioacuten de los resultados de un experimento

aleatorio en tablas y graacuteficas

c) Subtemas Planteamiento y resolucioacuten de

problemas que impliquen dos o maacutes operaciones con

nuacutemeros naturales

d) Ejes Introduccioacuten del kiloacutemetro como la unidad

que permite medir grandes distancias y recorridos

largos capacidad peso y tiempo uso del reloj y el

calendario los nuacutemeros sus relaciones y sus

operaciones medicioacuten la prediccioacuten y el azar

tratamiento de la informacioacuten

Objetivo general de aprendizaje Ejercitar las

operaciones aritmeacuteticas baacutesicas interpretar la

informacioacuten y los resultados de la informacioacuten dada

aplicada en situaciones de la vida cotidiana

Con las actividades hasta ahora realizadas se ha

observado que los artefactos de Aacutencora son flexibles y

pueden por lo tanto adaptarse de acuerdo a las

necesidades que implican la adquisicioacuten de

requerimientos de un software educativo Tambieacuten se

aprecian las ventajas de algunos artefactos como la

bitaacutecora de desarrollo que permite determinar las

respuestas del sistema ante las acciones del usuario y

estimar tambieacuten el tiempo que llevaraacute implementar

cada quinteta

La estimacioacuten del tiempo ayuda a tener un valor

aproximado del tiempo de desarrollo de software

Agregar el objetivo de aprendizaje a la bitaacutecora de

desarrollo puede parecer repetitivo despueacutes de

incluirlo en el Storyboard pero esto nos permite ver las

situaciones u obstaacuteculos que pueden impedir que el

objetivo de aprendizaje se alcance y por tanto tenerlos

presente durante el disentildeo A pesar de las ventajas de

la bitaacutecora de desarrollo un inconveniente hasta ahora

encontrado es lo tedioso al manejar muchas quintetas

] INGENIERIacuteA DE SOFTWARE

31

INGENIERIacuteA DE SISTEMAS

cuando por la naturaleza del guion se tienen varios

avisos y mensajes para el usuario Por otra parte los

guiones han ayudado a realizar de manera sencilla el

modelo de casos de uso

En lo referente a la presentacioacuten con los clientes el

guion es un artefacto que pude dar un panorama

general del software que se va a elaborar y queda

reforzada a traveacutes de los Storyboard Cuando se

requieren cambios solicitados por los clientes las

modificaciones a estos artefactos no han sido muy

complicadas dado que por su estructura es faacutecil de

ubicar las secciones y respectivos elementos

XIX CONCLUSIONES

Con los resultados hasta ahora obtenidos se puede

decir que la propuesta permite a los desarrolladores

con poca experiencia en desarrollo de software

educativo obtener los requerimientos de una manera

sencilla

Permite realizar un mejor relevamiento de informacioacuten

de los requerimientos del cliente enfocaacutendonos mas en

este

Es tambieacuten importante mencionar los avances que

tiene y seguiraacute teniendo el software educativo aplicado

no solo a nivel escolar sino tambieacuten al superior

Habiendo revisado el concepto y la aplicacioacuten de la

metodologiacutea Aacutencora en el desarrollo de software

educativo se llegoacute a una comprensioacuten mas extensa de

dicho meacutetodo el cual es de gran importancia dentro de

la ingenieriacutea de Software ya que nos

REFERENCIAS

httpwwwuvmxmisproductividaddocumentsCarmenChay_CIIM2010pdf

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 15: Revista de Ingenieria de Software

] INGENIERIacuteA DE SOFTWARE

15

INGENIERIacuteA DE SISTEMAS

junto de herramientas que permitan aumentar en un mayor

grado al actual la abstraccioacuten escondiendo los detalles de maacutes

bajo nivel

Fig3 Probable modelo a futuro

Las nuevas herramientas permitiraacuten ―programar en nivel

de anaacutelisis generando coacutedigos en un lenguaje de

programacioacuten tradicional de forma automaacutetica tal como hoy

los compiladores generan el lenguaje maacutequina a partir del

coacutedigo fuente Nuevos ―lenguajes de programacioacuten

naturalmente seriacutean visuales y se pareceriacutean a las

especificaciones de software en uno de los lenguajes de

modelamiento por ejemplo UML

V Conclusioacuten

Es muy probable que estemos proacuteximos a ver un nuevo

paso evolutivo en la ingenieriacutea de software Tan grande como

el invento de lenguajes de alto nivel o anaacutelisis y disentildeo

orientado a objetos Una nueva generacioacuten que absorberaacute a la

actual automatizando la mayoriacutea de las buenas praacutecticas

usadas actualmente

Una pregunta natural es si una maacutequina puede llegar a

generar programas tan buenos como los hechos por un pro-

gramador experto En vez de ―romper la cabeza con esta

pregunta ahora quizaacutes seriacutea suficiente recordarse otra vez de

la historia Los primeros compiladores de ninguna generacioacuten

alcanzaban de inmediato lo deseable y oacuteptimo Sin embargo

con el paso del tiempo apoyados en la experiencia de los

ingenieros y en el avance tecnoloacutegico se mejoraban hasta el

nivel de superar significativamente las generaciones

anteriores

Es poco factible que hoy en diacutea alguien cuestione la calidad

de los compiladores de por ejemplo Java y la calidad del

coacutedigo de maacutequina generado por ellos

VI Referencias [6] Website [Online]

httpwwwenterpriseanalystnetdownloadmda_informaticap

df

[7] httpwwwslidesharenetamrrochafuturo-del-software-impacto-en-las-organizaciones-y-en-los-profesionales

[8] httpwwwdcubaareventseci2008conferenciasIngSoftHexacta

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

16

Ingenieriacutea de Software para

Desarrolladores de juegos Huascar Huanca Orozco

Ingenieria de Sistemas San francisco de Asis

Av20 de Octubre esq Belisario Salinas

hhuncausfaedubo

ResumenmdashEn este artiacuteculo veremos una lo que es ldquoIS para

Desarrolladores de juegosrdquo si crees que un juego es facil pues

te equivocas en este articulo mostramos el uso de la IS en la

cracion de juegos que metodos utilizan y la complejidad que

representa para el equipo de desarrollo

1) Palabras clave mdash UMLRequisitosjuegoequipo de trabajo motor del juego

IV INTRODUCCIOacuteN

En la ingenieriacutea de software (IS) el desarrollo

de videojuegos es uacutenico pero similares a los

esfuerzos de software Es la uacutenica que combina el

trabajo de los equipos que cubren muacuteltiples

disciplinas (arte muacutesica actuacioacuten

programacioacuten etc) y que el juego de

acoplamiento que se busca a traveacutes del uso de

prototipos e iteraciones Con ello el desarrollo

del juego se enfrenta a desafiacuteos que pueden ser

abordadas mediante las praacutecticas tradicionales de

SE La industria tiene que adoptar buenas

praacutecticas de SE para sus distintas necesidades

tales como la gestioacuten de activos multimedia y

encontrar el fundamento en el juego La industria

debe asumir los retos por la evolucioacuten de los

meacutetodos de SE para satisfacer sus necesidades

Este trabajo investiga estos desafiacuteos y praacutecticas

de ingenieriacutea destaca para mitigar estos

problemas

V ENTRA EN EL JUEGO

Lo que la IS para desarrolladores de juegos hace

es

Mezcla de ingenieriacutea y el arte El software como

una praacutectica como una preocupacioacuten profesional

Meacutetodos para aprender a disentildear y fabricar un

producto El desarrollo del personaje e ingenieriacutea

de software Estrategias para hacer el mejor uso

de la ingenieriacutea del conocimiento formalizado El

aprendizaje de las habilidades que se pueden

aplicar en cualquier lugar

VI REQUISITOS

Esta parte ofrece una visioacuten general de los

conceptos y herramientas necesarias para la

obtencioacuten de requisitos

IDENTIFICAR LO QUE SE CONSIDERA UN REQUISITO DE SOFTWARE

ESTABLECER LOS CRITERIOS PARA DAR SENTIDO A LOS REQUISITOS Y LA

ESCRITURA DETERMINAR LA MANERA DE REUNIR LOS REQUISITOS O DESCUBRIR

EXPLORAR COacuteMO EMPLEAR CASOS DE USO PARA PERFECCIONAR Y

ANALIZAR LAS NECESIDADES ENCONTRAR TEacuteCNICAS PARA CONFIRMAR QUE LOS REQUISITOS ESTEacuteN

COMPLETOS

VERIFICAR LA EXACTITUD DE LOS REQUISITOS TRACE CAMBIOS EN LOS REQUISITOS

VII PROGRAMADOR DEL MOTOR DEL JUEGO

Fig 1 Juego RPG

] INGENIERIacuteA DE SOFTWARE

17

INGENIERIacuteA DE SISTEMAS

Los programadores de juegos motores crear el

motor de base del juego incluyendo la fiacutesica de

simulacioacuten y disciplinas graacuteficas

A Fiacutesica del motor del programador

Programador de un juego de la fiacutesica se dedica

al desarrollo de las fiacutesica de un juego se emplean

Por lo general un juego de soacutelo simular algunos

aspectos de la fiacutesica del mundo real Por ejemplo

un juego de espacio puede necesitar simulada

gravedad pero no tendriacutea ninguna necesidad

para simular agua viscosidad

Para un juego de rol como World of Warcraft

soacutelo un programador de la fiacutesica puede ser

necesaria Para un juego de combate complejo

como Battlefield 1942 los equipos de

programadores de la fiacutesica pueden ser necesarias

B motor de graacuteficos del programador

A pesar de todos los programadores antildeadir

tanto los contenidos y la experiencia que ofrece

un juego un programador de juego se centra maacutes

en la estrategia de un juego la aplicacioacuten de la

mecaacutenica del juego y la loacutegica y la sensacioacuten

de un juego

Esto no suele ser una disciplina independiente

como lo que este programador es por lo general

se diferencia de un juego a otro y que

inevitablemente se veraacute involucrado con las aacutereas

maacutes especializadas de desarrollo del juego como

los graacuteficos o el sonido

VIII EQUIPO DE TRABAJO

Fig 2 Grupo de trabajo

Un equipo de desarrollo en una organizacioacuten de

ingenieriacutea de software se compone de un grupo

de personas que trabajan en funciones

especializadas para lograr un objetivo comuacuten El

objetivo es la realizacioacuten de un proyecto Un

proyecto se define como un esfuerzo temporal

emprendido para crear un producto uacutenico

servicio o resultado

Aquiacute una pequentildea lista incompleta de algunos de

los componentes de un equipo de trabajo para

Desarrollo de juegos

Analista de requerimientos recopilar y analizar

los requisitos para el software

Arquitecto de software determinar la mejor

arquitectura para el software Seleccionar

Los componentes del proveedor para su inclusioacuten

en el esfuerzo de desarrollo

Disentildeador de software acotar el software para

lograr un rendimiento y otros

Objetivos

Prueba de software probador del software para

garantizar que funcione de acuerdo a la

Requisitos

Programador senior desarrollar bajo nivel de

documentacioacuten de disentildeo sirven como una

tecno-

Ventaja teacutecnica para los demaacutes e implementar el

software de acuerdo

Para el disentildeo

Programador implementar el software de acuerdo

al disentildeo

Trabajos de mantenimiento en el programador de

software creado durante el desarrollo anterior

Los esfuerzos para agregar funcionalidad o

eliminar errores de trabajo con

Atencioacuten al cliente

IX LENGUAJE UNIFICADO DE MODELADO (UML)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

18

Tomando en cuenta que el UML es un estaacutendar

muy flexible Nos da razoacuten que podemos pensar

en el diagrama

como herramientas que permiten realizar

diferentes tipos de trabajo Para revisar un poco

Use un diagrama de casos de uso para reunir y estudiar los requisitos para los propoacutesitos de disentildeo o pruebas

Use un diagrama de actividades para explorar los escenarios de casos de uso

Use un diagrama de clases para identificar las clases y ver coacutemo las

clases se relacionan entre siacute Use un diagrama de objetos para ver coacutemo un objeto se comunica con

otro

Use un diagrama de estado para explorar los atributos de cambio de objeto

Use un diagrama de secuencia para explorar a fondo un caso de uso

mediante el trazado de la orden en el que los objetos enviar mensajes a siacute mismos o entre siacute

Use un diagrama de colaboracioacuten para ver la loacutegica del sistema y la

forma en que los objetos envian mensajes entre siacute Use un diagrama de componentes para explorar y si existen los

subsistemas dentro de su juego

Use un diagrama de implementacioacuten para encontrar la manera de

configurar el paquete de instalacioacuten para su juego

X CONCLUSIONES

El desarrollo de los juegos se han vueltos mas

complejos con el pasar del tiempo y para el

desarrollo de un juego que este a la vanguardia

de la competencia se debe trabajar con la IS es

una forma eficaz de conseguir un juego de

calidad internacional

Referencias [9] Software Engineering for Game Developers by john P Flynt with Omar

Salem [10] httpieeexploreieeeorgxplloginjsptp=amparnumber=5070627ampurl=http

3A2F2Fieeexploreieeeorg2Fiel52F50705742F50705752F05

070627pdf3Farnumber

[11] httpgamedevstackexchangecomquestions19934abstract-game-engine-design

] INGENIERIacuteA DE SOFTWARE

19

INGENIERIacuteA DE SISTEMAS

Estrategias de Prueba del Software Miguel Angel Callisaya Quispe Universidad San Francisco de Asiacutes Av 20 de Octubre La Paz Bolivia

maccc19hotmailcom

Resumen Una estrategia de software es un mecanismo que

proporciona una guiacutea o base pasa ver la forma como se debe

desarrollar la aplicacioacuten en cuanto a meacutetodos esfuerzo

tiempo y recursos que son necesarios para lograr un producto

exitoso

La frecuencia con las que realicen las pruebas es de gran

importancia ya que de estaacute manera se pueda la en encontrar

los errores antes de que se conviertan en errores para la

aplicacioacuten si no se lleva un orden de aplicacioacuten de las pruebas

se va a perder tiempo recurso y sobre todo esfuerzo

Durante las primeras etapas de las pruebas es importante

concentrar toda la atencioacuten en un pequentildeo grupo de

componentes o en un componente que se considere importante

para el desarrollo tanto en los datos como en la parte loacutegica de

la aplicacioacuten

El objetivo final de las estrategias de prueba es documentar la

forma en el que equipo ha hecho el desarrollo y el seguimiento

que se le ha hecho a cada una de las etapas durante las etapas

de desarrollo e implementacioacuten

Palabras clave Calidad Prueba Estrategias Sistema

I INTRODUCCIOacuteN

Durante este articulo es importante mencionar algunos

aspectos que determinan el eacutexito de la aplicacioacuten de las

estrategias de prueba como lo son el enfoque estrateacutegico

para la prueba de software aspectos estrateacutegicos

estrategias de prueba para software convencional

estrategias de prueba para software orientado a objeto

estrategia de prueba para webapps pruebas de validacioacuten y

por uacuteltimo las pruebas del sistema

IIESTRATEGIAS DE PRUEBA DEL SOFTWARE

Verificacioacuten Estamos construyendo el producto

correctamente

Validacioacuten Estamos construyendo el producto correcto

Integracioacuten descendente

La integracioacuten descendente es un planteamiento

incremental a la construccioacuten de la estructura de programas

Se integran los moacutedulos movieacutendose hacia abajo por la

jerarquiacutea de control comenzando por el moacutedulo de control

principal (programa principal) Los moacutedulos subordinados

(de cualquier modo subordinados) al moacutedulo de control

principal se van incorporando en la estructura bien de

forma primero-en-profundidad o bien de forma primero-en-

anchura Fig1

Integracioacuten ascendente

La prueba de la integracioacuten ascendente como su nombre

indica empieza la construccioacuten y la prueba con los

moacutedulos atoacutemicos (es decir moacutedulos de los niveles maacutes

bajos de la estructura del programa) Dado que los moacutedulos

se integran de abajo hacia arriba el proceso requerido de

los moacutedulos subordinados a un nivel dado siempre estaacuten

disponibles y se elimina la necesidad de resguardos Fig2

Fig 1 Integracioacuten descendente

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

20

Fig 3 Integracioacuten Ascendente

Aspectos Estrateacutegicos

Tom Gilb plantea que se deben abordar los

siguientes puntos si se desea implementar con

eacutexito una estrategia de prueba del software

Especificar los requisitos del producto de manera

cuantificable mucho antes de que comiencen las pruebas

-Establecer los objetivos de la prueba de manera expliacutecita (teacuterminos

medibles)

-Comprender queacute usuarios va a tener el software y desarrollar un perfil

-Desarrollar un plan de prueba que haga hincapieacute en la prueba de ciclo

raacutepido

-Construir un software ―robusto disentildeado para probarse a siacute mismo

-Usar revisiones teacutecnicas formales efectivas como filtro antes de la

prueba

Llevar a cabo revisiones teacutecnicas formales para evaluar la

estrategia de prueba y los propios casos de prueba

Desarrollar un enfoque de mejora continua al proceso de

prueba Deberiacutea medirse la estrategia de prueba

Prueba de Unidad

La prueba de unidad centra el proceso de

verificacioacuten en la menor unidad del disentildeo del

software el moacutedulo La prueba de unidad siempre

esta orientada a caja blanca y este paso se suele

llevar a cabo en paralelo para muacuteltiples moacutedulos

Pruebas de Alfa y Beta

C u a n d o s e c o n s t r u y e s o f t w a r e a m e d i d a s e

l l e v a n a c a b o u n a s e r i e d e p r u e b a s d e

a c e p t a c i oacute n p a r a permitir que el cliente valide todos

los requisitos La prueba alfa se lleva a cabo en el

lugar del desarrollo pero por un cliente Se usa el

software en forma normal con el desarrollador como

observador del usuario y registrando los errores y

problemas de uso(entorno controlado)La prueba beta se

lleva a cabo por los usuarios finales en los lugares

de trabajo de los clientes El cliente registra los

problemas y los informa a intervalos regulare

Pruebas del sistema

La prueba del sistema estaacute constituida por una

serie de pruebas diferentes cuyo propoacutesito es

ejercitar profundamente el sistema

Prueba de recuperacioacuten

E s l a p r u e b a d e l s i s t e m a q u e f u e r z a a l

f a l l o d e l s o f t w a r e d e m u c h a s f o r m a s y

v e r i f i c a q u e l a recuperacioacuten se lleva a cabo

apropiadamente Recuperacioacuten automaacutetica o manual

Prueba de seguridad

Intenta verificar que los mecanismos de proteccioacuten

incorporados en el sistema lo protegeraacute de hecho de

accesos impropios

Pruebas de Resistencia

Estaacuten disentildeadas para enfrentar a los programas con

situaciones anormales Una variante de la prueba de

resistencia es una teacutecnica denominada prueba de

sensibilidad intenta descubrir combinaciones de datos

dentro de una clase de entrada valida que pueda producir

inestabilidad o un proceso incorrecto

El arte de la depuracioacuten

La depuracioacuten ocurre como consecuencia de una

prueba efectiva Cuando un caso de prueba

descubre u n e r r o r l a d e p u r a c i oacute n e s e l

p r o c e s o q u e p r o v o c a l a e l i m i n a c i oacute n d e l

e r r o r E l p r o c e s o m e n t a l q u e conecta un siacutentoma

con una causa es la depuracioacuten

El proceso de la depuracioacuten

E l p r o c e s o d e d e p u r a c i oacute n i n t e n t a h a c e r

c o r r e s p o n d e r e l s iacute n t o m a c o n u n a c a u s a

l l e v a n d o a s iacute a l a correccioacuten del error El proceso de

depuracioacuten siempre tiene uno de los dos resultados

siguientes

(1)se encuentra la causa se corrige y se elimina

o

(2)no se encuentra la causa En eacuteste uacuteltimo caso la persona

que realiza la depuracioacuten debe sospechar la causa disentildear

un caso de prueba que ayude a confirmar sus sospechas y el

trabajo vuelve hacia atraacutes a la correccioacuten del error de una

forma iterativa iquestPor queacute es tan difiacutecil la depuracioacuten

Varias caracteriacutesticas de los errores nos dan algunas

] INGENIERIacuteA DE SOFTWARE

21

INGENIERIacuteA DE SISTEMAS

pistas1El siacutentoma y la causa pueden ser

geograacuteficamente remotos entre siacute2El siacutentoma

puede desaparecer (temporalmente) al corregir

otro error

3 E l s iacute n t o m a p u e d e r e a l m e n t e e s t a r

p r o d u c i d o p o r a l g o q u e n o e s u n e r r o r

( i n e x a c t i t u d d e l o s redondeos)

4El siacutentoma puede estar causado por un error

humano que no sea faacutecilmente detectado

5El siacutentoma puede ser el resultado de problemas

de temporizacioacuten en vez de problema s de proceso

6Puede ser difiacutecil reproducir exactamente las

condiciones de entrada

7 E l s iacute n t o m a p u e d e a p a r e c e r e n f o r m a

i n t e r m i t e n t e

8 E l s iacute n t o m a p u e d e s e r d e b i d o a c a u s a s q u e

s e d i s t r i b u y e n p o r u n a s e r i e d e t a r e a s

e j e c u t aacute n d o s e e n diferentes procesadores

IIICONCLUCIONES

Las estrategias de prueba del software es un mecanismo

que proporciona una guiacutea o base pasa ver la forma como se

debe desarrollar la aplicacioacuten en cuanto a meacutetodos para

logra un producto exitoso

IVREFERENCIAS

httpbuenastareascomensayosEstategias-de-prueba-de-

software3752643html

httpwwwestrategiascompruebaagil

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

22

Ingenieriacutea Inversa Juan Carlos Zenteno Sanga

1

Departamento de Ingenieriacutea de Sistemas Universidad San Francisco de Asiacutes

Direccioacuten Incluyendo el Paiacutes 1juanka_58hotmailcom

Resumenmdash La ingenieriacutea de Software es parte del modelo de

proceso de reingenieriacutea de software es el proceso de analizar

un programa con la finalidad de crear una representacioacuten del

programa en un grado mayor de abstraccioacuten del coacutedigo

fuente las herramientas de ingenieriacutea inversa obtienen

informacioacuten del disentildeo de datos arquitectoacutenico y de

procedimientos a partir de un programa existente

En el siguiente artiacuteculo se veraacuten los conceptos baacutesicos y se

denotara un ejemplo praacutectico para una mayor comprensioacuten

del tema

Palabras clave mdash Ingenieriacutea de Software Reingenieriacutea

Linux Ingenieriacutea Inversa

XI INTRODUCCIOacuteN

Inmersa en el aacuterea de conocimiento de la

ingenieriacutea de software se encuentra la ingenieriacutea

inversa como punto de apoyo para los procesos

de anaacutelisis y disentildeo propuestos en diferentes

meacutetodos de desarrollo

La ingenieriacutea inversa permite subsanar esta

deficiencia al documentar los productos de

software a partir del coacutedigo ejecutable con el fin

de obtener los artefactos de anaacutelisis y disentildeo

La ingenieriacutea inversa es ademaacutes una

herramienta uacutetil que ayuda en el proceso de

aseguramiento de la calidad del software

mediante la comparacioacuten de diagramas de fases

de anaacutelisis y desarrollo se apoya comuacutenmente en

la generacioacuten del diagrama de clases debido a la

importancia de este diagrama en la fase de disentildeo

y su facilidad de generacioacuten Existen tambieacuten

otros diagramas de intereacutes como el de

comunicacioacuten y el de secuencias que modelan

las caracteriacutesticas dinaacutemicas de un producto de

software

Hoy en diacutea los productos maacutes comuacutenmente

sometidos a la Ingenieriacutea Inversa son los

productos de Hardware y Software pero

cualquier producto puede ser sometido a este

proceso

Aplicar ingenieriacutea Inversa a algo supone

profundizar el estudio de su funcionamiento

En el caso concreto del Software se conoce

por ingenieriacutea de software a la actividad que se

ocupa de describir coacutemo funciona un programa

de cuyo coacutedigo no se dispone hasta el punto de

generar coacutedigo propio que cumpla con las

mismas funciones Un ejemplo claacutesico del uso de

esta teacutecnica es el software de pago donde las

empresas utilizan esta teacutecnica para proteger sus

productos contra posibles acceso no autorizados

o examinar el producto final para encontrar

posibles bugs inesperados en la ejecucioacuten de

dicho sistema

Existe una gran variedad de software

desensamblador y depurador para aplicar esta

teacutecnica

En resumen la idea general al aplicar

ingenieriacutea inversa es

Conocer a fondo la aplicacioacuten y generar un

mejor coacutedigo

Migrar la aplicacioacuten a un nuevo sistema operativo

Hacer o completar la documentacioacuten

] INGENIERIacuteA DE SOFTWARE

23

INGENIERIacuteA DE SISTEMAS

Verificar que el coacutedigo en estudio cumple las

especificaciones del disentildeo estaacutendar

La informacioacuten extraiacuteda de la lectura del

coacutedigo fuente son las especificaciones de disentildeo

modelos de flujo de control diagramas de disentildeo

documentos de especificacioacuten de disentildeo

pudiendo tomarse estas especificaciones como

nuevo punto de partida para aplicar ingenieriacutea

inversa y obtener informacioacuten a mayor nivel de

abstraccioacuten

Dado que es una labor estrateacutegica es

conveniente conocer cuando conviene realizar la

tarea de Ingenieriacutea inversa para una aplicacioacuten y

cuaacutendo es maacutes rentable sustituirla e implementar

una nueva Las aplicaciones para el primer paso

son aquellas en la que se produce las siguientes

situaciones

bull Fallos frecuentes que son difiacuteciles de

localizar

bull Son poco eficientes pero realizan la funcioacuten

esperada

bull Dificultades en la integracioacuten con otros

sistemas

bull Calidad pobre del software final

bull Resistencia a introducir cambios

bull Pocas personas capacitadas para realizar

modificaciones

bull Dificultades para realizar pruebas

bull El mantenimiento consume muchos recursos

XII LAS BASES DE LA INGENIERIA INVERSA

Los ejemplos maacutes trascendentes sobre los

inicios de la ingenieriacutea inversa son claramente las

investigaciones realizadas sobre antiguos

artefactos creados por humanos ancestrales con

el fin de descubrir la manera en que funcionaban

Uno de los maacutes conocidos es el llamado

mecanismo de Antikythera (Fig 1) el cual se

piensa que fue disentildeado para fines astronoacutemicos

por los griegos siendo uno de los primeros

artefactos que funcionaban con ruedas de

engranes

Figura 1 Antikythera (mecanismo presuntamente creado para fines astronoacutemicos)

Podemos entonces implantar un paralelo en aquella

mitoloacutegica buacutesqueda de descubrimiento sobre el

funcionamiento de esos artefactos y la ingenieriacutea inversa

actual usada en ingenieriacutea de software estableciendo un

importante factor en comuacuten la falta de documentacioacuten En

este ambiente es muy comuacuten contar con una especie de caja

negra en donde sabemos lo que ingresamos y el resultado

que obtenemos pero desconocemos el procedimiento con la

precisioacuten que necesitariacuteamos para replicarlo

Esta falta de documentacioacuten es el impulso

principal de toda la ingenieriacutea inversa las

finalidades de la misma pueden variar pero este

factor inicial nunca lo haraacute

XIII INGENIERIA INVERSA COMO UN PROCESO DE

REINGENIERIA

La ingenieriacutea inversa tiene la misioacuten de

desentrantildear los misterios y secretos de los

sistemas en uso

Baacutesicamente recupera el disentildeo de la

aplicacioacuten a partir del coacutedigo esto se realiza

mediante herramientas que extraen la

informacioacuten de los datos procedimientos y

arquitecturas del sistema

Es aplicable a sistemas con las siguientes

caracteriacutesticas

Documentacioacuten inexistente o totalmente obsoleta

Programacioacuten en bloque de coacutedigos muy grandes

yo sin estructural

La aplicacioacuten cubre gran parte de los requisitos

y el rendimiento esperado

A Nivel de abstraccioacuten

El nivel de Abstraccioacuten de un proceso de

Ingenieriacutea Inversa y las herramientas que se

utilizan para realizarlo aluden la sofisticacioacuten de

la informacioacuten de disentildeo que se puede extraer del

coacutedigo fuente Este proceso deberiacutea ser capaz de

derivar

Sus representaciones de disentildeo de procedimiento

(con un bajo nivel de abstraccioacuten)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

24

La informacioacuten de las estructuras de datos de

procedimiento (con un nivel de abstraccioacuten

ligeramente maacutes elevado)

Modelos de flujo de datos de control (un nivel de

abstraccioacuten relativamente alto)

Modelos de entidades y de relaciones (un elevado

nivel de abstraccioacuten)

B Completitud

En la mayoriacutea de los casos la completitud

decrece a medida que aumenta el grado de

abstraccioacuten

La completitud mejora en proporcioacuten directa a

la cantidad de anaacutelisis efectuado por la persona

que estaacute efectuando la ingenieriacutea inversa

C Interactividad

La interactividad alude al grado con el cual el

ser humano se integra con las herramientas

automatizadas para crear un proceso de

ingenieriacutea inversa efectivo

D Proceso

El Proceso de ingenieriacutea inversa (Fig 2) es el encargado

de reestructurar el coacutedigo fuente para que solamente

contenga instrucciones de programacioacuten estructurada Lo

que hace que el coacutedigo sea maacutes faacutecil de leer y proporciona

la base para las subsiguientes actividades de ingenieriacutea

inversa

Figura 2 Diagrama de Proceso de la Ingenieriacutea Inversa

E Reestructuracioacuten

La reestructuracioacuten del software modifica el

coacutedigo fuente y los datos en un intento adecuado

a futuros cambios esta no modifica la

arquitectura global del programa Tiene a

centrarse en los detalles de disentildeo de moacutedulos

individuales y en estructuras de datos locales

definidas dentro de los moacutedulos

Estos son algunos de los beneficios que se

pueden lograr cuando se reestructura el software

Programas de mayor calidad

Reduce el esfuerzo requerido para llevar a cabo

las actividades de mantenimiento

Hace el software maacutes sencillo para comprobar y

depurar

F Re documentacioacuten

Es el proceso mediante el cual se produce

documentacioacuten retroactivamente desde un

sistema existente

Es considerada una forma de ingenieriacutea inversa

porque la documentacioacuten reconstruida es usada

para ayudar al conocimiento del programa

XIV UTILIZANDO EL METODO CIENTIFICO EN LA

INGENIERIA INVERSA

Ante cualquier dificultad tecnoloacutegica el

meacutetodo cientiacutefico siempre es y seraacute nuestra maacutes

preciada arma Partamos imaginando un pequentildeo

dilema relacionado con el tema de ingenieriacutea de

software especiacuteficamente con un sencillo

programa (Fig 3)

Figura 3 Pantalla de aplicacioacuten que nos serviraacute de ejemplo

Esta sencilla aplicacioacuten mostraraacute un mensaje con cierto

resultado y aun siendo un problema demasiado sencillo

para considerarlo como un reto el objetivo es soacutelo describir

] INGENIERIacuteA DE SOFTWARE

25

INGENIERIacuteA DE SISTEMAS

las acciones usuales del proceso las cuales son aplicables

en escalas muy superiores

El resultado mostrado por el programa dentro del mensaje

emergente se basa en nuestra entrada pero nosotros

desconocemos en lo absoluto los procedimientos utilizados

sobre esta entrada para producir aquella respuesta

A La Observacioacuten es Trascendental

Primero es importante observar el problema su

comportamiento Es substancial tratar de lograr

un pensamiento inductivo en donde logremos

identificar el principio particular del problema

para poder llegar a extrapolarlo a una solucioacuten

general

El punto de quiebre se produce en este instante

Ya al haber observado la aplicacioacuten podriacuteamos

decidir procesar los datos que nos entrega y

lograr crear un coacutedigo equivalente o investigar el

funcionamiento interno

B Dentro de la aplicacioacuten

Luego de la formulacioacuten de una hipoacutetesis sobre

su funcionamiento necesitamos algunas

herramientas para comenzar con la investigacioacuten

En el caso de esta aplicacioacuten con un poco de

conocimientos del lenguaje ensamblador de

programacioacuten tradicional y un descompilador es

suficiente

Es importante emprender de buena forma

nuestro sondeo ser ordenados y metoacutedicos en la

tarea En este momento las capacidades analiacuteticas

y loacutegicas son muy importantes para alivianar

nuestra faena

Lo fundamental es conocer muy bien el

entorno en que nos desenvolveremos En este es

punto indispensable saber que una aplicacioacuten

para Windows necesita invocar internamente al

punto de entrada MessageBox o MessageBoxEx

de la libreriacutea de sistema user32dll para poder

desplegar un mensaje (Fig 4)

Figura 4 Resultado de la Aplicacioacuten

Ya con esa pista es sencillo encontrar el

fragmento de coacutedigo relacionado con las

operaciones relacionadas a nuestro nuacutemero de

entrada que tendriacutea una forma similar a la

mostrada a continuacioacuten en nuestro

descompilador (Fig 5)

Figura 5 Vista del Programa en Ensamblador

Cualquier programador intuiriacutea faacutecilmente lo

que hacen las liacuteneas superiores de esta aplicacioacuten

en especial sprintf es parte de la libreriacutea estaacutendar

de C++ Claramente vemos tambieacuten el tiacutetulo de la

ventana en el coacutedigo estos valores son

interpretados de forma inteligente por este

descompilador en especial y en particular nos

asiste de sobremanera a comprender el coacutedigo

Lo siguiente es sencillamente explorar paso a

paso las acciones superiores de caacutelculo del

resultado En esta instancia seraacute ideal realizar

numerosas pruebas para estar completamente

seguros de que logramos develar el secreto tras la

funcionalidad objetivo (Fig 6)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

26

Figura 6 Inicio del coacutedigo al que aplicaremos ingenieriacutea inversa

Hay que detenerse algunos segundos a

individualizar algunos procedimientos del

anaacutelisis que a simple vista pueden parecer

inconcebibles con el fin de poder generar una

tesis concluyente

Cabe destacar que se omitiraacuten pasos

intermedios de asignaciones de memoria y otros

formalismos propios de ensamblador para

favorecer el entendimiento del lector

Inicialmente tenemos el valor de entrada

supuestamente ya leiacutedo desde el cuadro de

diaacutelogo del programa ahora nos enfocamos en la

primera accioacuten importante Asumiremos el valor

de entrada como una incoacutegnita

En el siguiente trozo de coacutedigo la liacutenea

destacada antildeadioacute siete a nuestra incoacutegnita (Fig 7)

Figura 7 Coacutedigo donde se denota la adicioacuten de 7 a nuestra ecuacioacuten

A continuacioacuten se multiplica ese valor

resultante de la suma por el mismo (Fig 8)

Figura 8 Coacutedigo donde se denota la multiplicacioacuten del valor por la suma

Nuevamente multiplicamos el resultado por el

anterior proporcionado tras la suma En esta

segunda vez ya podemos expresar la operacioacuten

simplemente elevando al cubo la suma anterior

(Fig 9)

Figura 9 Coacutedigo que denota una nueva multiplicacioacuten del resultante

Ahora le restamos diez al resultado

El procedimiento que viene a continuacioacuten

propone un mayor desafiacuteo intelectual Un nuacutemero

constante en este caso el cargado al registro

EAX (Fig 10)

Figura 10 ubicacioacuten del nuacutemero constante EAX

Generalmente la divisioacuten es algo maacutes costosa

en tiempo de procesador que otras operaciones

por lo que ciertos compiladores incluyen tablas

de constantes las cuales son llamadas ―nuacutemeros

maacutegicos para la divisioacuten entera

d Con signo Sin signo

m (hex) s m (hex) a s

-5 99999999 1

-3 55555555 1

-2k 7FFFFFFF k-

1

1 mdash mdash 0 1 0

2k 80000001 k-

1 232-k 0 0

3 55555556 0 AAAAAAAB 0 1

5 66666667 1 CCCCCCCD 0 2

6 2AAAAAAB 0 AAAAAAAB 0 2

7 92492493 2 24924925 1 3

9 38E38E39 1 38E38E39 0 1

10 66666667 2 CCCCCCCD 0 3

11 2E8BA2E9 1 BA2E8BA3 0 3

] INGENIERIacuteA DE SOFTWARE

27

INGENIERIacuteA DE SISTEMAS

12 2AAAAAAB 1 AAAAAAAB 0 3

25 51EB851F 3 51EB851F 0 3

125 10624DD3 3 10624DD3 0 3

Tabla 1 Algunos nuacutemeros maacutegicos (32 bits)

Ahora bien conociendo la tabla 1 sabiendo

que el nuacutemero cargado en esta ocasioacuten

corresponde al once lo que hace el coacutedigo es

multiplicar el resultado de la salida temporal por

aquel nuacutemero (Fig 11)

Figura 11 Multiplicacioacuten del resultante por el numero 11

Naturalmente la multiplicacioacuten por un nuacutemero

tan grande produce una especie de

desbordamiento en el registro contenedor del

resultado al exceder el tamantildeo de palabra del

procesador (en este caso de 32 bits) Estos bits

sobrantes se almacenan naturalmente en el

registro EDX registro que es contiguo a ECX

dentro de la memoria de los registros del

procesador

Ahora desplazamos un bit del registro EDX

(equivalente a una divisioacuten entera por dos) para

obtener la solucioacuten de la divisioacuten por once

generando una sencilla ecuacioacuten

Figura 12 Desplazamiento del bit de registro EDX

El uacuteltimo paso luego de documentar estos

resultados seraacute crear una aplicacioacuten que recree

esta foacutermula soacutelo en caso de tener intenciones de

re-codificacioacuten del desarrollo Consumando este

punto es sencillo confeccionar un diagrama con

todo el proceso anteriormente visto

XV CONCLUSIONES

Queda claro que el tema de la ingenieriacutea

inversa es uno de los toacutepicos maacutes interesantes a

los que podriacutea afrontarse un profesional de la

tecnologiacutea y en general disfrutar el largo proceso

involucrado gracias al desafiacuteo poco predecible

que presenta

En general podemos darnos cuenta de que no

existen muchas metodologiacuteas y teoriacuteas estrictas

sobre coacutemo aplicar las teacutecnicas de ingenieriacutea

inversa Afortunadamente un ingeniero estaacute

preparado para afrentar desafiacuteos de este tipo

Adicionalmente podemos deducir tambieacuten el

aspecto bidireccional de la ingenieriacutea inversa

pues como ya lo comprobamos no solo es un

desafiacuteo aplicarla sino que tambieacuten lo es tener que

dificultar el proceso o incluso tratar de impedirlo

si la situacioacuten lo requiere

REFERENCIAS

[12] Roger Pressman Ingenieriacutea de Software ―Un Enfoque Moderno 6th ed

MC Graw Hill [13] httpeswikipediaorgwikiIngenieria_inversa

[14] httpwwwinfosecwritersconntext_resourcespdfsoftware_security_and_r

everse_engineeringpdf [15] httperwinriedclmodo=visorampelemento=239

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

28

METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO Univ Alejandro Meacutendez Escobar

Universidad San Francisco de Asiacutes

Ingenieriacutea de Sistemas

Ingenieriacutea de Software I

La Paz - Bolivia

amendezusfaedubo

Resumenmdash Al adquirir el software educativo dentro del campo de

desarrollo de software una gran importancia y siendo este

inspiracioacuten de propuestas de innumerables metodologiacuteas que buscan

la elaboracioacuten de un software de calidad

Tomaremos la metodologiacutea Aacutencora enfocada a la fase de

requerimientos y que ofrece elementos que indican las actividades

que deben realizarse los artefactos que se producen y la forma de

obtenerlos

Usando al desarrollo de software educativo como ejemplo de una

mejor comprensioacuten de dicha metodologiacutea analizando la aplicacioacuten

del Aacutencora en un trabajo propuesto para el Instituto Tecnoloacutegico de

Orizaba Meacutexico

Palabras clave mdash Aacutencora Metodologiacutea Desarrollo de Software

Educativo Requerimientos Calidad

XVI INTRODUCCIOacuteN

Hoy en diacutea la tecnologiacutea esta dentro de las

actividades que realizamos es asiacute que la educacioacuten no

queda exenta de ella por o cual es necesario adaptarse

al movimiento tecnoloacutegico que nos trae grandes

ventajas en la transmisioacuten de conocimientos de una

manera sencilla y dinaacutemica

De esta manera han surgido infinidad de

metodologiacuteas de desarrollo de software educativo el

cual tiene como objetivo ser el apoyo para docentes

alumnos y toda persona que este dentro del proceso de

aprendizaje

Tomando en cuenta este ramillete infinito de

metodologiacuteas surge en el ejemplo propuesto la

adaptacioacuten del Aacutencora en el desarrollo de software

educativo teniendo como objetivo principal la

comprensioacuten de los elementos y conceptos de la

metodologiacutea Aacutencora

Aacutencora es una metodologiacutea enfocada a la

adquisicioacuten de requerimientos para software que

ofrece guiacuteas y elementos de apoyo para la obtencioacuten de

estos requerimientos Al mismo tiempo permite pasar a

la fase de disentildeo de manera sencilla Aprovechando las

ventajas que presenta Aacutencora se le hicieron algunas

adaptaciones con el fin de cubrir algunas

caracteriacutesticas del disentildeo instruccional y enriquecer

Aacutencora habilitaacutendola para la adquisicioacuten de

requerimientos de software educativo

XVII APLICACIOacuteN DE LA METODOLOGIacuteA AacuteNCORA

Como es el objetivo principal la comprensioacuten de la

aplicacioacuten de la metodologiacutea Aacutencora dentro del

desarrollo de software educativo de calidad solo

describiremos los meacutetodos del meacutetodo y los resultados

obtenidos

Claro esta que para ahondar maacutes en tema del

software educativo en si el lector puede recurrir a los

siguientes autores Metodologiacutea de desarrollo de

sistemas multimedia (Vaughan 2006) Propuesta de

metodologiacutea para el disentildeo desarrollo y evaluacioacuten

de software educativo (Reyes 2009) Ingenieriacutea de

software educativo con modelaje orientado por objetos

(Goacutemez 1998) asi como tambieacuten los siguientes

modelos ADDIE (Anaacutelisis Disentildeo Desarrollo

Implantacioacuten y Evaluacioacuten) de (McGriff 2000) y el

disentildeo instruccional aplicado al desarrollo de software

educativo EISE (Especificacioacuten Instruccional de

Software Educativo) de (Hernaacutendez 2005)

] INGENIERIacuteA DE SOFTWARE

29

INGENIERIacuteA DE SISTEMAS

Quienes tienen el mismo objetivo de crear software

educativo de calidad podemos sintetizar de ellos los

siguientes puntos

Anaacutelisis del puacuteblico al que se dirigiraacute el software

Problema oacute necesidad educativa a atender

Anaacutelisis de contenido (Tema a tratar actividades

para alcanzar el objetivo de ensentildeanza y forma de

evaluarlo)

Actividades oacute forma actual de llevar a cabo la

ensentildeanza del tema en cuestioacuten

Elaboracioacuten de guiones metaacuteforas escenarios

Creacioacuten de prototipo oacute Storyboard

Disentildeo de interfaz

Mapas de navegacioacuten

Modelos de datos

Elaboracioacuten de diagramas de contexto diagramas

de flujo o diagramas de casos de uso

Ahora enfocaacutendonos en el aacutencora se establece la

propuesta de seleccionar las actividades de Aacutencora que

permitan obtener los requerimientos de un software

educativo

La Tabla 1 presenta las actividades y artefactos

producidos en las fases de Aacutencora para la elaboracioacuten

de software educativo

TABLA 1 ACTIVIDADES Y ARTEFACTOS DE LA METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO

Metodologiacutea Aacutencora

Fases Actividades y artefactos

Anaacutelisis de

Requerimientos

A traveacutes de entrevistas con los clientes

(maestros y pedagogos) y de la lectura

del respectivo material proporcionado

por ellos se definiraacute la asignatura a la

que se enfocaraacute el software el tema a

tratar y la forma en que se abordaraacute y

evaluaraacute Tambieacuten se estableceraacute el

objetivo general de aprendizaje la

metaacutefora que se emplearaacute y se

determinaraacute el puacuteblico al que se

dirigiraacute el software

Artefactos

Documento que define la asignatura

contenido objetivo general de

aprendizaje metaacutefora y puacuteblico al que

se dirigiraacute el software Guion de la

situacioacuten actual

Recoleccioacuten y

clasificacioacuten de

requerimientos

El guion de la propuesta

computacional reflejaraacute la metaacutefora

que se sigue el ambiente de cada

escena

La bitaacutecora de desarrollo permitiraacute ver

coacutemo el sistema responderaacute a las

diversas acciones que realice el

usuario

En lugar del prototipo raacutepido se

elaboraraacute un Storyboard para presentar

graacuteficamente la estructura de sistema

propuesto

Artefactos

Guion de propuesta computacional

bitaacutecora de desarrollo Storyboard

Resolucioacuten de

conflictos

jerarquizacioacuten y

validacioacuten de

requerimientos

Modificaciones al guion de la

propuesta computacional de acuerdo a

los cambios propuestos por los

maestros y pedagogos

Artefactos

Guion de propuesta computacional e

Storyboard con adecuaciones sentildealas

Cierre

Trasladar los guiones a casos de uso

Artefactos

Casos de uso

Se agregaron algunas caracteriacutesticas a ciertos

artefactos de Aacutencora para poder cubrir los

requerimientos de software educativo Uno de estos

elementos es el guion de la propuesta computacional

al que se propone agregar lo siguiente

Conocimientos previos del usuario Se refiere a los

conocimientos baacutesicos o miacutenimos que debe tener el

alumno para poder interactuar con el moacutedulo

Objetivo de aprendizaje Es el aprendizaje que

debe obtener el alumno despueacutes de haber interactuado

con el moacutedulo

La Figura 1 se presenta la estructura sugerida para el

guion de la propuesta computacional En la bitaacutecora de

desarrollo se propone antildeadir una fila al final de cada

pista donde se describan las situaciones favorables y

no favorables para el cumplimiento del objetivo de

aprendizaje para esa pista en particular Por otra parte

en lugar del prototipo se sugiere utilizar el Storyboard

ya que permite mostrar de manera maacutes completa la

estructura del guion de la propuesta computacional La

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

30

Figura 2 muestra el formato para la elaboracioacuten del

Storyboard

Figura 1 Estructura del guion para la propuesta computacional

Figura 2 Formato para la elaboracioacuten del Storyboard

XVIII RESULTADOS

Aplicando Aacutencora en un ejemplo para la parte de

requerimientos se obtuvo la siguiente informacioacuten

Asignatura Matemaacuteticas

Contenido Estaacute articulado con base en seis ejes

con sus respectivos temas y subtemas que variacutean de

acuerdo al grado escolar Considerando lo anterior se

tiene lo siguiente

a) Grado escolar De segundo hasta quinto grado de

primaria

b) Temas Nuacutemeros naturales capacidad peso

tiempo y ubicacioacuten espacial planteamiento y

resolucioacuten de problemas sencillos en los que se

requiera recolectar y registrar informacioacuten

perioacutedicamente representacioacuten de informacioacuten en

tablas de frecuencia y graacuteficas de barras registros de

los resultados de experimentos aleatorios

representacioacuten de los resultados de un experimento

aleatorio en tablas y graacuteficas

c) Subtemas Planteamiento y resolucioacuten de

problemas que impliquen dos o maacutes operaciones con

nuacutemeros naturales

d) Ejes Introduccioacuten del kiloacutemetro como la unidad

que permite medir grandes distancias y recorridos

largos capacidad peso y tiempo uso del reloj y el

calendario los nuacutemeros sus relaciones y sus

operaciones medicioacuten la prediccioacuten y el azar

tratamiento de la informacioacuten

Objetivo general de aprendizaje Ejercitar las

operaciones aritmeacuteticas baacutesicas interpretar la

informacioacuten y los resultados de la informacioacuten dada

aplicada en situaciones de la vida cotidiana

Con las actividades hasta ahora realizadas se ha

observado que los artefactos de Aacutencora son flexibles y

pueden por lo tanto adaptarse de acuerdo a las

necesidades que implican la adquisicioacuten de

requerimientos de un software educativo Tambieacuten se

aprecian las ventajas de algunos artefactos como la

bitaacutecora de desarrollo que permite determinar las

respuestas del sistema ante las acciones del usuario y

estimar tambieacuten el tiempo que llevaraacute implementar

cada quinteta

La estimacioacuten del tiempo ayuda a tener un valor

aproximado del tiempo de desarrollo de software

Agregar el objetivo de aprendizaje a la bitaacutecora de

desarrollo puede parecer repetitivo despueacutes de

incluirlo en el Storyboard pero esto nos permite ver las

situaciones u obstaacuteculos que pueden impedir que el

objetivo de aprendizaje se alcance y por tanto tenerlos

presente durante el disentildeo A pesar de las ventajas de

la bitaacutecora de desarrollo un inconveniente hasta ahora

encontrado es lo tedioso al manejar muchas quintetas

] INGENIERIacuteA DE SOFTWARE

31

INGENIERIacuteA DE SISTEMAS

cuando por la naturaleza del guion se tienen varios

avisos y mensajes para el usuario Por otra parte los

guiones han ayudado a realizar de manera sencilla el

modelo de casos de uso

En lo referente a la presentacioacuten con los clientes el

guion es un artefacto que pude dar un panorama

general del software que se va a elaborar y queda

reforzada a traveacutes de los Storyboard Cuando se

requieren cambios solicitados por los clientes las

modificaciones a estos artefactos no han sido muy

complicadas dado que por su estructura es faacutecil de

ubicar las secciones y respectivos elementos

XIX CONCLUSIONES

Con los resultados hasta ahora obtenidos se puede

decir que la propuesta permite a los desarrolladores

con poca experiencia en desarrollo de software

educativo obtener los requerimientos de una manera

sencilla

Permite realizar un mejor relevamiento de informacioacuten

de los requerimientos del cliente enfocaacutendonos mas en

este

Es tambieacuten importante mencionar los avances que

tiene y seguiraacute teniendo el software educativo aplicado

no solo a nivel escolar sino tambieacuten al superior

Habiendo revisado el concepto y la aplicacioacuten de la

metodologiacutea Aacutencora en el desarrollo de software

educativo se llegoacute a una comprensioacuten mas extensa de

dicho meacutetodo el cual es de gran importancia dentro de

la ingenieriacutea de Software ya que nos

REFERENCIAS

httpwwwuvmxmisproductividaddocumentsCarmenChay_CIIM2010pdf

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 16: Revista de Ingenieria de Software

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

16

Ingenieriacutea de Software para

Desarrolladores de juegos Huascar Huanca Orozco

Ingenieria de Sistemas San francisco de Asis

Av20 de Octubre esq Belisario Salinas

hhuncausfaedubo

ResumenmdashEn este artiacuteculo veremos una lo que es ldquoIS para

Desarrolladores de juegosrdquo si crees que un juego es facil pues

te equivocas en este articulo mostramos el uso de la IS en la

cracion de juegos que metodos utilizan y la complejidad que

representa para el equipo de desarrollo

1) Palabras clave mdash UMLRequisitosjuegoequipo de trabajo motor del juego

IV INTRODUCCIOacuteN

En la ingenieriacutea de software (IS) el desarrollo

de videojuegos es uacutenico pero similares a los

esfuerzos de software Es la uacutenica que combina el

trabajo de los equipos que cubren muacuteltiples

disciplinas (arte muacutesica actuacioacuten

programacioacuten etc) y que el juego de

acoplamiento que se busca a traveacutes del uso de

prototipos e iteraciones Con ello el desarrollo

del juego se enfrenta a desafiacuteos que pueden ser

abordadas mediante las praacutecticas tradicionales de

SE La industria tiene que adoptar buenas

praacutecticas de SE para sus distintas necesidades

tales como la gestioacuten de activos multimedia y

encontrar el fundamento en el juego La industria

debe asumir los retos por la evolucioacuten de los

meacutetodos de SE para satisfacer sus necesidades

Este trabajo investiga estos desafiacuteos y praacutecticas

de ingenieriacutea destaca para mitigar estos

problemas

V ENTRA EN EL JUEGO

Lo que la IS para desarrolladores de juegos hace

es

Mezcla de ingenieriacutea y el arte El software como

una praacutectica como una preocupacioacuten profesional

Meacutetodos para aprender a disentildear y fabricar un

producto El desarrollo del personaje e ingenieriacutea

de software Estrategias para hacer el mejor uso

de la ingenieriacutea del conocimiento formalizado El

aprendizaje de las habilidades que se pueden

aplicar en cualquier lugar

VI REQUISITOS

Esta parte ofrece una visioacuten general de los

conceptos y herramientas necesarias para la

obtencioacuten de requisitos

IDENTIFICAR LO QUE SE CONSIDERA UN REQUISITO DE SOFTWARE

ESTABLECER LOS CRITERIOS PARA DAR SENTIDO A LOS REQUISITOS Y LA

ESCRITURA DETERMINAR LA MANERA DE REUNIR LOS REQUISITOS O DESCUBRIR

EXPLORAR COacuteMO EMPLEAR CASOS DE USO PARA PERFECCIONAR Y

ANALIZAR LAS NECESIDADES ENCONTRAR TEacuteCNICAS PARA CONFIRMAR QUE LOS REQUISITOS ESTEacuteN

COMPLETOS

VERIFICAR LA EXACTITUD DE LOS REQUISITOS TRACE CAMBIOS EN LOS REQUISITOS

VII PROGRAMADOR DEL MOTOR DEL JUEGO

Fig 1 Juego RPG

] INGENIERIacuteA DE SOFTWARE

17

INGENIERIacuteA DE SISTEMAS

Los programadores de juegos motores crear el

motor de base del juego incluyendo la fiacutesica de

simulacioacuten y disciplinas graacuteficas

A Fiacutesica del motor del programador

Programador de un juego de la fiacutesica se dedica

al desarrollo de las fiacutesica de un juego se emplean

Por lo general un juego de soacutelo simular algunos

aspectos de la fiacutesica del mundo real Por ejemplo

un juego de espacio puede necesitar simulada

gravedad pero no tendriacutea ninguna necesidad

para simular agua viscosidad

Para un juego de rol como World of Warcraft

soacutelo un programador de la fiacutesica puede ser

necesaria Para un juego de combate complejo

como Battlefield 1942 los equipos de

programadores de la fiacutesica pueden ser necesarias

B motor de graacuteficos del programador

A pesar de todos los programadores antildeadir

tanto los contenidos y la experiencia que ofrece

un juego un programador de juego se centra maacutes

en la estrategia de un juego la aplicacioacuten de la

mecaacutenica del juego y la loacutegica y la sensacioacuten

de un juego

Esto no suele ser una disciplina independiente

como lo que este programador es por lo general

se diferencia de un juego a otro y que

inevitablemente se veraacute involucrado con las aacutereas

maacutes especializadas de desarrollo del juego como

los graacuteficos o el sonido

VIII EQUIPO DE TRABAJO

Fig 2 Grupo de trabajo

Un equipo de desarrollo en una organizacioacuten de

ingenieriacutea de software se compone de un grupo

de personas que trabajan en funciones

especializadas para lograr un objetivo comuacuten El

objetivo es la realizacioacuten de un proyecto Un

proyecto se define como un esfuerzo temporal

emprendido para crear un producto uacutenico

servicio o resultado

Aquiacute una pequentildea lista incompleta de algunos de

los componentes de un equipo de trabajo para

Desarrollo de juegos

Analista de requerimientos recopilar y analizar

los requisitos para el software

Arquitecto de software determinar la mejor

arquitectura para el software Seleccionar

Los componentes del proveedor para su inclusioacuten

en el esfuerzo de desarrollo

Disentildeador de software acotar el software para

lograr un rendimiento y otros

Objetivos

Prueba de software probador del software para

garantizar que funcione de acuerdo a la

Requisitos

Programador senior desarrollar bajo nivel de

documentacioacuten de disentildeo sirven como una

tecno-

Ventaja teacutecnica para los demaacutes e implementar el

software de acuerdo

Para el disentildeo

Programador implementar el software de acuerdo

al disentildeo

Trabajos de mantenimiento en el programador de

software creado durante el desarrollo anterior

Los esfuerzos para agregar funcionalidad o

eliminar errores de trabajo con

Atencioacuten al cliente

IX LENGUAJE UNIFICADO DE MODELADO (UML)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

18

Tomando en cuenta que el UML es un estaacutendar

muy flexible Nos da razoacuten que podemos pensar

en el diagrama

como herramientas que permiten realizar

diferentes tipos de trabajo Para revisar un poco

Use un diagrama de casos de uso para reunir y estudiar los requisitos para los propoacutesitos de disentildeo o pruebas

Use un diagrama de actividades para explorar los escenarios de casos de uso

Use un diagrama de clases para identificar las clases y ver coacutemo las

clases se relacionan entre siacute Use un diagrama de objetos para ver coacutemo un objeto se comunica con

otro

Use un diagrama de estado para explorar los atributos de cambio de objeto

Use un diagrama de secuencia para explorar a fondo un caso de uso

mediante el trazado de la orden en el que los objetos enviar mensajes a siacute mismos o entre siacute

Use un diagrama de colaboracioacuten para ver la loacutegica del sistema y la

forma en que los objetos envian mensajes entre siacute Use un diagrama de componentes para explorar y si existen los

subsistemas dentro de su juego

Use un diagrama de implementacioacuten para encontrar la manera de

configurar el paquete de instalacioacuten para su juego

X CONCLUSIONES

El desarrollo de los juegos se han vueltos mas

complejos con el pasar del tiempo y para el

desarrollo de un juego que este a la vanguardia

de la competencia se debe trabajar con la IS es

una forma eficaz de conseguir un juego de

calidad internacional

Referencias [9] Software Engineering for Game Developers by john P Flynt with Omar

Salem [10] httpieeexploreieeeorgxplloginjsptp=amparnumber=5070627ampurl=http

3A2F2Fieeexploreieeeorg2Fiel52F50705742F50705752F05

070627pdf3Farnumber

[11] httpgamedevstackexchangecomquestions19934abstract-game-engine-design

] INGENIERIacuteA DE SOFTWARE

19

INGENIERIacuteA DE SISTEMAS

Estrategias de Prueba del Software Miguel Angel Callisaya Quispe Universidad San Francisco de Asiacutes Av 20 de Octubre La Paz Bolivia

maccc19hotmailcom

Resumen Una estrategia de software es un mecanismo que

proporciona una guiacutea o base pasa ver la forma como se debe

desarrollar la aplicacioacuten en cuanto a meacutetodos esfuerzo

tiempo y recursos que son necesarios para lograr un producto

exitoso

La frecuencia con las que realicen las pruebas es de gran

importancia ya que de estaacute manera se pueda la en encontrar

los errores antes de que se conviertan en errores para la

aplicacioacuten si no se lleva un orden de aplicacioacuten de las pruebas

se va a perder tiempo recurso y sobre todo esfuerzo

Durante las primeras etapas de las pruebas es importante

concentrar toda la atencioacuten en un pequentildeo grupo de

componentes o en un componente que se considere importante

para el desarrollo tanto en los datos como en la parte loacutegica de

la aplicacioacuten

El objetivo final de las estrategias de prueba es documentar la

forma en el que equipo ha hecho el desarrollo y el seguimiento

que se le ha hecho a cada una de las etapas durante las etapas

de desarrollo e implementacioacuten

Palabras clave Calidad Prueba Estrategias Sistema

I INTRODUCCIOacuteN

Durante este articulo es importante mencionar algunos

aspectos que determinan el eacutexito de la aplicacioacuten de las

estrategias de prueba como lo son el enfoque estrateacutegico

para la prueba de software aspectos estrateacutegicos

estrategias de prueba para software convencional

estrategias de prueba para software orientado a objeto

estrategia de prueba para webapps pruebas de validacioacuten y

por uacuteltimo las pruebas del sistema

IIESTRATEGIAS DE PRUEBA DEL SOFTWARE

Verificacioacuten Estamos construyendo el producto

correctamente

Validacioacuten Estamos construyendo el producto correcto

Integracioacuten descendente

La integracioacuten descendente es un planteamiento

incremental a la construccioacuten de la estructura de programas

Se integran los moacutedulos movieacutendose hacia abajo por la

jerarquiacutea de control comenzando por el moacutedulo de control

principal (programa principal) Los moacutedulos subordinados

(de cualquier modo subordinados) al moacutedulo de control

principal se van incorporando en la estructura bien de

forma primero-en-profundidad o bien de forma primero-en-

anchura Fig1

Integracioacuten ascendente

La prueba de la integracioacuten ascendente como su nombre

indica empieza la construccioacuten y la prueba con los

moacutedulos atoacutemicos (es decir moacutedulos de los niveles maacutes

bajos de la estructura del programa) Dado que los moacutedulos

se integran de abajo hacia arriba el proceso requerido de

los moacutedulos subordinados a un nivel dado siempre estaacuten

disponibles y se elimina la necesidad de resguardos Fig2

Fig 1 Integracioacuten descendente

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

20

Fig 3 Integracioacuten Ascendente

Aspectos Estrateacutegicos

Tom Gilb plantea que se deben abordar los

siguientes puntos si se desea implementar con

eacutexito una estrategia de prueba del software

Especificar los requisitos del producto de manera

cuantificable mucho antes de que comiencen las pruebas

-Establecer los objetivos de la prueba de manera expliacutecita (teacuterminos

medibles)

-Comprender queacute usuarios va a tener el software y desarrollar un perfil

-Desarrollar un plan de prueba que haga hincapieacute en la prueba de ciclo

raacutepido

-Construir un software ―robusto disentildeado para probarse a siacute mismo

-Usar revisiones teacutecnicas formales efectivas como filtro antes de la

prueba

Llevar a cabo revisiones teacutecnicas formales para evaluar la

estrategia de prueba y los propios casos de prueba

Desarrollar un enfoque de mejora continua al proceso de

prueba Deberiacutea medirse la estrategia de prueba

Prueba de Unidad

La prueba de unidad centra el proceso de

verificacioacuten en la menor unidad del disentildeo del

software el moacutedulo La prueba de unidad siempre

esta orientada a caja blanca y este paso se suele

llevar a cabo en paralelo para muacuteltiples moacutedulos

Pruebas de Alfa y Beta

C u a n d o s e c o n s t r u y e s o f t w a r e a m e d i d a s e

l l e v a n a c a b o u n a s e r i e d e p r u e b a s d e

a c e p t a c i oacute n p a r a permitir que el cliente valide todos

los requisitos La prueba alfa se lleva a cabo en el

lugar del desarrollo pero por un cliente Se usa el

software en forma normal con el desarrollador como

observador del usuario y registrando los errores y

problemas de uso(entorno controlado)La prueba beta se

lleva a cabo por los usuarios finales en los lugares

de trabajo de los clientes El cliente registra los

problemas y los informa a intervalos regulare

Pruebas del sistema

La prueba del sistema estaacute constituida por una

serie de pruebas diferentes cuyo propoacutesito es

ejercitar profundamente el sistema

Prueba de recuperacioacuten

E s l a p r u e b a d e l s i s t e m a q u e f u e r z a a l

f a l l o d e l s o f t w a r e d e m u c h a s f o r m a s y

v e r i f i c a q u e l a recuperacioacuten se lleva a cabo

apropiadamente Recuperacioacuten automaacutetica o manual

Prueba de seguridad

Intenta verificar que los mecanismos de proteccioacuten

incorporados en el sistema lo protegeraacute de hecho de

accesos impropios

Pruebas de Resistencia

Estaacuten disentildeadas para enfrentar a los programas con

situaciones anormales Una variante de la prueba de

resistencia es una teacutecnica denominada prueba de

sensibilidad intenta descubrir combinaciones de datos

dentro de una clase de entrada valida que pueda producir

inestabilidad o un proceso incorrecto

El arte de la depuracioacuten

La depuracioacuten ocurre como consecuencia de una

prueba efectiva Cuando un caso de prueba

descubre u n e r r o r l a d e p u r a c i oacute n e s e l

p r o c e s o q u e p r o v o c a l a e l i m i n a c i oacute n d e l

e r r o r E l p r o c e s o m e n t a l q u e conecta un siacutentoma

con una causa es la depuracioacuten

El proceso de la depuracioacuten

E l p r o c e s o d e d e p u r a c i oacute n i n t e n t a h a c e r

c o r r e s p o n d e r e l s iacute n t o m a c o n u n a c a u s a

l l e v a n d o a s iacute a l a correccioacuten del error El proceso de

depuracioacuten siempre tiene uno de los dos resultados

siguientes

(1)se encuentra la causa se corrige y se elimina

o

(2)no se encuentra la causa En eacuteste uacuteltimo caso la persona

que realiza la depuracioacuten debe sospechar la causa disentildear

un caso de prueba que ayude a confirmar sus sospechas y el

trabajo vuelve hacia atraacutes a la correccioacuten del error de una

forma iterativa iquestPor queacute es tan difiacutecil la depuracioacuten

Varias caracteriacutesticas de los errores nos dan algunas

] INGENIERIacuteA DE SOFTWARE

21

INGENIERIacuteA DE SISTEMAS

pistas1El siacutentoma y la causa pueden ser

geograacuteficamente remotos entre siacute2El siacutentoma

puede desaparecer (temporalmente) al corregir

otro error

3 E l s iacute n t o m a p u e d e r e a l m e n t e e s t a r

p r o d u c i d o p o r a l g o q u e n o e s u n e r r o r

( i n e x a c t i t u d d e l o s redondeos)

4El siacutentoma puede estar causado por un error

humano que no sea faacutecilmente detectado

5El siacutentoma puede ser el resultado de problemas

de temporizacioacuten en vez de problema s de proceso

6Puede ser difiacutecil reproducir exactamente las

condiciones de entrada

7 E l s iacute n t o m a p u e d e a p a r e c e r e n f o r m a

i n t e r m i t e n t e

8 E l s iacute n t o m a p u e d e s e r d e b i d o a c a u s a s q u e

s e d i s t r i b u y e n p o r u n a s e r i e d e t a r e a s

e j e c u t aacute n d o s e e n diferentes procesadores

IIICONCLUCIONES

Las estrategias de prueba del software es un mecanismo

que proporciona una guiacutea o base pasa ver la forma como se

debe desarrollar la aplicacioacuten en cuanto a meacutetodos para

logra un producto exitoso

IVREFERENCIAS

httpbuenastareascomensayosEstategias-de-prueba-de-

software3752643html

httpwwwestrategiascompruebaagil

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

22

Ingenieriacutea Inversa Juan Carlos Zenteno Sanga

1

Departamento de Ingenieriacutea de Sistemas Universidad San Francisco de Asiacutes

Direccioacuten Incluyendo el Paiacutes 1juanka_58hotmailcom

Resumenmdash La ingenieriacutea de Software es parte del modelo de

proceso de reingenieriacutea de software es el proceso de analizar

un programa con la finalidad de crear una representacioacuten del

programa en un grado mayor de abstraccioacuten del coacutedigo

fuente las herramientas de ingenieriacutea inversa obtienen

informacioacuten del disentildeo de datos arquitectoacutenico y de

procedimientos a partir de un programa existente

En el siguiente artiacuteculo se veraacuten los conceptos baacutesicos y se

denotara un ejemplo praacutectico para una mayor comprensioacuten

del tema

Palabras clave mdash Ingenieriacutea de Software Reingenieriacutea

Linux Ingenieriacutea Inversa

XI INTRODUCCIOacuteN

Inmersa en el aacuterea de conocimiento de la

ingenieriacutea de software se encuentra la ingenieriacutea

inversa como punto de apoyo para los procesos

de anaacutelisis y disentildeo propuestos en diferentes

meacutetodos de desarrollo

La ingenieriacutea inversa permite subsanar esta

deficiencia al documentar los productos de

software a partir del coacutedigo ejecutable con el fin

de obtener los artefactos de anaacutelisis y disentildeo

La ingenieriacutea inversa es ademaacutes una

herramienta uacutetil que ayuda en el proceso de

aseguramiento de la calidad del software

mediante la comparacioacuten de diagramas de fases

de anaacutelisis y desarrollo se apoya comuacutenmente en

la generacioacuten del diagrama de clases debido a la

importancia de este diagrama en la fase de disentildeo

y su facilidad de generacioacuten Existen tambieacuten

otros diagramas de intereacutes como el de

comunicacioacuten y el de secuencias que modelan

las caracteriacutesticas dinaacutemicas de un producto de

software

Hoy en diacutea los productos maacutes comuacutenmente

sometidos a la Ingenieriacutea Inversa son los

productos de Hardware y Software pero

cualquier producto puede ser sometido a este

proceso

Aplicar ingenieriacutea Inversa a algo supone

profundizar el estudio de su funcionamiento

En el caso concreto del Software se conoce

por ingenieriacutea de software a la actividad que se

ocupa de describir coacutemo funciona un programa

de cuyo coacutedigo no se dispone hasta el punto de

generar coacutedigo propio que cumpla con las

mismas funciones Un ejemplo claacutesico del uso de

esta teacutecnica es el software de pago donde las

empresas utilizan esta teacutecnica para proteger sus

productos contra posibles acceso no autorizados

o examinar el producto final para encontrar

posibles bugs inesperados en la ejecucioacuten de

dicho sistema

Existe una gran variedad de software

desensamblador y depurador para aplicar esta

teacutecnica

En resumen la idea general al aplicar

ingenieriacutea inversa es

Conocer a fondo la aplicacioacuten y generar un

mejor coacutedigo

Migrar la aplicacioacuten a un nuevo sistema operativo

Hacer o completar la documentacioacuten

] INGENIERIacuteA DE SOFTWARE

23

INGENIERIacuteA DE SISTEMAS

Verificar que el coacutedigo en estudio cumple las

especificaciones del disentildeo estaacutendar

La informacioacuten extraiacuteda de la lectura del

coacutedigo fuente son las especificaciones de disentildeo

modelos de flujo de control diagramas de disentildeo

documentos de especificacioacuten de disentildeo

pudiendo tomarse estas especificaciones como

nuevo punto de partida para aplicar ingenieriacutea

inversa y obtener informacioacuten a mayor nivel de

abstraccioacuten

Dado que es una labor estrateacutegica es

conveniente conocer cuando conviene realizar la

tarea de Ingenieriacutea inversa para una aplicacioacuten y

cuaacutendo es maacutes rentable sustituirla e implementar

una nueva Las aplicaciones para el primer paso

son aquellas en la que se produce las siguientes

situaciones

bull Fallos frecuentes que son difiacuteciles de

localizar

bull Son poco eficientes pero realizan la funcioacuten

esperada

bull Dificultades en la integracioacuten con otros

sistemas

bull Calidad pobre del software final

bull Resistencia a introducir cambios

bull Pocas personas capacitadas para realizar

modificaciones

bull Dificultades para realizar pruebas

bull El mantenimiento consume muchos recursos

XII LAS BASES DE LA INGENIERIA INVERSA

Los ejemplos maacutes trascendentes sobre los

inicios de la ingenieriacutea inversa son claramente las

investigaciones realizadas sobre antiguos

artefactos creados por humanos ancestrales con

el fin de descubrir la manera en que funcionaban

Uno de los maacutes conocidos es el llamado

mecanismo de Antikythera (Fig 1) el cual se

piensa que fue disentildeado para fines astronoacutemicos

por los griegos siendo uno de los primeros

artefactos que funcionaban con ruedas de

engranes

Figura 1 Antikythera (mecanismo presuntamente creado para fines astronoacutemicos)

Podemos entonces implantar un paralelo en aquella

mitoloacutegica buacutesqueda de descubrimiento sobre el

funcionamiento de esos artefactos y la ingenieriacutea inversa

actual usada en ingenieriacutea de software estableciendo un

importante factor en comuacuten la falta de documentacioacuten En

este ambiente es muy comuacuten contar con una especie de caja

negra en donde sabemos lo que ingresamos y el resultado

que obtenemos pero desconocemos el procedimiento con la

precisioacuten que necesitariacuteamos para replicarlo

Esta falta de documentacioacuten es el impulso

principal de toda la ingenieriacutea inversa las

finalidades de la misma pueden variar pero este

factor inicial nunca lo haraacute

XIII INGENIERIA INVERSA COMO UN PROCESO DE

REINGENIERIA

La ingenieriacutea inversa tiene la misioacuten de

desentrantildear los misterios y secretos de los

sistemas en uso

Baacutesicamente recupera el disentildeo de la

aplicacioacuten a partir del coacutedigo esto se realiza

mediante herramientas que extraen la

informacioacuten de los datos procedimientos y

arquitecturas del sistema

Es aplicable a sistemas con las siguientes

caracteriacutesticas

Documentacioacuten inexistente o totalmente obsoleta

Programacioacuten en bloque de coacutedigos muy grandes

yo sin estructural

La aplicacioacuten cubre gran parte de los requisitos

y el rendimiento esperado

A Nivel de abstraccioacuten

El nivel de Abstraccioacuten de un proceso de

Ingenieriacutea Inversa y las herramientas que se

utilizan para realizarlo aluden la sofisticacioacuten de

la informacioacuten de disentildeo que se puede extraer del

coacutedigo fuente Este proceso deberiacutea ser capaz de

derivar

Sus representaciones de disentildeo de procedimiento

(con un bajo nivel de abstraccioacuten)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

24

La informacioacuten de las estructuras de datos de

procedimiento (con un nivel de abstraccioacuten

ligeramente maacutes elevado)

Modelos de flujo de datos de control (un nivel de

abstraccioacuten relativamente alto)

Modelos de entidades y de relaciones (un elevado

nivel de abstraccioacuten)

B Completitud

En la mayoriacutea de los casos la completitud

decrece a medida que aumenta el grado de

abstraccioacuten

La completitud mejora en proporcioacuten directa a

la cantidad de anaacutelisis efectuado por la persona

que estaacute efectuando la ingenieriacutea inversa

C Interactividad

La interactividad alude al grado con el cual el

ser humano se integra con las herramientas

automatizadas para crear un proceso de

ingenieriacutea inversa efectivo

D Proceso

El Proceso de ingenieriacutea inversa (Fig 2) es el encargado

de reestructurar el coacutedigo fuente para que solamente

contenga instrucciones de programacioacuten estructurada Lo

que hace que el coacutedigo sea maacutes faacutecil de leer y proporciona

la base para las subsiguientes actividades de ingenieriacutea

inversa

Figura 2 Diagrama de Proceso de la Ingenieriacutea Inversa

E Reestructuracioacuten

La reestructuracioacuten del software modifica el

coacutedigo fuente y los datos en un intento adecuado

a futuros cambios esta no modifica la

arquitectura global del programa Tiene a

centrarse en los detalles de disentildeo de moacutedulos

individuales y en estructuras de datos locales

definidas dentro de los moacutedulos

Estos son algunos de los beneficios que se

pueden lograr cuando se reestructura el software

Programas de mayor calidad

Reduce el esfuerzo requerido para llevar a cabo

las actividades de mantenimiento

Hace el software maacutes sencillo para comprobar y

depurar

F Re documentacioacuten

Es el proceso mediante el cual se produce

documentacioacuten retroactivamente desde un

sistema existente

Es considerada una forma de ingenieriacutea inversa

porque la documentacioacuten reconstruida es usada

para ayudar al conocimiento del programa

XIV UTILIZANDO EL METODO CIENTIFICO EN LA

INGENIERIA INVERSA

Ante cualquier dificultad tecnoloacutegica el

meacutetodo cientiacutefico siempre es y seraacute nuestra maacutes

preciada arma Partamos imaginando un pequentildeo

dilema relacionado con el tema de ingenieriacutea de

software especiacuteficamente con un sencillo

programa (Fig 3)

Figura 3 Pantalla de aplicacioacuten que nos serviraacute de ejemplo

Esta sencilla aplicacioacuten mostraraacute un mensaje con cierto

resultado y aun siendo un problema demasiado sencillo

para considerarlo como un reto el objetivo es soacutelo describir

] INGENIERIacuteA DE SOFTWARE

25

INGENIERIacuteA DE SISTEMAS

las acciones usuales del proceso las cuales son aplicables

en escalas muy superiores

El resultado mostrado por el programa dentro del mensaje

emergente se basa en nuestra entrada pero nosotros

desconocemos en lo absoluto los procedimientos utilizados

sobre esta entrada para producir aquella respuesta

A La Observacioacuten es Trascendental

Primero es importante observar el problema su

comportamiento Es substancial tratar de lograr

un pensamiento inductivo en donde logremos

identificar el principio particular del problema

para poder llegar a extrapolarlo a una solucioacuten

general

El punto de quiebre se produce en este instante

Ya al haber observado la aplicacioacuten podriacuteamos

decidir procesar los datos que nos entrega y

lograr crear un coacutedigo equivalente o investigar el

funcionamiento interno

B Dentro de la aplicacioacuten

Luego de la formulacioacuten de una hipoacutetesis sobre

su funcionamiento necesitamos algunas

herramientas para comenzar con la investigacioacuten

En el caso de esta aplicacioacuten con un poco de

conocimientos del lenguaje ensamblador de

programacioacuten tradicional y un descompilador es

suficiente

Es importante emprender de buena forma

nuestro sondeo ser ordenados y metoacutedicos en la

tarea En este momento las capacidades analiacuteticas

y loacutegicas son muy importantes para alivianar

nuestra faena

Lo fundamental es conocer muy bien el

entorno en que nos desenvolveremos En este es

punto indispensable saber que una aplicacioacuten

para Windows necesita invocar internamente al

punto de entrada MessageBox o MessageBoxEx

de la libreriacutea de sistema user32dll para poder

desplegar un mensaje (Fig 4)

Figura 4 Resultado de la Aplicacioacuten

Ya con esa pista es sencillo encontrar el

fragmento de coacutedigo relacionado con las

operaciones relacionadas a nuestro nuacutemero de

entrada que tendriacutea una forma similar a la

mostrada a continuacioacuten en nuestro

descompilador (Fig 5)

Figura 5 Vista del Programa en Ensamblador

Cualquier programador intuiriacutea faacutecilmente lo

que hacen las liacuteneas superiores de esta aplicacioacuten

en especial sprintf es parte de la libreriacutea estaacutendar

de C++ Claramente vemos tambieacuten el tiacutetulo de la

ventana en el coacutedigo estos valores son

interpretados de forma inteligente por este

descompilador en especial y en particular nos

asiste de sobremanera a comprender el coacutedigo

Lo siguiente es sencillamente explorar paso a

paso las acciones superiores de caacutelculo del

resultado En esta instancia seraacute ideal realizar

numerosas pruebas para estar completamente

seguros de que logramos develar el secreto tras la

funcionalidad objetivo (Fig 6)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

26

Figura 6 Inicio del coacutedigo al que aplicaremos ingenieriacutea inversa

Hay que detenerse algunos segundos a

individualizar algunos procedimientos del

anaacutelisis que a simple vista pueden parecer

inconcebibles con el fin de poder generar una

tesis concluyente

Cabe destacar que se omitiraacuten pasos

intermedios de asignaciones de memoria y otros

formalismos propios de ensamblador para

favorecer el entendimiento del lector

Inicialmente tenemos el valor de entrada

supuestamente ya leiacutedo desde el cuadro de

diaacutelogo del programa ahora nos enfocamos en la

primera accioacuten importante Asumiremos el valor

de entrada como una incoacutegnita

En el siguiente trozo de coacutedigo la liacutenea

destacada antildeadioacute siete a nuestra incoacutegnita (Fig 7)

Figura 7 Coacutedigo donde se denota la adicioacuten de 7 a nuestra ecuacioacuten

A continuacioacuten se multiplica ese valor

resultante de la suma por el mismo (Fig 8)

Figura 8 Coacutedigo donde se denota la multiplicacioacuten del valor por la suma

Nuevamente multiplicamos el resultado por el

anterior proporcionado tras la suma En esta

segunda vez ya podemos expresar la operacioacuten

simplemente elevando al cubo la suma anterior

(Fig 9)

Figura 9 Coacutedigo que denota una nueva multiplicacioacuten del resultante

Ahora le restamos diez al resultado

El procedimiento que viene a continuacioacuten

propone un mayor desafiacuteo intelectual Un nuacutemero

constante en este caso el cargado al registro

EAX (Fig 10)

Figura 10 ubicacioacuten del nuacutemero constante EAX

Generalmente la divisioacuten es algo maacutes costosa

en tiempo de procesador que otras operaciones

por lo que ciertos compiladores incluyen tablas

de constantes las cuales son llamadas ―nuacutemeros

maacutegicos para la divisioacuten entera

d Con signo Sin signo

m (hex) s m (hex) a s

-5 99999999 1

-3 55555555 1

-2k 7FFFFFFF k-

1

1 mdash mdash 0 1 0

2k 80000001 k-

1 232-k 0 0

3 55555556 0 AAAAAAAB 0 1

5 66666667 1 CCCCCCCD 0 2

6 2AAAAAAB 0 AAAAAAAB 0 2

7 92492493 2 24924925 1 3

9 38E38E39 1 38E38E39 0 1

10 66666667 2 CCCCCCCD 0 3

11 2E8BA2E9 1 BA2E8BA3 0 3

] INGENIERIacuteA DE SOFTWARE

27

INGENIERIacuteA DE SISTEMAS

12 2AAAAAAB 1 AAAAAAAB 0 3

25 51EB851F 3 51EB851F 0 3

125 10624DD3 3 10624DD3 0 3

Tabla 1 Algunos nuacutemeros maacutegicos (32 bits)

Ahora bien conociendo la tabla 1 sabiendo

que el nuacutemero cargado en esta ocasioacuten

corresponde al once lo que hace el coacutedigo es

multiplicar el resultado de la salida temporal por

aquel nuacutemero (Fig 11)

Figura 11 Multiplicacioacuten del resultante por el numero 11

Naturalmente la multiplicacioacuten por un nuacutemero

tan grande produce una especie de

desbordamiento en el registro contenedor del

resultado al exceder el tamantildeo de palabra del

procesador (en este caso de 32 bits) Estos bits

sobrantes se almacenan naturalmente en el

registro EDX registro que es contiguo a ECX

dentro de la memoria de los registros del

procesador

Ahora desplazamos un bit del registro EDX

(equivalente a una divisioacuten entera por dos) para

obtener la solucioacuten de la divisioacuten por once

generando una sencilla ecuacioacuten

Figura 12 Desplazamiento del bit de registro EDX

El uacuteltimo paso luego de documentar estos

resultados seraacute crear una aplicacioacuten que recree

esta foacutermula soacutelo en caso de tener intenciones de

re-codificacioacuten del desarrollo Consumando este

punto es sencillo confeccionar un diagrama con

todo el proceso anteriormente visto

XV CONCLUSIONES

Queda claro que el tema de la ingenieriacutea

inversa es uno de los toacutepicos maacutes interesantes a

los que podriacutea afrontarse un profesional de la

tecnologiacutea y en general disfrutar el largo proceso

involucrado gracias al desafiacuteo poco predecible

que presenta

En general podemos darnos cuenta de que no

existen muchas metodologiacuteas y teoriacuteas estrictas

sobre coacutemo aplicar las teacutecnicas de ingenieriacutea

inversa Afortunadamente un ingeniero estaacute

preparado para afrentar desafiacuteos de este tipo

Adicionalmente podemos deducir tambieacuten el

aspecto bidireccional de la ingenieriacutea inversa

pues como ya lo comprobamos no solo es un

desafiacuteo aplicarla sino que tambieacuten lo es tener que

dificultar el proceso o incluso tratar de impedirlo

si la situacioacuten lo requiere

REFERENCIAS

[12] Roger Pressman Ingenieriacutea de Software ―Un Enfoque Moderno 6th ed

MC Graw Hill [13] httpeswikipediaorgwikiIngenieria_inversa

[14] httpwwwinfosecwritersconntext_resourcespdfsoftware_security_and_r

everse_engineeringpdf [15] httperwinriedclmodo=visorampelemento=239

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

28

METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO Univ Alejandro Meacutendez Escobar

Universidad San Francisco de Asiacutes

Ingenieriacutea de Sistemas

Ingenieriacutea de Software I

La Paz - Bolivia

amendezusfaedubo

Resumenmdash Al adquirir el software educativo dentro del campo de

desarrollo de software una gran importancia y siendo este

inspiracioacuten de propuestas de innumerables metodologiacuteas que buscan

la elaboracioacuten de un software de calidad

Tomaremos la metodologiacutea Aacutencora enfocada a la fase de

requerimientos y que ofrece elementos que indican las actividades

que deben realizarse los artefactos que se producen y la forma de

obtenerlos

Usando al desarrollo de software educativo como ejemplo de una

mejor comprensioacuten de dicha metodologiacutea analizando la aplicacioacuten

del Aacutencora en un trabajo propuesto para el Instituto Tecnoloacutegico de

Orizaba Meacutexico

Palabras clave mdash Aacutencora Metodologiacutea Desarrollo de Software

Educativo Requerimientos Calidad

XVI INTRODUCCIOacuteN

Hoy en diacutea la tecnologiacutea esta dentro de las

actividades que realizamos es asiacute que la educacioacuten no

queda exenta de ella por o cual es necesario adaptarse

al movimiento tecnoloacutegico que nos trae grandes

ventajas en la transmisioacuten de conocimientos de una

manera sencilla y dinaacutemica

De esta manera han surgido infinidad de

metodologiacuteas de desarrollo de software educativo el

cual tiene como objetivo ser el apoyo para docentes

alumnos y toda persona que este dentro del proceso de

aprendizaje

Tomando en cuenta este ramillete infinito de

metodologiacuteas surge en el ejemplo propuesto la

adaptacioacuten del Aacutencora en el desarrollo de software

educativo teniendo como objetivo principal la

comprensioacuten de los elementos y conceptos de la

metodologiacutea Aacutencora

Aacutencora es una metodologiacutea enfocada a la

adquisicioacuten de requerimientos para software que

ofrece guiacuteas y elementos de apoyo para la obtencioacuten de

estos requerimientos Al mismo tiempo permite pasar a

la fase de disentildeo de manera sencilla Aprovechando las

ventajas que presenta Aacutencora se le hicieron algunas

adaptaciones con el fin de cubrir algunas

caracteriacutesticas del disentildeo instruccional y enriquecer

Aacutencora habilitaacutendola para la adquisicioacuten de

requerimientos de software educativo

XVII APLICACIOacuteN DE LA METODOLOGIacuteA AacuteNCORA

Como es el objetivo principal la comprensioacuten de la

aplicacioacuten de la metodologiacutea Aacutencora dentro del

desarrollo de software educativo de calidad solo

describiremos los meacutetodos del meacutetodo y los resultados

obtenidos

Claro esta que para ahondar maacutes en tema del

software educativo en si el lector puede recurrir a los

siguientes autores Metodologiacutea de desarrollo de

sistemas multimedia (Vaughan 2006) Propuesta de

metodologiacutea para el disentildeo desarrollo y evaluacioacuten

de software educativo (Reyes 2009) Ingenieriacutea de

software educativo con modelaje orientado por objetos

(Goacutemez 1998) asi como tambieacuten los siguientes

modelos ADDIE (Anaacutelisis Disentildeo Desarrollo

Implantacioacuten y Evaluacioacuten) de (McGriff 2000) y el

disentildeo instruccional aplicado al desarrollo de software

educativo EISE (Especificacioacuten Instruccional de

Software Educativo) de (Hernaacutendez 2005)

] INGENIERIacuteA DE SOFTWARE

29

INGENIERIacuteA DE SISTEMAS

Quienes tienen el mismo objetivo de crear software

educativo de calidad podemos sintetizar de ellos los

siguientes puntos

Anaacutelisis del puacuteblico al que se dirigiraacute el software

Problema oacute necesidad educativa a atender

Anaacutelisis de contenido (Tema a tratar actividades

para alcanzar el objetivo de ensentildeanza y forma de

evaluarlo)

Actividades oacute forma actual de llevar a cabo la

ensentildeanza del tema en cuestioacuten

Elaboracioacuten de guiones metaacuteforas escenarios

Creacioacuten de prototipo oacute Storyboard

Disentildeo de interfaz

Mapas de navegacioacuten

Modelos de datos

Elaboracioacuten de diagramas de contexto diagramas

de flujo o diagramas de casos de uso

Ahora enfocaacutendonos en el aacutencora se establece la

propuesta de seleccionar las actividades de Aacutencora que

permitan obtener los requerimientos de un software

educativo

La Tabla 1 presenta las actividades y artefactos

producidos en las fases de Aacutencora para la elaboracioacuten

de software educativo

TABLA 1 ACTIVIDADES Y ARTEFACTOS DE LA METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO

Metodologiacutea Aacutencora

Fases Actividades y artefactos

Anaacutelisis de

Requerimientos

A traveacutes de entrevistas con los clientes

(maestros y pedagogos) y de la lectura

del respectivo material proporcionado

por ellos se definiraacute la asignatura a la

que se enfocaraacute el software el tema a

tratar y la forma en que se abordaraacute y

evaluaraacute Tambieacuten se estableceraacute el

objetivo general de aprendizaje la

metaacutefora que se emplearaacute y se

determinaraacute el puacuteblico al que se

dirigiraacute el software

Artefactos

Documento que define la asignatura

contenido objetivo general de

aprendizaje metaacutefora y puacuteblico al que

se dirigiraacute el software Guion de la

situacioacuten actual

Recoleccioacuten y

clasificacioacuten de

requerimientos

El guion de la propuesta

computacional reflejaraacute la metaacutefora

que se sigue el ambiente de cada

escena

La bitaacutecora de desarrollo permitiraacute ver

coacutemo el sistema responderaacute a las

diversas acciones que realice el

usuario

En lugar del prototipo raacutepido se

elaboraraacute un Storyboard para presentar

graacuteficamente la estructura de sistema

propuesto

Artefactos

Guion de propuesta computacional

bitaacutecora de desarrollo Storyboard

Resolucioacuten de

conflictos

jerarquizacioacuten y

validacioacuten de

requerimientos

Modificaciones al guion de la

propuesta computacional de acuerdo a

los cambios propuestos por los

maestros y pedagogos

Artefactos

Guion de propuesta computacional e

Storyboard con adecuaciones sentildealas

Cierre

Trasladar los guiones a casos de uso

Artefactos

Casos de uso

Se agregaron algunas caracteriacutesticas a ciertos

artefactos de Aacutencora para poder cubrir los

requerimientos de software educativo Uno de estos

elementos es el guion de la propuesta computacional

al que se propone agregar lo siguiente

Conocimientos previos del usuario Se refiere a los

conocimientos baacutesicos o miacutenimos que debe tener el

alumno para poder interactuar con el moacutedulo

Objetivo de aprendizaje Es el aprendizaje que

debe obtener el alumno despueacutes de haber interactuado

con el moacutedulo

La Figura 1 se presenta la estructura sugerida para el

guion de la propuesta computacional En la bitaacutecora de

desarrollo se propone antildeadir una fila al final de cada

pista donde se describan las situaciones favorables y

no favorables para el cumplimiento del objetivo de

aprendizaje para esa pista en particular Por otra parte

en lugar del prototipo se sugiere utilizar el Storyboard

ya que permite mostrar de manera maacutes completa la

estructura del guion de la propuesta computacional La

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

30

Figura 2 muestra el formato para la elaboracioacuten del

Storyboard

Figura 1 Estructura del guion para la propuesta computacional

Figura 2 Formato para la elaboracioacuten del Storyboard

XVIII RESULTADOS

Aplicando Aacutencora en un ejemplo para la parte de

requerimientos se obtuvo la siguiente informacioacuten

Asignatura Matemaacuteticas

Contenido Estaacute articulado con base en seis ejes

con sus respectivos temas y subtemas que variacutean de

acuerdo al grado escolar Considerando lo anterior se

tiene lo siguiente

a) Grado escolar De segundo hasta quinto grado de

primaria

b) Temas Nuacutemeros naturales capacidad peso

tiempo y ubicacioacuten espacial planteamiento y

resolucioacuten de problemas sencillos en los que se

requiera recolectar y registrar informacioacuten

perioacutedicamente representacioacuten de informacioacuten en

tablas de frecuencia y graacuteficas de barras registros de

los resultados de experimentos aleatorios

representacioacuten de los resultados de un experimento

aleatorio en tablas y graacuteficas

c) Subtemas Planteamiento y resolucioacuten de

problemas que impliquen dos o maacutes operaciones con

nuacutemeros naturales

d) Ejes Introduccioacuten del kiloacutemetro como la unidad

que permite medir grandes distancias y recorridos

largos capacidad peso y tiempo uso del reloj y el

calendario los nuacutemeros sus relaciones y sus

operaciones medicioacuten la prediccioacuten y el azar

tratamiento de la informacioacuten

Objetivo general de aprendizaje Ejercitar las

operaciones aritmeacuteticas baacutesicas interpretar la

informacioacuten y los resultados de la informacioacuten dada

aplicada en situaciones de la vida cotidiana

Con las actividades hasta ahora realizadas se ha

observado que los artefactos de Aacutencora son flexibles y

pueden por lo tanto adaptarse de acuerdo a las

necesidades que implican la adquisicioacuten de

requerimientos de un software educativo Tambieacuten se

aprecian las ventajas de algunos artefactos como la

bitaacutecora de desarrollo que permite determinar las

respuestas del sistema ante las acciones del usuario y

estimar tambieacuten el tiempo que llevaraacute implementar

cada quinteta

La estimacioacuten del tiempo ayuda a tener un valor

aproximado del tiempo de desarrollo de software

Agregar el objetivo de aprendizaje a la bitaacutecora de

desarrollo puede parecer repetitivo despueacutes de

incluirlo en el Storyboard pero esto nos permite ver las

situaciones u obstaacuteculos que pueden impedir que el

objetivo de aprendizaje se alcance y por tanto tenerlos

presente durante el disentildeo A pesar de las ventajas de

la bitaacutecora de desarrollo un inconveniente hasta ahora

encontrado es lo tedioso al manejar muchas quintetas

] INGENIERIacuteA DE SOFTWARE

31

INGENIERIacuteA DE SISTEMAS

cuando por la naturaleza del guion se tienen varios

avisos y mensajes para el usuario Por otra parte los

guiones han ayudado a realizar de manera sencilla el

modelo de casos de uso

En lo referente a la presentacioacuten con los clientes el

guion es un artefacto que pude dar un panorama

general del software que se va a elaborar y queda

reforzada a traveacutes de los Storyboard Cuando se

requieren cambios solicitados por los clientes las

modificaciones a estos artefactos no han sido muy

complicadas dado que por su estructura es faacutecil de

ubicar las secciones y respectivos elementos

XIX CONCLUSIONES

Con los resultados hasta ahora obtenidos se puede

decir que la propuesta permite a los desarrolladores

con poca experiencia en desarrollo de software

educativo obtener los requerimientos de una manera

sencilla

Permite realizar un mejor relevamiento de informacioacuten

de los requerimientos del cliente enfocaacutendonos mas en

este

Es tambieacuten importante mencionar los avances que

tiene y seguiraacute teniendo el software educativo aplicado

no solo a nivel escolar sino tambieacuten al superior

Habiendo revisado el concepto y la aplicacioacuten de la

metodologiacutea Aacutencora en el desarrollo de software

educativo se llegoacute a una comprensioacuten mas extensa de

dicho meacutetodo el cual es de gran importancia dentro de

la ingenieriacutea de Software ya que nos

REFERENCIAS

httpwwwuvmxmisproductividaddocumentsCarmenChay_CIIM2010pdf

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 17: Revista de Ingenieria de Software

] INGENIERIacuteA DE SOFTWARE

17

INGENIERIacuteA DE SISTEMAS

Los programadores de juegos motores crear el

motor de base del juego incluyendo la fiacutesica de

simulacioacuten y disciplinas graacuteficas

A Fiacutesica del motor del programador

Programador de un juego de la fiacutesica se dedica

al desarrollo de las fiacutesica de un juego se emplean

Por lo general un juego de soacutelo simular algunos

aspectos de la fiacutesica del mundo real Por ejemplo

un juego de espacio puede necesitar simulada

gravedad pero no tendriacutea ninguna necesidad

para simular agua viscosidad

Para un juego de rol como World of Warcraft

soacutelo un programador de la fiacutesica puede ser

necesaria Para un juego de combate complejo

como Battlefield 1942 los equipos de

programadores de la fiacutesica pueden ser necesarias

B motor de graacuteficos del programador

A pesar de todos los programadores antildeadir

tanto los contenidos y la experiencia que ofrece

un juego un programador de juego se centra maacutes

en la estrategia de un juego la aplicacioacuten de la

mecaacutenica del juego y la loacutegica y la sensacioacuten

de un juego

Esto no suele ser una disciplina independiente

como lo que este programador es por lo general

se diferencia de un juego a otro y que

inevitablemente se veraacute involucrado con las aacutereas

maacutes especializadas de desarrollo del juego como

los graacuteficos o el sonido

VIII EQUIPO DE TRABAJO

Fig 2 Grupo de trabajo

Un equipo de desarrollo en una organizacioacuten de

ingenieriacutea de software se compone de un grupo

de personas que trabajan en funciones

especializadas para lograr un objetivo comuacuten El

objetivo es la realizacioacuten de un proyecto Un

proyecto se define como un esfuerzo temporal

emprendido para crear un producto uacutenico

servicio o resultado

Aquiacute una pequentildea lista incompleta de algunos de

los componentes de un equipo de trabajo para

Desarrollo de juegos

Analista de requerimientos recopilar y analizar

los requisitos para el software

Arquitecto de software determinar la mejor

arquitectura para el software Seleccionar

Los componentes del proveedor para su inclusioacuten

en el esfuerzo de desarrollo

Disentildeador de software acotar el software para

lograr un rendimiento y otros

Objetivos

Prueba de software probador del software para

garantizar que funcione de acuerdo a la

Requisitos

Programador senior desarrollar bajo nivel de

documentacioacuten de disentildeo sirven como una

tecno-

Ventaja teacutecnica para los demaacutes e implementar el

software de acuerdo

Para el disentildeo

Programador implementar el software de acuerdo

al disentildeo

Trabajos de mantenimiento en el programador de

software creado durante el desarrollo anterior

Los esfuerzos para agregar funcionalidad o

eliminar errores de trabajo con

Atencioacuten al cliente

IX LENGUAJE UNIFICADO DE MODELADO (UML)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

18

Tomando en cuenta que el UML es un estaacutendar

muy flexible Nos da razoacuten que podemos pensar

en el diagrama

como herramientas que permiten realizar

diferentes tipos de trabajo Para revisar un poco

Use un diagrama de casos de uso para reunir y estudiar los requisitos para los propoacutesitos de disentildeo o pruebas

Use un diagrama de actividades para explorar los escenarios de casos de uso

Use un diagrama de clases para identificar las clases y ver coacutemo las

clases se relacionan entre siacute Use un diagrama de objetos para ver coacutemo un objeto se comunica con

otro

Use un diagrama de estado para explorar los atributos de cambio de objeto

Use un diagrama de secuencia para explorar a fondo un caso de uso

mediante el trazado de la orden en el que los objetos enviar mensajes a siacute mismos o entre siacute

Use un diagrama de colaboracioacuten para ver la loacutegica del sistema y la

forma en que los objetos envian mensajes entre siacute Use un diagrama de componentes para explorar y si existen los

subsistemas dentro de su juego

Use un diagrama de implementacioacuten para encontrar la manera de

configurar el paquete de instalacioacuten para su juego

X CONCLUSIONES

El desarrollo de los juegos se han vueltos mas

complejos con el pasar del tiempo y para el

desarrollo de un juego que este a la vanguardia

de la competencia se debe trabajar con la IS es

una forma eficaz de conseguir un juego de

calidad internacional

Referencias [9] Software Engineering for Game Developers by john P Flynt with Omar

Salem [10] httpieeexploreieeeorgxplloginjsptp=amparnumber=5070627ampurl=http

3A2F2Fieeexploreieeeorg2Fiel52F50705742F50705752F05

070627pdf3Farnumber

[11] httpgamedevstackexchangecomquestions19934abstract-game-engine-design

] INGENIERIacuteA DE SOFTWARE

19

INGENIERIacuteA DE SISTEMAS

Estrategias de Prueba del Software Miguel Angel Callisaya Quispe Universidad San Francisco de Asiacutes Av 20 de Octubre La Paz Bolivia

maccc19hotmailcom

Resumen Una estrategia de software es un mecanismo que

proporciona una guiacutea o base pasa ver la forma como se debe

desarrollar la aplicacioacuten en cuanto a meacutetodos esfuerzo

tiempo y recursos que son necesarios para lograr un producto

exitoso

La frecuencia con las que realicen las pruebas es de gran

importancia ya que de estaacute manera se pueda la en encontrar

los errores antes de que se conviertan en errores para la

aplicacioacuten si no se lleva un orden de aplicacioacuten de las pruebas

se va a perder tiempo recurso y sobre todo esfuerzo

Durante las primeras etapas de las pruebas es importante

concentrar toda la atencioacuten en un pequentildeo grupo de

componentes o en un componente que se considere importante

para el desarrollo tanto en los datos como en la parte loacutegica de

la aplicacioacuten

El objetivo final de las estrategias de prueba es documentar la

forma en el que equipo ha hecho el desarrollo y el seguimiento

que se le ha hecho a cada una de las etapas durante las etapas

de desarrollo e implementacioacuten

Palabras clave Calidad Prueba Estrategias Sistema

I INTRODUCCIOacuteN

Durante este articulo es importante mencionar algunos

aspectos que determinan el eacutexito de la aplicacioacuten de las

estrategias de prueba como lo son el enfoque estrateacutegico

para la prueba de software aspectos estrateacutegicos

estrategias de prueba para software convencional

estrategias de prueba para software orientado a objeto

estrategia de prueba para webapps pruebas de validacioacuten y

por uacuteltimo las pruebas del sistema

IIESTRATEGIAS DE PRUEBA DEL SOFTWARE

Verificacioacuten Estamos construyendo el producto

correctamente

Validacioacuten Estamos construyendo el producto correcto

Integracioacuten descendente

La integracioacuten descendente es un planteamiento

incremental a la construccioacuten de la estructura de programas

Se integran los moacutedulos movieacutendose hacia abajo por la

jerarquiacutea de control comenzando por el moacutedulo de control

principal (programa principal) Los moacutedulos subordinados

(de cualquier modo subordinados) al moacutedulo de control

principal se van incorporando en la estructura bien de

forma primero-en-profundidad o bien de forma primero-en-

anchura Fig1

Integracioacuten ascendente

La prueba de la integracioacuten ascendente como su nombre

indica empieza la construccioacuten y la prueba con los

moacutedulos atoacutemicos (es decir moacutedulos de los niveles maacutes

bajos de la estructura del programa) Dado que los moacutedulos

se integran de abajo hacia arriba el proceso requerido de

los moacutedulos subordinados a un nivel dado siempre estaacuten

disponibles y se elimina la necesidad de resguardos Fig2

Fig 1 Integracioacuten descendente

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

20

Fig 3 Integracioacuten Ascendente

Aspectos Estrateacutegicos

Tom Gilb plantea que se deben abordar los

siguientes puntos si se desea implementar con

eacutexito una estrategia de prueba del software

Especificar los requisitos del producto de manera

cuantificable mucho antes de que comiencen las pruebas

-Establecer los objetivos de la prueba de manera expliacutecita (teacuterminos

medibles)

-Comprender queacute usuarios va a tener el software y desarrollar un perfil

-Desarrollar un plan de prueba que haga hincapieacute en la prueba de ciclo

raacutepido

-Construir un software ―robusto disentildeado para probarse a siacute mismo

-Usar revisiones teacutecnicas formales efectivas como filtro antes de la

prueba

Llevar a cabo revisiones teacutecnicas formales para evaluar la

estrategia de prueba y los propios casos de prueba

Desarrollar un enfoque de mejora continua al proceso de

prueba Deberiacutea medirse la estrategia de prueba

Prueba de Unidad

La prueba de unidad centra el proceso de

verificacioacuten en la menor unidad del disentildeo del

software el moacutedulo La prueba de unidad siempre

esta orientada a caja blanca y este paso se suele

llevar a cabo en paralelo para muacuteltiples moacutedulos

Pruebas de Alfa y Beta

C u a n d o s e c o n s t r u y e s o f t w a r e a m e d i d a s e

l l e v a n a c a b o u n a s e r i e d e p r u e b a s d e

a c e p t a c i oacute n p a r a permitir que el cliente valide todos

los requisitos La prueba alfa se lleva a cabo en el

lugar del desarrollo pero por un cliente Se usa el

software en forma normal con el desarrollador como

observador del usuario y registrando los errores y

problemas de uso(entorno controlado)La prueba beta se

lleva a cabo por los usuarios finales en los lugares

de trabajo de los clientes El cliente registra los

problemas y los informa a intervalos regulare

Pruebas del sistema

La prueba del sistema estaacute constituida por una

serie de pruebas diferentes cuyo propoacutesito es

ejercitar profundamente el sistema

Prueba de recuperacioacuten

E s l a p r u e b a d e l s i s t e m a q u e f u e r z a a l

f a l l o d e l s o f t w a r e d e m u c h a s f o r m a s y

v e r i f i c a q u e l a recuperacioacuten se lleva a cabo

apropiadamente Recuperacioacuten automaacutetica o manual

Prueba de seguridad

Intenta verificar que los mecanismos de proteccioacuten

incorporados en el sistema lo protegeraacute de hecho de

accesos impropios

Pruebas de Resistencia

Estaacuten disentildeadas para enfrentar a los programas con

situaciones anormales Una variante de la prueba de

resistencia es una teacutecnica denominada prueba de

sensibilidad intenta descubrir combinaciones de datos

dentro de una clase de entrada valida que pueda producir

inestabilidad o un proceso incorrecto

El arte de la depuracioacuten

La depuracioacuten ocurre como consecuencia de una

prueba efectiva Cuando un caso de prueba

descubre u n e r r o r l a d e p u r a c i oacute n e s e l

p r o c e s o q u e p r o v o c a l a e l i m i n a c i oacute n d e l

e r r o r E l p r o c e s o m e n t a l q u e conecta un siacutentoma

con una causa es la depuracioacuten

El proceso de la depuracioacuten

E l p r o c e s o d e d e p u r a c i oacute n i n t e n t a h a c e r

c o r r e s p o n d e r e l s iacute n t o m a c o n u n a c a u s a

l l e v a n d o a s iacute a l a correccioacuten del error El proceso de

depuracioacuten siempre tiene uno de los dos resultados

siguientes

(1)se encuentra la causa se corrige y se elimina

o

(2)no se encuentra la causa En eacuteste uacuteltimo caso la persona

que realiza la depuracioacuten debe sospechar la causa disentildear

un caso de prueba que ayude a confirmar sus sospechas y el

trabajo vuelve hacia atraacutes a la correccioacuten del error de una

forma iterativa iquestPor queacute es tan difiacutecil la depuracioacuten

Varias caracteriacutesticas de los errores nos dan algunas

] INGENIERIacuteA DE SOFTWARE

21

INGENIERIacuteA DE SISTEMAS

pistas1El siacutentoma y la causa pueden ser

geograacuteficamente remotos entre siacute2El siacutentoma

puede desaparecer (temporalmente) al corregir

otro error

3 E l s iacute n t o m a p u e d e r e a l m e n t e e s t a r

p r o d u c i d o p o r a l g o q u e n o e s u n e r r o r

( i n e x a c t i t u d d e l o s redondeos)

4El siacutentoma puede estar causado por un error

humano que no sea faacutecilmente detectado

5El siacutentoma puede ser el resultado de problemas

de temporizacioacuten en vez de problema s de proceso

6Puede ser difiacutecil reproducir exactamente las

condiciones de entrada

7 E l s iacute n t o m a p u e d e a p a r e c e r e n f o r m a

i n t e r m i t e n t e

8 E l s iacute n t o m a p u e d e s e r d e b i d o a c a u s a s q u e

s e d i s t r i b u y e n p o r u n a s e r i e d e t a r e a s

e j e c u t aacute n d o s e e n diferentes procesadores

IIICONCLUCIONES

Las estrategias de prueba del software es un mecanismo

que proporciona una guiacutea o base pasa ver la forma como se

debe desarrollar la aplicacioacuten en cuanto a meacutetodos para

logra un producto exitoso

IVREFERENCIAS

httpbuenastareascomensayosEstategias-de-prueba-de-

software3752643html

httpwwwestrategiascompruebaagil

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

22

Ingenieriacutea Inversa Juan Carlos Zenteno Sanga

1

Departamento de Ingenieriacutea de Sistemas Universidad San Francisco de Asiacutes

Direccioacuten Incluyendo el Paiacutes 1juanka_58hotmailcom

Resumenmdash La ingenieriacutea de Software es parte del modelo de

proceso de reingenieriacutea de software es el proceso de analizar

un programa con la finalidad de crear una representacioacuten del

programa en un grado mayor de abstraccioacuten del coacutedigo

fuente las herramientas de ingenieriacutea inversa obtienen

informacioacuten del disentildeo de datos arquitectoacutenico y de

procedimientos a partir de un programa existente

En el siguiente artiacuteculo se veraacuten los conceptos baacutesicos y se

denotara un ejemplo praacutectico para una mayor comprensioacuten

del tema

Palabras clave mdash Ingenieriacutea de Software Reingenieriacutea

Linux Ingenieriacutea Inversa

XI INTRODUCCIOacuteN

Inmersa en el aacuterea de conocimiento de la

ingenieriacutea de software se encuentra la ingenieriacutea

inversa como punto de apoyo para los procesos

de anaacutelisis y disentildeo propuestos en diferentes

meacutetodos de desarrollo

La ingenieriacutea inversa permite subsanar esta

deficiencia al documentar los productos de

software a partir del coacutedigo ejecutable con el fin

de obtener los artefactos de anaacutelisis y disentildeo

La ingenieriacutea inversa es ademaacutes una

herramienta uacutetil que ayuda en el proceso de

aseguramiento de la calidad del software

mediante la comparacioacuten de diagramas de fases

de anaacutelisis y desarrollo se apoya comuacutenmente en

la generacioacuten del diagrama de clases debido a la

importancia de este diagrama en la fase de disentildeo

y su facilidad de generacioacuten Existen tambieacuten

otros diagramas de intereacutes como el de

comunicacioacuten y el de secuencias que modelan

las caracteriacutesticas dinaacutemicas de un producto de

software

Hoy en diacutea los productos maacutes comuacutenmente

sometidos a la Ingenieriacutea Inversa son los

productos de Hardware y Software pero

cualquier producto puede ser sometido a este

proceso

Aplicar ingenieriacutea Inversa a algo supone

profundizar el estudio de su funcionamiento

En el caso concreto del Software se conoce

por ingenieriacutea de software a la actividad que se

ocupa de describir coacutemo funciona un programa

de cuyo coacutedigo no se dispone hasta el punto de

generar coacutedigo propio que cumpla con las

mismas funciones Un ejemplo claacutesico del uso de

esta teacutecnica es el software de pago donde las

empresas utilizan esta teacutecnica para proteger sus

productos contra posibles acceso no autorizados

o examinar el producto final para encontrar

posibles bugs inesperados en la ejecucioacuten de

dicho sistema

Existe una gran variedad de software

desensamblador y depurador para aplicar esta

teacutecnica

En resumen la idea general al aplicar

ingenieriacutea inversa es

Conocer a fondo la aplicacioacuten y generar un

mejor coacutedigo

Migrar la aplicacioacuten a un nuevo sistema operativo

Hacer o completar la documentacioacuten

] INGENIERIacuteA DE SOFTWARE

23

INGENIERIacuteA DE SISTEMAS

Verificar que el coacutedigo en estudio cumple las

especificaciones del disentildeo estaacutendar

La informacioacuten extraiacuteda de la lectura del

coacutedigo fuente son las especificaciones de disentildeo

modelos de flujo de control diagramas de disentildeo

documentos de especificacioacuten de disentildeo

pudiendo tomarse estas especificaciones como

nuevo punto de partida para aplicar ingenieriacutea

inversa y obtener informacioacuten a mayor nivel de

abstraccioacuten

Dado que es una labor estrateacutegica es

conveniente conocer cuando conviene realizar la

tarea de Ingenieriacutea inversa para una aplicacioacuten y

cuaacutendo es maacutes rentable sustituirla e implementar

una nueva Las aplicaciones para el primer paso

son aquellas en la que se produce las siguientes

situaciones

bull Fallos frecuentes que son difiacuteciles de

localizar

bull Son poco eficientes pero realizan la funcioacuten

esperada

bull Dificultades en la integracioacuten con otros

sistemas

bull Calidad pobre del software final

bull Resistencia a introducir cambios

bull Pocas personas capacitadas para realizar

modificaciones

bull Dificultades para realizar pruebas

bull El mantenimiento consume muchos recursos

XII LAS BASES DE LA INGENIERIA INVERSA

Los ejemplos maacutes trascendentes sobre los

inicios de la ingenieriacutea inversa son claramente las

investigaciones realizadas sobre antiguos

artefactos creados por humanos ancestrales con

el fin de descubrir la manera en que funcionaban

Uno de los maacutes conocidos es el llamado

mecanismo de Antikythera (Fig 1) el cual se

piensa que fue disentildeado para fines astronoacutemicos

por los griegos siendo uno de los primeros

artefactos que funcionaban con ruedas de

engranes

Figura 1 Antikythera (mecanismo presuntamente creado para fines astronoacutemicos)

Podemos entonces implantar un paralelo en aquella

mitoloacutegica buacutesqueda de descubrimiento sobre el

funcionamiento de esos artefactos y la ingenieriacutea inversa

actual usada en ingenieriacutea de software estableciendo un

importante factor en comuacuten la falta de documentacioacuten En

este ambiente es muy comuacuten contar con una especie de caja

negra en donde sabemos lo que ingresamos y el resultado

que obtenemos pero desconocemos el procedimiento con la

precisioacuten que necesitariacuteamos para replicarlo

Esta falta de documentacioacuten es el impulso

principal de toda la ingenieriacutea inversa las

finalidades de la misma pueden variar pero este

factor inicial nunca lo haraacute

XIII INGENIERIA INVERSA COMO UN PROCESO DE

REINGENIERIA

La ingenieriacutea inversa tiene la misioacuten de

desentrantildear los misterios y secretos de los

sistemas en uso

Baacutesicamente recupera el disentildeo de la

aplicacioacuten a partir del coacutedigo esto se realiza

mediante herramientas que extraen la

informacioacuten de los datos procedimientos y

arquitecturas del sistema

Es aplicable a sistemas con las siguientes

caracteriacutesticas

Documentacioacuten inexistente o totalmente obsoleta

Programacioacuten en bloque de coacutedigos muy grandes

yo sin estructural

La aplicacioacuten cubre gran parte de los requisitos

y el rendimiento esperado

A Nivel de abstraccioacuten

El nivel de Abstraccioacuten de un proceso de

Ingenieriacutea Inversa y las herramientas que se

utilizan para realizarlo aluden la sofisticacioacuten de

la informacioacuten de disentildeo que se puede extraer del

coacutedigo fuente Este proceso deberiacutea ser capaz de

derivar

Sus representaciones de disentildeo de procedimiento

(con un bajo nivel de abstraccioacuten)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

24

La informacioacuten de las estructuras de datos de

procedimiento (con un nivel de abstraccioacuten

ligeramente maacutes elevado)

Modelos de flujo de datos de control (un nivel de

abstraccioacuten relativamente alto)

Modelos de entidades y de relaciones (un elevado

nivel de abstraccioacuten)

B Completitud

En la mayoriacutea de los casos la completitud

decrece a medida que aumenta el grado de

abstraccioacuten

La completitud mejora en proporcioacuten directa a

la cantidad de anaacutelisis efectuado por la persona

que estaacute efectuando la ingenieriacutea inversa

C Interactividad

La interactividad alude al grado con el cual el

ser humano se integra con las herramientas

automatizadas para crear un proceso de

ingenieriacutea inversa efectivo

D Proceso

El Proceso de ingenieriacutea inversa (Fig 2) es el encargado

de reestructurar el coacutedigo fuente para que solamente

contenga instrucciones de programacioacuten estructurada Lo

que hace que el coacutedigo sea maacutes faacutecil de leer y proporciona

la base para las subsiguientes actividades de ingenieriacutea

inversa

Figura 2 Diagrama de Proceso de la Ingenieriacutea Inversa

E Reestructuracioacuten

La reestructuracioacuten del software modifica el

coacutedigo fuente y los datos en un intento adecuado

a futuros cambios esta no modifica la

arquitectura global del programa Tiene a

centrarse en los detalles de disentildeo de moacutedulos

individuales y en estructuras de datos locales

definidas dentro de los moacutedulos

Estos son algunos de los beneficios que se

pueden lograr cuando se reestructura el software

Programas de mayor calidad

Reduce el esfuerzo requerido para llevar a cabo

las actividades de mantenimiento

Hace el software maacutes sencillo para comprobar y

depurar

F Re documentacioacuten

Es el proceso mediante el cual se produce

documentacioacuten retroactivamente desde un

sistema existente

Es considerada una forma de ingenieriacutea inversa

porque la documentacioacuten reconstruida es usada

para ayudar al conocimiento del programa

XIV UTILIZANDO EL METODO CIENTIFICO EN LA

INGENIERIA INVERSA

Ante cualquier dificultad tecnoloacutegica el

meacutetodo cientiacutefico siempre es y seraacute nuestra maacutes

preciada arma Partamos imaginando un pequentildeo

dilema relacionado con el tema de ingenieriacutea de

software especiacuteficamente con un sencillo

programa (Fig 3)

Figura 3 Pantalla de aplicacioacuten que nos serviraacute de ejemplo

Esta sencilla aplicacioacuten mostraraacute un mensaje con cierto

resultado y aun siendo un problema demasiado sencillo

para considerarlo como un reto el objetivo es soacutelo describir

] INGENIERIacuteA DE SOFTWARE

25

INGENIERIacuteA DE SISTEMAS

las acciones usuales del proceso las cuales son aplicables

en escalas muy superiores

El resultado mostrado por el programa dentro del mensaje

emergente se basa en nuestra entrada pero nosotros

desconocemos en lo absoluto los procedimientos utilizados

sobre esta entrada para producir aquella respuesta

A La Observacioacuten es Trascendental

Primero es importante observar el problema su

comportamiento Es substancial tratar de lograr

un pensamiento inductivo en donde logremos

identificar el principio particular del problema

para poder llegar a extrapolarlo a una solucioacuten

general

El punto de quiebre se produce en este instante

Ya al haber observado la aplicacioacuten podriacuteamos

decidir procesar los datos que nos entrega y

lograr crear un coacutedigo equivalente o investigar el

funcionamiento interno

B Dentro de la aplicacioacuten

Luego de la formulacioacuten de una hipoacutetesis sobre

su funcionamiento necesitamos algunas

herramientas para comenzar con la investigacioacuten

En el caso de esta aplicacioacuten con un poco de

conocimientos del lenguaje ensamblador de

programacioacuten tradicional y un descompilador es

suficiente

Es importante emprender de buena forma

nuestro sondeo ser ordenados y metoacutedicos en la

tarea En este momento las capacidades analiacuteticas

y loacutegicas son muy importantes para alivianar

nuestra faena

Lo fundamental es conocer muy bien el

entorno en que nos desenvolveremos En este es

punto indispensable saber que una aplicacioacuten

para Windows necesita invocar internamente al

punto de entrada MessageBox o MessageBoxEx

de la libreriacutea de sistema user32dll para poder

desplegar un mensaje (Fig 4)

Figura 4 Resultado de la Aplicacioacuten

Ya con esa pista es sencillo encontrar el

fragmento de coacutedigo relacionado con las

operaciones relacionadas a nuestro nuacutemero de

entrada que tendriacutea una forma similar a la

mostrada a continuacioacuten en nuestro

descompilador (Fig 5)

Figura 5 Vista del Programa en Ensamblador

Cualquier programador intuiriacutea faacutecilmente lo

que hacen las liacuteneas superiores de esta aplicacioacuten

en especial sprintf es parte de la libreriacutea estaacutendar

de C++ Claramente vemos tambieacuten el tiacutetulo de la

ventana en el coacutedigo estos valores son

interpretados de forma inteligente por este

descompilador en especial y en particular nos

asiste de sobremanera a comprender el coacutedigo

Lo siguiente es sencillamente explorar paso a

paso las acciones superiores de caacutelculo del

resultado En esta instancia seraacute ideal realizar

numerosas pruebas para estar completamente

seguros de que logramos develar el secreto tras la

funcionalidad objetivo (Fig 6)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

26

Figura 6 Inicio del coacutedigo al que aplicaremos ingenieriacutea inversa

Hay que detenerse algunos segundos a

individualizar algunos procedimientos del

anaacutelisis que a simple vista pueden parecer

inconcebibles con el fin de poder generar una

tesis concluyente

Cabe destacar que se omitiraacuten pasos

intermedios de asignaciones de memoria y otros

formalismos propios de ensamblador para

favorecer el entendimiento del lector

Inicialmente tenemos el valor de entrada

supuestamente ya leiacutedo desde el cuadro de

diaacutelogo del programa ahora nos enfocamos en la

primera accioacuten importante Asumiremos el valor

de entrada como una incoacutegnita

En el siguiente trozo de coacutedigo la liacutenea

destacada antildeadioacute siete a nuestra incoacutegnita (Fig 7)

Figura 7 Coacutedigo donde se denota la adicioacuten de 7 a nuestra ecuacioacuten

A continuacioacuten se multiplica ese valor

resultante de la suma por el mismo (Fig 8)

Figura 8 Coacutedigo donde se denota la multiplicacioacuten del valor por la suma

Nuevamente multiplicamos el resultado por el

anterior proporcionado tras la suma En esta

segunda vez ya podemos expresar la operacioacuten

simplemente elevando al cubo la suma anterior

(Fig 9)

Figura 9 Coacutedigo que denota una nueva multiplicacioacuten del resultante

Ahora le restamos diez al resultado

El procedimiento que viene a continuacioacuten

propone un mayor desafiacuteo intelectual Un nuacutemero

constante en este caso el cargado al registro

EAX (Fig 10)

Figura 10 ubicacioacuten del nuacutemero constante EAX

Generalmente la divisioacuten es algo maacutes costosa

en tiempo de procesador que otras operaciones

por lo que ciertos compiladores incluyen tablas

de constantes las cuales son llamadas ―nuacutemeros

maacutegicos para la divisioacuten entera

d Con signo Sin signo

m (hex) s m (hex) a s

-5 99999999 1

-3 55555555 1

-2k 7FFFFFFF k-

1

1 mdash mdash 0 1 0

2k 80000001 k-

1 232-k 0 0

3 55555556 0 AAAAAAAB 0 1

5 66666667 1 CCCCCCCD 0 2

6 2AAAAAAB 0 AAAAAAAB 0 2

7 92492493 2 24924925 1 3

9 38E38E39 1 38E38E39 0 1

10 66666667 2 CCCCCCCD 0 3

11 2E8BA2E9 1 BA2E8BA3 0 3

] INGENIERIacuteA DE SOFTWARE

27

INGENIERIacuteA DE SISTEMAS

12 2AAAAAAB 1 AAAAAAAB 0 3

25 51EB851F 3 51EB851F 0 3

125 10624DD3 3 10624DD3 0 3

Tabla 1 Algunos nuacutemeros maacutegicos (32 bits)

Ahora bien conociendo la tabla 1 sabiendo

que el nuacutemero cargado en esta ocasioacuten

corresponde al once lo que hace el coacutedigo es

multiplicar el resultado de la salida temporal por

aquel nuacutemero (Fig 11)

Figura 11 Multiplicacioacuten del resultante por el numero 11

Naturalmente la multiplicacioacuten por un nuacutemero

tan grande produce una especie de

desbordamiento en el registro contenedor del

resultado al exceder el tamantildeo de palabra del

procesador (en este caso de 32 bits) Estos bits

sobrantes se almacenan naturalmente en el

registro EDX registro que es contiguo a ECX

dentro de la memoria de los registros del

procesador

Ahora desplazamos un bit del registro EDX

(equivalente a una divisioacuten entera por dos) para

obtener la solucioacuten de la divisioacuten por once

generando una sencilla ecuacioacuten

Figura 12 Desplazamiento del bit de registro EDX

El uacuteltimo paso luego de documentar estos

resultados seraacute crear una aplicacioacuten que recree

esta foacutermula soacutelo en caso de tener intenciones de

re-codificacioacuten del desarrollo Consumando este

punto es sencillo confeccionar un diagrama con

todo el proceso anteriormente visto

XV CONCLUSIONES

Queda claro que el tema de la ingenieriacutea

inversa es uno de los toacutepicos maacutes interesantes a

los que podriacutea afrontarse un profesional de la

tecnologiacutea y en general disfrutar el largo proceso

involucrado gracias al desafiacuteo poco predecible

que presenta

En general podemos darnos cuenta de que no

existen muchas metodologiacuteas y teoriacuteas estrictas

sobre coacutemo aplicar las teacutecnicas de ingenieriacutea

inversa Afortunadamente un ingeniero estaacute

preparado para afrentar desafiacuteos de este tipo

Adicionalmente podemos deducir tambieacuten el

aspecto bidireccional de la ingenieriacutea inversa

pues como ya lo comprobamos no solo es un

desafiacuteo aplicarla sino que tambieacuten lo es tener que

dificultar el proceso o incluso tratar de impedirlo

si la situacioacuten lo requiere

REFERENCIAS

[12] Roger Pressman Ingenieriacutea de Software ―Un Enfoque Moderno 6th ed

MC Graw Hill [13] httpeswikipediaorgwikiIngenieria_inversa

[14] httpwwwinfosecwritersconntext_resourcespdfsoftware_security_and_r

everse_engineeringpdf [15] httperwinriedclmodo=visorampelemento=239

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

28

METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO Univ Alejandro Meacutendez Escobar

Universidad San Francisco de Asiacutes

Ingenieriacutea de Sistemas

Ingenieriacutea de Software I

La Paz - Bolivia

amendezusfaedubo

Resumenmdash Al adquirir el software educativo dentro del campo de

desarrollo de software una gran importancia y siendo este

inspiracioacuten de propuestas de innumerables metodologiacuteas que buscan

la elaboracioacuten de un software de calidad

Tomaremos la metodologiacutea Aacutencora enfocada a la fase de

requerimientos y que ofrece elementos que indican las actividades

que deben realizarse los artefactos que se producen y la forma de

obtenerlos

Usando al desarrollo de software educativo como ejemplo de una

mejor comprensioacuten de dicha metodologiacutea analizando la aplicacioacuten

del Aacutencora en un trabajo propuesto para el Instituto Tecnoloacutegico de

Orizaba Meacutexico

Palabras clave mdash Aacutencora Metodologiacutea Desarrollo de Software

Educativo Requerimientos Calidad

XVI INTRODUCCIOacuteN

Hoy en diacutea la tecnologiacutea esta dentro de las

actividades que realizamos es asiacute que la educacioacuten no

queda exenta de ella por o cual es necesario adaptarse

al movimiento tecnoloacutegico que nos trae grandes

ventajas en la transmisioacuten de conocimientos de una

manera sencilla y dinaacutemica

De esta manera han surgido infinidad de

metodologiacuteas de desarrollo de software educativo el

cual tiene como objetivo ser el apoyo para docentes

alumnos y toda persona que este dentro del proceso de

aprendizaje

Tomando en cuenta este ramillete infinito de

metodologiacuteas surge en el ejemplo propuesto la

adaptacioacuten del Aacutencora en el desarrollo de software

educativo teniendo como objetivo principal la

comprensioacuten de los elementos y conceptos de la

metodologiacutea Aacutencora

Aacutencora es una metodologiacutea enfocada a la

adquisicioacuten de requerimientos para software que

ofrece guiacuteas y elementos de apoyo para la obtencioacuten de

estos requerimientos Al mismo tiempo permite pasar a

la fase de disentildeo de manera sencilla Aprovechando las

ventajas que presenta Aacutencora se le hicieron algunas

adaptaciones con el fin de cubrir algunas

caracteriacutesticas del disentildeo instruccional y enriquecer

Aacutencora habilitaacutendola para la adquisicioacuten de

requerimientos de software educativo

XVII APLICACIOacuteN DE LA METODOLOGIacuteA AacuteNCORA

Como es el objetivo principal la comprensioacuten de la

aplicacioacuten de la metodologiacutea Aacutencora dentro del

desarrollo de software educativo de calidad solo

describiremos los meacutetodos del meacutetodo y los resultados

obtenidos

Claro esta que para ahondar maacutes en tema del

software educativo en si el lector puede recurrir a los

siguientes autores Metodologiacutea de desarrollo de

sistemas multimedia (Vaughan 2006) Propuesta de

metodologiacutea para el disentildeo desarrollo y evaluacioacuten

de software educativo (Reyes 2009) Ingenieriacutea de

software educativo con modelaje orientado por objetos

(Goacutemez 1998) asi como tambieacuten los siguientes

modelos ADDIE (Anaacutelisis Disentildeo Desarrollo

Implantacioacuten y Evaluacioacuten) de (McGriff 2000) y el

disentildeo instruccional aplicado al desarrollo de software

educativo EISE (Especificacioacuten Instruccional de

Software Educativo) de (Hernaacutendez 2005)

] INGENIERIacuteA DE SOFTWARE

29

INGENIERIacuteA DE SISTEMAS

Quienes tienen el mismo objetivo de crear software

educativo de calidad podemos sintetizar de ellos los

siguientes puntos

Anaacutelisis del puacuteblico al que se dirigiraacute el software

Problema oacute necesidad educativa a atender

Anaacutelisis de contenido (Tema a tratar actividades

para alcanzar el objetivo de ensentildeanza y forma de

evaluarlo)

Actividades oacute forma actual de llevar a cabo la

ensentildeanza del tema en cuestioacuten

Elaboracioacuten de guiones metaacuteforas escenarios

Creacioacuten de prototipo oacute Storyboard

Disentildeo de interfaz

Mapas de navegacioacuten

Modelos de datos

Elaboracioacuten de diagramas de contexto diagramas

de flujo o diagramas de casos de uso

Ahora enfocaacutendonos en el aacutencora se establece la

propuesta de seleccionar las actividades de Aacutencora que

permitan obtener los requerimientos de un software

educativo

La Tabla 1 presenta las actividades y artefactos

producidos en las fases de Aacutencora para la elaboracioacuten

de software educativo

TABLA 1 ACTIVIDADES Y ARTEFACTOS DE LA METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO

Metodologiacutea Aacutencora

Fases Actividades y artefactos

Anaacutelisis de

Requerimientos

A traveacutes de entrevistas con los clientes

(maestros y pedagogos) y de la lectura

del respectivo material proporcionado

por ellos se definiraacute la asignatura a la

que se enfocaraacute el software el tema a

tratar y la forma en que se abordaraacute y

evaluaraacute Tambieacuten se estableceraacute el

objetivo general de aprendizaje la

metaacutefora que se emplearaacute y se

determinaraacute el puacuteblico al que se

dirigiraacute el software

Artefactos

Documento que define la asignatura

contenido objetivo general de

aprendizaje metaacutefora y puacuteblico al que

se dirigiraacute el software Guion de la

situacioacuten actual

Recoleccioacuten y

clasificacioacuten de

requerimientos

El guion de la propuesta

computacional reflejaraacute la metaacutefora

que se sigue el ambiente de cada

escena

La bitaacutecora de desarrollo permitiraacute ver

coacutemo el sistema responderaacute a las

diversas acciones que realice el

usuario

En lugar del prototipo raacutepido se

elaboraraacute un Storyboard para presentar

graacuteficamente la estructura de sistema

propuesto

Artefactos

Guion de propuesta computacional

bitaacutecora de desarrollo Storyboard

Resolucioacuten de

conflictos

jerarquizacioacuten y

validacioacuten de

requerimientos

Modificaciones al guion de la

propuesta computacional de acuerdo a

los cambios propuestos por los

maestros y pedagogos

Artefactos

Guion de propuesta computacional e

Storyboard con adecuaciones sentildealas

Cierre

Trasladar los guiones a casos de uso

Artefactos

Casos de uso

Se agregaron algunas caracteriacutesticas a ciertos

artefactos de Aacutencora para poder cubrir los

requerimientos de software educativo Uno de estos

elementos es el guion de la propuesta computacional

al que se propone agregar lo siguiente

Conocimientos previos del usuario Se refiere a los

conocimientos baacutesicos o miacutenimos que debe tener el

alumno para poder interactuar con el moacutedulo

Objetivo de aprendizaje Es el aprendizaje que

debe obtener el alumno despueacutes de haber interactuado

con el moacutedulo

La Figura 1 se presenta la estructura sugerida para el

guion de la propuesta computacional En la bitaacutecora de

desarrollo se propone antildeadir una fila al final de cada

pista donde se describan las situaciones favorables y

no favorables para el cumplimiento del objetivo de

aprendizaje para esa pista en particular Por otra parte

en lugar del prototipo se sugiere utilizar el Storyboard

ya que permite mostrar de manera maacutes completa la

estructura del guion de la propuesta computacional La

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

30

Figura 2 muestra el formato para la elaboracioacuten del

Storyboard

Figura 1 Estructura del guion para la propuesta computacional

Figura 2 Formato para la elaboracioacuten del Storyboard

XVIII RESULTADOS

Aplicando Aacutencora en un ejemplo para la parte de

requerimientos se obtuvo la siguiente informacioacuten

Asignatura Matemaacuteticas

Contenido Estaacute articulado con base en seis ejes

con sus respectivos temas y subtemas que variacutean de

acuerdo al grado escolar Considerando lo anterior se

tiene lo siguiente

a) Grado escolar De segundo hasta quinto grado de

primaria

b) Temas Nuacutemeros naturales capacidad peso

tiempo y ubicacioacuten espacial planteamiento y

resolucioacuten de problemas sencillos en los que se

requiera recolectar y registrar informacioacuten

perioacutedicamente representacioacuten de informacioacuten en

tablas de frecuencia y graacuteficas de barras registros de

los resultados de experimentos aleatorios

representacioacuten de los resultados de un experimento

aleatorio en tablas y graacuteficas

c) Subtemas Planteamiento y resolucioacuten de

problemas que impliquen dos o maacutes operaciones con

nuacutemeros naturales

d) Ejes Introduccioacuten del kiloacutemetro como la unidad

que permite medir grandes distancias y recorridos

largos capacidad peso y tiempo uso del reloj y el

calendario los nuacutemeros sus relaciones y sus

operaciones medicioacuten la prediccioacuten y el azar

tratamiento de la informacioacuten

Objetivo general de aprendizaje Ejercitar las

operaciones aritmeacuteticas baacutesicas interpretar la

informacioacuten y los resultados de la informacioacuten dada

aplicada en situaciones de la vida cotidiana

Con las actividades hasta ahora realizadas se ha

observado que los artefactos de Aacutencora son flexibles y

pueden por lo tanto adaptarse de acuerdo a las

necesidades que implican la adquisicioacuten de

requerimientos de un software educativo Tambieacuten se

aprecian las ventajas de algunos artefactos como la

bitaacutecora de desarrollo que permite determinar las

respuestas del sistema ante las acciones del usuario y

estimar tambieacuten el tiempo que llevaraacute implementar

cada quinteta

La estimacioacuten del tiempo ayuda a tener un valor

aproximado del tiempo de desarrollo de software

Agregar el objetivo de aprendizaje a la bitaacutecora de

desarrollo puede parecer repetitivo despueacutes de

incluirlo en el Storyboard pero esto nos permite ver las

situaciones u obstaacuteculos que pueden impedir que el

objetivo de aprendizaje se alcance y por tanto tenerlos

presente durante el disentildeo A pesar de las ventajas de

la bitaacutecora de desarrollo un inconveniente hasta ahora

encontrado es lo tedioso al manejar muchas quintetas

] INGENIERIacuteA DE SOFTWARE

31

INGENIERIacuteA DE SISTEMAS

cuando por la naturaleza del guion se tienen varios

avisos y mensajes para el usuario Por otra parte los

guiones han ayudado a realizar de manera sencilla el

modelo de casos de uso

En lo referente a la presentacioacuten con los clientes el

guion es un artefacto que pude dar un panorama

general del software que se va a elaborar y queda

reforzada a traveacutes de los Storyboard Cuando se

requieren cambios solicitados por los clientes las

modificaciones a estos artefactos no han sido muy

complicadas dado que por su estructura es faacutecil de

ubicar las secciones y respectivos elementos

XIX CONCLUSIONES

Con los resultados hasta ahora obtenidos se puede

decir que la propuesta permite a los desarrolladores

con poca experiencia en desarrollo de software

educativo obtener los requerimientos de una manera

sencilla

Permite realizar un mejor relevamiento de informacioacuten

de los requerimientos del cliente enfocaacutendonos mas en

este

Es tambieacuten importante mencionar los avances que

tiene y seguiraacute teniendo el software educativo aplicado

no solo a nivel escolar sino tambieacuten al superior

Habiendo revisado el concepto y la aplicacioacuten de la

metodologiacutea Aacutencora en el desarrollo de software

educativo se llegoacute a una comprensioacuten mas extensa de

dicho meacutetodo el cual es de gran importancia dentro de

la ingenieriacutea de Software ya que nos

REFERENCIAS

httpwwwuvmxmisproductividaddocumentsCarmenChay_CIIM2010pdf

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 18: Revista de Ingenieria de Software

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

18

Tomando en cuenta que el UML es un estaacutendar

muy flexible Nos da razoacuten que podemos pensar

en el diagrama

como herramientas que permiten realizar

diferentes tipos de trabajo Para revisar un poco

Use un diagrama de casos de uso para reunir y estudiar los requisitos para los propoacutesitos de disentildeo o pruebas

Use un diagrama de actividades para explorar los escenarios de casos de uso

Use un diagrama de clases para identificar las clases y ver coacutemo las

clases se relacionan entre siacute Use un diagrama de objetos para ver coacutemo un objeto se comunica con

otro

Use un diagrama de estado para explorar los atributos de cambio de objeto

Use un diagrama de secuencia para explorar a fondo un caso de uso

mediante el trazado de la orden en el que los objetos enviar mensajes a siacute mismos o entre siacute

Use un diagrama de colaboracioacuten para ver la loacutegica del sistema y la

forma en que los objetos envian mensajes entre siacute Use un diagrama de componentes para explorar y si existen los

subsistemas dentro de su juego

Use un diagrama de implementacioacuten para encontrar la manera de

configurar el paquete de instalacioacuten para su juego

X CONCLUSIONES

El desarrollo de los juegos se han vueltos mas

complejos con el pasar del tiempo y para el

desarrollo de un juego que este a la vanguardia

de la competencia se debe trabajar con la IS es

una forma eficaz de conseguir un juego de

calidad internacional

Referencias [9] Software Engineering for Game Developers by john P Flynt with Omar

Salem [10] httpieeexploreieeeorgxplloginjsptp=amparnumber=5070627ampurl=http

3A2F2Fieeexploreieeeorg2Fiel52F50705742F50705752F05

070627pdf3Farnumber

[11] httpgamedevstackexchangecomquestions19934abstract-game-engine-design

] INGENIERIacuteA DE SOFTWARE

19

INGENIERIacuteA DE SISTEMAS

Estrategias de Prueba del Software Miguel Angel Callisaya Quispe Universidad San Francisco de Asiacutes Av 20 de Octubre La Paz Bolivia

maccc19hotmailcom

Resumen Una estrategia de software es un mecanismo que

proporciona una guiacutea o base pasa ver la forma como se debe

desarrollar la aplicacioacuten en cuanto a meacutetodos esfuerzo

tiempo y recursos que son necesarios para lograr un producto

exitoso

La frecuencia con las que realicen las pruebas es de gran

importancia ya que de estaacute manera se pueda la en encontrar

los errores antes de que se conviertan en errores para la

aplicacioacuten si no se lleva un orden de aplicacioacuten de las pruebas

se va a perder tiempo recurso y sobre todo esfuerzo

Durante las primeras etapas de las pruebas es importante

concentrar toda la atencioacuten en un pequentildeo grupo de

componentes o en un componente que se considere importante

para el desarrollo tanto en los datos como en la parte loacutegica de

la aplicacioacuten

El objetivo final de las estrategias de prueba es documentar la

forma en el que equipo ha hecho el desarrollo y el seguimiento

que se le ha hecho a cada una de las etapas durante las etapas

de desarrollo e implementacioacuten

Palabras clave Calidad Prueba Estrategias Sistema

I INTRODUCCIOacuteN

Durante este articulo es importante mencionar algunos

aspectos que determinan el eacutexito de la aplicacioacuten de las

estrategias de prueba como lo son el enfoque estrateacutegico

para la prueba de software aspectos estrateacutegicos

estrategias de prueba para software convencional

estrategias de prueba para software orientado a objeto

estrategia de prueba para webapps pruebas de validacioacuten y

por uacuteltimo las pruebas del sistema

IIESTRATEGIAS DE PRUEBA DEL SOFTWARE

Verificacioacuten Estamos construyendo el producto

correctamente

Validacioacuten Estamos construyendo el producto correcto

Integracioacuten descendente

La integracioacuten descendente es un planteamiento

incremental a la construccioacuten de la estructura de programas

Se integran los moacutedulos movieacutendose hacia abajo por la

jerarquiacutea de control comenzando por el moacutedulo de control

principal (programa principal) Los moacutedulos subordinados

(de cualquier modo subordinados) al moacutedulo de control

principal se van incorporando en la estructura bien de

forma primero-en-profundidad o bien de forma primero-en-

anchura Fig1

Integracioacuten ascendente

La prueba de la integracioacuten ascendente como su nombre

indica empieza la construccioacuten y la prueba con los

moacutedulos atoacutemicos (es decir moacutedulos de los niveles maacutes

bajos de la estructura del programa) Dado que los moacutedulos

se integran de abajo hacia arriba el proceso requerido de

los moacutedulos subordinados a un nivel dado siempre estaacuten

disponibles y se elimina la necesidad de resguardos Fig2

Fig 1 Integracioacuten descendente

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

20

Fig 3 Integracioacuten Ascendente

Aspectos Estrateacutegicos

Tom Gilb plantea que se deben abordar los

siguientes puntos si se desea implementar con

eacutexito una estrategia de prueba del software

Especificar los requisitos del producto de manera

cuantificable mucho antes de que comiencen las pruebas

-Establecer los objetivos de la prueba de manera expliacutecita (teacuterminos

medibles)

-Comprender queacute usuarios va a tener el software y desarrollar un perfil

-Desarrollar un plan de prueba que haga hincapieacute en la prueba de ciclo

raacutepido

-Construir un software ―robusto disentildeado para probarse a siacute mismo

-Usar revisiones teacutecnicas formales efectivas como filtro antes de la

prueba

Llevar a cabo revisiones teacutecnicas formales para evaluar la

estrategia de prueba y los propios casos de prueba

Desarrollar un enfoque de mejora continua al proceso de

prueba Deberiacutea medirse la estrategia de prueba

Prueba de Unidad

La prueba de unidad centra el proceso de

verificacioacuten en la menor unidad del disentildeo del

software el moacutedulo La prueba de unidad siempre

esta orientada a caja blanca y este paso se suele

llevar a cabo en paralelo para muacuteltiples moacutedulos

Pruebas de Alfa y Beta

C u a n d o s e c o n s t r u y e s o f t w a r e a m e d i d a s e

l l e v a n a c a b o u n a s e r i e d e p r u e b a s d e

a c e p t a c i oacute n p a r a permitir que el cliente valide todos

los requisitos La prueba alfa se lleva a cabo en el

lugar del desarrollo pero por un cliente Se usa el

software en forma normal con el desarrollador como

observador del usuario y registrando los errores y

problemas de uso(entorno controlado)La prueba beta se

lleva a cabo por los usuarios finales en los lugares

de trabajo de los clientes El cliente registra los

problemas y los informa a intervalos regulare

Pruebas del sistema

La prueba del sistema estaacute constituida por una

serie de pruebas diferentes cuyo propoacutesito es

ejercitar profundamente el sistema

Prueba de recuperacioacuten

E s l a p r u e b a d e l s i s t e m a q u e f u e r z a a l

f a l l o d e l s o f t w a r e d e m u c h a s f o r m a s y

v e r i f i c a q u e l a recuperacioacuten se lleva a cabo

apropiadamente Recuperacioacuten automaacutetica o manual

Prueba de seguridad

Intenta verificar que los mecanismos de proteccioacuten

incorporados en el sistema lo protegeraacute de hecho de

accesos impropios

Pruebas de Resistencia

Estaacuten disentildeadas para enfrentar a los programas con

situaciones anormales Una variante de la prueba de

resistencia es una teacutecnica denominada prueba de

sensibilidad intenta descubrir combinaciones de datos

dentro de una clase de entrada valida que pueda producir

inestabilidad o un proceso incorrecto

El arte de la depuracioacuten

La depuracioacuten ocurre como consecuencia de una

prueba efectiva Cuando un caso de prueba

descubre u n e r r o r l a d e p u r a c i oacute n e s e l

p r o c e s o q u e p r o v o c a l a e l i m i n a c i oacute n d e l

e r r o r E l p r o c e s o m e n t a l q u e conecta un siacutentoma

con una causa es la depuracioacuten

El proceso de la depuracioacuten

E l p r o c e s o d e d e p u r a c i oacute n i n t e n t a h a c e r

c o r r e s p o n d e r e l s iacute n t o m a c o n u n a c a u s a

l l e v a n d o a s iacute a l a correccioacuten del error El proceso de

depuracioacuten siempre tiene uno de los dos resultados

siguientes

(1)se encuentra la causa se corrige y se elimina

o

(2)no se encuentra la causa En eacuteste uacuteltimo caso la persona

que realiza la depuracioacuten debe sospechar la causa disentildear

un caso de prueba que ayude a confirmar sus sospechas y el

trabajo vuelve hacia atraacutes a la correccioacuten del error de una

forma iterativa iquestPor queacute es tan difiacutecil la depuracioacuten

Varias caracteriacutesticas de los errores nos dan algunas

] INGENIERIacuteA DE SOFTWARE

21

INGENIERIacuteA DE SISTEMAS

pistas1El siacutentoma y la causa pueden ser

geograacuteficamente remotos entre siacute2El siacutentoma

puede desaparecer (temporalmente) al corregir

otro error

3 E l s iacute n t o m a p u e d e r e a l m e n t e e s t a r

p r o d u c i d o p o r a l g o q u e n o e s u n e r r o r

( i n e x a c t i t u d d e l o s redondeos)

4El siacutentoma puede estar causado por un error

humano que no sea faacutecilmente detectado

5El siacutentoma puede ser el resultado de problemas

de temporizacioacuten en vez de problema s de proceso

6Puede ser difiacutecil reproducir exactamente las

condiciones de entrada

7 E l s iacute n t o m a p u e d e a p a r e c e r e n f o r m a

i n t e r m i t e n t e

8 E l s iacute n t o m a p u e d e s e r d e b i d o a c a u s a s q u e

s e d i s t r i b u y e n p o r u n a s e r i e d e t a r e a s

e j e c u t aacute n d o s e e n diferentes procesadores

IIICONCLUCIONES

Las estrategias de prueba del software es un mecanismo

que proporciona una guiacutea o base pasa ver la forma como se

debe desarrollar la aplicacioacuten en cuanto a meacutetodos para

logra un producto exitoso

IVREFERENCIAS

httpbuenastareascomensayosEstategias-de-prueba-de-

software3752643html

httpwwwestrategiascompruebaagil

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

22

Ingenieriacutea Inversa Juan Carlos Zenteno Sanga

1

Departamento de Ingenieriacutea de Sistemas Universidad San Francisco de Asiacutes

Direccioacuten Incluyendo el Paiacutes 1juanka_58hotmailcom

Resumenmdash La ingenieriacutea de Software es parte del modelo de

proceso de reingenieriacutea de software es el proceso de analizar

un programa con la finalidad de crear una representacioacuten del

programa en un grado mayor de abstraccioacuten del coacutedigo

fuente las herramientas de ingenieriacutea inversa obtienen

informacioacuten del disentildeo de datos arquitectoacutenico y de

procedimientos a partir de un programa existente

En el siguiente artiacuteculo se veraacuten los conceptos baacutesicos y se

denotara un ejemplo praacutectico para una mayor comprensioacuten

del tema

Palabras clave mdash Ingenieriacutea de Software Reingenieriacutea

Linux Ingenieriacutea Inversa

XI INTRODUCCIOacuteN

Inmersa en el aacuterea de conocimiento de la

ingenieriacutea de software se encuentra la ingenieriacutea

inversa como punto de apoyo para los procesos

de anaacutelisis y disentildeo propuestos en diferentes

meacutetodos de desarrollo

La ingenieriacutea inversa permite subsanar esta

deficiencia al documentar los productos de

software a partir del coacutedigo ejecutable con el fin

de obtener los artefactos de anaacutelisis y disentildeo

La ingenieriacutea inversa es ademaacutes una

herramienta uacutetil que ayuda en el proceso de

aseguramiento de la calidad del software

mediante la comparacioacuten de diagramas de fases

de anaacutelisis y desarrollo se apoya comuacutenmente en

la generacioacuten del diagrama de clases debido a la

importancia de este diagrama en la fase de disentildeo

y su facilidad de generacioacuten Existen tambieacuten

otros diagramas de intereacutes como el de

comunicacioacuten y el de secuencias que modelan

las caracteriacutesticas dinaacutemicas de un producto de

software

Hoy en diacutea los productos maacutes comuacutenmente

sometidos a la Ingenieriacutea Inversa son los

productos de Hardware y Software pero

cualquier producto puede ser sometido a este

proceso

Aplicar ingenieriacutea Inversa a algo supone

profundizar el estudio de su funcionamiento

En el caso concreto del Software se conoce

por ingenieriacutea de software a la actividad que se

ocupa de describir coacutemo funciona un programa

de cuyo coacutedigo no se dispone hasta el punto de

generar coacutedigo propio que cumpla con las

mismas funciones Un ejemplo claacutesico del uso de

esta teacutecnica es el software de pago donde las

empresas utilizan esta teacutecnica para proteger sus

productos contra posibles acceso no autorizados

o examinar el producto final para encontrar

posibles bugs inesperados en la ejecucioacuten de

dicho sistema

Existe una gran variedad de software

desensamblador y depurador para aplicar esta

teacutecnica

En resumen la idea general al aplicar

ingenieriacutea inversa es

Conocer a fondo la aplicacioacuten y generar un

mejor coacutedigo

Migrar la aplicacioacuten a un nuevo sistema operativo

Hacer o completar la documentacioacuten

] INGENIERIacuteA DE SOFTWARE

23

INGENIERIacuteA DE SISTEMAS

Verificar que el coacutedigo en estudio cumple las

especificaciones del disentildeo estaacutendar

La informacioacuten extraiacuteda de la lectura del

coacutedigo fuente son las especificaciones de disentildeo

modelos de flujo de control diagramas de disentildeo

documentos de especificacioacuten de disentildeo

pudiendo tomarse estas especificaciones como

nuevo punto de partida para aplicar ingenieriacutea

inversa y obtener informacioacuten a mayor nivel de

abstraccioacuten

Dado que es una labor estrateacutegica es

conveniente conocer cuando conviene realizar la

tarea de Ingenieriacutea inversa para una aplicacioacuten y

cuaacutendo es maacutes rentable sustituirla e implementar

una nueva Las aplicaciones para el primer paso

son aquellas en la que se produce las siguientes

situaciones

bull Fallos frecuentes que son difiacuteciles de

localizar

bull Son poco eficientes pero realizan la funcioacuten

esperada

bull Dificultades en la integracioacuten con otros

sistemas

bull Calidad pobre del software final

bull Resistencia a introducir cambios

bull Pocas personas capacitadas para realizar

modificaciones

bull Dificultades para realizar pruebas

bull El mantenimiento consume muchos recursos

XII LAS BASES DE LA INGENIERIA INVERSA

Los ejemplos maacutes trascendentes sobre los

inicios de la ingenieriacutea inversa son claramente las

investigaciones realizadas sobre antiguos

artefactos creados por humanos ancestrales con

el fin de descubrir la manera en que funcionaban

Uno de los maacutes conocidos es el llamado

mecanismo de Antikythera (Fig 1) el cual se

piensa que fue disentildeado para fines astronoacutemicos

por los griegos siendo uno de los primeros

artefactos que funcionaban con ruedas de

engranes

Figura 1 Antikythera (mecanismo presuntamente creado para fines astronoacutemicos)

Podemos entonces implantar un paralelo en aquella

mitoloacutegica buacutesqueda de descubrimiento sobre el

funcionamiento de esos artefactos y la ingenieriacutea inversa

actual usada en ingenieriacutea de software estableciendo un

importante factor en comuacuten la falta de documentacioacuten En

este ambiente es muy comuacuten contar con una especie de caja

negra en donde sabemos lo que ingresamos y el resultado

que obtenemos pero desconocemos el procedimiento con la

precisioacuten que necesitariacuteamos para replicarlo

Esta falta de documentacioacuten es el impulso

principal de toda la ingenieriacutea inversa las

finalidades de la misma pueden variar pero este

factor inicial nunca lo haraacute

XIII INGENIERIA INVERSA COMO UN PROCESO DE

REINGENIERIA

La ingenieriacutea inversa tiene la misioacuten de

desentrantildear los misterios y secretos de los

sistemas en uso

Baacutesicamente recupera el disentildeo de la

aplicacioacuten a partir del coacutedigo esto se realiza

mediante herramientas que extraen la

informacioacuten de los datos procedimientos y

arquitecturas del sistema

Es aplicable a sistemas con las siguientes

caracteriacutesticas

Documentacioacuten inexistente o totalmente obsoleta

Programacioacuten en bloque de coacutedigos muy grandes

yo sin estructural

La aplicacioacuten cubre gran parte de los requisitos

y el rendimiento esperado

A Nivel de abstraccioacuten

El nivel de Abstraccioacuten de un proceso de

Ingenieriacutea Inversa y las herramientas que se

utilizan para realizarlo aluden la sofisticacioacuten de

la informacioacuten de disentildeo que se puede extraer del

coacutedigo fuente Este proceso deberiacutea ser capaz de

derivar

Sus representaciones de disentildeo de procedimiento

(con un bajo nivel de abstraccioacuten)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

24

La informacioacuten de las estructuras de datos de

procedimiento (con un nivel de abstraccioacuten

ligeramente maacutes elevado)

Modelos de flujo de datos de control (un nivel de

abstraccioacuten relativamente alto)

Modelos de entidades y de relaciones (un elevado

nivel de abstraccioacuten)

B Completitud

En la mayoriacutea de los casos la completitud

decrece a medida que aumenta el grado de

abstraccioacuten

La completitud mejora en proporcioacuten directa a

la cantidad de anaacutelisis efectuado por la persona

que estaacute efectuando la ingenieriacutea inversa

C Interactividad

La interactividad alude al grado con el cual el

ser humano se integra con las herramientas

automatizadas para crear un proceso de

ingenieriacutea inversa efectivo

D Proceso

El Proceso de ingenieriacutea inversa (Fig 2) es el encargado

de reestructurar el coacutedigo fuente para que solamente

contenga instrucciones de programacioacuten estructurada Lo

que hace que el coacutedigo sea maacutes faacutecil de leer y proporciona

la base para las subsiguientes actividades de ingenieriacutea

inversa

Figura 2 Diagrama de Proceso de la Ingenieriacutea Inversa

E Reestructuracioacuten

La reestructuracioacuten del software modifica el

coacutedigo fuente y los datos en un intento adecuado

a futuros cambios esta no modifica la

arquitectura global del programa Tiene a

centrarse en los detalles de disentildeo de moacutedulos

individuales y en estructuras de datos locales

definidas dentro de los moacutedulos

Estos son algunos de los beneficios que se

pueden lograr cuando se reestructura el software

Programas de mayor calidad

Reduce el esfuerzo requerido para llevar a cabo

las actividades de mantenimiento

Hace el software maacutes sencillo para comprobar y

depurar

F Re documentacioacuten

Es el proceso mediante el cual se produce

documentacioacuten retroactivamente desde un

sistema existente

Es considerada una forma de ingenieriacutea inversa

porque la documentacioacuten reconstruida es usada

para ayudar al conocimiento del programa

XIV UTILIZANDO EL METODO CIENTIFICO EN LA

INGENIERIA INVERSA

Ante cualquier dificultad tecnoloacutegica el

meacutetodo cientiacutefico siempre es y seraacute nuestra maacutes

preciada arma Partamos imaginando un pequentildeo

dilema relacionado con el tema de ingenieriacutea de

software especiacuteficamente con un sencillo

programa (Fig 3)

Figura 3 Pantalla de aplicacioacuten que nos serviraacute de ejemplo

Esta sencilla aplicacioacuten mostraraacute un mensaje con cierto

resultado y aun siendo un problema demasiado sencillo

para considerarlo como un reto el objetivo es soacutelo describir

] INGENIERIacuteA DE SOFTWARE

25

INGENIERIacuteA DE SISTEMAS

las acciones usuales del proceso las cuales son aplicables

en escalas muy superiores

El resultado mostrado por el programa dentro del mensaje

emergente se basa en nuestra entrada pero nosotros

desconocemos en lo absoluto los procedimientos utilizados

sobre esta entrada para producir aquella respuesta

A La Observacioacuten es Trascendental

Primero es importante observar el problema su

comportamiento Es substancial tratar de lograr

un pensamiento inductivo en donde logremos

identificar el principio particular del problema

para poder llegar a extrapolarlo a una solucioacuten

general

El punto de quiebre se produce en este instante

Ya al haber observado la aplicacioacuten podriacuteamos

decidir procesar los datos que nos entrega y

lograr crear un coacutedigo equivalente o investigar el

funcionamiento interno

B Dentro de la aplicacioacuten

Luego de la formulacioacuten de una hipoacutetesis sobre

su funcionamiento necesitamos algunas

herramientas para comenzar con la investigacioacuten

En el caso de esta aplicacioacuten con un poco de

conocimientos del lenguaje ensamblador de

programacioacuten tradicional y un descompilador es

suficiente

Es importante emprender de buena forma

nuestro sondeo ser ordenados y metoacutedicos en la

tarea En este momento las capacidades analiacuteticas

y loacutegicas son muy importantes para alivianar

nuestra faena

Lo fundamental es conocer muy bien el

entorno en que nos desenvolveremos En este es

punto indispensable saber que una aplicacioacuten

para Windows necesita invocar internamente al

punto de entrada MessageBox o MessageBoxEx

de la libreriacutea de sistema user32dll para poder

desplegar un mensaje (Fig 4)

Figura 4 Resultado de la Aplicacioacuten

Ya con esa pista es sencillo encontrar el

fragmento de coacutedigo relacionado con las

operaciones relacionadas a nuestro nuacutemero de

entrada que tendriacutea una forma similar a la

mostrada a continuacioacuten en nuestro

descompilador (Fig 5)

Figura 5 Vista del Programa en Ensamblador

Cualquier programador intuiriacutea faacutecilmente lo

que hacen las liacuteneas superiores de esta aplicacioacuten

en especial sprintf es parte de la libreriacutea estaacutendar

de C++ Claramente vemos tambieacuten el tiacutetulo de la

ventana en el coacutedigo estos valores son

interpretados de forma inteligente por este

descompilador en especial y en particular nos

asiste de sobremanera a comprender el coacutedigo

Lo siguiente es sencillamente explorar paso a

paso las acciones superiores de caacutelculo del

resultado En esta instancia seraacute ideal realizar

numerosas pruebas para estar completamente

seguros de que logramos develar el secreto tras la

funcionalidad objetivo (Fig 6)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

26

Figura 6 Inicio del coacutedigo al que aplicaremos ingenieriacutea inversa

Hay que detenerse algunos segundos a

individualizar algunos procedimientos del

anaacutelisis que a simple vista pueden parecer

inconcebibles con el fin de poder generar una

tesis concluyente

Cabe destacar que se omitiraacuten pasos

intermedios de asignaciones de memoria y otros

formalismos propios de ensamblador para

favorecer el entendimiento del lector

Inicialmente tenemos el valor de entrada

supuestamente ya leiacutedo desde el cuadro de

diaacutelogo del programa ahora nos enfocamos en la

primera accioacuten importante Asumiremos el valor

de entrada como una incoacutegnita

En el siguiente trozo de coacutedigo la liacutenea

destacada antildeadioacute siete a nuestra incoacutegnita (Fig 7)

Figura 7 Coacutedigo donde se denota la adicioacuten de 7 a nuestra ecuacioacuten

A continuacioacuten se multiplica ese valor

resultante de la suma por el mismo (Fig 8)

Figura 8 Coacutedigo donde se denota la multiplicacioacuten del valor por la suma

Nuevamente multiplicamos el resultado por el

anterior proporcionado tras la suma En esta

segunda vez ya podemos expresar la operacioacuten

simplemente elevando al cubo la suma anterior

(Fig 9)

Figura 9 Coacutedigo que denota una nueva multiplicacioacuten del resultante

Ahora le restamos diez al resultado

El procedimiento que viene a continuacioacuten

propone un mayor desafiacuteo intelectual Un nuacutemero

constante en este caso el cargado al registro

EAX (Fig 10)

Figura 10 ubicacioacuten del nuacutemero constante EAX

Generalmente la divisioacuten es algo maacutes costosa

en tiempo de procesador que otras operaciones

por lo que ciertos compiladores incluyen tablas

de constantes las cuales son llamadas ―nuacutemeros

maacutegicos para la divisioacuten entera

d Con signo Sin signo

m (hex) s m (hex) a s

-5 99999999 1

-3 55555555 1

-2k 7FFFFFFF k-

1

1 mdash mdash 0 1 0

2k 80000001 k-

1 232-k 0 0

3 55555556 0 AAAAAAAB 0 1

5 66666667 1 CCCCCCCD 0 2

6 2AAAAAAB 0 AAAAAAAB 0 2

7 92492493 2 24924925 1 3

9 38E38E39 1 38E38E39 0 1

10 66666667 2 CCCCCCCD 0 3

11 2E8BA2E9 1 BA2E8BA3 0 3

] INGENIERIacuteA DE SOFTWARE

27

INGENIERIacuteA DE SISTEMAS

12 2AAAAAAB 1 AAAAAAAB 0 3

25 51EB851F 3 51EB851F 0 3

125 10624DD3 3 10624DD3 0 3

Tabla 1 Algunos nuacutemeros maacutegicos (32 bits)

Ahora bien conociendo la tabla 1 sabiendo

que el nuacutemero cargado en esta ocasioacuten

corresponde al once lo que hace el coacutedigo es

multiplicar el resultado de la salida temporal por

aquel nuacutemero (Fig 11)

Figura 11 Multiplicacioacuten del resultante por el numero 11

Naturalmente la multiplicacioacuten por un nuacutemero

tan grande produce una especie de

desbordamiento en el registro contenedor del

resultado al exceder el tamantildeo de palabra del

procesador (en este caso de 32 bits) Estos bits

sobrantes se almacenan naturalmente en el

registro EDX registro que es contiguo a ECX

dentro de la memoria de los registros del

procesador

Ahora desplazamos un bit del registro EDX

(equivalente a una divisioacuten entera por dos) para

obtener la solucioacuten de la divisioacuten por once

generando una sencilla ecuacioacuten

Figura 12 Desplazamiento del bit de registro EDX

El uacuteltimo paso luego de documentar estos

resultados seraacute crear una aplicacioacuten que recree

esta foacutermula soacutelo en caso de tener intenciones de

re-codificacioacuten del desarrollo Consumando este

punto es sencillo confeccionar un diagrama con

todo el proceso anteriormente visto

XV CONCLUSIONES

Queda claro que el tema de la ingenieriacutea

inversa es uno de los toacutepicos maacutes interesantes a

los que podriacutea afrontarse un profesional de la

tecnologiacutea y en general disfrutar el largo proceso

involucrado gracias al desafiacuteo poco predecible

que presenta

En general podemos darnos cuenta de que no

existen muchas metodologiacuteas y teoriacuteas estrictas

sobre coacutemo aplicar las teacutecnicas de ingenieriacutea

inversa Afortunadamente un ingeniero estaacute

preparado para afrentar desafiacuteos de este tipo

Adicionalmente podemos deducir tambieacuten el

aspecto bidireccional de la ingenieriacutea inversa

pues como ya lo comprobamos no solo es un

desafiacuteo aplicarla sino que tambieacuten lo es tener que

dificultar el proceso o incluso tratar de impedirlo

si la situacioacuten lo requiere

REFERENCIAS

[12] Roger Pressman Ingenieriacutea de Software ―Un Enfoque Moderno 6th ed

MC Graw Hill [13] httpeswikipediaorgwikiIngenieria_inversa

[14] httpwwwinfosecwritersconntext_resourcespdfsoftware_security_and_r

everse_engineeringpdf [15] httperwinriedclmodo=visorampelemento=239

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

28

METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO Univ Alejandro Meacutendez Escobar

Universidad San Francisco de Asiacutes

Ingenieriacutea de Sistemas

Ingenieriacutea de Software I

La Paz - Bolivia

amendezusfaedubo

Resumenmdash Al adquirir el software educativo dentro del campo de

desarrollo de software una gran importancia y siendo este

inspiracioacuten de propuestas de innumerables metodologiacuteas que buscan

la elaboracioacuten de un software de calidad

Tomaremos la metodologiacutea Aacutencora enfocada a la fase de

requerimientos y que ofrece elementos que indican las actividades

que deben realizarse los artefactos que se producen y la forma de

obtenerlos

Usando al desarrollo de software educativo como ejemplo de una

mejor comprensioacuten de dicha metodologiacutea analizando la aplicacioacuten

del Aacutencora en un trabajo propuesto para el Instituto Tecnoloacutegico de

Orizaba Meacutexico

Palabras clave mdash Aacutencora Metodologiacutea Desarrollo de Software

Educativo Requerimientos Calidad

XVI INTRODUCCIOacuteN

Hoy en diacutea la tecnologiacutea esta dentro de las

actividades que realizamos es asiacute que la educacioacuten no

queda exenta de ella por o cual es necesario adaptarse

al movimiento tecnoloacutegico que nos trae grandes

ventajas en la transmisioacuten de conocimientos de una

manera sencilla y dinaacutemica

De esta manera han surgido infinidad de

metodologiacuteas de desarrollo de software educativo el

cual tiene como objetivo ser el apoyo para docentes

alumnos y toda persona que este dentro del proceso de

aprendizaje

Tomando en cuenta este ramillete infinito de

metodologiacuteas surge en el ejemplo propuesto la

adaptacioacuten del Aacutencora en el desarrollo de software

educativo teniendo como objetivo principal la

comprensioacuten de los elementos y conceptos de la

metodologiacutea Aacutencora

Aacutencora es una metodologiacutea enfocada a la

adquisicioacuten de requerimientos para software que

ofrece guiacuteas y elementos de apoyo para la obtencioacuten de

estos requerimientos Al mismo tiempo permite pasar a

la fase de disentildeo de manera sencilla Aprovechando las

ventajas que presenta Aacutencora se le hicieron algunas

adaptaciones con el fin de cubrir algunas

caracteriacutesticas del disentildeo instruccional y enriquecer

Aacutencora habilitaacutendola para la adquisicioacuten de

requerimientos de software educativo

XVII APLICACIOacuteN DE LA METODOLOGIacuteA AacuteNCORA

Como es el objetivo principal la comprensioacuten de la

aplicacioacuten de la metodologiacutea Aacutencora dentro del

desarrollo de software educativo de calidad solo

describiremos los meacutetodos del meacutetodo y los resultados

obtenidos

Claro esta que para ahondar maacutes en tema del

software educativo en si el lector puede recurrir a los

siguientes autores Metodologiacutea de desarrollo de

sistemas multimedia (Vaughan 2006) Propuesta de

metodologiacutea para el disentildeo desarrollo y evaluacioacuten

de software educativo (Reyes 2009) Ingenieriacutea de

software educativo con modelaje orientado por objetos

(Goacutemez 1998) asi como tambieacuten los siguientes

modelos ADDIE (Anaacutelisis Disentildeo Desarrollo

Implantacioacuten y Evaluacioacuten) de (McGriff 2000) y el

disentildeo instruccional aplicado al desarrollo de software

educativo EISE (Especificacioacuten Instruccional de

Software Educativo) de (Hernaacutendez 2005)

] INGENIERIacuteA DE SOFTWARE

29

INGENIERIacuteA DE SISTEMAS

Quienes tienen el mismo objetivo de crear software

educativo de calidad podemos sintetizar de ellos los

siguientes puntos

Anaacutelisis del puacuteblico al que se dirigiraacute el software

Problema oacute necesidad educativa a atender

Anaacutelisis de contenido (Tema a tratar actividades

para alcanzar el objetivo de ensentildeanza y forma de

evaluarlo)

Actividades oacute forma actual de llevar a cabo la

ensentildeanza del tema en cuestioacuten

Elaboracioacuten de guiones metaacuteforas escenarios

Creacioacuten de prototipo oacute Storyboard

Disentildeo de interfaz

Mapas de navegacioacuten

Modelos de datos

Elaboracioacuten de diagramas de contexto diagramas

de flujo o diagramas de casos de uso

Ahora enfocaacutendonos en el aacutencora se establece la

propuesta de seleccionar las actividades de Aacutencora que

permitan obtener los requerimientos de un software

educativo

La Tabla 1 presenta las actividades y artefactos

producidos en las fases de Aacutencora para la elaboracioacuten

de software educativo

TABLA 1 ACTIVIDADES Y ARTEFACTOS DE LA METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO

Metodologiacutea Aacutencora

Fases Actividades y artefactos

Anaacutelisis de

Requerimientos

A traveacutes de entrevistas con los clientes

(maestros y pedagogos) y de la lectura

del respectivo material proporcionado

por ellos se definiraacute la asignatura a la

que se enfocaraacute el software el tema a

tratar y la forma en que se abordaraacute y

evaluaraacute Tambieacuten se estableceraacute el

objetivo general de aprendizaje la

metaacutefora que se emplearaacute y se

determinaraacute el puacuteblico al que se

dirigiraacute el software

Artefactos

Documento que define la asignatura

contenido objetivo general de

aprendizaje metaacutefora y puacuteblico al que

se dirigiraacute el software Guion de la

situacioacuten actual

Recoleccioacuten y

clasificacioacuten de

requerimientos

El guion de la propuesta

computacional reflejaraacute la metaacutefora

que se sigue el ambiente de cada

escena

La bitaacutecora de desarrollo permitiraacute ver

coacutemo el sistema responderaacute a las

diversas acciones que realice el

usuario

En lugar del prototipo raacutepido se

elaboraraacute un Storyboard para presentar

graacuteficamente la estructura de sistema

propuesto

Artefactos

Guion de propuesta computacional

bitaacutecora de desarrollo Storyboard

Resolucioacuten de

conflictos

jerarquizacioacuten y

validacioacuten de

requerimientos

Modificaciones al guion de la

propuesta computacional de acuerdo a

los cambios propuestos por los

maestros y pedagogos

Artefactos

Guion de propuesta computacional e

Storyboard con adecuaciones sentildealas

Cierre

Trasladar los guiones a casos de uso

Artefactos

Casos de uso

Se agregaron algunas caracteriacutesticas a ciertos

artefactos de Aacutencora para poder cubrir los

requerimientos de software educativo Uno de estos

elementos es el guion de la propuesta computacional

al que se propone agregar lo siguiente

Conocimientos previos del usuario Se refiere a los

conocimientos baacutesicos o miacutenimos que debe tener el

alumno para poder interactuar con el moacutedulo

Objetivo de aprendizaje Es el aprendizaje que

debe obtener el alumno despueacutes de haber interactuado

con el moacutedulo

La Figura 1 se presenta la estructura sugerida para el

guion de la propuesta computacional En la bitaacutecora de

desarrollo se propone antildeadir una fila al final de cada

pista donde se describan las situaciones favorables y

no favorables para el cumplimiento del objetivo de

aprendizaje para esa pista en particular Por otra parte

en lugar del prototipo se sugiere utilizar el Storyboard

ya que permite mostrar de manera maacutes completa la

estructura del guion de la propuesta computacional La

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

30

Figura 2 muestra el formato para la elaboracioacuten del

Storyboard

Figura 1 Estructura del guion para la propuesta computacional

Figura 2 Formato para la elaboracioacuten del Storyboard

XVIII RESULTADOS

Aplicando Aacutencora en un ejemplo para la parte de

requerimientos se obtuvo la siguiente informacioacuten

Asignatura Matemaacuteticas

Contenido Estaacute articulado con base en seis ejes

con sus respectivos temas y subtemas que variacutean de

acuerdo al grado escolar Considerando lo anterior se

tiene lo siguiente

a) Grado escolar De segundo hasta quinto grado de

primaria

b) Temas Nuacutemeros naturales capacidad peso

tiempo y ubicacioacuten espacial planteamiento y

resolucioacuten de problemas sencillos en los que se

requiera recolectar y registrar informacioacuten

perioacutedicamente representacioacuten de informacioacuten en

tablas de frecuencia y graacuteficas de barras registros de

los resultados de experimentos aleatorios

representacioacuten de los resultados de un experimento

aleatorio en tablas y graacuteficas

c) Subtemas Planteamiento y resolucioacuten de

problemas que impliquen dos o maacutes operaciones con

nuacutemeros naturales

d) Ejes Introduccioacuten del kiloacutemetro como la unidad

que permite medir grandes distancias y recorridos

largos capacidad peso y tiempo uso del reloj y el

calendario los nuacutemeros sus relaciones y sus

operaciones medicioacuten la prediccioacuten y el azar

tratamiento de la informacioacuten

Objetivo general de aprendizaje Ejercitar las

operaciones aritmeacuteticas baacutesicas interpretar la

informacioacuten y los resultados de la informacioacuten dada

aplicada en situaciones de la vida cotidiana

Con las actividades hasta ahora realizadas se ha

observado que los artefactos de Aacutencora son flexibles y

pueden por lo tanto adaptarse de acuerdo a las

necesidades que implican la adquisicioacuten de

requerimientos de un software educativo Tambieacuten se

aprecian las ventajas de algunos artefactos como la

bitaacutecora de desarrollo que permite determinar las

respuestas del sistema ante las acciones del usuario y

estimar tambieacuten el tiempo que llevaraacute implementar

cada quinteta

La estimacioacuten del tiempo ayuda a tener un valor

aproximado del tiempo de desarrollo de software

Agregar el objetivo de aprendizaje a la bitaacutecora de

desarrollo puede parecer repetitivo despueacutes de

incluirlo en el Storyboard pero esto nos permite ver las

situaciones u obstaacuteculos que pueden impedir que el

objetivo de aprendizaje se alcance y por tanto tenerlos

presente durante el disentildeo A pesar de las ventajas de

la bitaacutecora de desarrollo un inconveniente hasta ahora

encontrado es lo tedioso al manejar muchas quintetas

] INGENIERIacuteA DE SOFTWARE

31

INGENIERIacuteA DE SISTEMAS

cuando por la naturaleza del guion se tienen varios

avisos y mensajes para el usuario Por otra parte los

guiones han ayudado a realizar de manera sencilla el

modelo de casos de uso

En lo referente a la presentacioacuten con los clientes el

guion es un artefacto que pude dar un panorama

general del software que se va a elaborar y queda

reforzada a traveacutes de los Storyboard Cuando se

requieren cambios solicitados por los clientes las

modificaciones a estos artefactos no han sido muy

complicadas dado que por su estructura es faacutecil de

ubicar las secciones y respectivos elementos

XIX CONCLUSIONES

Con los resultados hasta ahora obtenidos se puede

decir que la propuesta permite a los desarrolladores

con poca experiencia en desarrollo de software

educativo obtener los requerimientos de una manera

sencilla

Permite realizar un mejor relevamiento de informacioacuten

de los requerimientos del cliente enfocaacutendonos mas en

este

Es tambieacuten importante mencionar los avances que

tiene y seguiraacute teniendo el software educativo aplicado

no solo a nivel escolar sino tambieacuten al superior

Habiendo revisado el concepto y la aplicacioacuten de la

metodologiacutea Aacutencora en el desarrollo de software

educativo se llegoacute a una comprensioacuten mas extensa de

dicho meacutetodo el cual es de gran importancia dentro de

la ingenieriacutea de Software ya que nos

REFERENCIAS

httpwwwuvmxmisproductividaddocumentsCarmenChay_CIIM2010pdf

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 19: Revista de Ingenieria de Software

] INGENIERIacuteA DE SOFTWARE

19

INGENIERIacuteA DE SISTEMAS

Estrategias de Prueba del Software Miguel Angel Callisaya Quispe Universidad San Francisco de Asiacutes Av 20 de Octubre La Paz Bolivia

maccc19hotmailcom

Resumen Una estrategia de software es un mecanismo que

proporciona una guiacutea o base pasa ver la forma como se debe

desarrollar la aplicacioacuten en cuanto a meacutetodos esfuerzo

tiempo y recursos que son necesarios para lograr un producto

exitoso

La frecuencia con las que realicen las pruebas es de gran

importancia ya que de estaacute manera se pueda la en encontrar

los errores antes de que se conviertan en errores para la

aplicacioacuten si no se lleva un orden de aplicacioacuten de las pruebas

se va a perder tiempo recurso y sobre todo esfuerzo

Durante las primeras etapas de las pruebas es importante

concentrar toda la atencioacuten en un pequentildeo grupo de

componentes o en un componente que se considere importante

para el desarrollo tanto en los datos como en la parte loacutegica de

la aplicacioacuten

El objetivo final de las estrategias de prueba es documentar la

forma en el que equipo ha hecho el desarrollo y el seguimiento

que se le ha hecho a cada una de las etapas durante las etapas

de desarrollo e implementacioacuten

Palabras clave Calidad Prueba Estrategias Sistema

I INTRODUCCIOacuteN

Durante este articulo es importante mencionar algunos

aspectos que determinan el eacutexito de la aplicacioacuten de las

estrategias de prueba como lo son el enfoque estrateacutegico

para la prueba de software aspectos estrateacutegicos

estrategias de prueba para software convencional

estrategias de prueba para software orientado a objeto

estrategia de prueba para webapps pruebas de validacioacuten y

por uacuteltimo las pruebas del sistema

IIESTRATEGIAS DE PRUEBA DEL SOFTWARE

Verificacioacuten Estamos construyendo el producto

correctamente

Validacioacuten Estamos construyendo el producto correcto

Integracioacuten descendente

La integracioacuten descendente es un planteamiento

incremental a la construccioacuten de la estructura de programas

Se integran los moacutedulos movieacutendose hacia abajo por la

jerarquiacutea de control comenzando por el moacutedulo de control

principal (programa principal) Los moacutedulos subordinados

(de cualquier modo subordinados) al moacutedulo de control

principal se van incorporando en la estructura bien de

forma primero-en-profundidad o bien de forma primero-en-

anchura Fig1

Integracioacuten ascendente

La prueba de la integracioacuten ascendente como su nombre

indica empieza la construccioacuten y la prueba con los

moacutedulos atoacutemicos (es decir moacutedulos de los niveles maacutes

bajos de la estructura del programa) Dado que los moacutedulos

se integran de abajo hacia arriba el proceso requerido de

los moacutedulos subordinados a un nivel dado siempre estaacuten

disponibles y se elimina la necesidad de resguardos Fig2

Fig 1 Integracioacuten descendente

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

20

Fig 3 Integracioacuten Ascendente

Aspectos Estrateacutegicos

Tom Gilb plantea que se deben abordar los

siguientes puntos si se desea implementar con

eacutexito una estrategia de prueba del software

Especificar los requisitos del producto de manera

cuantificable mucho antes de que comiencen las pruebas

-Establecer los objetivos de la prueba de manera expliacutecita (teacuterminos

medibles)

-Comprender queacute usuarios va a tener el software y desarrollar un perfil

-Desarrollar un plan de prueba que haga hincapieacute en la prueba de ciclo

raacutepido

-Construir un software ―robusto disentildeado para probarse a siacute mismo

-Usar revisiones teacutecnicas formales efectivas como filtro antes de la

prueba

Llevar a cabo revisiones teacutecnicas formales para evaluar la

estrategia de prueba y los propios casos de prueba

Desarrollar un enfoque de mejora continua al proceso de

prueba Deberiacutea medirse la estrategia de prueba

Prueba de Unidad

La prueba de unidad centra el proceso de

verificacioacuten en la menor unidad del disentildeo del

software el moacutedulo La prueba de unidad siempre

esta orientada a caja blanca y este paso se suele

llevar a cabo en paralelo para muacuteltiples moacutedulos

Pruebas de Alfa y Beta

C u a n d o s e c o n s t r u y e s o f t w a r e a m e d i d a s e

l l e v a n a c a b o u n a s e r i e d e p r u e b a s d e

a c e p t a c i oacute n p a r a permitir que el cliente valide todos

los requisitos La prueba alfa se lleva a cabo en el

lugar del desarrollo pero por un cliente Se usa el

software en forma normal con el desarrollador como

observador del usuario y registrando los errores y

problemas de uso(entorno controlado)La prueba beta se

lleva a cabo por los usuarios finales en los lugares

de trabajo de los clientes El cliente registra los

problemas y los informa a intervalos regulare

Pruebas del sistema

La prueba del sistema estaacute constituida por una

serie de pruebas diferentes cuyo propoacutesito es

ejercitar profundamente el sistema

Prueba de recuperacioacuten

E s l a p r u e b a d e l s i s t e m a q u e f u e r z a a l

f a l l o d e l s o f t w a r e d e m u c h a s f o r m a s y

v e r i f i c a q u e l a recuperacioacuten se lleva a cabo

apropiadamente Recuperacioacuten automaacutetica o manual

Prueba de seguridad

Intenta verificar que los mecanismos de proteccioacuten

incorporados en el sistema lo protegeraacute de hecho de

accesos impropios

Pruebas de Resistencia

Estaacuten disentildeadas para enfrentar a los programas con

situaciones anormales Una variante de la prueba de

resistencia es una teacutecnica denominada prueba de

sensibilidad intenta descubrir combinaciones de datos

dentro de una clase de entrada valida que pueda producir

inestabilidad o un proceso incorrecto

El arte de la depuracioacuten

La depuracioacuten ocurre como consecuencia de una

prueba efectiva Cuando un caso de prueba

descubre u n e r r o r l a d e p u r a c i oacute n e s e l

p r o c e s o q u e p r o v o c a l a e l i m i n a c i oacute n d e l

e r r o r E l p r o c e s o m e n t a l q u e conecta un siacutentoma

con una causa es la depuracioacuten

El proceso de la depuracioacuten

E l p r o c e s o d e d e p u r a c i oacute n i n t e n t a h a c e r

c o r r e s p o n d e r e l s iacute n t o m a c o n u n a c a u s a

l l e v a n d o a s iacute a l a correccioacuten del error El proceso de

depuracioacuten siempre tiene uno de los dos resultados

siguientes

(1)se encuentra la causa se corrige y se elimina

o

(2)no se encuentra la causa En eacuteste uacuteltimo caso la persona

que realiza la depuracioacuten debe sospechar la causa disentildear

un caso de prueba que ayude a confirmar sus sospechas y el

trabajo vuelve hacia atraacutes a la correccioacuten del error de una

forma iterativa iquestPor queacute es tan difiacutecil la depuracioacuten

Varias caracteriacutesticas de los errores nos dan algunas

] INGENIERIacuteA DE SOFTWARE

21

INGENIERIacuteA DE SISTEMAS

pistas1El siacutentoma y la causa pueden ser

geograacuteficamente remotos entre siacute2El siacutentoma

puede desaparecer (temporalmente) al corregir

otro error

3 E l s iacute n t o m a p u e d e r e a l m e n t e e s t a r

p r o d u c i d o p o r a l g o q u e n o e s u n e r r o r

( i n e x a c t i t u d d e l o s redondeos)

4El siacutentoma puede estar causado por un error

humano que no sea faacutecilmente detectado

5El siacutentoma puede ser el resultado de problemas

de temporizacioacuten en vez de problema s de proceso

6Puede ser difiacutecil reproducir exactamente las

condiciones de entrada

7 E l s iacute n t o m a p u e d e a p a r e c e r e n f o r m a

i n t e r m i t e n t e

8 E l s iacute n t o m a p u e d e s e r d e b i d o a c a u s a s q u e

s e d i s t r i b u y e n p o r u n a s e r i e d e t a r e a s

e j e c u t aacute n d o s e e n diferentes procesadores

IIICONCLUCIONES

Las estrategias de prueba del software es un mecanismo

que proporciona una guiacutea o base pasa ver la forma como se

debe desarrollar la aplicacioacuten en cuanto a meacutetodos para

logra un producto exitoso

IVREFERENCIAS

httpbuenastareascomensayosEstategias-de-prueba-de-

software3752643html

httpwwwestrategiascompruebaagil

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

22

Ingenieriacutea Inversa Juan Carlos Zenteno Sanga

1

Departamento de Ingenieriacutea de Sistemas Universidad San Francisco de Asiacutes

Direccioacuten Incluyendo el Paiacutes 1juanka_58hotmailcom

Resumenmdash La ingenieriacutea de Software es parte del modelo de

proceso de reingenieriacutea de software es el proceso de analizar

un programa con la finalidad de crear una representacioacuten del

programa en un grado mayor de abstraccioacuten del coacutedigo

fuente las herramientas de ingenieriacutea inversa obtienen

informacioacuten del disentildeo de datos arquitectoacutenico y de

procedimientos a partir de un programa existente

En el siguiente artiacuteculo se veraacuten los conceptos baacutesicos y se

denotara un ejemplo praacutectico para una mayor comprensioacuten

del tema

Palabras clave mdash Ingenieriacutea de Software Reingenieriacutea

Linux Ingenieriacutea Inversa

XI INTRODUCCIOacuteN

Inmersa en el aacuterea de conocimiento de la

ingenieriacutea de software se encuentra la ingenieriacutea

inversa como punto de apoyo para los procesos

de anaacutelisis y disentildeo propuestos en diferentes

meacutetodos de desarrollo

La ingenieriacutea inversa permite subsanar esta

deficiencia al documentar los productos de

software a partir del coacutedigo ejecutable con el fin

de obtener los artefactos de anaacutelisis y disentildeo

La ingenieriacutea inversa es ademaacutes una

herramienta uacutetil que ayuda en el proceso de

aseguramiento de la calidad del software

mediante la comparacioacuten de diagramas de fases

de anaacutelisis y desarrollo se apoya comuacutenmente en

la generacioacuten del diagrama de clases debido a la

importancia de este diagrama en la fase de disentildeo

y su facilidad de generacioacuten Existen tambieacuten

otros diagramas de intereacutes como el de

comunicacioacuten y el de secuencias que modelan

las caracteriacutesticas dinaacutemicas de un producto de

software

Hoy en diacutea los productos maacutes comuacutenmente

sometidos a la Ingenieriacutea Inversa son los

productos de Hardware y Software pero

cualquier producto puede ser sometido a este

proceso

Aplicar ingenieriacutea Inversa a algo supone

profundizar el estudio de su funcionamiento

En el caso concreto del Software se conoce

por ingenieriacutea de software a la actividad que se

ocupa de describir coacutemo funciona un programa

de cuyo coacutedigo no se dispone hasta el punto de

generar coacutedigo propio que cumpla con las

mismas funciones Un ejemplo claacutesico del uso de

esta teacutecnica es el software de pago donde las

empresas utilizan esta teacutecnica para proteger sus

productos contra posibles acceso no autorizados

o examinar el producto final para encontrar

posibles bugs inesperados en la ejecucioacuten de

dicho sistema

Existe una gran variedad de software

desensamblador y depurador para aplicar esta

teacutecnica

En resumen la idea general al aplicar

ingenieriacutea inversa es

Conocer a fondo la aplicacioacuten y generar un

mejor coacutedigo

Migrar la aplicacioacuten a un nuevo sistema operativo

Hacer o completar la documentacioacuten

] INGENIERIacuteA DE SOFTWARE

23

INGENIERIacuteA DE SISTEMAS

Verificar que el coacutedigo en estudio cumple las

especificaciones del disentildeo estaacutendar

La informacioacuten extraiacuteda de la lectura del

coacutedigo fuente son las especificaciones de disentildeo

modelos de flujo de control diagramas de disentildeo

documentos de especificacioacuten de disentildeo

pudiendo tomarse estas especificaciones como

nuevo punto de partida para aplicar ingenieriacutea

inversa y obtener informacioacuten a mayor nivel de

abstraccioacuten

Dado que es una labor estrateacutegica es

conveniente conocer cuando conviene realizar la

tarea de Ingenieriacutea inversa para una aplicacioacuten y

cuaacutendo es maacutes rentable sustituirla e implementar

una nueva Las aplicaciones para el primer paso

son aquellas en la que se produce las siguientes

situaciones

bull Fallos frecuentes que son difiacuteciles de

localizar

bull Son poco eficientes pero realizan la funcioacuten

esperada

bull Dificultades en la integracioacuten con otros

sistemas

bull Calidad pobre del software final

bull Resistencia a introducir cambios

bull Pocas personas capacitadas para realizar

modificaciones

bull Dificultades para realizar pruebas

bull El mantenimiento consume muchos recursos

XII LAS BASES DE LA INGENIERIA INVERSA

Los ejemplos maacutes trascendentes sobre los

inicios de la ingenieriacutea inversa son claramente las

investigaciones realizadas sobre antiguos

artefactos creados por humanos ancestrales con

el fin de descubrir la manera en que funcionaban

Uno de los maacutes conocidos es el llamado

mecanismo de Antikythera (Fig 1) el cual se

piensa que fue disentildeado para fines astronoacutemicos

por los griegos siendo uno de los primeros

artefactos que funcionaban con ruedas de

engranes

Figura 1 Antikythera (mecanismo presuntamente creado para fines astronoacutemicos)

Podemos entonces implantar un paralelo en aquella

mitoloacutegica buacutesqueda de descubrimiento sobre el

funcionamiento de esos artefactos y la ingenieriacutea inversa

actual usada en ingenieriacutea de software estableciendo un

importante factor en comuacuten la falta de documentacioacuten En

este ambiente es muy comuacuten contar con una especie de caja

negra en donde sabemos lo que ingresamos y el resultado

que obtenemos pero desconocemos el procedimiento con la

precisioacuten que necesitariacuteamos para replicarlo

Esta falta de documentacioacuten es el impulso

principal de toda la ingenieriacutea inversa las

finalidades de la misma pueden variar pero este

factor inicial nunca lo haraacute

XIII INGENIERIA INVERSA COMO UN PROCESO DE

REINGENIERIA

La ingenieriacutea inversa tiene la misioacuten de

desentrantildear los misterios y secretos de los

sistemas en uso

Baacutesicamente recupera el disentildeo de la

aplicacioacuten a partir del coacutedigo esto se realiza

mediante herramientas que extraen la

informacioacuten de los datos procedimientos y

arquitecturas del sistema

Es aplicable a sistemas con las siguientes

caracteriacutesticas

Documentacioacuten inexistente o totalmente obsoleta

Programacioacuten en bloque de coacutedigos muy grandes

yo sin estructural

La aplicacioacuten cubre gran parte de los requisitos

y el rendimiento esperado

A Nivel de abstraccioacuten

El nivel de Abstraccioacuten de un proceso de

Ingenieriacutea Inversa y las herramientas que se

utilizan para realizarlo aluden la sofisticacioacuten de

la informacioacuten de disentildeo que se puede extraer del

coacutedigo fuente Este proceso deberiacutea ser capaz de

derivar

Sus representaciones de disentildeo de procedimiento

(con un bajo nivel de abstraccioacuten)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

24

La informacioacuten de las estructuras de datos de

procedimiento (con un nivel de abstraccioacuten

ligeramente maacutes elevado)

Modelos de flujo de datos de control (un nivel de

abstraccioacuten relativamente alto)

Modelos de entidades y de relaciones (un elevado

nivel de abstraccioacuten)

B Completitud

En la mayoriacutea de los casos la completitud

decrece a medida que aumenta el grado de

abstraccioacuten

La completitud mejora en proporcioacuten directa a

la cantidad de anaacutelisis efectuado por la persona

que estaacute efectuando la ingenieriacutea inversa

C Interactividad

La interactividad alude al grado con el cual el

ser humano se integra con las herramientas

automatizadas para crear un proceso de

ingenieriacutea inversa efectivo

D Proceso

El Proceso de ingenieriacutea inversa (Fig 2) es el encargado

de reestructurar el coacutedigo fuente para que solamente

contenga instrucciones de programacioacuten estructurada Lo

que hace que el coacutedigo sea maacutes faacutecil de leer y proporciona

la base para las subsiguientes actividades de ingenieriacutea

inversa

Figura 2 Diagrama de Proceso de la Ingenieriacutea Inversa

E Reestructuracioacuten

La reestructuracioacuten del software modifica el

coacutedigo fuente y los datos en un intento adecuado

a futuros cambios esta no modifica la

arquitectura global del programa Tiene a

centrarse en los detalles de disentildeo de moacutedulos

individuales y en estructuras de datos locales

definidas dentro de los moacutedulos

Estos son algunos de los beneficios que se

pueden lograr cuando se reestructura el software

Programas de mayor calidad

Reduce el esfuerzo requerido para llevar a cabo

las actividades de mantenimiento

Hace el software maacutes sencillo para comprobar y

depurar

F Re documentacioacuten

Es el proceso mediante el cual se produce

documentacioacuten retroactivamente desde un

sistema existente

Es considerada una forma de ingenieriacutea inversa

porque la documentacioacuten reconstruida es usada

para ayudar al conocimiento del programa

XIV UTILIZANDO EL METODO CIENTIFICO EN LA

INGENIERIA INVERSA

Ante cualquier dificultad tecnoloacutegica el

meacutetodo cientiacutefico siempre es y seraacute nuestra maacutes

preciada arma Partamos imaginando un pequentildeo

dilema relacionado con el tema de ingenieriacutea de

software especiacuteficamente con un sencillo

programa (Fig 3)

Figura 3 Pantalla de aplicacioacuten que nos serviraacute de ejemplo

Esta sencilla aplicacioacuten mostraraacute un mensaje con cierto

resultado y aun siendo un problema demasiado sencillo

para considerarlo como un reto el objetivo es soacutelo describir

] INGENIERIacuteA DE SOFTWARE

25

INGENIERIacuteA DE SISTEMAS

las acciones usuales del proceso las cuales son aplicables

en escalas muy superiores

El resultado mostrado por el programa dentro del mensaje

emergente se basa en nuestra entrada pero nosotros

desconocemos en lo absoluto los procedimientos utilizados

sobre esta entrada para producir aquella respuesta

A La Observacioacuten es Trascendental

Primero es importante observar el problema su

comportamiento Es substancial tratar de lograr

un pensamiento inductivo en donde logremos

identificar el principio particular del problema

para poder llegar a extrapolarlo a una solucioacuten

general

El punto de quiebre se produce en este instante

Ya al haber observado la aplicacioacuten podriacuteamos

decidir procesar los datos que nos entrega y

lograr crear un coacutedigo equivalente o investigar el

funcionamiento interno

B Dentro de la aplicacioacuten

Luego de la formulacioacuten de una hipoacutetesis sobre

su funcionamiento necesitamos algunas

herramientas para comenzar con la investigacioacuten

En el caso de esta aplicacioacuten con un poco de

conocimientos del lenguaje ensamblador de

programacioacuten tradicional y un descompilador es

suficiente

Es importante emprender de buena forma

nuestro sondeo ser ordenados y metoacutedicos en la

tarea En este momento las capacidades analiacuteticas

y loacutegicas son muy importantes para alivianar

nuestra faena

Lo fundamental es conocer muy bien el

entorno en que nos desenvolveremos En este es

punto indispensable saber que una aplicacioacuten

para Windows necesita invocar internamente al

punto de entrada MessageBox o MessageBoxEx

de la libreriacutea de sistema user32dll para poder

desplegar un mensaje (Fig 4)

Figura 4 Resultado de la Aplicacioacuten

Ya con esa pista es sencillo encontrar el

fragmento de coacutedigo relacionado con las

operaciones relacionadas a nuestro nuacutemero de

entrada que tendriacutea una forma similar a la

mostrada a continuacioacuten en nuestro

descompilador (Fig 5)

Figura 5 Vista del Programa en Ensamblador

Cualquier programador intuiriacutea faacutecilmente lo

que hacen las liacuteneas superiores de esta aplicacioacuten

en especial sprintf es parte de la libreriacutea estaacutendar

de C++ Claramente vemos tambieacuten el tiacutetulo de la

ventana en el coacutedigo estos valores son

interpretados de forma inteligente por este

descompilador en especial y en particular nos

asiste de sobremanera a comprender el coacutedigo

Lo siguiente es sencillamente explorar paso a

paso las acciones superiores de caacutelculo del

resultado En esta instancia seraacute ideal realizar

numerosas pruebas para estar completamente

seguros de que logramos develar el secreto tras la

funcionalidad objetivo (Fig 6)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

26

Figura 6 Inicio del coacutedigo al que aplicaremos ingenieriacutea inversa

Hay que detenerse algunos segundos a

individualizar algunos procedimientos del

anaacutelisis que a simple vista pueden parecer

inconcebibles con el fin de poder generar una

tesis concluyente

Cabe destacar que se omitiraacuten pasos

intermedios de asignaciones de memoria y otros

formalismos propios de ensamblador para

favorecer el entendimiento del lector

Inicialmente tenemos el valor de entrada

supuestamente ya leiacutedo desde el cuadro de

diaacutelogo del programa ahora nos enfocamos en la

primera accioacuten importante Asumiremos el valor

de entrada como una incoacutegnita

En el siguiente trozo de coacutedigo la liacutenea

destacada antildeadioacute siete a nuestra incoacutegnita (Fig 7)

Figura 7 Coacutedigo donde se denota la adicioacuten de 7 a nuestra ecuacioacuten

A continuacioacuten se multiplica ese valor

resultante de la suma por el mismo (Fig 8)

Figura 8 Coacutedigo donde se denota la multiplicacioacuten del valor por la suma

Nuevamente multiplicamos el resultado por el

anterior proporcionado tras la suma En esta

segunda vez ya podemos expresar la operacioacuten

simplemente elevando al cubo la suma anterior

(Fig 9)

Figura 9 Coacutedigo que denota una nueva multiplicacioacuten del resultante

Ahora le restamos diez al resultado

El procedimiento que viene a continuacioacuten

propone un mayor desafiacuteo intelectual Un nuacutemero

constante en este caso el cargado al registro

EAX (Fig 10)

Figura 10 ubicacioacuten del nuacutemero constante EAX

Generalmente la divisioacuten es algo maacutes costosa

en tiempo de procesador que otras operaciones

por lo que ciertos compiladores incluyen tablas

de constantes las cuales son llamadas ―nuacutemeros

maacutegicos para la divisioacuten entera

d Con signo Sin signo

m (hex) s m (hex) a s

-5 99999999 1

-3 55555555 1

-2k 7FFFFFFF k-

1

1 mdash mdash 0 1 0

2k 80000001 k-

1 232-k 0 0

3 55555556 0 AAAAAAAB 0 1

5 66666667 1 CCCCCCCD 0 2

6 2AAAAAAB 0 AAAAAAAB 0 2

7 92492493 2 24924925 1 3

9 38E38E39 1 38E38E39 0 1

10 66666667 2 CCCCCCCD 0 3

11 2E8BA2E9 1 BA2E8BA3 0 3

] INGENIERIacuteA DE SOFTWARE

27

INGENIERIacuteA DE SISTEMAS

12 2AAAAAAB 1 AAAAAAAB 0 3

25 51EB851F 3 51EB851F 0 3

125 10624DD3 3 10624DD3 0 3

Tabla 1 Algunos nuacutemeros maacutegicos (32 bits)

Ahora bien conociendo la tabla 1 sabiendo

que el nuacutemero cargado en esta ocasioacuten

corresponde al once lo que hace el coacutedigo es

multiplicar el resultado de la salida temporal por

aquel nuacutemero (Fig 11)

Figura 11 Multiplicacioacuten del resultante por el numero 11

Naturalmente la multiplicacioacuten por un nuacutemero

tan grande produce una especie de

desbordamiento en el registro contenedor del

resultado al exceder el tamantildeo de palabra del

procesador (en este caso de 32 bits) Estos bits

sobrantes se almacenan naturalmente en el

registro EDX registro que es contiguo a ECX

dentro de la memoria de los registros del

procesador

Ahora desplazamos un bit del registro EDX

(equivalente a una divisioacuten entera por dos) para

obtener la solucioacuten de la divisioacuten por once

generando una sencilla ecuacioacuten

Figura 12 Desplazamiento del bit de registro EDX

El uacuteltimo paso luego de documentar estos

resultados seraacute crear una aplicacioacuten que recree

esta foacutermula soacutelo en caso de tener intenciones de

re-codificacioacuten del desarrollo Consumando este

punto es sencillo confeccionar un diagrama con

todo el proceso anteriormente visto

XV CONCLUSIONES

Queda claro que el tema de la ingenieriacutea

inversa es uno de los toacutepicos maacutes interesantes a

los que podriacutea afrontarse un profesional de la

tecnologiacutea y en general disfrutar el largo proceso

involucrado gracias al desafiacuteo poco predecible

que presenta

En general podemos darnos cuenta de que no

existen muchas metodologiacuteas y teoriacuteas estrictas

sobre coacutemo aplicar las teacutecnicas de ingenieriacutea

inversa Afortunadamente un ingeniero estaacute

preparado para afrentar desafiacuteos de este tipo

Adicionalmente podemos deducir tambieacuten el

aspecto bidireccional de la ingenieriacutea inversa

pues como ya lo comprobamos no solo es un

desafiacuteo aplicarla sino que tambieacuten lo es tener que

dificultar el proceso o incluso tratar de impedirlo

si la situacioacuten lo requiere

REFERENCIAS

[12] Roger Pressman Ingenieriacutea de Software ―Un Enfoque Moderno 6th ed

MC Graw Hill [13] httpeswikipediaorgwikiIngenieria_inversa

[14] httpwwwinfosecwritersconntext_resourcespdfsoftware_security_and_r

everse_engineeringpdf [15] httperwinriedclmodo=visorampelemento=239

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

28

METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO Univ Alejandro Meacutendez Escobar

Universidad San Francisco de Asiacutes

Ingenieriacutea de Sistemas

Ingenieriacutea de Software I

La Paz - Bolivia

amendezusfaedubo

Resumenmdash Al adquirir el software educativo dentro del campo de

desarrollo de software una gran importancia y siendo este

inspiracioacuten de propuestas de innumerables metodologiacuteas que buscan

la elaboracioacuten de un software de calidad

Tomaremos la metodologiacutea Aacutencora enfocada a la fase de

requerimientos y que ofrece elementos que indican las actividades

que deben realizarse los artefactos que se producen y la forma de

obtenerlos

Usando al desarrollo de software educativo como ejemplo de una

mejor comprensioacuten de dicha metodologiacutea analizando la aplicacioacuten

del Aacutencora en un trabajo propuesto para el Instituto Tecnoloacutegico de

Orizaba Meacutexico

Palabras clave mdash Aacutencora Metodologiacutea Desarrollo de Software

Educativo Requerimientos Calidad

XVI INTRODUCCIOacuteN

Hoy en diacutea la tecnologiacutea esta dentro de las

actividades que realizamos es asiacute que la educacioacuten no

queda exenta de ella por o cual es necesario adaptarse

al movimiento tecnoloacutegico que nos trae grandes

ventajas en la transmisioacuten de conocimientos de una

manera sencilla y dinaacutemica

De esta manera han surgido infinidad de

metodologiacuteas de desarrollo de software educativo el

cual tiene como objetivo ser el apoyo para docentes

alumnos y toda persona que este dentro del proceso de

aprendizaje

Tomando en cuenta este ramillete infinito de

metodologiacuteas surge en el ejemplo propuesto la

adaptacioacuten del Aacutencora en el desarrollo de software

educativo teniendo como objetivo principal la

comprensioacuten de los elementos y conceptos de la

metodologiacutea Aacutencora

Aacutencora es una metodologiacutea enfocada a la

adquisicioacuten de requerimientos para software que

ofrece guiacuteas y elementos de apoyo para la obtencioacuten de

estos requerimientos Al mismo tiempo permite pasar a

la fase de disentildeo de manera sencilla Aprovechando las

ventajas que presenta Aacutencora se le hicieron algunas

adaptaciones con el fin de cubrir algunas

caracteriacutesticas del disentildeo instruccional y enriquecer

Aacutencora habilitaacutendola para la adquisicioacuten de

requerimientos de software educativo

XVII APLICACIOacuteN DE LA METODOLOGIacuteA AacuteNCORA

Como es el objetivo principal la comprensioacuten de la

aplicacioacuten de la metodologiacutea Aacutencora dentro del

desarrollo de software educativo de calidad solo

describiremos los meacutetodos del meacutetodo y los resultados

obtenidos

Claro esta que para ahondar maacutes en tema del

software educativo en si el lector puede recurrir a los

siguientes autores Metodologiacutea de desarrollo de

sistemas multimedia (Vaughan 2006) Propuesta de

metodologiacutea para el disentildeo desarrollo y evaluacioacuten

de software educativo (Reyes 2009) Ingenieriacutea de

software educativo con modelaje orientado por objetos

(Goacutemez 1998) asi como tambieacuten los siguientes

modelos ADDIE (Anaacutelisis Disentildeo Desarrollo

Implantacioacuten y Evaluacioacuten) de (McGriff 2000) y el

disentildeo instruccional aplicado al desarrollo de software

educativo EISE (Especificacioacuten Instruccional de

Software Educativo) de (Hernaacutendez 2005)

] INGENIERIacuteA DE SOFTWARE

29

INGENIERIacuteA DE SISTEMAS

Quienes tienen el mismo objetivo de crear software

educativo de calidad podemos sintetizar de ellos los

siguientes puntos

Anaacutelisis del puacuteblico al que se dirigiraacute el software

Problema oacute necesidad educativa a atender

Anaacutelisis de contenido (Tema a tratar actividades

para alcanzar el objetivo de ensentildeanza y forma de

evaluarlo)

Actividades oacute forma actual de llevar a cabo la

ensentildeanza del tema en cuestioacuten

Elaboracioacuten de guiones metaacuteforas escenarios

Creacioacuten de prototipo oacute Storyboard

Disentildeo de interfaz

Mapas de navegacioacuten

Modelos de datos

Elaboracioacuten de diagramas de contexto diagramas

de flujo o diagramas de casos de uso

Ahora enfocaacutendonos en el aacutencora se establece la

propuesta de seleccionar las actividades de Aacutencora que

permitan obtener los requerimientos de un software

educativo

La Tabla 1 presenta las actividades y artefactos

producidos en las fases de Aacutencora para la elaboracioacuten

de software educativo

TABLA 1 ACTIVIDADES Y ARTEFACTOS DE LA METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO

Metodologiacutea Aacutencora

Fases Actividades y artefactos

Anaacutelisis de

Requerimientos

A traveacutes de entrevistas con los clientes

(maestros y pedagogos) y de la lectura

del respectivo material proporcionado

por ellos se definiraacute la asignatura a la

que se enfocaraacute el software el tema a

tratar y la forma en que se abordaraacute y

evaluaraacute Tambieacuten se estableceraacute el

objetivo general de aprendizaje la

metaacutefora que se emplearaacute y se

determinaraacute el puacuteblico al que se

dirigiraacute el software

Artefactos

Documento que define la asignatura

contenido objetivo general de

aprendizaje metaacutefora y puacuteblico al que

se dirigiraacute el software Guion de la

situacioacuten actual

Recoleccioacuten y

clasificacioacuten de

requerimientos

El guion de la propuesta

computacional reflejaraacute la metaacutefora

que se sigue el ambiente de cada

escena

La bitaacutecora de desarrollo permitiraacute ver

coacutemo el sistema responderaacute a las

diversas acciones que realice el

usuario

En lugar del prototipo raacutepido se

elaboraraacute un Storyboard para presentar

graacuteficamente la estructura de sistema

propuesto

Artefactos

Guion de propuesta computacional

bitaacutecora de desarrollo Storyboard

Resolucioacuten de

conflictos

jerarquizacioacuten y

validacioacuten de

requerimientos

Modificaciones al guion de la

propuesta computacional de acuerdo a

los cambios propuestos por los

maestros y pedagogos

Artefactos

Guion de propuesta computacional e

Storyboard con adecuaciones sentildealas

Cierre

Trasladar los guiones a casos de uso

Artefactos

Casos de uso

Se agregaron algunas caracteriacutesticas a ciertos

artefactos de Aacutencora para poder cubrir los

requerimientos de software educativo Uno de estos

elementos es el guion de la propuesta computacional

al que se propone agregar lo siguiente

Conocimientos previos del usuario Se refiere a los

conocimientos baacutesicos o miacutenimos que debe tener el

alumno para poder interactuar con el moacutedulo

Objetivo de aprendizaje Es el aprendizaje que

debe obtener el alumno despueacutes de haber interactuado

con el moacutedulo

La Figura 1 se presenta la estructura sugerida para el

guion de la propuesta computacional En la bitaacutecora de

desarrollo se propone antildeadir una fila al final de cada

pista donde se describan las situaciones favorables y

no favorables para el cumplimiento del objetivo de

aprendizaje para esa pista en particular Por otra parte

en lugar del prototipo se sugiere utilizar el Storyboard

ya que permite mostrar de manera maacutes completa la

estructura del guion de la propuesta computacional La

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

30

Figura 2 muestra el formato para la elaboracioacuten del

Storyboard

Figura 1 Estructura del guion para la propuesta computacional

Figura 2 Formato para la elaboracioacuten del Storyboard

XVIII RESULTADOS

Aplicando Aacutencora en un ejemplo para la parte de

requerimientos se obtuvo la siguiente informacioacuten

Asignatura Matemaacuteticas

Contenido Estaacute articulado con base en seis ejes

con sus respectivos temas y subtemas que variacutean de

acuerdo al grado escolar Considerando lo anterior se

tiene lo siguiente

a) Grado escolar De segundo hasta quinto grado de

primaria

b) Temas Nuacutemeros naturales capacidad peso

tiempo y ubicacioacuten espacial planteamiento y

resolucioacuten de problemas sencillos en los que se

requiera recolectar y registrar informacioacuten

perioacutedicamente representacioacuten de informacioacuten en

tablas de frecuencia y graacuteficas de barras registros de

los resultados de experimentos aleatorios

representacioacuten de los resultados de un experimento

aleatorio en tablas y graacuteficas

c) Subtemas Planteamiento y resolucioacuten de

problemas que impliquen dos o maacutes operaciones con

nuacutemeros naturales

d) Ejes Introduccioacuten del kiloacutemetro como la unidad

que permite medir grandes distancias y recorridos

largos capacidad peso y tiempo uso del reloj y el

calendario los nuacutemeros sus relaciones y sus

operaciones medicioacuten la prediccioacuten y el azar

tratamiento de la informacioacuten

Objetivo general de aprendizaje Ejercitar las

operaciones aritmeacuteticas baacutesicas interpretar la

informacioacuten y los resultados de la informacioacuten dada

aplicada en situaciones de la vida cotidiana

Con las actividades hasta ahora realizadas se ha

observado que los artefactos de Aacutencora son flexibles y

pueden por lo tanto adaptarse de acuerdo a las

necesidades que implican la adquisicioacuten de

requerimientos de un software educativo Tambieacuten se

aprecian las ventajas de algunos artefactos como la

bitaacutecora de desarrollo que permite determinar las

respuestas del sistema ante las acciones del usuario y

estimar tambieacuten el tiempo que llevaraacute implementar

cada quinteta

La estimacioacuten del tiempo ayuda a tener un valor

aproximado del tiempo de desarrollo de software

Agregar el objetivo de aprendizaje a la bitaacutecora de

desarrollo puede parecer repetitivo despueacutes de

incluirlo en el Storyboard pero esto nos permite ver las

situaciones u obstaacuteculos que pueden impedir que el

objetivo de aprendizaje se alcance y por tanto tenerlos

presente durante el disentildeo A pesar de las ventajas de

la bitaacutecora de desarrollo un inconveniente hasta ahora

encontrado es lo tedioso al manejar muchas quintetas

] INGENIERIacuteA DE SOFTWARE

31

INGENIERIacuteA DE SISTEMAS

cuando por la naturaleza del guion se tienen varios

avisos y mensajes para el usuario Por otra parte los

guiones han ayudado a realizar de manera sencilla el

modelo de casos de uso

En lo referente a la presentacioacuten con los clientes el

guion es un artefacto que pude dar un panorama

general del software que se va a elaborar y queda

reforzada a traveacutes de los Storyboard Cuando se

requieren cambios solicitados por los clientes las

modificaciones a estos artefactos no han sido muy

complicadas dado que por su estructura es faacutecil de

ubicar las secciones y respectivos elementos

XIX CONCLUSIONES

Con los resultados hasta ahora obtenidos se puede

decir que la propuesta permite a los desarrolladores

con poca experiencia en desarrollo de software

educativo obtener los requerimientos de una manera

sencilla

Permite realizar un mejor relevamiento de informacioacuten

de los requerimientos del cliente enfocaacutendonos mas en

este

Es tambieacuten importante mencionar los avances que

tiene y seguiraacute teniendo el software educativo aplicado

no solo a nivel escolar sino tambieacuten al superior

Habiendo revisado el concepto y la aplicacioacuten de la

metodologiacutea Aacutencora en el desarrollo de software

educativo se llegoacute a una comprensioacuten mas extensa de

dicho meacutetodo el cual es de gran importancia dentro de

la ingenieriacutea de Software ya que nos

REFERENCIAS

httpwwwuvmxmisproductividaddocumentsCarmenChay_CIIM2010pdf

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 20: Revista de Ingenieria de Software

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

20

Fig 3 Integracioacuten Ascendente

Aspectos Estrateacutegicos

Tom Gilb plantea que se deben abordar los

siguientes puntos si se desea implementar con

eacutexito una estrategia de prueba del software

Especificar los requisitos del producto de manera

cuantificable mucho antes de que comiencen las pruebas

-Establecer los objetivos de la prueba de manera expliacutecita (teacuterminos

medibles)

-Comprender queacute usuarios va a tener el software y desarrollar un perfil

-Desarrollar un plan de prueba que haga hincapieacute en la prueba de ciclo

raacutepido

-Construir un software ―robusto disentildeado para probarse a siacute mismo

-Usar revisiones teacutecnicas formales efectivas como filtro antes de la

prueba

Llevar a cabo revisiones teacutecnicas formales para evaluar la

estrategia de prueba y los propios casos de prueba

Desarrollar un enfoque de mejora continua al proceso de

prueba Deberiacutea medirse la estrategia de prueba

Prueba de Unidad

La prueba de unidad centra el proceso de

verificacioacuten en la menor unidad del disentildeo del

software el moacutedulo La prueba de unidad siempre

esta orientada a caja blanca y este paso se suele

llevar a cabo en paralelo para muacuteltiples moacutedulos

Pruebas de Alfa y Beta

C u a n d o s e c o n s t r u y e s o f t w a r e a m e d i d a s e

l l e v a n a c a b o u n a s e r i e d e p r u e b a s d e

a c e p t a c i oacute n p a r a permitir que el cliente valide todos

los requisitos La prueba alfa se lleva a cabo en el

lugar del desarrollo pero por un cliente Se usa el

software en forma normal con el desarrollador como

observador del usuario y registrando los errores y

problemas de uso(entorno controlado)La prueba beta se

lleva a cabo por los usuarios finales en los lugares

de trabajo de los clientes El cliente registra los

problemas y los informa a intervalos regulare

Pruebas del sistema

La prueba del sistema estaacute constituida por una

serie de pruebas diferentes cuyo propoacutesito es

ejercitar profundamente el sistema

Prueba de recuperacioacuten

E s l a p r u e b a d e l s i s t e m a q u e f u e r z a a l

f a l l o d e l s o f t w a r e d e m u c h a s f o r m a s y

v e r i f i c a q u e l a recuperacioacuten se lleva a cabo

apropiadamente Recuperacioacuten automaacutetica o manual

Prueba de seguridad

Intenta verificar que los mecanismos de proteccioacuten

incorporados en el sistema lo protegeraacute de hecho de

accesos impropios

Pruebas de Resistencia

Estaacuten disentildeadas para enfrentar a los programas con

situaciones anormales Una variante de la prueba de

resistencia es una teacutecnica denominada prueba de

sensibilidad intenta descubrir combinaciones de datos

dentro de una clase de entrada valida que pueda producir

inestabilidad o un proceso incorrecto

El arte de la depuracioacuten

La depuracioacuten ocurre como consecuencia de una

prueba efectiva Cuando un caso de prueba

descubre u n e r r o r l a d e p u r a c i oacute n e s e l

p r o c e s o q u e p r o v o c a l a e l i m i n a c i oacute n d e l

e r r o r E l p r o c e s o m e n t a l q u e conecta un siacutentoma

con una causa es la depuracioacuten

El proceso de la depuracioacuten

E l p r o c e s o d e d e p u r a c i oacute n i n t e n t a h a c e r

c o r r e s p o n d e r e l s iacute n t o m a c o n u n a c a u s a

l l e v a n d o a s iacute a l a correccioacuten del error El proceso de

depuracioacuten siempre tiene uno de los dos resultados

siguientes

(1)se encuentra la causa se corrige y se elimina

o

(2)no se encuentra la causa En eacuteste uacuteltimo caso la persona

que realiza la depuracioacuten debe sospechar la causa disentildear

un caso de prueba que ayude a confirmar sus sospechas y el

trabajo vuelve hacia atraacutes a la correccioacuten del error de una

forma iterativa iquestPor queacute es tan difiacutecil la depuracioacuten

Varias caracteriacutesticas de los errores nos dan algunas

] INGENIERIacuteA DE SOFTWARE

21

INGENIERIacuteA DE SISTEMAS

pistas1El siacutentoma y la causa pueden ser

geograacuteficamente remotos entre siacute2El siacutentoma

puede desaparecer (temporalmente) al corregir

otro error

3 E l s iacute n t o m a p u e d e r e a l m e n t e e s t a r

p r o d u c i d o p o r a l g o q u e n o e s u n e r r o r

( i n e x a c t i t u d d e l o s redondeos)

4El siacutentoma puede estar causado por un error

humano que no sea faacutecilmente detectado

5El siacutentoma puede ser el resultado de problemas

de temporizacioacuten en vez de problema s de proceso

6Puede ser difiacutecil reproducir exactamente las

condiciones de entrada

7 E l s iacute n t o m a p u e d e a p a r e c e r e n f o r m a

i n t e r m i t e n t e

8 E l s iacute n t o m a p u e d e s e r d e b i d o a c a u s a s q u e

s e d i s t r i b u y e n p o r u n a s e r i e d e t a r e a s

e j e c u t aacute n d o s e e n diferentes procesadores

IIICONCLUCIONES

Las estrategias de prueba del software es un mecanismo

que proporciona una guiacutea o base pasa ver la forma como se

debe desarrollar la aplicacioacuten en cuanto a meacutetodos para

logra un producto exitoso

IVREFERENCIAS

httpbuenastareascomensayosEstategias-de-prueba-de-

software3752643html

httpwwwestrategiascompruebaagil

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

22

Ingenieriacutea Inversa Juan Carlos Zenteno Sanga

1

Departamento de Ingenieriacutea de Sistemas Universidad San Francisco de Asiacutes

Direccioacuten Incluyendo el Paiacutes 1juanka_58hotmailcom

Resumenmdash La ingenieriacutea de Software es parte del modelo de

proceso de reingenieriacutea de software es el proceso de analizar

un programa con la finalidad de crear una representacioacuten del

programa en un grado mayor de abstraccioacuten del coacutedigo

fuente las herramientas de ingenieriacutea inversa obtienen

informacioacuten del disentildeo de datos arquitectoacutenico y de

procedimientos a partir de un programa existente

En el siguiente artiacuteculo se veraacuten los conceptos baacutesicos y se

denotara un ejemplo praacutectico para una mayor comprensioacuten

del tema

Palabras clave mdash Ingenieriacutea de Software Reingenieriacutea

Linux Ingenieriacutea Inversa

XI INTRODUCCIOacuteN

Inmersa en el aacuterea de conocimiento de la

ingenieriacutea de software se encuentra la ingenieriacutea

inversa como punto de apoyo para los procesos

de anaacutelisis y disentildeo propuestos en diferentes

meacutetodos de desarrollo

La ingenieriacutea inversa permite subsanar esta

deficiencia al documentar los productos de

software a partir del coacutedigo ejecutable con el fin

de obtener los artefactos de anaacutelisis y disentildeo

La ingenieriacutea inversa es ademaacutes una

herramienta uacutetil que ayuda en el proceso de

aseguramiento de la calidad del software

mediante la comparacioacuten de diagramas de fases

de anaacutelisis y desarrollo se apoya comuacutenmente en

la generacioacuten del diagrama de clases debido a la

importancia de este diagrama en la fase de disentildeo

y su facilidad de generacioacuten Existen tambieacuten

otros diagramas de intereacutes como el de

comunicacioacuten y el de secuencias que modelan

las caracteriacutesticas dinaacutemicas de un producto de

software

Hoy en diacutea los productos maacutes comuacutenmente

sometidos a la Ingenieriacutea Inversa son los

productos de Hardware y Software pero

cualquier producto puede ser sometido a este

proceso

Aplicar ingenieriacutea Inversa a algo supone

profundizar el estudio de su funcionamiento

En el caso concreto del Software se conoce

por ingenieriacutea de software a la actividad que se

ocupa de describir coacutemo funciona un programa

de cuyo coacutedigo no se dispone hasta el punto de

generar coacutedigo propio que cumpla con las

mismas funciones Un ejemplo claacutesico del uso de

esta teacutecnica es el software de pago donde las

empresas utilizan esta teacutecnica para proteger sus

productos contra posibles acceso no autorizados

o examinar el producto final para encontrar

posibles bugs inesperados en la ejecucioacuten de

dicho sistema

Existe una gran variedad de software

desensamblador y depurador para aplicar esta

teacutecnica

En resumen la idea general al aplicar

ingenieriacutea inversa es

Conocer a fondo la aplicacioacuten y generar un

mejor coacutedigo

Migrar la aplicacioacuten a un nuevo sistema operativo

Hacer o completar la documentacioacuten

] INGENIERIacuteA DE SOFTWARE

23

INGENIERIacuteA DE SISTEMAS

Verificar que el coacutedigo en estudio cumple las

especificaciones del disentildeo estaacutendar

La informacioacuten extraiacuteda de la lectura del

coacutedigo fuente son las especificaciones de disentildeo

modelos de flujo de control diagramas de disentildeo

documentos de especificacioacuten de disentildeo

pudiendo tomarse estas especificaciones como

nuevo punto de partida para aplicar ingenieriacutea

inversa y obtener informacioacuten a mayor nivel de

abstraccioacuten

Dado que es una labor estrateacutegica es

conveniente conocer cuando conviene realizar la

tarea de Ingenieriacutea inversa para una aplicacioacuten y

cuaacutendo es maacutes rentable sustituirla e implementar

una nueva Las aplicaciones para el primer paso

son aquellas en la que se produce las siguientes

situaciones

bull Fallos frecuentes que son difiacuteciles de

localizar

bull Son poco eficientes pero realizan la funcioacuten

esperada

bull Dificultades en la integracioacuten con otros

sistemas

bull Calidad pobre del software final

bull Resistencia a introducir cambios

bull Pocas personas capacitadas para realizar

modificaciones

bull Dificultades para realizar pruebas

bull El mantenimiento consume muchos recursos

XII LAS BASES DE LA INGENIERIA INVERSA

Los ejemplos maacutes trascendentes sobre los

inicios de la ingenieriacutea inversa son claramente las

investigaciones realizadas sobre antiguos

artefactos creados por humanos ancestrales con

el fin de descubrir la manera en que funcionaban

Uno de los maacutes conocidos es el llamado

mecanismo de Antikythera (Fig 1) el cual se

piensa que fue disentildeado para fines astronoacutemicos

por los griegos siendo uno de los primeros

artefactos que funcionaban con ruedas de

engranes

Figura 1 Antikythera (mecanismo presuntamente creado para fines astronoacutemicos)

Podemos entonces implantar un paralelo en aquella

mitoloacutegica buacutesqueda de descubrimiento sobre el

funcionamiento de esos artefactos y la ingenieriacutea inversa

actual usada en ingenieriacutea de software estableciendo un

importante factor en comuacuten la falta de documentacioacuten En

este ambiente es muy comuacuten contar con una especie de caja

negra en donde sabemos lo que ingresamos y el resultado

que obtenemos pero desconocemos el procedimiento con la

precisioacuten que necesitariacuteamos para replicarlo

Esta falta de documentacioacuten es el impulso

principal de toda la ingenieriacutea inversa las

finalidades de la misma pueden variar pero este

factor inicial nunca lo haraacute

XIII INGENIERIA INVERSA COMO UN PROCESO DE

REINGENIERIA

La ingenieriacutea inversa tiene la misioacuten de

desentrantildear los misterios y secretos de los

sistemas en uso

Baacutesicamente recupera el disentildeo de la

aplicacioacuten a partir del coacutedigo esto se realiza

mediante herramientas que extraen la

informacioacuten de los datos procedimientos y

arquitecturas del sistema

Es aplicable a sistemas con las siguientes

caracteriacutesticas

Documentacioacuten inexistente o totalmente obsoleta

Programacioacuten en bloque de coacutedigos muy grandes

yo sin estructural

La aplicacioacuten cubre gran parte de los requisitos

y el rendimiento esperado

A Nivel de abstraccioacuten

El nivel de Abstraccioacuten de un proceso de

Ingenieriacutea Inversa y las herramientas que se

utilizan para realizarlo aluden la sofisticacioacuten de

la informacioacuten de disentildeo que se puede extraer del

coacutedigo fuente Este proceso deberiacutea ser capaz de

derivar

Sus representaciones de disentildeo de procedimiento

(con un bajo nivel de abstraccioacuten)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

24

La informacioacuten de las estructuras de datos de

procedimiento (con un nivel de abstraccioacuten

ligeramente maacutes elevado)

Modelos de flujo de datos de control (un nivel de

abstraccioacuten relativamente alto)

Modelos de entidades y de relaciones (un elevado

nivel de abstraccioacuten)

B Completitud

En la mayoriacutea de los casos la completitud

decrece a medida que aumenta el grado de

abstraccioacuten

La completitud mejora en proporcioacuten directa a

la cantidad de anaacutelisis efectuado por la persona

que estaacute efectuando la ingenieriacutea inversa

C Interactividad

La interactividad alude al grado con el cual el

ser humano se integra con las herramientas

automatizadas para crear un proceso de

ingenieriacutea inversa efectivo

D Proceso

El Proceso de ingenieriacutea inversa (Fig 2) es el encargado

de reestructurar el coacutedigo fuente para que solamente

contenga instrucciones de programacioacuten estructurada Lo

que hace que el coacutedigo sea maacutes faacutecil de leer y proporciona

la base para las subsiguientes actividades de ingenieriacutea

inversa

Figura 2 Diagrama de Proceso de la Ingenieriacutea Inversa

E Reestructuracioacuten

La reestructuracioacuten del software modifica el

coacutedigo fuente y los datos en un intento adecuado

a futuros cambios esta no modifica la

arquitectura global del programa Tiene a

centrarse en los detalles de disentildeo de moacutedulos

individuales y en estructuras de datos locales

definidas dentro de los moacutedulos

Estos son algunos de los beneficios que se

pueden lograr cuando se reestructura el software

Programas de mayor calidad

Reduce el esfuerzo requerido para llevar a cabo

las actividades de mantenimiento

Hace el software maacutes sencillo para comprobar y

depurar

F Re documentacioacuten

Es el proceso mediante el cual se produce

documentacioacuten retroactivamente desde un

sistema existente

Es considerada una forma de ingenieriacutea inversa

porque la documentacioacuten reconstruida es usada

para ayudar al conocimiento del programa

XIV UTILIZANDO EL METODO CIENTIFICO EN LA

INGENIERIA INVERSA

Ante cualquier dificultad tecnoloacutegica el

meacutetodo cientiacutefico siempre es y seraacute nuestra maacutes

preciada arma Partamos imaginando un pequentildeo

dilema relacionado con el tema de ingenieriacutea de

software especiacuteficamente con un sencillo

programa (Fig 3)

Figura 3 Pantalla de aplicacioacuten que nos serviraacute de ejemplo

Esta sencilla aplicacioacuten mostraraacute un mensaje con cierto

resultado y aun siendo un problema demasiado sencillo

para considerarlo como un reto el objetivo es soacutelo describir

] INGENIERIacuteA DE SOFTWARE

25

INGENIERIacuteA DE SISTEMAS

las acciones usuales del proceso las cuales son aplicables

en escalas muy superiores

El resultado mostrado por el programa dentro del mensaje

emergente se basa en nuestra entrada pero nosotros

desconocemos en lo absoluto los procedimientos utilizados

sobre esta entrada para producir aquella respuesta

A La Observacioacuten es Trascendental

Primero es importante observar el problema su

comportamiento Es substancial tratar de lograr

un pensamiento inductivo en donde logremos

identificar el principio particular del problema

para poder llegar a extrapolarlo a una solucioacuten

general

El punto de quiebre se produce en este instante

Ya al haber observado la aplicacioacuten podriacuteamos

decidir procesar los datos que nos entrega y

lograr crear un coacutedigo equivalente o investigar el

funcionamiento interno

B Dentro de la aplicacioacuten

Luego de la formulacioacuten de una hipoacutetesis sobre

su funcionamiento necesitamos algunas

herramientas para comenzar con la investigacioacuten

En el caso de esta aplicacioacuten con un poco de

conocimientos del lenguaje ensamblador de

programacioacuten tradicional y un descompilador es

suficiente

Es importante emprender de buena forma

nuestro sondeo ser ordenados y metoacutedicos en la

tarea En este momento las capacidades analiacuteticas

y loacutegicas son muy importantes para alivianar

nuestra faena

Lo fundamental es conocer muy bien el

entorno en que nos desenvolveremos En este es

punto indispensable saber que una aplicacioacuten

para Windows necesita invocar internamente al

punto de entrada MessageBox o MessageBoxEx

de la libreriacutea de sistema user32dll para poder

desplegar un mensaje (Fig 4)

Figura 4 Resultado de la Aplicacioacuten

Ya con esa pista es sencillo encontrar el

fragmento de coacutedigo relacionado con las

operaciones relacionadas a nuestro nuacutemero de

entrada que tendriacutea una forma similar a la

mostrada a continuacioacuten en nuestro

descompilador (Fig 5)

Figura 5 Vista del Programa en Ensamblador

Cualquier programador intuiriacutea faacutecilmente lo

que hacen las liacuteneas superiores de esta aplicacioacuten

en especial sprintf es parte de la libreriacutea estaacutendar

de C++ Claramente vemos tambieacuten el tiacutetulo de la

ventana en el coacutedigo estos valores son

interpretados de forma inteligente por este

descompilador en especial y en particular nos

asiste de sobremanera a comprender el coacutedigo

Lo siguiente es sencillamente explorar paso a

paso las acciones superiores de caacutelculo del

resultado En esta instancia seraacute ideal realizar

numerosas pruebas para estar completamente

seguros de que logramos develar el secreto tras la

funcionalidad objetivo (Fig 6)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

26

Figura 6 Inicio del coacutedigo al que aplicaremos ingenieriacutea inversa

Hay que detenerse algunos segundos a

individualizar algunos procedimientos del

anaacutelisis que a simple vista pueden parecer

inconcebibles con el fin de poder generar una

tesis concluyente

Cabe destacar que se omitiraacuten pasos

intermedios de asignaciones de memoria y otros

formalismos propios de ensamblador para

favorecer el entendimiento del lector

Inicialmente tenemos el valor de entrada

supuestamente ya leiacutedo desde el cuadro de

diaacutelogo del programa ahora nos enfocamos en la

primera accioacuten importante Asumiremos el valor

de entrada como una incoacutegnita

En el siguiente trozo de coacutedigo la liacutenea

destacada antildeadioacute siete a nuestra incoacutegnita (Fig 7)

Figura 7 Coacutedigo donde se denota la adicioacuten de 7 a nuestra ecuacioacuten

A continuacioacuten se multiplica ese valor

resultante de la suma por el mismo (Fig 8)

Figura 8 Coacutedigo donde se denota la multiplicacioacuten del valor por la suma

Nuevamente multiplicamos el resultado por el

anterior proporcionado tras la suma En esta

segunda vez ya podemos expresar la operacioacuten

simplemente elevando al cubo la suma anterior

(Fig 9)

Figura 9 Coacutedigo que denota una nueva multiplicacioacuten del resultante

Ahora le restamos diez al resultado

El procedimiento que viene a continuacioacuten

propone un mayor desafiacuteo intelectual Un nuacutemero

constante en este caso el cargado al registro

EAX (Fig 10)

Figura 10 ubicacioacuten del nuacutemero constante EAX

Generalmente la divisioacuten es algo maacutes costosa

en tiempo de procesador que otras operaciones

por lo que ciertos compiladores incluyen tablas

de constantes las cuales son llamadas ―nuacutemeros

maacutegicos para la divisioacuten entera

d Con signo Sin signo

m (hex) s m (hex) a s

-5 99999999 1

-3 55555555 1

-2k 7FFFFFFF k-

1

1 mdash mdash 0 1 0

2k 80000001 k-

1 232-k 0 0

3 55555556 0 AAAAAAAB 0 1

5 66666667 1 CCCCCCCD 0 2

6 2AAAAAAB 0 AAAAAAAB 0 2

7 92492493 2 24924925 1 3

9 38E38E39 1 38E38E39 0 1

10 66666667 2 CCCCCCCD 0 3

11 2E8BA2E9 1 BA2E8BA3 0 3

] INGENIERIacuteA DE SOFTWARE

27

INGENIERIacuteA DE SISTEMAS

12 2AAAAAAB 1 AAAAAAAB 0 3

25 51EB851F 3 51EB851F 0 3

125 10624DD3 3 10624DD3 0 3

Tabla 1 Algunos nuacutemeros maacutegicos (32 bits)

Ahora bien conociendo la tabla 1 sabiendo

que el nuacutemero cargado en esta ocasioacuten

corresponde al once lo que hace el coacutedigo es

multiplicar el resultado de la salida temporal por

aquel nuacutemero (Fig 11)

Figura 11 Multiplicacioacuten del resultante por el numero 11

Naturalmente la multiplicacioacuten por un nuacutemero

tan grande produce una especie de

desbordamiento en el registro contenedor del

resultado al exceder el tamantildeo de palabra del

procesador (en este caso de 32 bits) Estos bits

sobrantes se almacenan naturalmente en el

registro EDX registro que es contiguo a ECX

dentro de la memoria de los registros del

procesador

Ahora desplazamos un bit del registro EDX

(equivalente a una divisioacuten entera por dos) para

obtener la solucioacuten de la divisioacuten por once

generando una sencilla ecuacioacuten

Figura 12 Desplazamiento del bit de registro EDX

El uacuteltimo paso luego de documentar estos

resultados seraacute crear una aplicacioacuten que recree

esta foacutermula soacutelo en caso de tener intenciones de

re-codificacioacuten del desarrollo Consumando este

punto es sencillo confeccionar un diagrama con

todo el proceso anteriormente visto

XV CONCLUSIONES

Queda claro que el tema de la ingenieriacutea

inversa es uno de los toacutepicos maacutes interesantes a

los que podriacutea afrontarse un profesional de la

tecnologiacutea y en general disfrutar el largo proceso

involucrado gracias al desafiacuteo poco predecible

que presenta

En general podemos darnos cuenta de que no

existen muchas metodologiacuteas y teoriacuteas estrictas

sobre coacutemo aplicar las teacutecnicas de ingenieriacutea

inversa Afortunadamente un ingeniero estaacute

preparado para afrentar desafiacuteos de este tipo

Adicionalmente podemos deducir tambieacuten el

aspecto bidireccional de la ingenieriacutea inversa

pues como ya lo comprobamos no solo es un

desafiacuteo aplicarla sino que tambieacuten lo es tener que

dificultar el proceso o incluso tratar de impedirlo

si la situacioacuten lo requiere

REFERENCIAS

[12] Roger Pressman Ingenieriacutea de Software ―Un Enfoque Moderno 6th ed

MC Graw Hill [13] httpeswikipediaorgwikiIngenieria_inversa

[14] httpwwwinfosecwritersconntext_resourcespdfsoftware_security_and_r

everse_engineeringpdf [15] httperwinriedclmodo=visorampelemento=239

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

28

METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO Univ Alejandro Meacutendez Escobar

Universidad San Francisco de Asiacutes

Ingenieriacutea de Sistemas

Ingenieriacutea de Software I

La Paz - Bolivia

amendezusfaedubo

Resumenmdash Al adquirir el software educativo dentro del campo de

desarrollo de software una gran importancia y siendo este

inspiracioacuten de propuestas de innumerables metodologiacuteas que buscan

la elaboracioacuten de un software de calidad

Tomaremos la metodologiacutea Aacutencora enfocada a la fase de

requerimientos y que ofrece elementos que indican las actividades

que deben realizarse los artefactos que se producen y la forma de

obtenerlos

Usando al desarrollo de software educativo como ejemplo de una

mejor comprensioacuten de dicha metodologiacutea analizando la aplicacioacuten

del Aacutencora en un trabajo propuesto para el Instituto Tecnoloacutegico de

Orizaba Meacutexico

Palabras clave mdash Aacutencora Metodologiacutea Desarrollo de Software

Educativo Requerimientos Calidad

XVI INTRODUCCIOacuteN

Hoy en diacutea la tecnologiacutea esta dentro de las

actividades que realizamos es asiacute que la educacioacuten no

queda exenta de ella por o cual es necesario adaptarse

al movimiento tecnoloacutegico que nos trae grandes

ventajas en la transmisioacuten de conocimientos de una

manera sencilla y dinaacutemica

De esta manera han surgido infinidad de

metodologiacuteas de desarrollo de software educativo el

cual tiene como objetivo ser el apoyo para docentes

alumnos y toda persona que este dentro del proceso de

aprendizaje

Tomando en cuenta este ramillete infinito de

metodologiacuteas surge en el ejemplo propuesto la

adaptacioacuten del Aacutencora en el desarrollo de software

educativo teniendo como objetivo principal la

comprensioacuten de los elementos y conceptos de la

metodologiacutea Aacutencora

Aacutencora es una metodologiacutea enfocada a la

adquisicioacuten de requerimientos para software que

ofrece guiacuteas y elementos de apoyo para la obtencioacuten de

estos requerimientos Al mismo tiempo permite pasar a

la fase de disentildeo de manera sencilla Aprovechando las

ventajas que presenta Aacutencora se le hicieron algunas

adaptaciones con el fin de cubrir algunas

caracteriacutesticas del disentildeo instruccional y enriquecer

Aacutencora habilitaacutendola para la adquisicioacuten de

requerimientos de software educativo

XVII APLICACIOacuteN DE LA METODOLOGIacuteA AacuteNCORA

Como es el objetivo principal la comprensioacuten de la

aplicacioacuten de la metodologiacutea Aacutencora dentro del

desarrollo de software educativo de calidad solo

describiremos los meacutetodos del meacutetodo y los resultados

obtenidos

Claro esta que para ahondar maacutes en tema del

software educativo en si el lector puede recurrir a los

siguientes autores Metodologiacutea de desarrollo de

sistemas multimedia (Vaughan 2006) Propuesta de

metodologiacutea para el disentildeo desarrollo y evaluacioacuten

de software educativo (Reyes 2009) Ingenieriacutea de

software educativo con modelaje orientado por objetos

(Goacutemez 1998) asi como tambieacuten los siguientes

modelos ADDIE (Anaacutelisis Disentildeo Desarrollo

Implantacioacuten y Evaluacioacuten) de (McGriff 2000) y el

disentildeo instruccional aplicado al desarrollo de software

educativo EISE (Especificacioacuten Instruccional de

Software Educativo) de (Hernaacutendez 2005)

] INGENIERIacuteA DE SOFTWARE

29

INGENIERIacuteA DE SISTEMAS

Quienes tienen el mismo objetivo de crear software

educativo de calidad podemos sintetizar de ellos los

siguientes puntos

Anaacutelisis del puacuteblico al que se dirigiraacute el software

Problema oacute necesidad educativa a atender

Anaacutelisis de contenido (Tema a tratar actividades

para alcanzar el objetivo de ensentildeanza y forma de

evaluarlo)

Actividades oacute forma actual de llevar a cabo la

ensentildeanza del tema en cuestioacuten

Elaboracioacuten de guiones metaacuteforas escenarios

Creacioacuten de prototipo oacute Storyboard

Disentildeo de interfaz

Mapas de navegacioacuten

Modelos de datos

Elaboracioacuten de diagramas de contexto diagramas

de flujo o diagramas de casos de uso

Ahora enfocaacutendonos en el aacutencora se establece la

propuesta de seleccionar las actividades de Aacutencora que

permitan obtener los requerimientos de un software

educativo

La Tabla 1 presenta las actividades y artefactos

producidos en las fases de Aacutencora para la elaboracioacuten

de software educativo

TABLA 1 ACTIVIDADES Y ARTEFACTOS DE LA METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO

Metodologiacutea Aacutencora

Fases Actividades y artefactos

Anaacutelisis de

Requerimientos

A traveacutes de entrevistas con los clientes

(maestros y pedagogos) y de la lectura

del respectivo material proporcionado

por ellos se definiraacute la asignatura a la

que se enfocaraacute el software el tema a

tratar y la forma en que se abordaraacute y

evaluaraacute Tambieacuten se estableceraacute el

objetivo general de aprendizaje la

metaacutefora que se emplearaacute y se

determinaraacute el puacuteblico al que se

dirigiraacute el software

Artefactos

Documento que define la asignatura

contenido objetivo general de

aprendizaje metaacutefora y puacuteblico al que

se dirigiraacute el software Guion de la

situacioacuten actual

Recoleccioacuten y

clasificacioacuten de

requerimientos

El guion de la propuesta

computacional reflejaraacute la metaacutefora

que se sigue el ambiente de cada

escena

La bitaacutecora de desarrollo permitiraacute ver

coacutemo el sistema responderaacute a las

diversas acciones que realice el

usuario

En lugar del prototipo raacutepido se

elaboraraacute un Storyboard para presentar

graacuteficamente la estructura de sistema

propuesto

Artefactos

Guion de propuesta computacional

bitaacutecora de desarrollo Storyboard

Resolucioacuten de

conflictos

jerarquizacioacuten y

validacioacuten de

requerimientos

Modificaciones al guion de la

propuesta computacional de acuerdo a

los cambios propuestos por los

maestros y pedagogos

Artefactos

Guion de propuesta computacional e

Storyboard con adecuaciones sentildealas

Cierre

Trasladar los guiones a casos de uso

Artefactos

Casos de uso

Se agregaron algunas caracteriacutesticas a ciertos

artefactos de Aacutencora para poder cubrir los

requerimientos de software educativo Uno de estos

elementos es el guion de la propuesta computacional

al que se propone agregar lo siguiente

Conocimientos previos del usuario Se refiere a los

conocimientos baacutesicos o miacutenimos que debe tener el

alumno para poder interactuar con el moacutedulo

Objetivo de aprendizaje Es el aprendizaje que

debe obtener el alumno despueacutes de haber interactuado

con el moacutedulo

La Figura 1 se presenta la estructura sugerida para el

guion de la propuesta computacional En la bitaacutecora de

desarrollo se propone antildeadir una fila al final de cada

pista donde se describan las situaciones favorables y

no favorables para el cumplimiento del objetivo de

aprendizaje para esa pista en particular Por otra parte

en lugar del prototipo se sugiere utilizar el Storyboard

ya que permite mostrar de manera maacutes completa la

estructura del guion de la propuesta computacional La

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

30

Figura 2 muestra el formato para la elaboracioacuten del

Storyboard

Figura 1 Estructura del guion para la propuesta computacional

Figura 2 Formato para la elaboracioacuten del Storyboard

XVIII RESULTADOS

Aplicando Aacutencora en un ejemplo para la parte de

requerimientos se obtuvo la siguiente informacioacuten

Asignatura Matemaacuteticas

Contenido Estaacute articulado con base en seis ejes

con sus respectivos temas y subtemas que variacutean de

acuerdo al grado escolar Considerando lo anterior se

tiene lo siguiente

a) Grado escolar De segundo hasta quinto grado de

primaria

b) Temas Nuacutemeros naturales capacidad peso

tiempo y ubicacioacuten espacial planteamiento y

resolucioacuten de problemas sencillos en los que se

requiera recolectar y registrar informacioacuten

perioacutedicamente representacioacuten de informacioacuten en

tablas de frecuencia y graacuteficas de barras registros de

los resultados de experimentos aleatorios

representacioacuten de los resultados de un experimento

aleatorio en tablas y graacuteficas

c) Subtemas Planteamiento y resolucioacuten de

problemas que impliquen dos o maacutes operaciones con

nuacutemeros naturales

d) Ejes Introduccioacuten del kiloacutemetro como la unidad

que permite medir grandes distancias y recorridos

largos capacidad peso y tiempo uso del reloj y el

calendario los nuacutemeros sus relaciones y sus

operaciones medicioacuten la prediccioacuten y el azar

tratamiento de la informacioacuten

Objetivo general de aprendizaje Ejercitar las

operaciones aritmeacuteticas baacutesicas interpretar la

informacioacuten y los resultados de la informacioacuten dada

aplicada en situaciones de la vida cotidiana

Con las actividades hasta ahora realizadas se ha

observado que los artefactos de Aacutencora son flexibles y

pueden por lo tanto adaptarse de acuerdo a las

necesidades que implican la adquisicioacuten de

requerimientos de un software educativo Tambieacuten se

aprecian las ventajas de algunos artefactos como la

bitaacutecora de desarrollo que permite determinar las

respuestas del sistema ante las acciones del usuario y

estimar tambieacuten el tiempo que llevaraacute implementar

cada quinteta

La estimacioacuten del tiempo ayuda a tener un valor

aproximado del tiempo de desarrollo de software

Agregar el objetivo de aprendizaje a la bitaacutecora de

desarrollo puede parecer repetitivo despueacutes de

incluirlo en el Storyboard pero esto nos permite ver las

situaciones u obstaacuteculos que pueden impedir que el

objetivo de aprendizaje se alcance y por tanto tenerlos

presente durante el disentildeo A pesar de las ventajas de

la bitaacutecora de desarrollo un inconveniente hasta ahora

encontrado es lo tedioso al manejar muchas quintetas

] INGENIERIacuteA DE SOFTWARE

31

INGENIERIacuteA DE SISTEMAS

cuando por la naturaleza del guion se tienen varios

avisos y mensajes para el usuario Por otra parte los

guiones han ayudado a realizar de manera sencilla el

modelo de casos de uso

En lo referente a la presentacioacuten con los clientes el

guion es un artefacto que pude dar un panorama

general del software que se va a elaborar y queda

reforzada a traveacutes de los Storyboard Cuando se

requieren cambios solicitados por los clientes las

modificaciones a estos artefactos no han sido muy

complicadas dado que por su estructura es faacutecil de

ubicar las secciones y respectivos elementos

XIX CONCLUSIONES

Con los resultados hasta ahora obtenidos se puede

decir que la propuesta permite a los desarrolladores

con poca experiencia en desarrollo de software

educativo obtener los requerimientos de una manera

sencilla

Permite realizar un mejor relevamiento de informacioacuten

de los requerimientos del cliente enfocaacutendonos mas en

este

Es tambieacuten importante mencionar los avances que

tiene y seguiraacute teniendo el software educativo aplicado

no solo a nivel escolar sino tambieacuten al superior

Habiendo revisado el concepto y la aplicacioacuten de la

metodologiacutea Aacutencora en el desarrollo de software

educativo se llegoacute a una comprensioacuten mas extensa de

dicho meacutetodo el cual es de gran importancia dentro de

la ingenieriacutea de Software ya que nos

REFERENCIAS

httpwwwuvmxmisproductividaddocumentsCarmenChay_CIIM2010pdf

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 21: Revista de Ingenieria de Software

] INGENIERIacuteA DE SOFTWARE

21

INGENIERIacuteA DE SISTEMAS

pistas1El siacutentoma y la causa pueden ser

geograacuteficamente remotos entre siacute2El siacutentoma

puede desaparecer (temporalmente) al corregir

otro error

3 E l s iacute n t o m a p u e d e r e a l m e n t e e s t a r

p r o d u c i d o p o r a l g o q u e n o e s u n e r r o r

( i n e x a c t i t u d d e l o s redondeos)

4El siacutentoma puede estar causado por un error

humano que no sea faacutecilmente detectado

5El siacutentoma puede ser el resultado de problemas

de temporizacioacuten en vez de problema s de proceso

6Puede ser difiacutecil reproducir exactamente las

condiciones de entrada

7 E l s iacute n t o m a p u e d e a p a r e c e r e n f o r m a

i n t e r m i t e n t e

8 E l s iacute n t o m a p u e d e s e r d e b i d o a c a u s a s q u e

s e d i s t r i b u y e n p o r u n a s e r i e d e t a r e a s

e j e c u t aacute n d o s e e n diferentes procesadores

IIICONCLUCIONES

Las estrategias de prueba del software es un mecanismo

que proporciona una guiacutea o base pasa ver la forma como se

debe desarrollar la aplicacioacuten en cuanto a meacutetodos para

logra un producto exitoso

IVREFERENCIAS

httpbuenastareascomensayosEstategias-de-prueba-de-

software3752643html

httpwwwestrategiascompruebaagil

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

22

Ingenieriacutea Inversa Juan Carlos Zenteno Sanga

1

Departamento de Ingenieriacutea de Sistemas Universidad San Francisco de Asiacutes

Direccioacuten Incluyendo el Paiacutes 1juanka_58hotmailcom

Resumenmdash La ingenieriacutea de Software es parte del modelo de

proceso de reingenieriacutea de software es el proceso de analizar

un programa con la finalidad de crear una representacioacuten del

programa en un grado mayor de abstraccioacuten del coacutedigo

fuente las herramientas de ingenieriacutea inversa obtienen

informacioacuten del disentildeo de datos arquitectoacutenico y de

procedimientos a partir de un programa existente

En el siguiente artiacuteculo se veraacuten los conceptos baacutesicos y se

denotara un ejemplo praacutectico para una mayor comprensioacuten

del tema

Palabras clave mdash Ingenieriacutea de Software Reingenieriacutea

Linux Ingenieriacutea Inversa

XI INTRODUCCIOacuteN

Inmersa en el aacuterea de conocimiento de la

ingenieriacutea de software se encuentra la ingenieriacutea

inversa como punto de apoyo para los procesos

de anaacutelisis y disentildeo propuestos en diferentes

meacutetodos de desarrollo

La ingenieriacutea inversa permite subsanar esta

deficiencia al documentar los productos de

software a partir del coacutedigo ejecutable con el fin

de obtener los artefactos de anaacutelisis y disentildeo

La ingenieriacutea inversa es ademaacutes una

herramienta uacutetil que ayuda en el proceso de

aseguramiento de la calidad del software

mediante la comparacioacuten de diagramas de fases

de anaacutelisis y desarrollo se apoya comuacutenmente en

la generacioacuten del diagrama de clases debido a la

importancia de este diagrama en la fase de disentildeo

y su facilidad de generacioacuten Existen tambieacuten

otros diagramas de intereacutes como el de

comunicacioacuten y el de secuencias que modelan

las caracteriacutesticas dinaacutemicas de un producto de

software

Hoy en diacutea los productos maacutes comuacutenmente

sometidos a la Ingenieriacutea Inversa son los

productos de Hardware y Software pero

cualquier producto puede ser sometido a este

proceso

Aplicar ingenieriacutea Inversa a algo supone

profundizar el estudio de su funcionamiento

En el caso concreto del Software se conoce

por ingenieriacutea de software a la actividad que se

ocupa de describir coacutemo funciona un programa

de cuyo coacutedigo no se dispone hasta el punto de

generar coacutedigo propio que cumpla con las

mismas funciones Un ejemplo claacutesico del uso de

esta teacutecnica es el software de pago donde las

empresas utilizan esta teacutecnica para proteger sus

productos contra posibles acceso no autorizados

o examinar el producto final para encontrar

posibles bugs inesperados en la ejecucioacuten de

dicho sistema

Existe una gran variedad de software

desensamblador y depurador para aplicar esta

teacutecnica

En resumen la idea general al aplicar

ingenieriacutea inversa es

Conocer a fondo la aplicacioacuten y generar un

mejor coacutedigo

Migrar la aplicacioacuten a un nuevo sistema operativo

Hacer o completar la documentacioacuten

] INGENIERIacuteA DE SOFTWARE

23

INGENIERIacuteA DE SISTEMAS

Verificar que el coacutedigo en estudio cumple las

especificaciones del disentildeo estaacutendar

La informacioacuten extraiacuteda de la lectura del

coacutedigo fuente son las especificaciones de disentildeo

modelos de flujo de control diagramas de disentildeo

documentos de especificacioacuten de disentildeo

pudiendo tomarse estas especificaciones como

nuevo punto de partida para aplicar ingenieriacutea

inversa y obtener informacioacuten a mayor nivel de

abstraccioacuten

Dado que es una labor estrateacutegica es

conveniente conocer cuando conviene realizar la

tarea de Ingenieriacutea inversa para una aplicacioacuten y

cuaacutendo es maacutes rentable sustituirla e implementar

una nueva Las aplicaciones para el primer paso

son aquellas en la que se produce las siguientes

situaciones

bull Fallos frecuentes que son difiacuteciles de

localizar

bull Son poco eficientes pero realizan la funcioacuten

esperada

bull Dificultades en la integracioacuten con otros

sistemas

bull Calidad pobre del software final

bull Resistencia a introducir cambios

bull Pocas personas capacitadas para realizar

modificaciones

bull Dificultades para realizar pruebas

bull El mantenimiento consume muchos recursos

XII LAS BASES DE LA INGENIERIA INVERSA

Los ejemplos maacutes trascendentes sobre los

inicios de la ingenieriacutea inversa son claramente las

investigaciones realizadas sobre antiguos

artefactos creados por humanos ancestrales con

el fin de descubrir la manera en que funcionaban

Uno de los maacutes conocidos es el llamado

mecanismo de Antikythera (Fig 1) el cual se

piensa que fue disentildeado para fines astronoacutemicos

por los griegos siendo uno de los primeros

artefactos que funcionaban con ruedas de

engranes

Figura 1 Antikythera (mecanismo presuntamente creado para fines astronoacutemicos)

Podemos entonces implantar un paralelo en aquella

mitoloacutegica buacutesqueda de descubrimiento sobre el

funcionamiento de esos artefactos y la ingenieriacutea inversa

actual usada en ingenieriacutea de software estableciendo un

importante factor en comuacuten la falta de documentacioacuten En

este ambiente es muy comuacuten contar con una especie de caja

negra en donde sabemos lo que ingresamos y el resultado

que obtenemos pero desconocemos el procedimiento con la

precisioacuten que necesitariacuteamos para replicarlo

Esta falta de documentacioacuten es el impulso

principal de toda la ingenieriacutea inversa las

finalidades de la misma pueden variar pero este

factor inicial nunca lo haraacute

XIII INGENIERIA INVERSA COMO UN PROCESO DE

REINGENIERIA

La ingenieriacutea inversa tiene la misioacuten de

desentrantildear los misterios y secretos de los

sistemas en uso

Baacutesicamente recupera el disentildeo de la

aplicacioacuten a partir del coacutedigo esto se realiza

mediante herramientas que extraen la

informacioacuten de los datos procedimientos y

arquitecturas del sistema

Es aplicable a sistemas con las siguientes

caracteriacutesticas

Documentacioacuten inexistente o totalmente obsoleta

Programacioacuten en bloque de coacutedigos muy grandes

yo sin estructural

La aplicacioacuten cubre gran parte de los requisitos

y el rendimiento esperado

A Nivel de abstraccioacuten

El nivel de Abstraccioacuten de un proceso de

Ingenieriacutea Inversa y las herramientas que se

utilizan para realizarlo aluden la sofisticacioacuten de

la informacioacuten de disentildeo que se puede extraer del

coacutedigo fuente Este proceso deberiacutea ser capaz de

derivar

Sus representaciones de disentildeo de procedimiento

(con un bajo nivel de abstraccioacuten)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

24

La informacioacuten de las estructuras de datos de

procedimiento (con un nivel de abstraccioacuten

ligeramente maacutes elevado)

Modelos de flujo de datos de control (un nivel de

abstraccioacuten relativamente alto)

Modelos de entidades y de relaciones (un elevado

nivel de abstraccioacuten)

B Completitud

En la mayoriacutea de los casos la completitud

decrece a medida que aumenta el grado de

abstraccioacuten

La completitud mejora en proporcioacuten directa a

la cantidad de anaacutelisis efectuado por la persona

que estaacute efectuando la ingenieriacutea inversa

C Interactividad

La interactividad alude al grado con el cual el

ser humano se integra con las herramientas

automatizadas para crear un proceso de

ingenieriacutea inversa efectivo

D Proceso

El Proceso de ingenieriacutea inversa (Fig 2) es el encargado

de reestructurar el coacutedigo fuente para que solamente

contenga instrucciones de programacioacuten estructurada Lo

que hace que el coacutedigo sea maacutes faacutecil de leer y proporciona

la base para las subsiguientes actividades de ingenieriacutea

inversa

Figura 2 Diagrama de Proceso de la Ingenieriacutea Inversa

E Reestructuracioacuten

La reestructuracioacuten del software modifica el

coacutedigo fuente y los datos en un intento adecuado

a futuros cambios esta no modifica la

arquitectura global del programa Tiene a

centrarse en los detalles de disentildeo de moacutedulos

individuales y en estructuras de datos locales

definidas dentro de los moacutedulos

Estos son algunos de los beneficios que se

pueden lograr cuando se reestructura el software

Programas de mayor calidad

Reduce el esfuerzo requerido para llevar a cabo

las actividades de mantenimiento

Hace el software maacutes sencillo para comprobar y

depurar

F Re documentacioacuten

Es el proceso mediante el cual se produce

documentacioacuten retroactivamente desde un

sistema existente

Es considerada una forma de ingenieriacutea inversa

porque la documentacioacuten reconstruida es usada

para ayudar al conocimiento del programa

XIV UTILIZANDO EL METODO CIENTIFICO EN LA

INGENIERIA INVERSA

Ante cualquier dificultad tecnoloacutegica el

meacutetodo cientiacutefico siempre es y seraacute nuestra maacutes

preciada arma Partamos imaginando un pequentildeo

dilema relacionado con el tema de ingenieriacutea de

software especiacuteficamente con un sencillo

programa (Fig 3)

Figura 3 Pantalla de aplicacioacuten que nos serviraacute de ejemplo

Esta sencilla aplicacioacuten mostraraacute un mensaje con cierto

resultado y aun siendo un problema demasiado sencillo

para considerarlo como un reto el objetivo es soacutelo describir

] INGENIERIacuteA DE SOFTWARE

25

INGENIERIacuteA DE SISTEMAS

las acciones usuales del proceso las cuales son aplicables

en escalas muy superiores

El resultado mostrado por el programa dentro del mensaje

emergente se basa en nuestra entrada pero nosotros

desconocemos en lo absoluto los procedimientos utilizados

sobre esta entrada para producir aquella respuesta

A La Observacioacuten es Trascendental

Primero es importante observar el problema su

comportamiento Es substancial tratar de lograr

un pensamiento inductivo en donde logremos

identificar el principio particular del problema

para poder llegar a extrapolarlo a una solucioacuten

general

El punto de quiebre se produce en este instante

Ya al haber observado la aplicacioacuten podriacuteamos

decidir procesar los datos que nos entrega y

lograr crear un coacutedigo equivalente o investigar el

funcionamiento interno

B Dentro de la aplicacioacuten

Luego de la formulacioacuten de una hipoacutetesis sobre

su funcionamiento necesitamos algunas

herramientas para comenzar con la investigacioacuten

En el caso de esta aplicacioacuten con un poco de

conocimientos del lenguaje ensamblador de

programacioacuten tradicional y un descompilador es

suficiente

Es importante emprender de buena forma

nuestro sondeo ser ordenados y metoacutedicos en la

tarea En este momento las capacidades analiacuteticas

y loacutegicas son muy importantes para alivianar

nuestra faena

Lo fundamental es conocer muy bien el

entorno en que nos desenvolveremos En este es

punto indispensable saber que una aplicacioacuten

para Windows necesita invocar internamente al

punto de entrada MessageBox o MessageBoxEx

de la libreriacutea de sistema user32dll para poder

desplegar un mensaje (Fig 4)

Figura 4 Resultado de la Aplicacioacuten

Ya con esa pista es sencillo encontrar el

fragmento de coacutedigo relacionado con las

operaciones relacionadas a nuestro nuacutemero de

entrada que tendriacutea una forma similar a la

mostrada a continuacioacuten en nuestro

descompilador (Fig 5)

Figura 5 Vista del Programa en Ensamblador

Cualquier programador intuiriacutea faacutecilmente lo

que hacen las liacuteneas superiores de esta aplicacioacuten

en especial sprintf es parte de la libreriacutea estaacutendar

de C++ Claramente vemos tambieacuten el tiacutetulo de la

ventana en el coacutedigo estos valores son

interpretados de forma inteligente por este

descompilador en especial y en particular nos

asiste de sobremanera a comprender el coacutedigo

Lo siguiente es sencillamente explorar paso a

paso las acciones superiores de caacutelculo del

resultado En esta instancia seraacute ideal realizar

numerosas pruebas para estar completamente

seguros de que logramos develar el secreto tras la

funcionalidad objetivo (Fig 6)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

26

Figura 6 Inicio del coacutedigo al que aplicaremos ingenieriacutea inversa

Hay que detenerse algunos segundos a

individualizar algunos procedimientos del

anaacutelisis que a simple vista pueden parecer

inconcebibles con el fin de poder generar una

tesis concluyente

Cabe destacar que se omitiraacuten pasos

intermedios de asignaciones de memoria y otros

formalismos propios de ensamblador para

favorecer el entendimiento del lector

Inicialmente tenemos el valor de entrada

supuestamente ya leiacutedo desde el cuadro de

diaacutelogo del programa ahora nos enfocamos en la

primera accioacuten importante Asumiremos el valor

de entrada como una incoacutegnita

En el siguiente trozo de coacutedigo la liacutenea

destacada antildeadioacute siete a nuestra incoacutegnita (Fig 7)

Figura 7 Coacutedigo donde se denota la adicioacuten de 7 a nuestra ecuacioacuten

A continuacioacuten se multiplica ese valor

resultante de la suma por el mismo (Fig 8)

Figura 8 Coacutedigo donde se denota la multiplicacioacuten del valor por la suma

Nuevamente multiplicamos el resultado por el

anterior proporcionado tras la suma En esta

segunda vez ya podemos expresar la operacioacuten

simplemente elevando al cubo la suma anterior

(Fig 9)

Figura 9 Coacutedigo que denota una nueva multiplicacioacuten del resultante

Ahora le restamos diez al resultado

El procedimiento que viene a continuacioacuten

propone un mayor desafiacuteo intelectual Un nuacutemero

constante en este caso el cargado al registro

EAX (Fig 10)

Figura 10 ubicacioacuten del nuacutemero constante EAX

Generalmente la divisioacuten es algo maacutes costosa

en tiempo de procesador que otras operaciones

por lo que ciertos compiladores incluyen tablas

de constantes las cuales son llamadas ―nuacutemeros

maacutegicos para la divisioacuten entera

d Con signo Sin signo

m (hex) s m (hex) a s

-5 99999999 1

-3 55555555 1

-2k 7FFFFFFF k-

1

1 mdash mdash 0 1 0

2k 80000001 k-

1 232-k 0 0

3 55555556 0 AAAAAAAB 0 1

5 66666667 1 CCCCCCCD 0 2

6 2AAAAAAB 0 AAAAAAAB 0 2

7 92492493 2 24924925 1 3

9 38E38E39 1 38E38E39 0 1

10 66666667 2 CCCCCCCD 0 3

11 2E8BA2E9 1 BA2E8BA3 0 3

] INGENIERIacuteA DE SOFTWARE

27

INGENIERIacuteA DE SISTEMAS

12 2AAAAAAB 1 AAAAAAAB 0 3

25 51EB851F 3 51EB851F 0 3

125 10624DD3 3 10624DD3 0 3

Tabla 1 Algunos nuacutemeros maacutegicos (32 bits)

Ahora bien conociendo la tabla 1 sabiendo

que el nuacutemero cargado en esta ocasioacuten

corresponde al once lo que hace el coacutedigo es

multiplicar el resultado de la salida temporal por

aquel nuacutemero (Fig 11)

Figura 11 Multiplicacioacuten del resultante por el numero 11

Naturalmente la multiplicacioacuten por un nuacutemero

tan grande produce una especie de

desbordamiento en el registro contenedor del

resultado al exceder el tamantildeo de palabra del

procesador (en este caso de 32 bits) Estos bits

sobrantes se almacenan naturalmente en el

registro EDX registro que es contiguo a ECX

dentro de la memoria de los registros del

procesador

Ahora desplazamos un bit del registro EDX

(equivalente a una divisioacuten entera por dos) para

obtener la solucioacuten de la divisioacuten por once

generando una sencilla ecuacioacuten

Figura 12 Desplazamiento del bit de registro EDX

El uacuteltimo paso luego de documentar estos

resultados seraacute crear una aplicacioacuten que recree

esta foacutermula soacutelo en caso de tener intenciones de

re-codificacioacuten del desarrollo Consumando este

punto es sencillo confeccionar un diagrama con

todo el proceso anteriormente visto

XV CONCLUSIONES

Queda claro que el tema de la ingenieriacutea

inversa es uno de los toacutepicos maacutes interesantes a

los que podriacutea afrontarse un profesional de la

tecnologiacutea y en general disfrutar el largo proceso

involucrado gracias al desafiacuteo poco predecible

que presenta

En general podemos darnos cuenta de que no

existen muchas metodologiacuteas y teoriacuteas estrictas

sobre coacutemo aplicar las teacutecnicas de ingenieriacutea

inversa Afortunadamente un ingeniero estaacute

preparado para afrentar desafiacuteos de este tipo

Adicionalmente podemos deducir tambieacuten el

aspecto bidireccional de la ingenieriacutea inversa

pues como ya lo comprobamos no solo es un

desafiacuteo aplicarla sino que tambieacuten lo es tener que

dificultar el proceso o incluso tratar de impedirlo

si la situacioacuten lo requiere

REFERENCIAS

[12] Roger Pressman Ingenieriacutea de Software ―Un Enfoque Moderno 6th ed

MC Graw Hill [13] httpeswikipediaorgwikiIngenieria_inversa

[14] httpwwwinfosecwritersconntext_resourcespdfsoftware_security_and_r

everse_engineeringpdf [15] httperwinriedclmodo=visorampelemento=239

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

28

METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO Univ Alejandro Meacutendez Escobar

Universidad San Francisco de Asiacutes

Ingenieriacutea de Sistemas

Ingenieriacutea de Software I

La Paz - Bolivia

amendezusfaedubo

Resumenmdash Al adquirir el software educativo dentro del campo de

desarrollo de software una gran importancia y siendo este

inspiracioacuten de propuestas de innumerables metodologiacuteas que buscan

la elaboracioacuten de un software de calidad

Tomaremos la metodologiacutea Aacutencora enfocada a la fase de

requerimientos y que ofrece elementos que indican las actividades

que deben realizarse los artefactos que se producen y la forma de

obtenerlos

Usando al desarrollo de software educativo como ejemplo de una

mejor comprensioacuten de dicha metodologiacutea analizando la aplicacioacuten

del Aacutencora en un trabajo propuesto para el Instituto Tecnoloacutegico de

Orizaba Meacutexico

Palabras clave mdash Aacutencora Metodologiacutea Desarrollo de Software

Educativo Requerimientos Calidad

XVI INTRODUCCIOacuteN

Hoy en diacutea la tecnologiacutea esta dentro de las

actividades que realizamos es asiacute que la educacioacuten no

queda exenta de ella por o cual es necesario adaptarse

al movimiento tecnoloacutegico que nos trae grandes

ventajas en la transmisioacuten de conocimientos de una

manera sencilla y dinaacutemica

De esta manera han surgido infinidad de

metodologiacuteas de desarrollo de software educativo el

cual tiene como objetivo ser el apoyo para docentes

alumnos y toda persona que este dentro del proceso de

aprendizaje

Tomando en cuenta este ramillete infinito de

metodologiacuteas surge en el ejemplo propuesto la

adaptacioacuten del Aacutencora en el desarrollo de software

educativo teniendo como objetivo principal la

comprensioacuten de los elementos y conceptos de la

metodologiacutea Aacutencora

Aacutencora es una metodologiacutea enfocada a la

adquisicioacuten de requerimientos para software que

ofrece guiacuteas y elementos de apoyo para la obtencioacuten de

estos requerimientos Al mismo tiempo permite pasar a

la fase de disentildeo de manera sencilla Aprovechando las

ventajas que presenta Aacutencora se le hicieron algunas

adaptaciones con el fin de cubrir algunas

caracteriacutesticas del disentildeo instruccional y enriquecer

Aacutencora habilitaacutendola para la adquisicioacuten de

requerimientos de software educativo

XVII APLICACIOacuteN DE LA METODOLOGIacuteA AacuteNCORA

Como es el objetivo principal la comprensioacuten de la

aplicacioacuten de la metodologiacutea Aacutencora dentro del

desarrollo de software educativo de calidad solo

describiremos los meacutetodos del meacutetodo y los resultados

obtenidos

Claro esta que para ahondar maacutes en tema del

software educativo en si el lector puede recurrir a los

siguientes autores Metodologiacutea de desarrollo de

sistemas multimedia (Vaughan 2006) Propuesta de

metodologiacutea para el disentildeo desarrollo y evaluacioacuten

de software educativo (Reyes 2009) Ingenieriacutea de

software educativo con modelaje orientado por objetos

(Goacutemez 1998) asi como tambieacuten los siguientes

modelos ADDIE (Anaacutelisis Disentildeo Desarrollo

Implantacioacuten y Evaluacioacuten) de (McGriff 2000) y el

disentildeo instruccional aplicado al desarrollo de software

educativo EISE (Especificacioacuten Instruccional de

Software Educativo) de (Hernaacutendez 2005)

] INGENIERIacuteA DE SOFTWARE

29

INGENIERIacuteA DE SISTEMAS

Quienes tienen el mismo objetivo de crear software

educativo de calidad podemos sintetizar de ellos los

siguientes puntos

Anaacutelisis del puacuteblico al que se dirigiraacute el software

Problema oacute necesidad educativa a atender

Anaacutelisis de contenido (Tema a tratar actividades

para alcanzar el objetivo de ensentildeanza y forma de

evaluarlo)

Actividades oacute forma actual de llevar a cabo la

ensentildeanza del tema en cuestioacuten

Elaboracioacuten de guiones metaacuteforas escenarios

Creacioacuten de prototipo oacute Storyboard

Disentildeo de interfaz

Mapas de navegacioacuten

Modelos de datos

Elaboracioacuten de diagramas de contexto diagramas

de flujo o diagramas de casos de uso

Ahora enfocaacutendonos en el aacutencora se establece la

propuesta de seleccionar las actividades de Aacutencora que

permitan obtener los requerimientos de un software

educativo

La Tabla 1 presenta las actividades y artefactos

producidos en las fases de Aacutencora para la elaboracioacuten

de software educativo

TABLA 1 ACTIVIDADES Y ARTEFACTOS DE LA METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO

Metodologiacutea Aacutencora

Fases Actividades y artefactos

Anaacutelisis de

Requerimientos

A traveacutes de entrevistas con los clientes

(maestros y pedagogos) y de la lectura

del respectivo material proporcionado

por ellos se definiraacute la asignatura a la

que se enfocaraacute el software el tema a

tratar y la forma en que se abordaraacute y

evaluaraacute Tambieacuten se estableceraacute el

objetivo general de aprendizaje la

metaacutefora que se emplearaacute y se

determinaraacute el puacuteblico al que se

dirigiraacute el software

Artefactos

Documento que define la asignatura

contenido objetivo general de

aprendizaje metaacutefora y puacuteblico al que

se dirigiraacute el software Guion de la

situacioacuten actual

Recoleccioacuten y

clasificacioacuten de

requerimientos

El guion de la propuesta

computacional reflejaraacute la metaacutefora

que se sigue el ambiente de cada

escena

La bitaacutecora de desarrollo permitiraacute ver

coacutemo el sistema responderaacute a las

diversas acciones que realice el

usuario

En lugar del prototipo raacutepido se

elaboraraacute un Storyboard para presentar

graacuteficamente la estructura de sistema

propuesto

Artefactos

Guion de propuesta computacional

bitaacutecora de desarrollo Storyboard

Resolucioacuten de

conflictos

jerarquizacioacuten y

validacioacuten de

requerimientos

Modificaciones al guion de la

propuesta computacional de acuerdo a

los cambios propuestos por los

maestros y pedagogos

Artefactos

Guion de propuesta computacional e

Storyboard con adecuaciones sentildealas

Cierre

Trasladar los guiones a casos de uso

Artefactos

Casos de uso

Se agregaron algunas caracteriacutesticas a ciertos

artefactos de Aacutencora para poder cubrir los

requerimientos de software educativo Uno de estos

elementos es el guion de la propuesta computacional

al que se propone agregar lo siguiente

Conocimientos previos del usuario Se refiere a los

conocimientos baacutesicos o miacutenimos que debe tener el

alumno para poder interactuar con el moacutedulo

Objetivo de aprendizaje Es el aprendizaje que

debe obtener el alumno despueacutes de haber interactuado

con el moacutedulo

La Figura 1 se presenta la estructura sugerida para el

guion de la propuesta computacional En la bitaacutecora de

desarrollo se propone antildeadir una fila al final de cada

pista donde se describan las situaciones favorables y

no favorables para el cumplimiento del objetivo de

aprendizaje para esa pista en particular Por otra parte

en lugar del prototipo se sugiere utilizar el Storyboard

ya que permite mostrar de manera maacutes completa la

estructura del guion de la propuesta computacional La

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

30

Figura 2 muestra el formato para la elaboracioacuten del

Storyboard

Figura 1 Estructura del guion para la propuesta computacional

Figura 2 Formato para la elaboracioacuten del Storyboard

XVIII RESULTADOS

Aplicando Aacutencora en un ejemplo para la parte de

requerimientos se obtuvo la siguiente informacioacuten

Asignatura Matemaacuteticas

Contenido Estaacute articulado con base en seis ejes

con sus respectivos temas y subtemas que variacutean de

acuerdo al grado escolar Considerando lo anterior se

tiene lo siguiente

a) Grado escolar De segundo hasta quinto grado de

primaria

b) Temas Nuacutemeros naturales capacidad peso

tiempo y ubicacioacuten espacial planteamiento y

resolucioacuten de problemas sencillos en los que se

requiera recolectar y registrar informacioacuten

perioacutedicamente representacioacuten de informacioacuten en

tablas de frecuencia y graacuteficas de barras registros de

los resultados de experimentos aleatorios

representacioacuten de los resultados de un experimento

aleatorio en tablas y graacuteficas

c) Subtemas Planteamiento y resolucioacuten de

problemas que impliquen dos o maacutes operaciones con

nuacutemeros naturales

d) Ejes Introduccioacuten del kiloacutemetro como la unidad

que permite medir grandes distancias y recorridos

largos capacidad peso y tiempo uso del reloj y el

calendario los nuacutemeros sus relaciones y sus

operaciones medicioacuten la prediccioacuten y el azar

tratamiento de la informacioacuten

Objetivo general de aprendizaje Ejercitar las

operaciones aritmeacuteticas baacutesicas interpretar la

informacioacuten y los resultados de la informacioacuten dada

aplicada en situaciones de la vida cotidiana

Con las actividades hasta ahora realizadas se ha

observado que los artefactos de Aacutencora son flexibles y

pueden por lo tanto adaptarse de acuerdo a las

necesidades que implican la adquisicioacuten de

requerimientos de un software educativo Tambieacuten se

aprecian las ventajas de algunos artefactos como la

bitaacutecora de desarrollo que permite determinar las

respuestas del sistema ante las acciones del usuario y

estimar tambieacuten el tiempo que llevaraacute implementar

cada quinteta

La estimacioacuten del tiempo ayuda a tener un valor

aproximado del tiempo de desarrollo de software

Agregar el objetivo de aprendizaje a la bitaacutecora de

desarrollo puede parecer repetitivo despueacutes de

incluirlo en el Storyboard pero esto nos permite ver las

situaciones u obstaacuteculos que pueden impedir que el

objetivo de aprendizaje se alcance y por tanto tenerlos

presente durante el disentildeo A pesar de las ventajas de

la bitaacutecora de desarrollo un inconveniente hasta ahora

encontrado es lo tedioso al manejar muchas quintetas

] INGENIERIacuteA DE SOFTWARE

31

INGENIERIacuteA DE SISTEMAS

cuando por la naturaleza del guion se tienen varios

avisos y mensajes para el usuario Por otra parte los

guiones han ayudado a realizar de manera sencilla el

modelo de casos de uso

En lo referente a la presentacioacuten con los clientes el

guion es un artefacto que pude dar un panorama

general del software que se va a elaborar y queda

reforzada a traveacutes de los Storyboard Cuando se

requieren cambios solicitados por los clientes las

modificaciones a estos artefactos no han sido muy

complicadas dado que por su estructura es faacutecil de

ubicar las secciones y respectivos elementos

XIX CONCLUSIONES

Con los resultados hasta ahora obtenidos se puede

decir que la propuesta permite a los desarrolladores

con poca experiencia en desarrollo de software

educativo obtener los requerimientos de una manera

sencilla

Permite realizar un mejor relevamiento de informacioacuten

de los requerimientos del cliente enfocaacutendonos mas en

este

Es tambieacuten importante mencionar los avances que

tiene y seguiraacute teniendo el software educativo aplicado

no solo a nivel escolar sino tambieacuten al superior

Habiendo revisado el concepto y la aplicacioacuten de la

metodologiacutea Aacutencora en el desarrollo de software

educativo se llegoacute a una comprensioacuten mas extensa de

dicho meacutetodo el cual es de gran importancia dentro de

la ingenieriacutea de Software ya que nos

REFERENCIAS

httpwwwuvmxmisproductividaddocumentsCarmenChay_CIIM2010pdf

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 22: Revista de Ingenieria de Software

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

22

Ingenieriacutea Inversa Juan Carlos Zenteno Sanga

1

Departamento de Ingenieriacutea de Sistemas Universidad San Francisco de Asiacutes

Direccioacuten Incluyendo el Paiacutes 1juanka_58hotmailcom

Resumenmdash La ingenieriacutea de Software es parte del modelo de

proceso de reingenieriacutea de software es el proceso de analizar

un programa con la finalidad de crear una representacioacuten del

programa en un grado mayor de abstraccioacuten del coacutedigo

fuente las herramientas de ingenieriacutea inversa obtienen

informacioacuten del disentildeo de datos arquitectoacutenico y de

procedimientos a partir de un programa existente

En el siguiente artiacuteculo se veraacuten los conceptos baacutesicos y se

denotara un ejemplo praacutectico para una mayor comprensioacuten

del tema

Palabras clave mdash Ingenieriacutea de Software Reingenieriacutea

Linux Ingenieriacutea Inversa

XI INTRODUCCIOacuteN

Inmersa en el aacuterea de conocimiento de la

ingenieriacutea de software se encuentra la ingenieriacutea

inversa como punto de apoyo para los procesos

de anaacutelisis y disentildeo propuestos en diferentes

meacutetodos de desarrollo

La ingenieriacutea inversa permite subsanar esta

deficiencia al documentar los productos de

software a partir del coacutedigo ejecutable con el fin

de obtener los artefactos de anaacutelisis y disentildeo

La ingenieriacutea inversa es ademaacutes una

herramienta uacutetil que ayuda en el proceso de

aseguramiento de la calidad del software

mediante la comparacioacuten de diagramas de fases

de anaacutelisis y desarrollo se apoya comuacutenmente en

la generacioacuten del diagrama de clases debido a la

importancia de este diagrama en la fase de disentildeo

y su facilidad de generacioacuten Existen tambieacuten

otros diagramas de intereacutes como el de

comunicacioacuten y el de secuencias que modelan

las caracteriacutesticas dinaacutemicas de un producto de

software

Hoy en diacutea los productos maacutes comuacutenmente

sometidos a la Ingenieriacutea Inversa son los

productos de Hardware y Software pero

cualquier producto puede ser sometido a este

proceso

Aplicar ingenieriacutea Inversa a algo supone

profundizar el estudio de su funcionamiento

En el caso concreto del Software se conoce

por ingenieriacutea de software a la actividad que se

ocupa de describir coacutemo funciona un programa

de cuyo coacutedigo no se dispone hasta el punto de

generar coacutedigo propio que cumpla con las

mismas funciones Un ejemplo claacutesico del uso de

esta teacutecnica es el software de pago donde las

empresas utilizan esta teacutecnica para proteger sus

productos contra posibles acceso no autorizados

o examinar el producto final para encontrar

posibles bugs inesperados en la ejecucioacuten de

dicho sistema

Existe una gran variedad de software

desensamblador y depurador para aplicar esta

teacutecnica

En resumen la idea general al aplicar

ingenieriacutea inversa es

Conocer a fondo la aplicacioacuten y generar un

mejor coacutedigo

Migrar la aplicacioacuten a un nuevo sistema operativo

Hacer o completar la documentacioacuten

] INGENIERIacuteA DE SOFTWARE

23

INGENIERIacuteA DE SISTEMAS

Verificar que el coacutedigo en estudio cumple las

especificaciones del disentildeo estaacutendar

La informacioacuten extraiacuteda de la lectura del

coacutedigo fuente son las especificaciones de disentildeo

modelos de flujo de control diagramas de disentildeo

documentos de especificacioacuten de disentildeo

pudiendo tomarse estas especificaciones como

nuevo punto de partida para aplicar ingenieriacutea

inversa y obtener informacioacuten a mayor nivel de

abstraccioacuten

Dado que es una labor estrateacutegica es

conveniente conocer cuando conviene realizar la

tarea de Ingenieriacutea inversa para una aplicacioacuten y

cuaacutendo es maacutes rentable sustituirla e implementar

una nueva Las aplicaciones para el primer paso

son aquellas en la que se produce las siguientes

situaciones

bull Fallos frecuentes que son difiacuteciles de

localizar

bull Son poco eficientes pero realizan la funcioacuten

esperada

bull Dificultades en la integracioacuten con otros

sistemas

bull Calidad pobre del software final

bull Resistencia a introducir cambios

bull Pocas personas capacitadas para realizar

modificaciones

bull Dificultades para realizar pruebas

bull El mantenimiento consume muchos recursos

XII LAS BASES DE LA INGENIERIA INVERSA

Los ejemplos maacutes trascendentes sobre los

inicios de la ingenieriacutea inversa son claramente las

investigaciones realizadas sobre antiguos

artefactos creados por humanos ancestrales con

el fin de descubrir la manera en que funcionaban

Uno de los maacutes conocidos es el llamado

mecanismo de Antikythera (Fig 1) el cual se

piensa que fue disentildeado para fines astronoacutemicos

por los griegos siendo uno de los primeros

artefactos que funcionaban con ruedas de

engranes

Figura 1 Antikythera (mecanismo presuntamente creado para fines astronoacutemicos)

Podemos entonces implantar un paralelo en aquella

mitoloacutegica buacutesqueda de descubrimiento sobre el

funcionamiento de esos artefactos y la ingenieriacutea inversa

actual usada en ingenieriacutea de software estableciendo un

importante factor en comuacuten la falta de documentacioacuten En

este ambiente es muy comuacuten contar con una especie de caja

negra en donde sabemos lo que ingresamos y el resultado

que obtenemos pero desconocemos el procedimiento con la

precisioacuten que necesitariacuteamos para replicarlo

Esta falta de documentacioacuten es el impulso

principal de toda la ingenieriacutea inversa las

finalidades de la misma pueden variar pero este

factor inicial nunca lo haraacute

XIII INGENIERIA INVERSA COMO UN PROCESO DE

REINGENIERIA

La ingenieriacutea inversa tiene la misioacuten de

desentrantildear los misterios y secretos de los

sistemas en uso

Baacutesicamente recupera el disentildeo de la

aplicacioacuten a partir del coacutedigo esto se realiza

mediante herramientas que extraen la

informacioacuten de los datos procedimientos y

arquitecturas del sistema

Es aplicable a sistemas con las siguientes

caracteriacutesticas

Documentacioacuten inexistente o totalmente obsoleta

Programacioacuten en bloque de coacutedigos muy grandes

yo sin estructural

La aplicacioacuten cubre gran parte de los requisitos

y el rendimiento esperado

A Nivel de abstraccioacuten

El nivel de Abstraccioacuten de un proceso de

Ingenieriacutea Inversa y las herramientas que se

utilizan para realizarlo aluden la sofisticacioacuten de

la informacioacuten de disentildeo que se puede extraer del

coacutedigo fuente Este proceso deberiacutea ser capaz de

derivar

Sus representaciones de disentildeo de procedimiento

(con un bajo nivel de abstraccioacuten)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

24

La informacioacuten de las estructuras de datos de

procedimiento (con un nivel de abstraccioacuten

ligeramente maacutes elevado)

Modelos de flujo de datos de control (un nivel de

abstraccioacuten relativamente alto)

Modelos de entidades y de relaciones (un elevado

nivel de abstraccioacuten)

B Completitud

En la mayoriacutea de los casos la completitud

decrece a medida que aumenta el grado de

abstraccioacuten

La completitud mejora en proporcioacuten directa a

la cantidad de anaacutelisis efectuado por la persona

que estaacute efectuando la ingenieriacutea inversa

C Interactividad

La interactividad alude al grado con el cual el

ser humano se integra con las herramientas

automatizadas para crear un proceso de

ingenieriacutea inversa efectivo

D Proceso

El Proceso de ingenieriacutea inversa (Fig 2) es el encargado

de reestructurar el coacutedigo fuente para que solamente

contenga instrucciones de programacioacuten estructurada Lo

que hace que el coacutedigo sea maacutes faacutecil de leer y proporciona

la base para las subsiguientes actividades de ingenieriacutea

inversa

Figura 2 Diagrama de Proceso de la Ingenieriacutea Inversa

E Reestructuracioacuten

La reestructuracioacuten del software modifica el

coacutedigo fuente y los datos en un intento adecuado

a futuros cambios esta no modifica la

arquitectura global del programa Tiene a

centrarse en los detalles de disentildeo de moacutedulos

individuales y en estructuras de datos locales

definidas dentro de los moacutedulos

Estos son algunos de los beneficios que se

pueden lograr cuando se reestructura el software

Programas de mayor calidad

Reduce el esfuerzo requerido para llevar a cabo

las actividades de mantenimiento

Hace el software maacutes sencillo para comprobar y

depurar

F Re documentacioacuten

Es el proceso mediante el cual se produce

documentacioacuten retroactivamente desde un

sistema existente

Es considerada una forma de ingenieriacutea inversa

porque la documentacioacuten reconstruida es usada

para ayudar al conocimiento del programa

XIV UTILIZANDO EL METODO CIENTIFICO EN LA

INGENIERIA INVERSA

Ante cualquier dificultad tecnoloacutegica el

meacutetodo cientiacutefico siempre es y seraacute nuestra maacutes

preciada arma Partamos imaginando un pequentildeo

dilema relacionado con el tema de ingenieriacutea de

software especiacuteficamente con un sencillo

programa (Fig 3)

Figura 3 Pantalla de aplicacioacuten que nos serviraacute de ejemplo

Esta sencilla aplicacioacuten mostraraacute un mensaje con cierto

resultado y aun siendo un problema demasiado sencillo

para considerarlo como un reto el objetivo es soacutelo describir

] INGENIERIacuteA DE SOFTWARE

25

INGENIERIacuteA DE SISTEMAS

las acciones usuales del proceso las cuales son aplicables

en escalas muy superiores

El resultado mostrado por el programa dentro del mensaje

emergente se basa en nuestra entrada pero nosotros

desconocemos en lo absoluto los procedimientos utilizados

sobre esta entrada para producir aquella respuesta

A La Observacioacuten es Trascendental

Primero es importante observar el problema su

comportamiento Es substancial tratar de lograr

un pensamiento inductivo en donde logremos

identificar el principio particular del problema

para poder llegar a extrapolarlo a una solucioacuten

general

El punto de quiebre se produce en este instante

Ya al haber observado la aplicacioacuten podriacuteamos

decidir procesar los datos que nos entrega y

lograr crear un coacutedigo equivalente o investigar el

funcionamiento interno

B Dentro de la aplicacioacuten

Luego de la formulacioacuten de una hipoacutetesis sobre

su funcionamiento necesitamos algunas

herramientas para comenzar con la investigacioacuten

En el caso de esta aplicacioacuten con un poco de

conocimientos del lenguaje ensamblador de

programacioacuten tradicional y un descompilador es

suficiente

Es importante emprender de buena forma

nuestro sondeo ser ordenados y metoacutedicos en la

tarea En este momento las capacidades analiacuteticas

y loacutegicas son muy importantes para alivianar

nuestra faena

Lo fundamental es conocer muy bien el

entorno en que nos desenvolveremos En este es

punto indispensable saber que una aplicacioacuten

para Windows necesita invocar internamente al

punto de entrada MessageBox o MessageBoxEx

de la libreriacutea de sistema user32dll para poder

desplegar un mensaje (Fig 4)

Figura 4 Resultado de la Aplicacioacuten

Ya con esa pista es sencillo encontrar el

fragmento de coacutedigo relacionado con las

operaciones relacionadas a nuestro nuacutemero de

entrada que tendriacutea una forma similar a la

mostrada a continuacioacuten en nuestro

descompilador (Fig 5)

Figura 5 Vista del Programa en Ensamblador

Cualquier programador intuiriacutea faacutecilmente lo

que hacen las liacuteneas superiores de esta aplicacioacuten

en especial sprintf es parte de la libreriacutea estaacutendar

de C++ Claramente vemos tambieacuten el tiacutetulo de la

ventana en el coacutedigo estos valores son

interpretados de forma inteligente por este

descompilador en especial y en particular nos

asiste de sobremanera a comprender el coacutedigo

Lo siguiente es sencillamente explorar paso a

paso las acciones superiores de caacutelculo del

resultado En esta instancia seraacute ideal realizar

numerosas pruebas para estar completamente

seguros de que logramos develar el secreto tras la

funcionalidad objetivo (Fig 6)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

26

Figura 6 Inicio del coacutedigo al que aplicaremos ingenieriacutea inversa

Hay que detenerse algunos segundos a

individualizar algunos procedimientos del

anaacutelisis que a simple vista pueden parecer

inconcebibles con el fin de poder generar una

tesis concluyente

Cabe destacar que se omitiraacuten pasos

intermedios de asignaciones de memoria y otros

formalismos propios de ensamblador para

favorecer el entendimiento del lector

Inicialmente tenemos el valor de entrada

supuestamente ya leiacutedo desde el cuadro de

diaacutelogo del programa ahora nos enfocamos en la

primera accioacuten importante Asumiremos el valor

de entrada como una incoacutegnita

En el siguiente trozo de coacutedigo la liacutenea

destacada antildeadioacute siete a nuestra incoacutegnita (Fig 7)

Figura 7 Coacutedigo donde se denota la adicioacuten de 7 a nuestra ecuacioacuten

A continuacioacuten se multiplica ese valor

resultante de la suma por el mismo (Fig 8)

Figura 8 Coacutedigo donde se denota la multiplicacioacuten del valor por la suma

Nuevamente multiplicamos el resultado por el

anterior proporcionado tras la suma En esta

segunda vez ya podemos expresar la operacioacuten

simplemente elevando al cubo la suma anterior

(Fig 9)

Figura 9 Coacutedigo que denota una nueva multiplicacioacuten del resultante

Ahora le restamos diez al resultado

El procedimiento que viene a continuacioacuten

propone un mayor desafiacuteo intelectual Un nuacutemero

constante en este caso el cargado al registro

EAX (Fig 10)

Figura 10 ubicacioacuten del nuacutemero constante EAX

Generalmente la divisioacuten es algo maacutes costosa

en tiempo de procesador que otras operaciones

por lo que ciertos compiladores incluyen tablas

de constantes las cuales son llamadas ―nuacutemeros

maacutegicos para la divisioacuten entera

d Con signo Sin signo

m (hex) s m (hex) a s

-5 99999999 1

-3 55555555 1

-2k 7FFFFFFF k-

1

1 mdash mdash 0 1 0

2k 80000001 k-

1 232-k 0 0

3 55555556 0 AAAAAAAB 0 1

5 66666667 1 CCCCCCCD 0 2

6 2AAAAAAB 0 AAAAAAAB 0 2

7 92492493 2 24924925 1 3

9 38E38E39 1 38E38E39 0 1

10 66666667 2 CCCCCCCD 0 3

11 2E8BA2E9 1 BA2E8BA3 0 3

] INGENIERIacuteA DE SOFTWARE

27

INGENIERIacuteA DE SISTEMAS

12 2AAAAAAB 1 AAAAAAAB 0 3

25 51EB851F 3 51EB851F 0 3

125 10624DD3 3 10624DD3 0 3

Tabla 1 Algunos nuacutemeros maacutegicos (32 bits)

Ahora bien conociendo la tabla 1 sabiendo

que el nuacutemero cargado en esta ocasioacuten

corresponde al once lo que hace el coacutedigo es

multiplicar el resultado de la salida temporal por

aquel nuacutemero (Fig 11)

Figura 11 Multiplicacioacuten del resultante por el numero 11

Naturalmente la multiplicacioacuten por un nuacutemero

tan grande produce una especie de

desbordamiento en el registro contenedor del

resultado al exceder el tamantildeo de palabra del

procesador (en este caso de 32 bits) Estos bits

sobrantes se almacenan naturalmente en el

registro EDX registro que es contiguo a ECX

dentro de la memoria de los registros del

procesador

Ahora desplazamos un bit del registro EDX

(equivalente a una divisioacuten entera por dos) para

obtener la solucioacuten de la divisioacuten por once

generando una sencilla ecuacioacuten

Figura 12 Desplazamiento del bit de registro EDX

El uacuteltimo paso luego de documentar estos

resultados seraacute crear una aplicacioacuten que recree

esta foacutermula soacutelo en caso de tener intenciones de

re-codificacioacuten del desarrollo Consumando este

punto es sencillo confeccionar un diagrama con

todo el proceso anteriormente visto

XV CONCLUSIONES

Queda claro que el tema de la ingenieriacutea

inversa es uno de los toacutepicos maacutes interesantes a

los que podriacutea afrontarse un profesional de la

tecnologiacutea y en general disfrutar el largo proceso

involucrado gracias al desafiacuteo poco predecible

que presenta

En general podemos darnos cuenta de que no

existen muchas metodologiacuteas y teoriacuteas estrictas

sobre coacutemo aplicar las teacutecnicas de ingenieriacutea

inversa Afortunadamente un ingeniero estaacute

preparado para afrentar desafiacuteos de este tipo

Adicionalmente podemos deducir tambieacuten el

aspecto bidireccional de la ingenieriacutea inversa

pues como ya lo comprobamos no solo es un

desafiacuteo aplicarla sino que tambieacuten lo es tener que

dificultar el proceso o incluso tratar de impedirlo

si la situacioacuten lo requiere

REFERENCIAS

[12] Roger Pressman Ingenieriacutea de Software ―Un Enfoque Moderno 6th ed

MC Graw Hill [13] httpeswikipediaorgwikiIngenieria_inversa

[14] httpwwwinfosecwritersconntext_resourcespdfsoftware_security_and_r

everse_engineeringpdf [15] httperwinriedclmodo=visorampelemento=239

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

28

METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO Univ Alejandro Meacutendez Escobar

Universidad San Francisco de Asiacutes

Ingenieriacutea de Sistemas

Ingenieriacutea de Software I

La Paz - Bolivia

amendezusfaedubo

Resumenmdash Al adquirir el software educativo dentro del campo de

desarrollo de software una gran importancia y siendo este

inspiracioacuten de propuestas de innumerables metodologiacuteas que buscan

la elaboracioacuten de un software de calidad

Tomaremos la metodologiacutea Aacutencora enfocada a la fase de

requerimientos y que ofrece elementos que indican las actividades

que deben realizarse los artefactos que se producen y la forma de

obtenerlos

Usando al desarrollo de software educativo como ejemplo de una

mejor comprensioacuten de dicha metodologiacutea analizando la aplicacioacuten

del Aacutencora en un trabajo propuesto para el Instituto Tecnoloacutegico de

Orizaba Meacutexico

Palabras clave mdash Aacutencora Metodologiacutea Desarrollo de Software

Educativo Requerimientos Calidad

XVI INTRODUCCIOacuteN

Hoy en diacutea la tecnologiacutea esta dentro de las

actividades que realizamos es asiacute que la educacioacuten no

queda exenta de ella por o cual es necesario adaptarse

al movimiento tecnoloacutegico que nos trae grandes

ventajas en la transmisioacuten de conocimientos de una

manera sencilla y dinaacutemica

De esta manera han surgido infinidad de

metodologiacuteas de desarrollo de software educativo el

cual tiene como objetivo ser el apoyo para docentes

alumnos y toda persona que este dentro del proceso de

aprendizaje

Tomando en cuenta este ramillete infinito de

metodologiacuteas surge en el ejemplo propuesto la

adaptacioacuten del Aacutencora en el desarrollo de software

educativo teniendo como objetivo principal la

comprensioacuten de los elementos y conceptos de la

metodologiacutea Aacutencora

Aacutencora es una metodologiacutea enfocada a la

adquisicioacuten de requerimientos para software que

ofrece guiacuteas y elementos de apoyo para la obtencioacuten de

estos requerimientos Al mismo tiempo permite pasar a

la fase de disentildeo de manera sencilla Aprovechando las

ventajas que presenta Aacutencora se le hicieron algunas

adaptaciones con el fin de cubrir algunas

caracteriacutesticas del disentildeo instruccional y enriquecer

Aacutencora habilitaacutendola para la adquisicioacuten de

requerimientos de software educativo

XVII APLICACIOacuteN DE LA METODOLOGIacuteA AacuteNCORA

Como es el objetivo principal la comprensioacuten de la

aplicacioacuten de la metodologiacutea Aacutencora dentro del

desarrollo de software educativo de calidad solo

describiremos los meacutetodos del meacutetodo y los resultados

obtenidos

Claro esta que para ahondar maacutes en tema del

software educativo en si el lector puede recurrir a los

siguientes autores Metodologiacutea de desarrollo de

sistemas multimedia (Vaughan 2006) Propuesta de

metodologiacutea para el disentildeo desarrollo y evaluacioacuten

de software educativo (Reyes 2009) Ingenieriacutea de

software educativo con modelaje orientado por objetos

(Goacutemez 1998) asi como tambieacuten los siguientes

modelos ADDIE (Anaacutelisis Disentildeo Desarrollo

Implantacioacuten y Evaluacioacuten) de (McGriff 2000) y el

disentildeo instruccional aplicado al desarrollo de software

educativo EISE (Especificacioacuten Instruccional de

Software Educativo) de (Hernaacutendez 2005)

] INGENIERIacuteA DE SOFTWARE

29

INGENIERIacuteA DE SISTEMAS

Quienes tienen el mismo objetivo de crear software

educativo de calidad podemos sintetizar de ellos los

siguientes puntos

Anaacutelisis del puacuteblico al que se dirigiraacute el software

Problema oacute necesidad educativa a atender

Anaacutelisis de contenido (Tema a tratar actividades

para alcanzar el objetivo de ensentildeanza y forma de

evaluarlo)

Actividades oacute forma actual de llevar a cabo la

ensentildeanza del tema en cuestioacuten

Elaboracioacuten de guiones metaacuteforas escenarios

Creacioacuten de prototipo oacute Storyboard

Disentildeo de interfaz

Mapas de navegacioacuten

Modelos de datos

Elaboracioacuten de diagramas de contexto diagramas

de flujo o diagramas de casos de uso

Ahora enfocaacutendonos en el aacutencora se establece la

propuesta de seleccionar las actividades de Aacutencora que

permitan obtener los requerimientos de un software

educativo

La Tabla 1 presenta las actividades y artefactos

producidos en las fases de Aacutencora para la elaboracioacuten

de software educativo

TABLA 1 ACTIVIDADES Y ARTEFACTOS DE LA METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO

Metodologiacutea Aacutencora

Fases Actividades y artefactos

Anaacutelisis de

Requerimientos

A traveacutes de entrevistas con los clientes

(maestros y pedagogos) y de la lectura

del respectivo material proporcionado

por ellos se definiraacute la asignatura a la

que se enfocaraacute el software el tema a

tratar y la forma en que se abordaraacute y

evaluaraacute Tambieacuten se estableceraacute el

objetivo general de aprendizaje la

metaacutefora que se emplearaacute y se

determinaraacute el puacuteblico al que se

dirigiraacute el software

Artefactos

Documento que define la asignatura

contenido objetivo general de

aprendizaje metaacutefora y puacuteblico al que

se dirigiraacute el software Guion de la

situacioacuten actual

Recoleccioacuten y

clasificacioacuten de

requerimientos

El guion de la propuesta

computacional reflejaraacute la metaacutefora

que se sigue el ambiente de cada

escena

La bitaacutecora de desarrollo permitiraacute ver

coacutemo el sistema responderaacute a las

diversas acciones que realice el

usuario

En lugar del prototipo raacutepido se

elaboraraacute un Storyboard para presentar

graacuteficamente la estructura de sistema

propuesto

Artefactos

Guion de propuesta computacional

bitaacutecora de desarrollo Storyboard

Resolucioacuten de

conflictos

jerarquizacioacuten y

validacioacuten de

requerimientos

Modificaciones al guion de la

propuesta computacional de acuerdo a

los cambios propuestos por los

maestros y pedagogos

Artefactos

Guion de propuesta computacional e

Storyboard con adecuaciones sentildealas

Cierre

Trasladar los guiones a casos de uso

Artefactos

Casos de uso

Se agregaron algunas caracteriacutesticas a ciertos

artefactos de Aacutencora para poder cubrir los

requerimientos de software educativo Uno de estos

elementos es el guion de la propuesta computacional

al que se propone agregar lo siguiente

Conocimientos previos del usuario Se refiere a los

conocimientos baacutesicos o miacutenimos que debe tener el

alumno para poder interactuar con el moacutedulo

Objetivo de aprendizaje Es el aprendizaje que

debe obtener el alumno despueacutes de haber interactuado

con el moacutedulo

La Figura 1 se presenta la estructura sugerida para el

guion de la propuesta computacional En la bitaacutecora de

desarrollo se propone antildeadir una fila al final de cada

pista donde se describan las situaciones favorables y

no favorables para el cumplimiento del objetivo de

aprendizaje para esa pista en particular Por otra parte

en lugar del prototipo se sugiere utilizar el Storyboard

ya que permite mostrar de manera maacutes completa la

estructura del guion de la propuesta computacional La

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

30

Figura 2 muestra el formato para la elaboracioacuten del

Storyboard

Figura 1 Estructura del guion para la propuesta computacional

Figura 2 Formato para la elaboracioacuten del Storyboard

XVIII RESULTADOS

Aplicando Aacutencora en un ejemplo para la parte de

requerimientos se obtuvo la siguiente informacioacuten

Asignatura Matemaacuteticas

Contenido Estaacute articulado con base en seis ejes

con sus respectivos temas y subtemas que variacutean de

acuerdo al grado escolar Considerando lo anterior se

tiene lo siguiente

a) Grado escolar De segundo hasta quinto grado de

primaria

b) Temas Nuacutemeros naturales capacidad peso

tiempo y ubicacioacuten espacial planteamiento y

resolucioacuten de problemas sencillos en los que se

requiera recolectar y registrar informacioacuten

perioacutedicamente representacioacuten de informacioacuten en

tablas de frecuencia y graacuteficas de barras registros de

los resultados de experimentos aleatorios

representacioacuten de los resultados de un experimento

aleatorio en tablas y graacuteficas

c) Subtemas Planteamiento y resolucioacuten de

problemas que impliquen dos o maacutes operaciones con

nuacutemeros naturales

d) Ejes Introduccioacuten del kiloacutemetro como la unidad

que permite medir grandes distancias y recorridos

largos capacidad peso y tiempo uso del reloj y el

calendario los nuacutemeros sus relaciones y sus

operaciones medicioacuten la prediccioacuten y el azar

tratamiento de la informacioacuten

Objetivo general de aprendizaje Ejercitar las

operaciones aritmeacuteticas baacutesicas interpretar la

informacioacuten y los resultados de la informacioacuten dada

aplicada en situaciones de la vida cotidiana

Con las actividades hasta ahora realizadas se ha

observado que los artefactos de Aacutencora son flexibles y

pueden por lo tanto adaptarse de acuerdo a las

necesidades que implican la adquisicioacuten de

requerimientos de un software educativo Tambieacuten se

aprecian las ventajas de algunos artefactos como la

bitaacutecora de desarrollo que permite determinar las

respuestas del sistema ante las acciones del usuario y

estimar tambieacuten el tiempo que llevaraacute implementar

cada quinteta

La estimacioacuten del tiempo ayuda a tener un valor

aproximado del tiempo de desarrollo de software

Agregar el objetivo de aprendizaje a la bitaacutecora de

desarrollo puede parecer repetitivo despueacutes de

incluirlo en el Storyboard pero esto nos permite ver las

situaciones u obstaacuteculos que pueden impedir que el

objetivo de aprendizaje se alcance y por tanto tenerlos

presente durante el disentildeo A pesar de las ventajas de

la bitaacutecora de desarrollo un inconveniente hasta ahora

encontrado es lo tedioso al manejar muchas quintetas

] INGENIERIacuteA DE SOFTWARE

31

INGENIERIacuteA DE SISTEMAS

cuando por la naturaleza del guion se tienen varios

avisos y mensajes para el usuario Por otra parte los

guiones han ayudado a realizar de manera sencilla el

modelo de casos de uso

En lo referente a la presentacioacuten con los clientes el

guion es un artefacto que pude dar un panorama

general del software que se va a elaborar y queda

reforzada a traveacutes de los Storyboard Cuando se

requieren cambios solicitados por los clientes las

modificaciones a estos artefactos no han sido muy

complicadas dado que por su estructura es faacutecil de

ubicar las secciones y respectivos elementos

XIX CONCLUSIONES

Con los resultados hasta ahora obtenidos se puede

decir que la propuesta permite a los desarrolladores

con poca experiencia en desarrollo de software

educativo obtener los requerimientos de una manera

sencilla

Permite realizar un mejor relevamiento de informacioacuten

de los requerimientos del cliente enfocaacutendonos mas en

este

Es tambieacuten importante mencionar los avances que

tiene y seguiraacute teniendo el software educativo aplicado

no solo a nivel escolar sino tambieacuten al superior

Habiendo revisado el concepto y la aplicacioacuten de la

metodologiacutea Aacutencora en el desarrollo de software

educativo se llegoacute a una comprensioacuten mas extensa de

dicho meacutetodo el cual es de gran importancia dentro de

la ingenieriacutea de Software ya que nos

REFERENCIAS

httpwwwuvmxmisproductividaddocumentsCarmenChay_CIIM2010pdf

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 23: Revista de Ingenieria de Software

] INGENIERIacuteA DE SOFTWARE

23

INGENIERIacuteA DE SISTEMAS

Verificar que el coacutedigo en estudio cumple las

especificaciones del disentildeo estaacutendar

La informacioacuten extraiacuteda de la lectura del

coacutedigo fuente son las especificaciones de disentildeo

modelos de flujo de control diagramas de disentildeo

documentos de especificacioacuten de disentildeo

pudiendo tomarse estas especificaciones como

nuevo punto de partida para aplicar ingenieriacutea

inversa y obtener informacioacuten a mayor nivel de

abstraccioacuten

Dado que es una labor estrateacutegica es

conveniente conocer cuando conviene realizar la

tarea de Ingenieriacutea inversa para una aplicacioacuten y

cuaacutendo es maacutes rentable sustituirla e implementar

una nueva Las aplicaciones para el primer paso

son aquellas en la que se produce las siguientes

situaciones

bull Fallos frecuentes que son difiacuteciles de

localizar

bull Son poco eficientes pero realizan la funcioacuten

esperada

bull Dificultades en la integracioacuten con otros

sistemas

bull Calidad pobre del software final

bull Resistencia a introducir cambios

bull Pocas personas capacitadas para realizar

modificaciones

bull Dificultades para realizar pruebas

bull El mantenimiento consume muchos recursos

XII LAS BASES DE LA INGENIERIA INVERSA

Los ejemplos maacutes trascendentes sobre los

inicios de la ingenieriacutea inversa son claramente las

investigaciones realizadas sobre antiguos

artefactos creados por humanos ancestrales con

el fin de descubrir la manera en que funcionaban

Uno de los maacutes conocidos es el llamado

mecanismo de Antikythera (Fig 1) el cual se

piensa que fue disentildeado para fines astronoacutemicos

por los griegos siendo uno de los primeros

artefactos que funcionaban con ruedas de

engranes

Figura 1 Antikythera (mecanismo presuntamente creado para fines astronoacutemicos)

Podemos entonces implantar un paralelo en aquella

mitoloacutegica buacutesqueda de descubrimiento sobre el

funcionamiento de esos artefactos y la ingenieriacutea inversa

actual usada en ingenieriacutea de software estableciendo un

importante factor en comuacuten la falta de documentacioacuten En

este ambiente es muy comuacuten contar con una especie de caja

negra en donde sabemos lo que ingresamos y el resultado

que obtenemos pero desconocemos el procedimiento con la

precisioacuten que necesitariacuteamos para replicarlo

Esta falta de documentacioacuten es el impulso

principal de toda la ingenieriacutea inversa las

finalidades de la misma pueden variar pero este

factor inicial nunca lo haraacute

XIII INGENIERIA INVERSA COMO UN PROCESO DE

REINGENIERIA

La ingenieriacutea inversa tiene la misioacuten de

desentrantildear los misterios y secretos de los

sistemas en uso

Baacutesicamente recupera el disentildeo de la

aplicacioacuten a partir del coacutedigo esto se realiza

mediante herramientas que extraen la

informacioacuten de los datos procedimientos y

arquitecturas del sistema

Es aplicable a sistemas con las siguientes

caracteriacutesticas

Documentacioacuten inexistente o totalmente obsoleta

Programacioacuten en bloque de coacutedigos muy grandes

yo sin estructural

La aplicacioacuten cubre gran parte de los requisitos

y el rendimiento esperado

A Nivel de abstraccioacuten

El nivel de Abstraccioacuten de un proceso de

Ingenieriacutea Inversa y las herramientas que se

utilizan para realizarlo aluden la sofisticacioacuten de

la informacioacuten de disentildeo que se puede extraer del

coacutedigo fuente Este proceso deberiacutea ser capaz de

derivar

Sus representaciones de disentildeo de procedimiento

(con un bajo nivel de abstraccioacuten)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

24

La informacioacuten de las estructuras de datos de

procedimiento (con un nivel de abstraccioacuten

ligeramente maacutes elevado)

Modelos de flujo de datos de control (un nivel de

abstraccioacuten relativamente alto)

Modelos de entidades y de relaciones (un elevado

nivel de abstraccioacuten)

B Completitud

En la mayoriacutea de los casos la completitud

decrece a medida que aumenta el grado de

abstraccioacuten

La completitud mejora en proporcioacuten directa a

la cantidad de anaacutelisis efectuado por la persona

que estaacute efectuando la ingenieriacutea inversa

C Interactividad

La interactividad alude al grado con el cual el

ser humano se integra con las herramientas

automatizadas para crear un proceso de

ingenieriacutea inversa efectivo

D Proceso

El Proceso de ingenieriacutea inversa (Fig 2) es el encargado

de reestructurar el coacutedigo fuente para que solamente

contenga instrucciones de programacioacuten estructurada Lo

que hace que el coacutedigo sea maacutes faacutecil de leer y proporciona

la base para las subsiguientes actividades de ingenieriacutea

inversa

Figura 2 Diagrama de Proceso de la Ingenieriacutea Inversa

E Reestructuracioacuten

La reestructuracioacuten del software modifica el

coacutedigo fuente y los datos en un intento adecuado

a futuros cambios esta no modifica la

arquitectura global del programa Tiene a

centrarse en los detalles de disentildeo de moacutedulos

individuales y en estructuras de datos locales

definidas dentro de los moacutedulos

Estos son algunos de los beneficios que se

pueden lograr cuando se reestructura el software

Programas de mayor calidad

Reduce el esfuerzo requerido para llevar a cabo

las actividades de mantenimiento

Hace el software maacutes sencillo para comprobar y

depurar

F Re documentacioacuten

Es el proceso mediante el cual se produce

documentacioacuten retroactivamente desde un

sistema existente

Es considerada una forma de ingenieriacutea inversa

porque la documentacioacuten reconstruida es usada

para ayudar al conocimiento del programa

XIV UTILIZANDO EL METODO CIENTIFICO EN LA

INGENIERIA INVERSA

Ante cualquier dificultad tecnoloacutegica el

meacutetodo cientiacutefico siempre es y seraacute nuestra maacutes

preciada arma Partamos imaginando un pequentildeo

dilema relacionado con el tema de ingenieriacutea de

software especiacuteficamente con un sencillo

programa (Fig 3)

Figura 3 Pantalla de aplicacioacuten que nos serviraacute de ejemplo

Esta sencilla aplicacioacuten mostraraacute un mensaje con cierto

resultado y aun siendo un problema demasiado sencillo

para considerarlo como un reto el objetivo es soacutelo describir

] INGENIERIacuteA DE SOFTWARE

25

INGENIERIacuteA DE SISTEMAS

las acciones usuales del proceso las cuales son aplicables

en escalas muy superiores

El resultado mostrado por el programa dentro del mensaje

emergente se basa en nuestra entrada pero nosotros

desconocemos en lo absoluto los procedimientos utilizados

sobre esta entrada para producir aquella respuesta

A La Observacioacuten es Trascendental

Primero es importante observar el problema su

comportamiento Es substancial tratar de lograr

un pensamiento inductivo en donde logremos

identificar el principio particular del problema

para poder llegar a extrapolarlo a una solucioacuten

general

El punto de quiebre se produce en este instante

Ya al haber observado la aplicacioacuten podriacuteamos

decidir procesar los datos que nos entrega y

lograr crear un coacutedigo equivalente o investigar el

funcionamiento interno

B Dentro de la aplicacioacuten

Luego de la formulacioacuten de una hipoacutetesis sobre

su funcionamiento necesitamos algunas

herramientas para comenzar con la investigacioacuten

En el caso de esta aplicacioacuten con un poco de

conocimientos del lenguaje ensamblador de

programacioacuten tradicional y un descompilador es

suficiente

Es importante emprender de buena forma

nuestro sondeo ser ordenados y metoacutedicos en la

tarea En este momento las capacidades analiacuteticas

y loacutegicas son muy importantes para alivianar

nuestra faena

Lo fundamental es conocer muy bien el

entorno en que nos desenvolveremos En este es

punto indispensable saber que una aplicacioacuten

para Windows necesita invocar internamente al

punto de entrada MessageBox o MessageBoxEx

de la libreriacutea de sistema user32dll para poder

desplegar un mensaje (Fig 4)

Figura 4 Resultado de la Aplicacioacuten

Ya con esa pista es sencillo encontrar el

fragmento de coacutedigo relacionado con las

operaciones relacionadas a nuestro nuacutemero de

entrada que tendriacutea una forma similar a la

mostrada a continuacioacuten en nuestro

descompilador (Fig 5)

Figura 5 Vista del Programa en Ensamblador

Cualquier programador intuiriacutea faacutecilmente lo

que hacen las liacuteneas superiores de esta aplicacioacuten

en especial sprintf es parte de la libreriacutea estaacutendar

de C++ Claramente vemos tambieacuten el tiacutetulo de la

ventana en el coacutedigo estos valores son

interpretados de forma inteligente por este

descompilador en especial y en particular nos

asiste de sobremanera a comprender el coacutedigo

Lo siguiente es sencillamente explorar paso a

paso las acciones superiores de caacutelculo del

resultado En esta instancia seraacute ideal realizar

numerosas pruebas para estar completamente

seguros de que logramos develar el secreto tras la

funcionalidad objetivo (Fig 6)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

26

Figura 6 Inicio del coacutedigo al que aplicaremos ingenieriacutea inversa

Hay que detenerse algunos segundos a

individualizar algunos procedimientos del

anaacutelisis que a simple vista pueden parecer

inconcebibles con el fin de poder generar una

tesis concluyente

Cabe destacar que se omitiraacuten pasos

intermedios de asignaciones de memoria y otros

formalismos propios de ensamblador para

favorecer el entendimiento del lector

Inicialmente tenemos el valor de entrada

supuestamente ya leiacutedo desde el cuadro de

diaacutelogo del programa ahora nos enfocamos en la

primera accioacuten importante Asumiremos el valor

de entrada como una incoacutegnita

En el siguiente trozo de coacutedigo la liacutenea

destacada antildeadioacute siete a nuestra incoacutegnita (Fig 7)

Figura 7 Coacutedigo donde se denota la adicioacuten de 7 a nuestra ecuacioacuten

A continuacioacuten se multiplica ese valor

resultante de la suma por el mismo (Fig 8)

Figura 8 Coacutedigo donde se denota la multiplicacioacuten del valor por la suma

Nuevamente multiplicamos el resultado por el

anterior proporcionado tras la suma En esta

segunda vez ya podemos expresar la operacioacuten

simplemente elevando al cubo la suma anterior

(Fig 9)

Figura 9 Coacutedigo que denota una nueva multiplicacioacuten del resultante

Ahora le restamos diez al resultado

El procedimiento que viene a continuacioacuten

propone un mayor desafiacuteo intelectual Un nuacutemero

constante en este caso el cargado al registro

EAX (Fig 10)

Figura 10 ubicacioacuten del nuacutemero constante EAX

Generalmente la divisioacuten es algo maacutes costosa

en tiempo de procesador que otras operaciones

por lo que ciertos compiladores incluyen tablas

de constantes las cuales son llamadas ―nuacutemeros

maacutegicos para la divisioacuten entera

d Con signo Sin signo

m (hex) s m (hex) a s

-5 99999999 1

-3 55555555 1

-2k 7FFFFFFF k-

1

1 mdash mdash 0 1 0

2k 80000001 k-

1 232-k 0 0

3 55555556 0 AAAAAAAB 0 1

5 66666667 1 CCCCCCCD 0 2

6 2AAAAAAB 0 AAAAAAAB 0 2

7 92492493 2 24924925 1 3

9 38E38E39 1 38E38E39 0 1

10 66666667 2 CCCCCCCD 0 3

11 2E8BA2E9 1 BA2E8BA3 0 3

] INGENIERIacuteA DE SOFTWARE

27

INGENIERIacuteA DE SISTEMAS

12 2AAAAAAB 1 AAAAAAAB 0 3

25 51EB851F 3 51EB851F 0 3

125 10624DD3 3 10624DD3 0 3

Tabla 1 Algunos nuacutemeros maacutegicos (32 bits)

Ahora bien conociendo la tabla 1 sabiendo

que el nuacutemero cargado en esta ocasioacuten

corresponde al once lo que hace el coacutedigo es

multiplicar el resultado de la salida temporal por

aquel nuacutemero (Fig 11)

Figura 11 Multiplicacioacuten del resultante por el numero 11

Naturalmente la multiplicacioacuten por un nuacutemero

tan grande produce una especie de

desbordamiento en el registro contenedor del

resultado al exceder el tamantildeo de palabra del

procesador (en este caso de 32 bits) Estos bits

sobrantes se almacenan naturalmente en el

registro EDX registro que es contiguo a ECX

dentro de la memoria de los registros del

procesador

Ahora desplazamos un bit del registro EDX

(equivalente a una divisioacuten entera por dos) para

obtener la solucioacuten de la divisioacuten por once

generando una sencilla ecuacioacuten

Figura 12 Desplazamiento del bit de registro EDX

El uacuteltimo paso luego de documentar estos

resultados seraacute crear una aplicacioacuten que recree

esta foacutermula soacutelo en caso de tener intenciones de

re-codificacioacuten del desarrollo Consumando este

punto es sencillo confeccionar un diagrama con

todo el proceso anteriormente visto

XV CONCLUSIONES

Queda claro que el tema de la ingenieriacutea

inversa es uno de los toacutepicos maacutes interesantes a

los que podriacutea afrontarse un profesional de la

tecnologiacutea y en general disfrutar el largo proceso

involucrado gracias al desafiacuteo poco predecible

que presenta

En general podemos darnos cuenta de que no

existen muchas metodologiacuteas y teoriacuteas estrictas

sobre coacutemo aplicar las teacutecnicas de ingenieriacutea

inversa Afortunadamente un ingeniero estaacute

preparado para afrentar desafiacuteos de este tipo

Adicionalmente podemos deducir tambieacuten el

aspecto bidireccional de la ingenieriacutea inversa

pues como ya lo comprobamos no solo es un

desafiacuteo aplicarla sino que tambieacuten lo es tener que

dificultar el proceso o incluso tratar de impedirlo

si la situacioacuten lo requiere

REFERENCIAS

[12] Roger Pressman Ingenieriacutea de Software ―Un Enfoque Moderno 6th ed

MC Graw Hill [13] httpeswikipediaorgwikiIngenieria_inversa

[14] httpwwwinfosecwritersconntext_resourcespdfsoftware_security_and_r

everse_engineeringpdf [15] httperwinriedclmodo=visorampelemento=239

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

28

METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO Univ Alejandro Meacutendez Escobar

Universidad San Francisco de Asiacutes

Ingenieriacutea de Sistemas

Ingenieriacutea de Software I

La Paz - Bolivia

amendezusfaedubo

Resumenmdash Al adquirir el software educativo dentro del campo de

desarrollo de software una gran importancia y siendo este

inspiracioacuten de propuestas de innumerables metodologiacuteas que buscan

la elaboracioacuten de un software de calidad

Tomaremos la metodologiacutea Aacutencora enfocada a la fase de

requerimientos y que ofrece elementos que indican las actividades

que deben realizarse los artefactos que se producen y la forma de

obtenerlos

Usando al desarrollo de software educativo como ejemplo de una

mejor comprensioacuten de dicha metodologiacutea analizando la aplicacioacuten

del Aacutencora en un trabajo propuesto para el Instituto Tecnoloacutegico de

Orizaba Meacutexico

Palabras clave mdash Aacutencora Metodologiacutea Desarrollo de Software

Educativo Requerimientos Calidad

XVI INTRODUCCIOacuteN

Hoy en diacutea la tecnologiacutea esta dentro de las

actividades que realizamos es asiacute que la educacioacuten no

queda exenta de ella por o cual es necesario adaptarse

al movimiento tecnoloacutegico que nos trae grandes

ventajas en la transmisioacuten de conocimientos de una

manera sencilla y dinaacutemica

De esta manera han surgido infinidad de

metodologiacuteas de desarrollo de software educativo el

cual tiene como objetivo ser el apoyo para docentes

alumnos y toda persona que este dentro del proceso de

aprendizaje

Tomando en cuenta este ramillete infinito de

metodologiacuteas surge en el ejemplo propuesto la

adaptacioacuten del Aacutencora en el desarrollo de software

educativo teniendo como objetivo principal la

comprensioacuten de los elementos y conceptos de la

metodologiacutea Aacutencora

Aacutencora es una metodologiacutea enfocada a la

adquisicioacuten de requerimientos para software que

ofrece guiacuteas y elementos de apoyo para la obtencioacuten de

estos requerimientos Al mismo tiempo permite pasar a

la fase de disentildeo de manera sencilla Aprovechando las

ventajas que presenta Aacutencora se le hicieron algunas

adaptaciones con el fin de cubrir algunas

caracteriacutesticas del disentildeo instruccional y enriquecer

Aacutencora habilitaacutendola para la adquisicioacuten de

requerimientos de software educativo

XVII APLICACIOacuteN DE LA METODOLOGIacuteA AacuteNCORA

Como es el objetivo principal la comprensioacuten de la

aplicacioacuten de la metodologiacutea Aacutencora dentro del

desarrollo de software educativo de calidad solo

describiremos los meacutetodos del meacutetodo y los resultados

obtenidos

Claro esta que para ahondar maacutes en tema del

software educativo en si el lector puede recurrir a los

siguientes autores Metodologiacutea de desarrollo de

sistemas multimedia (Vaughan 2006) Propuesta de

metodologiacutea para el disentildeo desarrollo y evaluacioacuten

de software educativo (Reyes 2009) Ingenieriacutea de

software educativo con modelaje orientado por objetos

(Goacutemez 1998) asi como tambieacuten los siguientes

modelos ADDIE (Anaacutelisis Disentildeo Desarrollo

Implantacioacuten y Evaluacioacuten) de (McGriff 2000) y el

disentildeo instruccional aplicado al desarrollo de software

educativo EISE (Especificacioacuten Instruccional de

Software Educativo) de (Hernaacutendez 2005)

] INGENIERIacuteA DE SOFTWARE

29

INGENIERIacuteA DE SISTEMAS

Quienes tienen el mismo objetivo de crear software

educativo de calidad podemos sintetizar de ellos los

siguientes puntos

Anaacutelisis del puacuteblico al que se dirigiraacute el software

Problema oacute necesidad educativa a atender

Anaacutelisis de contenido (Tema a tratar actividades

para alcanzar el objetivo de ensentildeanza y forma de

evaluarlo)

Actividades oacute forma actual de llevar a cabo la

ensentildeanza del tema en cuestioacuten

Elaboracioacuten de guiones metaacuteforas escenarios

Creacioacuten de prototipo oacute Storyboard

Disentildeo de interfaz

Mapas de navegacioacuten

Modelos de datos

Elaboracioacuten de diagramas de contexto diagramas

de flujo o diagramas de casos de uso

Ahora enfocaacutendonos en el aacutencora se establece la

propuesta de seleccionar las actividades de Aacutencora que

permitan obtener los requerimientos de un software

educativo

La Tabla 1 presenta las actividades y artefactos

producidos en las fases de Aacutencora para la elaboracioacuten

de software educativo

TABLA 1 ACTIVIDADES Y ARTEFACTOS DE LA METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO

Metodologiacutea Aacutencora

Fases Actividades y artefactos

Anaacutelisis de

Requerimientos

A traveacutes de entrevistas con los clientes

(maestros y pedagogos) y de la lectura

del respectivo material proporcionado

por ellos se definiraacute la asignatura a la

que se enfocaraacute el software el tema a

tratar y la forma en que se abordaraacute y

evaluaraacute Tambieacuten se estableceraacute el

objetivo general de aprendizaje la

metaacutefora que se emplearaacute y se

determinaraacute el puacuteblico al que se

dirigiraacute el software

Artefactos

Documento que define la asignatura

contenido objetivo general de

aprendizaje metaacutefora y puacuteblico al que

se dirigiraacute el software Guion de la

situacioacuten actual

Recoleccioacuten y

clasificacioacuten de

requerimientos

El guion de la propuesta

computacional reflejaraacute la metaacutefora

que se sigue el ambiente de cada

escena

La bitaacutecora de desarrollo permitiraacute ver

coacutemo el sistema responderaacute a las

diversas acciones que realice el

usuario

En lugar del prototipo raacutepido se

elaboraraacute un Storyboard para presentar

graacuteficamente la estructura de sistema

propuesto

Artefactos

Guion de propuesta computacional

bitaacutecora de desarrollo Storyboard

Resolucioacuten de

conflictos

jerarquizacioacuten y

validacioacuten de

requerimientos

Modificaciones al guion de la

propuesta computacional de acuerdo a

los cambios propuestos por los

maestros y pedagogos

Artefactos

Guion de propuesta computacional e

Storyboard con adecuaciones sentildealas

Cierre

Trasladar los guiones a casos de uso

Artefactos

Casos de uso

Se agregaron algunas caracteriacutesticas a ciertos

artefactos de Aacutencora para poder cubrir los

requerimientos de software educativo Uno de estos

elementos es el guion de la propuesta computacional

al que se propone agregar lo siguiente

Conocimientos previos del usuario Se refiere a los

conocimientos baacutesicos o miacutenimos que debe tener el

alumno para poder interactuar con el moacutedulo

Objetivo de aprendizaje Es el aprendizaje que

debe obtener el alumno despueacutes de haber interactuado

con el moacutedulo

La Figura 1 se presenta la estructura sugerida para el

guion de la propuesta computacional En la bitaacutecora de

desarrollo se propone antildeadir una fila al final de cada

pista donde se describan las situaciones favorables y

no favorables para el cumplimiento del objetivo de

aprendizaje para esa pista en particular Por otra parte

en lugar del prototipo se sugiere utilizar el Storyboard

ya que permite mostrar de manera maacutes completa la

estructura del guion de la propuesta computacional La

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

30

Figura 2 muestra el formato para la elaboracioacuten del

Storyboard

Figura 1 Estructura del guion para la propuesta computacional

Figura 2 Formato para la elaboracioacuten del Storyboard

XVIII RESULTADOS

Aplicando Aacutencora en un ejemplo para la parte de

requerimientos se obtuvo la siguiente informacioacuten

Asignatura Matemaacuteticas

Contenido Estaacute articulado con base en seis ejes

con sus respectivos temas y subtemas que variacutean de

acuerdo al grado escolar Considerando lo anterior se

tiene lo siguiente

a) Grado escolar De segundo hasta quinto grado de

primaria

b) Temas Nuacutemeros naturales capacidad peso

tiempo y ubicacioacuten espacial planteamiento y

resolucioacuten de problemas sencillos en los que se

requiera recolectar y registrar informacioacuten

perioacutedicamente representacioacuten de informacioacuten en

tablas de frecuencia y graacuteficas de barras registros de

los resultados de experimentos aleatorios

representacioacuten de los resultados de un experimento

aleatorio en tablas y graacuteficas

c) Subtemas Planteamiento y resolucioacuten de

problemas que impliquen dos o maacutes operaciones con

nuacutemeros naturales

d) Ejes Introduccioacuten del kiloacutemetro como la unidad

que permite medir grandes distancias y recorridos

largos capacidad peso y tiempo uso del reloj y el

calendario los nuacutemeros sus relaciones y sus

operaciones medicioacuten la prediccioacuten y el azar

tratamiento de la informacioacuten

Objetivo general de aprendizaje Ejercitar las

operaciones aritmeacuteticas baacutesicas interpretar la

informacioacuten y los resultados de la informacioacuten dada

aplicada en situaciones de la vida cotidiana

Con las actividades hasta ahora realizadas se ha

observado que los artefactos de Aacutencora son flexibles y

pueden por lo tanto adaptarse de acuerdo a las

necesidades que implican la adquisicioacuten de

requerimientos de un software educativo Tambieacuten se

aprecian las ventajas de algunos artefactos como la

bitaacutecora de desarrollo que permite determinar las

respuestas del sistema ante las acciones del usuario y

estimar tambieacuten el tiempo que llevaraacute implementar

cada quinteta

La estimacioacuten del tiempo ayuda a tener un valor

aproximado del tiempo de desarrollo de software

Agregar el objetivo de aprendizaje a la bitaacutecora de

desarrollo puede parecer repetitivo despueacutes de

incluirlo en el Storyboard pero esto nos permite ver las

situaciones u obstaacuteculos que pueden impedir que el

objetivo de aprendizaje se alcance y por tanto tenerlos

presente durante el disentildeo A pesar de las ventajas de

la bitaacutecora de desarrollo un inconveniente hasta ahora

encontrado es lo tedioso al manejar muchas quintetas

] INGENIERIacuteA DE SOFTWARE

31

INGENIERIacuteA DE SISTEMAS

cuando por la naturaleza del guion se tienen varios

avisos y mensajes para el usuario Por otra parte los

guiones han ayudado a realizar de manera sencilla el

modelo de casos de uso

En lo referente a la presentacioacuten con los clientes el

guion es un artefacto que pude dar un panorama

general del software que se va a elaborar y queda

reforzada a traveacutes de los Storyboard Cuando se

requieren cambios solicitados por los clientes las

modificaciones a estos artefactos no han sido muy

complicadas dado que por su estructura es faacutecil de

ubicar las secciones y respectivos elementos

XIX CONCLUSIONES

Con los resultados hasta ahora obtenidos se puede

decir que la propuesta permite a los desarrolladores

con poca experiencia en desarrollo de software

educativo obtener los requerimientos de una manera

sencilla

Permite realizar un mejor relevamiento de informacioacuten

de los requerimientos del cliente enfocaacutendonos mas en

este

Es tambieacuten importante mencionar los avances que

tiene y seguiraacute teniendo el software educativo aplicado

no solo a nivel escolar sino tambieacuten al superior

Habiendo revisado el concepto y la aplicacioacuten de la

metodologiacutea Aacutencora en el desarrollo de software

educativo se llegoacute a una comprensioacuten mas extensa de

dicho meacutetodo el cual es de gran importancia dentro de

la ingenieriacutea de Software ya que nos

REFERENCIAS

httpwwwuvmxmisproductividaddocumentsCarmenChay_CIIM2010pdf

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 24: Revista de Ingenieria de Software

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

24

La informacioacuten de las estructuras de datos de

procedimiento (con un nivel de abstraccioacuten

ligeramente maacutes elevado)

Modelos de flujo de datos de control (un nivel de

abstraccioacuten relativamente alto)

Modelos de entidades y de relaciones (un elevado

nivel de abstraccioacuten)

B Completitud

En la mayoriacutea de los casos la completitud

decrece a medida que aumenta el grado de

abstraccioacuten

La completitud mejora en proporcioacuten directa a

la cantidad de anaacutelisis efectuado por la persona

que estaacute efectuando la ingenieriacutea inversa

C Interactividad

La interactividad alude al grado con el cual el

ser humano se integra con las herramientas

automatizadas para crear un proceso de

ingenieriacutea inversa efectivo

D Proceso

El Proceso de ingenieriacutea inversa (Fig 2) es el encargado

de reestructurar el coacutedigo fuente para que solamente

contenga instrucciones de programacioacuten estructurada Lo

que hace que el coacutedigo sea maacutes faacutecil de leer y proporciona

la base para las subsiguientes actividades de ingenieriacutea

inversa

Figura 2 Diagrama de Proceso de la Ingenieriacutea Inversa

E Reestructuracioacuten

La reestructuracioacuten del software modifica el

coacutedigo fuente y los datos en un intento adecuado

a futuros cambios esta no modifica la

arquitectura global del programa Tiene a

centrarse en los detalles de disentildeo de moacutedulos

individuales y en estructuras de datos locales

definidas dentro de los moacutedulos

Estos son algunos de los beneficios que se

pueden lograr cuando se reestructura el software

Programas de mayor calidad

Reduce el esfuerzo requerido para llevar a cabo

las actividades de mantenimiento

Hace el software maacutes sencillo para comprobar y

depurar

F Re documentacioacuten

Es el proceso mediante el cual se produce

documentacioacuten retroactivamente desde un

sistema existente

Es considerada una forma de ingenieriacutea inversa

porque la documentacioacuten reconstruida es usada

para ayudar al conocimiento del programa

XIV UTILIZANDO EL METODO CIENTIFICO EN LA

INGENIERIA INVERSA

Ante cualquier dificultad tecnoloacutegica el

meacutetodo cientiacutefico siempre es y seraacute nuestra maacutes

preciada arma Partamos imaginando un pequentildeo

dilema relacionado con el tema de ingenieriacutea de

software especiacuteficamente con un sencillo

programa (Fig 3)

Figura 3 Pantalla de aplicacioacuten que nos serviraacute de ejemplo

Esta sencilla aplicacioacuten mostraraacute un mensaje con cierto

resultado y aun siendo un problema demasiado sencillo

para considerarlo como un reto el objetivo es soacutelo describir

] INGENIERIacuteA DE SOFTWARE

25

INGENIERIacuteA DE SISTEMAS

las acciones usuales del proceso las cuales son aplicables

en escalas muy superiores

El resultado mostrado por el programa dentro del mensaje

emergente se basa en nuestra entrada pero nosotros

desconocemos en lo absoluto los procedimientos utilizados

sobre esta entrada para producir aquella respuesta

A La Observacioacuten es Trascendental

Primero es importante observar el problema su

comportamiento Es substancial tratar de lograr

un pensamiento inductivo en donde logremos

identificar el principio particular del problema

para poder llegar a extrapolarlo a una solucioacuten

general

El punto de quiebre se produce en este instante

Ya al haber observado la aplicacioacuten podriacuteamos

decidir procesar los datos que nos entrega y

lograr crear un coacutedigo equivalente o investigar el

funcionamiento interno

B Dentro de la aplicacioacuten

Luego de la formulacioacuten de una hipoacutetesis sobre

su funcionamiento necesitamos algunas

herramientas para comenzar con la investigacioacuten

En el caso de esta aplicacioacuten con un poco de

conocimientos del lenguaje ensamblador de

programacioacuten tradicional y un descompilador es

suficiente

Es importante emprender de buena forma

nuestro sondeo ser ordenados y metoacutedicos en la

tarea En este momento las capacidades analiacuteticas

y loacutegicas son muy importantes para alivianar

nuestra faena

Lo fundamental es conocer muy bien el

entorno en que nos desenvolveremos En este es

punto indispensable saber que una aplicacioacuten

para Windows necesita invocar internamente al

punto de entrada MessageBox o MessageBoxEx

de la libreriacutea de sistema user32dll para poder

desplegar un mensaje (Fig 4)

Figura 4 Resultado de la Aplicacioacuten

Ya con esa pista es sencillo encontrar el

fragmento de coacutedigo relacionado con las

operaciones relacionadas a nuestro nuacutemero de

entrada que tendriacutea una forma similar a la

mostrada a continuacioacuten en nuestro

descompilador (Fig 5)

Figura 5 Vista del Programa en Ensamblador

Cualquier programador intuiriacutea faacutecilmente lo

que hacen las liacuteneas superiores de esta aplicacioacuten

en especial sprintf es parte de la libreriacutea estaacutendar

de C++ Claramente vemos tambieacuten el tiacutetulo de la

ventana en el coacutedigo estos valores son

interpretados de forma inteligente por este

descompilador en especial y en particular nos

asiste de sobremanera a comprender el coacutedigo

Lo siguiente es sencillamente explorar paso a

paso las acciones superiores de caacutelculo del

resultado En esta instancia seraacute ideal realizar

numerosas pruebas para estar completamente

seguros de que logramos develar el secreto tras la

funcionalidad objetivo (Fig 6)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

26

Figura 6 Inicio del coacutedigo al que aplicaremos ingenieriacutea inversa

Hay que detenerse algunos segundos a

individualizar algunos procedimientos del

anaacutelisis que a simple vista pueden parecer

inconcebibles con el fin de poder generar una

tesis concluyente

Cabe destacar que se omitiraacuten pasos

intermedios de asignaciones de memoria y otros

formalismos propios de ensamblador para

favorecer el entendimiento del lector

Inicialmente tenemos el valor de entrada

supuestamente ya leiacutedo desde el cuadro de

diaacutelogo del programa ahora nos enfocamos en la

primera accioacuten importante Asumiremos el valor

de entrada como una incoacutegnita

En el siguiente trozo de coacutedigo la liacutenea

destacada antildeadioacute siete a nuestra incoacutegnita (Fig 7)

Figura 7 Coacutedigo donde se denota la adicioacuten de 7 a nuestra ecuacioacuten

A continuacioacuten se multiplica ese valor

resultante de la suma por el mismo (Fig 8)

Figura 8 Coacutedigo donde se denota la multiplicacioacuten del valor por la suma

Nuevamente multiplicamos el resultado por el

anterior proporcionado tras la suma En esta

segunda vez ya podemos expresar la operacioacuten

simplemente elevando al cubo la suma anterior

(Fig 9)

Figura 9 Coacutedigo que denota una nueva multiplicacioacuten del resultante

Ahora le restamos diez al resultado

El procedimiento que viene a continuacioacuten

propone un mayor desafiacuteo intelectual Un nuacutemero

constante en este caso el cargado al registro

EAX (Fig 10)

Figura 10 ubicacioacuten del nuacutemero constante EAX

Generalmente la divisioacuten es algo maacutes costosa

en tiempo de procesador que otras operaciones

por lo que ciertos compiladores incluyen tablas

de constantes las cuales son llamadas ―nuacutemeros

maacutegicos para la divisioacuten entera

d Con signo Sin signo

m (hex) s m (hex) a s

-5 99999999 1

-3 55555555 1

-2k 7FFFFFFF k-

1

1 mdash mdash 0 1 0

2k 80000001 k-

1 232-k 0 0

3 55555556 0 AAAAAAAB 0 1

5 66666667 1 CCCCCCCD 0 2

6 2AAAAAAB 0 AAAAAAAB 0 2

7 92492493 2 24924925 1 3

9 38E38E39 1 38E38E39 0 1

10 66666667 2 CCCCCCCD 0 3

11 2E8BA2E9 1 BA2E8BA3 0 3

] INGENIERIacuteA DE SOFTWARE

27

INGENIERIacuteA DE SISTEMAS

12 2AAAAAAB 1 AAAAAAAB 0 3

25 51EB851F 3 51EB851F 0 3

125 10624DD3 3 10624DD3 0 3

Tabla 1 Algunos nuacutemeros maacutegicos (32 bits)

Ahora bien conociendo la tabla 1 sabiendo

que el nuacutemero cargado en esta ocasioacuten

corresponde al once lo que hace el coacutedigo es

multiplicar el resultado de la salida temporal por

aquel nuacutemero (Fig 11)

Figura 11 Multiplicacioacuten del resultante por el numero 11

Naturalmente la multiplicacioacuten por un nuacutemero

tan grande produce una especie de

desbordamiento en el registro contenedor del

resultado al exceder el tamantildeo de palabra del

procesador (en este caso de 32 bits) Estos bits

sobrantes se almacenan naturalmente en el

registro EDX registro que es contiguo a ECX

dentro de la memoria de los registros del

procesador

Ahora desplazamos un bit del registro EDX

(equivalente a una divisioacuten entera por dos) para

obtener la solucioacuten de la divisioacuten por once

generando una sencilla ecuacioacuten

Figura 12 Desplazamiento del bit de registro EDX

El uacuteltimo paso luego de documentar estos

resultados seraacute crear una aplicacioacuten que recree

esta foacutermula soacutelo en caso de tener intenciones de

re-codificacioacuten del desarrollo Consumando este

punto es sencillo confeccionar un diagrama con

todo el proceso anteriormente visto

XV CONCLUSIONES

Queda claro que el tema de la ingenieriacutea

inversa es uno de los toacutepicos maacutes interesantes a

los que podriacutea afrontarse un profesional de la

tecnologiacutea y en general disfrutar el largo proceso

involucrado gracias al desafiacuteo poco predecible

que presenta

En general podemos darnos cuenta de que no

existen muchas metodologiacuteas y teoriacuteas estrictas

sobre coacutemo aplicar las teacutecnicas de ingenieriacutea

inversa Afortunadamente un ingeniero estaacute

preparado para afrentar desafiacuteos de este tipo

Adicionalmente podemos deducir tambieacuten el

aspecto bidireccional de la ingenieriacutea inversa

pues como ya lo comprobamos no solo es un

desafiacuteo aplicarla sino que tambieacuten lo es tener que

dificultar el proceso o incluso tratar de impedirlo

si la situacioacuten lo requiere

REFERENCIAS

[12] Roger Pressman Ingenieriacutea de Software ―Un Enfoque Moderno 6th ed

MC Graw Hill [13] httpeswikipediaorgwikiIngenieria_inversa

[14] httpwwwinfosecwritersconntext_resourcespdfsoftware_security_and_r

everse_engineeringpdf [15] httperwinriedclmodo=visorampelemento=239

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

28

METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO Univ Alejandro Meacutendez Escobar

Universidad San Francisco de Asiacutes

Ingenieriacutea de Sistemas

Ingenieriacutea de Software I

La Paz - Bolivia

amendezusfaedubo

Resumenmdash Al adquirir el software educativo dentro del campo de

desarrollo de software una gran importancia y siendo este

inspiracioacuten de propuestas de innumerables metodologiacuteas que buscan

la elaboracioacuten de un software de calidad

Tomaremos la metodologiacutea Aacutencora enfocada a la fase de

requerimientos y que ofrece elementos que indican las actividades

que deben realizarse los artefactos que se producen y la forma de

obtenerlos

Usando al desarrollo de software educativo como ejemplo de una

mejor comprensioacuten de dicha metodologiacutea analizando la aplicacioacuten

del Aacutencora en un trabajo propuesto para el Instituto Tecnoloacutegico de

Orizaba Meacutexico

Palabras clave mdash Aacutencora Metodologiacutea Desarrollo de Software

Educativo Requerimientos Calidad

XVI INTRODUCCIOacuteN

Hoy en diacutea la tecnologiacutea esta dentro de las

actividades que realizamos es asiacute que la educacioacuten no

queda exenta de ella por o cual es necesario adaptarse

al movimiento tecnoloacutegico que nos trae grandes

ventajas en la transmisioacuten de conocimientos de una

manera sencilla y dinaacutemica

De esta manera han surgido infinidad de

metodologiacuteas de desarrollo de software educativo el

cual tiene como objetivo ser el apoyo para docentes

alumnos y toda persona que este dentro del proceso de

aprendizaje

Tomando en cuenta este ramillete infinito de

metodologiacuteas surge en el ejemplo propuesto la

adaptacioacuten del Aacutencora en el desarrollo de software

educativo teniendo como objetivo principal la

comprensioacuten de los elementos y conceptos de la

metodologiacutea Aacutencora

Aacutencora es una metodologiacutea enfocada a la

adquisicioacuten de requerimientos para software que

ofrece guiacuteas y elementos de apoyo para la obtencioacuten de

estos requerimientos Al mismo tiempo permite pasar a

la fase de disentildeo de manera sencilla Aprovechando las

ventajas que presenta Aacutencora se le hicieron algunas

adaptaciones con el fin de cubrir algunas

caracteriacutesticas del disentildeo instruccional y enriquecer

Aacutencora habilitaacutendola para la adquisicioacuten de

requerimientos de software educativo

XVII APLICACIOacuteN DE LA METODOLOGIacuteA AacuteNCORA

Como es el objetivo principal la comprensioacuten de la

aplicacioacuten de la metodologiacutea Aacutencora dentro del

desarrollo de software educativo de calidad solo

describiremos los meacutetodos del meacutetodo y los resultados

obtenidos

Claro esta que para ahondar maacutes en tema del

software educativo en si el lector puede recurrir a los

siguientes autores Metodologiacutea de desarrollo de

sistemas multimedia (Vaughan 2006) Propuesta de

metodologiacutea para el disentildeo desarrollo y evaluacioacuten

de software educativo (Reyes 2009) Ingenieriacutea de

software educativo con modelaje orientado por objetos

(Goacutemez 1998) asi como tambieacuten los siguientes

modelos ADDIE (Anaacutelisis Disentildeo Desarrollo

Implantacioacuten y Evaluacioacuten) de (McGriff 2000) y el

disentildeo instruccional aplicado al desarrollo de software

educativo EISE (Especificacioacuten Instruccional de

Software Educativo) de (Hernaacutendez 2005)

] INGENIERIacuteA DE SOFTWARE

29

INGENIERIacuteA DE SISTEMAS

Quienes tienen el mismo objetivo de crear software

educativo de calidad podemos sintetizar de ellos los

siguientes puntos

Anaacutelisis del puacuteblico al que se dirigiraacute el software

Problema oacute necesidad educativa a atender

Anaacutelisis de contenido (Tema a tratar actividades

para alcanzar el objetivo de ensentildeanza y forma de

evaluarlo)

Actividades oacute forma actual de llevar a cabo la

ensentildeanza del tema en cuestioacuten

Elaboracioacuten de guiones metaacuteforas escenarios

Creacioacuten de prototipo oacute Storyboard

Disentildeo de interfaz

Mapas de navegacioacuten

Modelos de datos

Elaboracioacuten de diagramas de contexto diagramas

de flujo o diagramas de casos de uso

Ahora enfocaacutendonos en el aacutencora se establece la

propuesta de seleccionar las actividades de Aacutencora que

permitan obtener los requerimientos de un software

educativo

La Tabla 1 presenta las actividades y artefactos

producidos en las fases de Aacutencora para la elaboracioacuten

de software educativo

TABLA 1 ACTIVIDADES Y ARTEFACTOS DE LA METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO

Metodologiacutea Aacutencora

Fases Actividades y artefactos

Anaacutelisis de

Requerimientos

A traveacutes de entrevistas con los clientes

(maestros y pedagogos) y de la lectura

del respectivo material proporcionado

por ellos se definiraacute la asignatura a la

que se enfocaraacute el software el tema a

tratar y la forma en que se abordaraacute y

evaluaraacute Tambieacuten se estableceraacute el

objetivo general de aprendizaje la

metaacutefora que se emplearaacute y se

determinaraacute el puacuteblico al que se

dirigiraacute el software

Artefactos

Documento que define la asignatura

contenido objetivo general de

aprendizaje metaacutefora y puacuteblico al que

se dirigiraacute el software Guion de la

situacioacuten actual

Recoleccioacuten y

clasificacioacuten de

requerimientos

El guion de la propuesta

computacional reflejaraacute la metaacutefora

que se sigue el ambiente de cada

escena

La bitaacutecora de desarrollo permitiraacute ver

coacutemo el sistema responderaacute a las

diversas acciones que realice el

usuario

En lugar del prototipo raacutepido se

elaboraraacute un Storyboard para presentar

graacuteficamente la estructura de sistema

propuesto

Artefactos

Guion de propuesta computacional

bitaacutecora de desarrollo Storyboard

Resolucioacuten de

conflictos

jerarquizacioacuten y

validacioacuten de

requerimientos

Modificaciones al guion de la

propuesta computacional de acuerdo a

los cambios propuestos por los

maestros y pedagogos

Artefactos

Guion de propuesta computacional e

Storyboard con adecuaciones sentildealas

Cierre

Trasladar los guiones a casos de uso

Artefactos

Casos de uso

Se agregaron algunas caracteriacutesticas a ciertos

artefactos de Aacutencora para poder cubrir los

requerimientos de software educativo Uno de estos

elementos es el guion de la propuesta computacional

al que se propone agregar lo siguiente

Conocimientos previos del usuario Se refiere a los

conocimientos baacutesicos o miacutenimos que debe tener el

alumno para poder interactuar con el moacutedulo

Objetivo de aprendizaje Es el aprendizaje que

debe obtener el alumno despueacutes de haber interactuado

con el moacutedulo

La Figura 1 se presenta la estructura sugerida para el

guion de la propuesta computacional En la bitaacutecora de

desarrollo se propone antildeadir una fila al final de cada

pista donde se describan las situaciones favorables y

no favorables para el cumplimiento del objetivo de

aprendizaje para esa pista en particular Por otra parte

en lugar del prototipo se sugiere utilizar el Storyboard

ya que permite mostrar de manera maacutes completa la

estructura del guion de la propuesta computacional La

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

30

Figura 2 muestra el formato para la elaboracioacuten del

Storyboard

Figura 1 Estructura del guion para la propuesta computacional

Figura 2 Formato para la elaboracioacuten del Storyboard

XVIII RESULTADOS

Aplicando Aacutencora en un ejemplo para la parte de

requerimientos se obtuvo la siguiente informacioacuten

Asignatura Matemaacuteticas

Contenido Estaacute articulado con base en seis ejes

con sus respectivos temas y subtemas que variacutean de

acuerdo al grado escolar Considerando lo anterior se

tiene lo siguiente

a) Grado escolar De segundo hasta quinto grado de

primaria

b) Temas Nuacutemeros naturales capacidad peso

tiempo y ubicacioacuten espacial planteamiento y

resolucioacuten de problemas sencillos en los que se

requiera recolectar y registrar informacioacuten

perioacutedicamente representacioacuten de informacioacuten en

tablas de frecuencia y graacuteficas de barras registros de

los resultados de experimentos aleatorios

representacioacuten de los resultados de un experimento

aleatorio en tablas y graacuteficas

c) Subtemas Planteamiento y resolucioacuten de

problemas que impliquen dos o maacutes operaciones con

nuacutemeros naturales

d) Ejes Introduccioacuten del kiloacutemetro como la unidad

que permite medir grandes distancias y recorridos

largos capacidad peso y tiempo uso del reloj y el

calendario los nuacutemeros sus relaciones y sus

operaciones medicioacuten la prediccioacuten y el azar

tratamiento de la informacioacuten

Objetivo general de aprendizaje Ejercitar las

operaciones aritmeacuteticas baacutesicas interpretar la

informacioacuten y los resultados de la informacioacuten dada

aplicada en situaciones de la vida cotidiana

Con las actividades hasta ahora realizadas se ha

observado que los artefactos de Aacutencora son flexibles y

pueden por lo tanto adaptarse de acuerdo a las

necesidades que implican la adquisicioacuten de

requerimientos de un software educativo Tambieacuten se

aprecian las ventajas de algunos artefactos como la

bitaacutecora de desarrollo que permite determinar las

respuestas del sistema ante las acciones del usuario y

estimar tambieacuten el tiempo que llevaraacute implementar

cada quinteta

La estimacioacuten del tiempo ayuda a tener un valor

aproximado del tiempo de desarrollo de software

Agregar el objetivo de aprendizaje a la bitaacutecora de

desarrollo puede parecer repetitivo despueacutes de

incluirlo en el Storyboard pero esto nos permite ver las

situaciones u obstaacuteculos que pueden impedir que el

objetivo de aprendizaje se alcance y por tanto tenerlos

presente durante el disentildeo A pesar de las ventajas de

la bitaacutecora de desarrollo un inconveniente hasta ahora

encontrado es lo tedioso al manejar muchas quintetas

] INGENIERIacuteA DE SOFTWARE

31

INGENIERIacuteA DE SISTEMAS

cuando por la naturaleza del guion se tienen varios

avisos y mensajes para el usuario Por otra parte los

guiones han ayudado a realizar de manera sencilla el

modelo de casos de uso

En lo referente a la presentacioacuten con los clientes el

guion es un artefacto que pude dar un panorama

general del software que se va a elaborar y queda

reforzada a traveacutes de los Storyboard Cuando se

requieren cambios solicitados por los clientes las

modificaciones a estos artefactos no han sido muy

complicadas dado que por su estructura es faacutecil de

ubicar las secciones y respectivos elementos

XIX CONCLUSIONES

Con los resultados hasta ahora obtenidos se puede

decir que la propuesta permite a los desarrolladores

con poca experiencia en desarrollo de software

educativo obtener los requerimientos de una manera

sencilla

Permite realizar un mejor relevamiento de informacioacuten

de los requerimientos del cliente enfocaacutendonos mas en

este

Es tambieacuten importante mencionar los avances que

tiene y seguiraacute teniendo el software educativo aplicado

no solo a nivel escolar sino tambieacuten al superior

Habiendo revisado el concepto y la aplicacioacuten de la

metodologiacutea Aacutencora en el desarrollo de software

educativo se llegoacute a una comprensioacuten mas extensa de

dicho meacutetodo el cual es de gran importancia dentro de

la ingenieriacutea de Software ya que nos

REFERENCIAS

httpwwwuvmxmisproductividaddocumentsCarmenChay_CIIM2010pdf

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 25: Revista de Ingenieria de Software

] INGENIERIacuteA DE SOFTWARE

25

INGENIERIacuteA DE SISTEMAS

las acciones usuales del proceso las cuales son aplicables

en escalas muy superiores

El resultado mostrado por el programa dentro del mensaje

emergente se basa en nuestra entrada pero nosotros

desconocemos en lo absoluto los procedimientos utilizados

sobre esta entrada para producir aquella respuesta

A La Observacioacuten es Trascendental

Primero es importante observar el problema su

comportamiento Es substancial tratar de lograr

un pensamiento inductivo en donde logremos

identificar el principio particular del problema

para poder llegar a extrapolarlo a una solucioacuten

general

El punto de quiebre se produce en este instante

Ya al haber observado la aplicacioacuten podriacuteamos

decidir procesar los datos que nos entrega y

lograr crear un coacutedigo equivalente o investigar el

funcionamiento interno

B Dentro de la aplicacioacuten

Luego de la formulacioacuten de una hipoacutetesis sobre

su funcionamiento necesitamos algunas

herramientas para comenzar con la investigacioacuten

En el caso de esta aplicacioacuten con un poco de

conocimientos del lenguaje ensamblador de

programacioacuten tradicional y un descompilador es

suficiente

Es importante emprender de buena forma

nuestro sondeo ser ordenados y metoacutedicos en la

tarea En este momento las capacidades analiacuteticas

y loacutegicas son muy importantes para alivianar

nuestra faena

Lo fundamental es conocer muy bien el

entorno en que nos desenvolveremos En este es

punto indispensable saber que una aplicacioacuten

para Windows necesita invocar internamente al

punto de entrada MessageBox o MessageBoxEx

de la libreriacutea de sistema user32dll para poder

desplegar un mensaje (Fig 4)

Figura 4 Resultado de la Aplicacioacuten

Ya con esa pista es sencillo encontrar el

fragmento de coacutedigo relacionado con las

operaciones relacionadas a nuestro nuacutemero de

entrada que tendriacutea una forma similar a la

mostrada a continuacioacuten en nuestro

descompilador (Fig 5)

Figura 5 Vista del Programa en Ensamblador

Cualquier programador intuiriacutea faacutecilmente lo

que hacen las liacuteneas superiores de esta aplicacioacuten

en especial sprintf es parte de la libreriacutea estaacutendar

de C++ Claramente vemos tambieacuten el tiacutetulo de la

ventana en el coacutedigo estos valores son

interpretados de forma inteligente por este

descompilador en especial y en particular nos

asiste de sobremanera a comprender el coacutedigo

Lo siguiente es sencillamente explorar paso a

paso las acciones superiores de caacutelculo del

resultado En esta instancia seraacute ideal realizar

numerosas pruebas para estar completamente

seguros de que logramos develar el secreto tras la

funcionalidad objetivo (Fig 6)

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

26

Figura 6 Inicio del coacutedigo al que aplicaremos ingenieriacutea inversa

Hay que detenerse algunos segundos a

individualizar algunos procedimientos del

anaacutelisis que a simple vista pueden parecer

inconcebibles con el fin de poder generar una

tesis concluyente

Cabe destacar que se omitiraacuten pasos

intermedios de asignaciones de memoria y otros

formalismos propios de ensamblador para

favorecer el entendimiento del lector

Inicialmente tenemos el valor de entrada

supuestamente ya leiacutedo desde el cuadro de

diaacutelogo del programa ahora nos enfocamos en la

primera accioacuten importante Asumiremos el valor

de entrada como una incoacutegnita

En el siguiente trozo de coacutedigo la liacutenea

destacada antildeadioacute siete a nuestra incoacutegnita (Fig 7)

Figura 7 Coacutedigo donde se denota la adicioacuten de 7 a nuestra ecuacioacuten

A continuacioacuten se multiplica ese valor

resultante de la suma por el mismo (Fig 8)

Figura 8 Coacutedigo donde se denota la multiplicacioacuten del valor por la suma

Nuevamente multiplicamos el resultado por el

anterior proporcionado tras la suma En esta

segunda vez ya podemos expresar la operacioacuten

simplemente elevando al cubo la suma anterior

(Fig 9)

Figura 9 Coacutedigo que denota una nueva multiplicacioacuten del resultante

Ahora le restamos diez al resultado

El procedimiento que viene a continuacioacuten

propone un mayor desafiacuteo intelectual Un nuacutemero

constante en este caso el cargado al registro

EAX (Fig 10)

Figura 10 ubicacioacuten del nuacutemero constante EAX

Generalmente la divisioacuten es algo maacutes costosa

en tiempo de procesador que otras operaciones

por lo que ciertos compiladores incluyen tablas

de constantes las cuales son llamadas ―nuacutemeros

maacutegicos para la divisioacuten entera

d Con signo Sin signo

m (hex) s m (hex) a s

-5 99999999 1

-3 55555555 1

-2k 7FFFFFFF k-

1

1 mdash mdash 0 1 0

2k 80000001 k-

1 232-k 0 0

3 55555556 0 AAAAAAAB 0 1

5 66666667 1 CCCCCCCD 0 2

6 2AAAAAAB 0 AAAAAAAB 0 2

7 92492493 2 24924925 1 3

9 38E38E39 1 38E38E39 0 1

10 66666667 2 CCCCCCCD 0 3

11 2E8BA2E9 1 BA2E8BA3 0 3

] INGENIERIacuteA DE SOFTWARE

27

INGENIERIacuteA DE SISTEMAS

12 2AAAAAAB 1 AAAAAAAB 0 3

25 51EB851F 3 51EB851F 0 3

125 10624DD3 3 10624DD3 0 3

Tabla 1 Algunos nuacutemeros maacutegicos (32 bits)

Ahora bien conociendo la tabla 1 sabiendo

que el nuacutemero cargado en esta ocasioacuten

corresponde al once lo que hace el coacutedigo es

multiplicar el resultado de la salida temporal por

aquel nuacutemero (Fig 11)

Figura 11 Multiplicacioacuten del resultante por el numero 11

Naturalmente la multiplicacioacuten por un nuacutemero

tan grande produce una especie de

desbordamiento en el registro contenedor del

resultado al exceder el tamantildeo de palabra del

procesador (en este caso de 32 bits) Estos bits

sobrantes se almacenan naturalmente en el

registro EDX registro que es contiguo a ECX

dentro de la memoria de los registros del

procesador

Ahora desplazamos un bit del registro EDX

(equivalente a una divisioacuten entera por dos) para

obtener la solucioacuten de la divisioacuten por once

generando una sencilla ecuacioacuten

Figura 12 Desplazamiento del bit de registro EDX

El uacuteltimo paso luego de documentar estos

resultados seraacute crear una aplicacioacuten que recree

esta foacutermula soacutelo en caso de tener intenciones de

re-codificacioacuten del desarrollo Consumando este

punto es sencillo confeccionar un diagrama con

todo el proceso anteriormente visto

XV CONCLUSIONES

Queda claro que el tema de la ingenieriacutea

inversa es uno de los toacutepicos maacutes interesantes a

los que podriacutea afrontarse un profesional de la

tecnologiacutea y en general disfrutar el largo proceso

involucrado gracias al desafiacuteo poco predecible

que presenta

En general podemos darnos cuenta de que no

existen muchas metodologiacuteas y teoriacuteas estrictas

sobre coacutemo aplicar las teacutecnicas de ingenieriacutea

inversa Afortunadamente un ingeniero estaacute

preparado para afrentar desafiacuteos de este tipo

Adicionalmente podemos deducir tambieacuten el

aspecto bidireccional de la ingenieriacutea inversa

pues como ya lo comprobamos no solo es un

desafiacuteo aplicarla sino que tambieacuten lo es tener que

dificultar el proceso o incluso tratar de impedirlo

si la situacioacuten lo requiere

REFERENCIAS

[12] Roger Pressman Ingenieriacutea de Software ―Un Enfoque Moderno 6th ed

MC Graw Hill [13] httpeswikipediaorgwikiIngenieria_inversa

[14] httpwwwinfosecwritersconntext_resourcespdfsoftware_security_and_r

everse_engineeringpdf [15] httperwinriedclmodo=visorampelemento=239

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

28

METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO Univ Alejandro Meacutendez Escobar

Universidad San Francisco de Asiacutes

Ingenieriacutea de Sistemas

Ingenieriacutea de Software I

La Paz - Bolivia

amendezusfaedubo

Resumenmdash Al adquirir el software educativo dentro del campo de

desarrollo de software una gran importancia y siendo este

inspiracioacuten de propuestas de innumerables metodologiacuteas que buscan

la elaboracioacuten de un software de calidad

Tomaremos la metodologiacutea Aacutencora enfocada a la fase de

requerimientos y que ofrece elementos que indican las actividades

que deben realizarse los artefactos que se producen y la forma de

obtenerlos

Usando al desarrollo de software educativo como ejemplo de una

mejor comprensioacuten de dicha metodologiacutea analizando la aplicacioacuten

del Aacutencora en un trabajo propuesto para el Instituto Tecnoloacutegico de

Orizaba Meacutexico

Palabras clave mdash Aacutencora Metodologiacutea Desarrollo de Software

Educativo Requerimientos Calidad

XVI INTRODUCCIOacuteN

Hoy en diacutea la tecnologiacutea esta dentro de las

actividades que realizamos es asiacute que la educacioacuten no

queda exenta de ella por o cual es necesario adaptarse

al movimiento tecnoloacutegico que nos trae grandes

ventajas en la transmisioacuten de conocimientos de una

manera sencilla y dinaacutemica

De esta manera han surgido infinidad de

metodologiacuteas de desarrollo de software educativo el

cual tiene como objetivo ser el apoyo para docentes

alumnos y toda persona que este dentro del proceso de

aprendizaje

Tomando en cuenta este ramillete infinito de

metodologiacuteas surge en el ejemplo propuesto la

adaptacioacuten del Aacutencora en el desarrollo de software

educativo teniendo como objetivo principal la

comprensioacuten de los elementos y conceptos de la

metodologiacutea Aacutencora

Aacutencora es una metodologiacutea enfocada a la

adquisicioacuten de requerimientos para software que

ofrece guiacuteas y elementos de apoyo para la obtencioacuten de

estos requerimientos Al mismo tiempo permite pasar a

la fase de disentildeo de manera sencilla Aprovechando las

ventajas que presenta Aacutencora se le hicieron algunas

adaptaciones con el fin de cubrir algunas

caracteriacutesticas del disentildeo instruccional y enriquecer

Aacutencora habilitaacutendola para la adquisicioacuten de

requerimientos de software educativo

XVII APLICACIOacuteN DE LA METODOLOGIacuteA AacuteNCORA

Como es el objetivo principal la comprensioacuten de la

aplicacioacuten de la metodologiacutea Aacutencora dentro del

desarrollo de software educativo de calidad solo

describiremos los meacutetodos del meacutetodo y los resultados

obtenidos

Claro esta que para ahondar maacutes en tema del

software educativo en si el lector puede recurrir a los

siguientes autores Metodologiacutea de desarrollo de

sistemas multimedia (Vaughan 2006) Propuesta de

metodologiacutea para el disentildeo desarrollo y evaluacioacuten

de software educativo (Reyes 2009) Ingenieriacutea de

software educativo con modelaje orientado por objetos

(Goacutemez 1998) asi como tambieacuten los siguientes

modelos ADDIE (Anaacutelisis Disentildeo Desarrollo

Implantacioacuten y Evaluacioacuten) de (McGriff 2000) y el

disentildeo instruccional aplicado al desarrollo de software

educativo EISE (Especificacioacuten Instruccional de

Software Educativo) de (Hernaacutendez 2005)

] INGENIERIacuteA DE SOFTWARE

29

INGENIERIacuteA DE SISTEMAS

Quienes tienen el mismo objetivo de crear software

educativo de calidad podemos sintetizar de ellos los

siguientes puntos

Anaacutelisis del puacuteblico al que se dirigiraacute el software

Problema oacute necesidad educativa a atender

Anaacutelisis de contenido (Tema a tratar actividades

para alcanzar el objetivo de ensentildeanza y forma de

evaluarlo)

Actividades oacute forma actual de llevar a cabo la

ensentildeanza del tema en cuestioacuten

Elaboracioacuten de guiones metaacuteforas escenarios

Creacioacuten de prototipo oacute Storyboard

Disentildeo de interfaz

Mapas de navegacioacuten

Modelos de datos

Elaboracioacuten de diagramas de contexto diagramas

de flujo o diagramas de casos de uso

Ahora enfocaacutendonos en el aacutencora se establece la

propuesta de seleccionar las actividades de Aacutencora que

permitan obtener los requerimientos de un software

educativo

La Tabla 1 presenta las actividades y artefactos

producidos en las fases de Aacutencora para la elaboracioacuten

de software educativo

TABLA 1 ACTIVIDADES Y ARTEFACTOS DE LA METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO

Metodologiacutea Aacutencora

Fases Actividades y artefactos

Anaacutelisis de

Requerimientos

A traveacutes de entrevistas con los clientes

(maestros y pedagogos) y de la lectura

del respectivo material proporcionado

por ellos se definiraacute la asignatura a la

que se enfocaraacute el software el tema a

tratar y la forma en que se abordaraacute y

evaluaraacute Tambieacuten se estableceraacute el

objetivo general de aprendizaje la

metaacutefora que se emplearaacute y se

determinaraacute el puacuteblico al que se

dirigiraacute el software

Artefactos

Documento que define la asignatura

contenido objetivo general de

aprendizaje metaacutefora y puacuteblico al que

se dirigiraacute el software Guion de la

situacioacuten actual

Recoleccioacuten y

clasificacioacuten de

requerimientos

El guion de la propuesta

computacional reflejaraacute la metaacutefora

que se sigue el ambiente de cada

escena

La bitaacutecora de desarrollo permitiraacute ver

coacutemo el sistema responderaacute a las

diversas acciones que realice el

usuario

En lugar del prototipo raacutepido se

elaboraraacute un Storyboard para presentar

graacuteficamente la estructura de sistema

propuesto

Artefactos

Guion de propuesta computacional

bitaacutecora de desarrollo Storyboard

Resolucioacuten de

conflictos

jerarquizacioacuten y

validacioacuten de

requerimientos

Modificaciones al guion de la

propuesta computacional de acuerdo a

los cambios propuestos por los

maestros y pedagogos

Artefactos

Guion de propuesta computacional e

Storyboard con adecuaciones sentildealas

Cierre

Trasladar los guiones a casos de uso

Artefactos

Casos de uso

Se agregaron algunas caracteriacutesticas a ciertos

artefactos de Aacutencora para poder cubrir los

requerimientos de software educativo Uno de estos

elementos es el guion de la propuesta computacional

al que se propone agregar lo siguiente

Conocimientos previos del usuario Se refiere a los

conocimientos baacutesicos o miacutenimos que debe tener el

alumno para poder interactuar con el moacutedulo

Objetivo de aprendizaje Es el aprendizaje que

debe obtener el alumno despueacutes de haber interactuado

con el moacutedulo

La Figura 1 se presenta la estructura sugerida para el

guion de la propuesta computacional En la bitaacutecora de

desarrollo se propone antildeadir una fila al final de cada

pista donde se describan las situaciones favorables y

no favorables para el cumplimiento del objetivo de

aprendizaje para esa pista en particular Por otra parte

en lugar del prototipo se sugiere utilizar el Storyboard

ya que permite mostrar de manera maacutes completa la

estructura del guion de la propuesta computacional La

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

30

Figura 2 muestra el formato para la elaboracioacuten del

Storyboard

Figura 1 Estructura del guion para la propuesta computacional

Figura 2 Formato para la elaboracioacuten del Storyboard

XVIII RESULTADOS

Aplicando Aacutencora en un ejemplo para la parte de

requerimientos se obtuvo la siguiente informacioacuten

Asignatura Matemaacuteticas

Contenido Estaacute articulado con base en seis ejes

con sus respectivos temas y subtemas que variacutean de

acuerdo al grado escolar Considerando lo anterior se

tiene lo siguiente

a) Grado escolar De segundo hasta quinto grado de

primaria

b) Temas Nuacutemeros naturales capacidad peso

tiempo y ubicacioacuten espacial planteamiento y

resolucioacuten de problemas sencillos en los que se

requiera recolectar y registrar informacioacuten

perioacutedicamente representacioacuten de informacioacuten en

tablas de frecuencia y graacuteficas de barras registros de

los resultados de experimentos aleatorios

representacioacuten de los resultados de un experimento

aleatorio en tablas y graacuteficas

c) Subtemas Planteamiento y resolucioacuten de

problemas que impliquen dos o maacutes operaciones con

nuacutemeros naturales

d) Ejes Introduccioacuten del kiloacutemetro como la unidad

que permite medir grandes distancias y recorridos

largos capacidad peso y tiempo uso del reloj y el

calendario los nuacutemeros sus relaciones y sus

operaciones medicioacuten la prediccioacuten y el azar

tratamiento de la informacioacuten

Objetivo general de aprendizaje Ejercitar las

operaciones aritmeacuteticas baacutesicas interpretar la

informacioacuten y los resultados de la informacioacuten dada

aplicada en situaciones de la vida cotidiana

Con las actividades hasta ahora realizadas se ha

observado que los artefactos de Aacutencora son flexibles y

pueden por lo tanto adaptarse de acuerdo a las

necesidades que implican la adquisicioacuten de

requerimientos de un software educativo Tambieacuten se

aprecian las ventajas de algunos artefactos como la

bitaacutecora de desarrollo que permite determinar las

respuestas del sistema ante las acciones del usuario y

estimar tambieacuten el tiempo que llevaraacute implementar

cada quinteta

La estimacioacuten del tiempo ayuda a tener un valor

aproximado del tiempo de desarrollo de software

Agregar el objetivo de aprendizaje a la bitaacutecora de

desarrollo puede parecer repetitivo despueacutes de

incluirlo en el Storyboard pero esto nos permite ver las

situaciones u obstaacuteculos que pueden impedir que el

objetivo de aprendizaje se alcance y por tanto tenerlos

presente durante el disentildeo A pesar de las ventajas de

la bitaacutecora de desarrollo un inconveniente hasta ahora

encontrado es lo tedioso al manejar muchas quintetas

] INGENIERIacuteA DE SOFTWARE

31

INGENIERIacuteA DE SISTEMAS

cuando por la naturaleza del guion se tienen varios

avisos y mensajes para el usuario Por otra parte los

guiones han ayudado a realizar de manera sencilla el

modelo de casos de uso

En lo referente a la presentacioacuten con los clientes el

guion es un artefacto que pude dar un panorama

general del software que se va a elaborar y queda

reforzada a traveacutes de los Storyboard Cuando se

requieren cambios solicitados por los clientes las

modificaciones a estos artefactos no han sido muy

complicadas dado que por su estructura es faacutecil de

ubicar las secciones y respectivos elementos

XIX CONCLUSIONES

Con los resultados hasta ahora obtenidos se puede

decir que la propuesta permite a los desarrolladores

con poca experiencia en desarrollo de software

educativo obtener los requerimientos de una manera

sencilla

Permite realizar un mejor relevamiento de informacioacuten

de los requerimientos del cliente enfocaacutendonos mas en

este

Es tambieacuten importante mencionar los avances que

tiene y seguiraacute teniendo el software educativo aplicado

no solo a nivel escolar sino tambieacuten al superior

Habiendo revisado el concepto y la aplicacioacuten de la

metodologiacutea Aacutencora en el desarrollo de software

educativo se llegoacute a una comprensioacuten mas extensa de

dicho meacutetodo el cual es de gran importancia dentro de

la ingenieriacutea de Software ya que nos

REFERENCIAS

httpwwwuvmxmisproductividaddocumentsCarmenChay_CIIM2010pdf

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 26: Revista de Ingenieria de Software

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

26

Figura 6 Inicio del coacutedigo al que aplicaremos ingenieriacutea inversa

Hay que detenerse algunos segundos a

individualizar algunos procedimientos del

anaacutelisis que a simple vista pueden parecer

inconcebibles con el fin de poder generar una

tesis concluyente

Cabe destacar que se omitiraacuten pasos

intermedios de asignaciones de memoria y otros

formalismos propios de ensamblador para

favorecer el entendimiento del lector

Inicialmente tenemos el valor de entrada

supuestamente ya leiacutedo desde el cuadro de

diaacutelogo del programa ahora nos enfocamos en la

primera accioacuten importante Asumiremos el valor

de entrada como una incoacutegnita

En el siguiente trozo de coacutedigo la liacutenea

destacada antildeadioacute siete a nuestra incoacutegnita (Fig 7)

Figura 7 Coacutedigo donde se denota la adicioacuten de 7 a nuestra ecuacioacuten

A continuacioacuten se multiplica ese valor

resultante de la suma por el mismo (Fig 8)

Figura 8 Coacutedigo donde se denota la multiplicacioacuten del valor por la suma

Nuevamente multiplicamos el resultado por el

anterior proporcionado tras la suma En esta

segunda vez ya podemos expresar la operacioacuten

simplemente elevando al cubo la suma anterior

(Fig 9)

Figura 9 Coacutedigo que denota una nueva multiplicacioacuten del resultante

Ahora le restamos diez al resultado

El procedimiento que viene a continuacioacuten

propone un mayor desafiacuteo intelectual Un nuacutemero

constante en este caso el cargado al registro

EAX (Fig 10)

Figura 10 ubicacioacuten del nuacutemero constante EAX

Generalmente la divisioacuten es algo maacutes costosa

en tiempo de procesador que otras operaciones

por lo que ciertos compiladores incluyen tablas

de constantes las cuales son llamadas ―nuacutemeros

maacutegicos para la divisioacuten entera

d Con signo Sin signo

m (hex) s m (hex) a s

-5 99999999 1

-3 55555555 1

-2k 7FFFFFFF k-

1

1 mdash mdash 0 1 0

2k 80000001 k-

1 232-k 0 0

3 55555556 0 AAAAAAAB 0 1

5 66666667 1 CCCCCCCD 0 2

6 2AAAAAAB 0 AAAAAAAB 0 2

7 92492493 2 24924925 1 3

9 38E38E39 1 38E38E39 0 1

10 66666667 2 CCCCCCCD 0 3

11 2E8BA2E9 1 BA2E8BA3 0 3

] INGENIERIacuteA DE SOFTWARE

27

INGENIERIacuteA DE SISTEMAS

12 2AAAAAAB 1 AAAAAAAB 0 3

25 51EB851F 3 51EB851F 0 3

125 10624DD3 3 10624DD3 0 3

Tabla 1 Algunos nuacutemeros maacutegicos (32 bits)

Ahora bien conociendo la tabla 1 sabiendo

que el nuacutemero cargado en esta ocasioacuten

corresponde al once lo que hace el coacutedigo es

multiplicar el resultado de la salida temporal por

aquel nuacutemero (Fig 11)

Figura 11 Multiplicacioacuten del resultante por el numero 11

Naturalmente la multiplicacioacuten por un nuacutemero

tan grande produce una especie de

desbordamiento en el registro contenedor del

resultado al exceder el tamantildeo de palabra del

procesador (en este caso de 32 bits) Estos bits

sobrantes se almacenan naturalmente en el

registro EDX registro que es contiguo a ECX

dentro de la memoria de los registros del

procesador

Ahora desplazamos un bit del registro EDX

(equivalente a una divisioacuten entera por dos) para

obtener la solucioacuten de la divisioacuten por once

generando una sencilla ecuacioacuten

Figura 12 Desplazamiento del bit de registro EDX

El uacuteltimo paso luego de documentar estos

resultados seraacute crear una aplicacioacuten que recree

esta foacutermula soacutelo en caso de tener intenciones de

re-codificacioacuten del desarrollo Consumando este

punto es sencillo confeccionar un diagrama con

todo el proceso anteriormente visto

XV CONCLUSIONES

Queda claro que el tema de la ingenieriacutea

inversa es uno de los toacutepicos maacutes interesantes a

los que podriacutea afrontarse un profesional de la

tecnologiacutea y en general disfrutar el largo proceso

involucrado gracias al desafiacuteo poco predecible

que presenta

En general podemos darnos cuenta de que no

existen muchas metodologiacuteas y teoriacuteas estrictas

sobre coacutemo aplicar las teacutecnicas de ingenieriacutea

inversa Afortunadamente un ingeniero estaacute

preparado para afrentar desafiacuteos de este tipo

Adicionalmente podemos deducir tambieacuten el

aspecto bidireccional de la ingenieriacutea inversa

pues como ya lo comprobamos no solo es un

desafiacuteo aplicarla sino que tambieacuten lo es tener que

dificultar el proceso o incluso tratar de impedirlo

si la situacioacuten lo requiere

REFERENCIAS

[12] Roger Pressman Ingenieriacutea de Software ―Un Enfoque Moderno 6th ed

MC Graw Hill [13] httpeswikipediaorgwikiIngenieria_inversa

[14] httpwwwinfosecwritersconntext_resourcespdfsoftware_security_and_r

everse_engineeringpdf [15] httperwinriedclmodo=visorampelemento=239

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

28

METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO Univ Alejandro Meacutendez Escobar

Universidad San Francisco de Asiacutes

Ingenieriacutea de Sistemas

Ingenieriacutea de Software I

La Paz - Bolivia

amendezusfaedubo

Resumenmdash Al adquirir el software educativo dentro del campo de

desarrollo de software una gran importancia y siendo este

inspiracioacuten de propuestas de innumerables metodologiacuteas que buscan

la elaboracioacuten de un software de calidad

Tomaremos la metodologiacutea Aacutencora enfocada a la fase de

requerimientos y que ofrece elementos que indican las actividades

que deben realizarse los artefactos que se producen y la forma de

obtenerlos

Usando al desarrollo de software educativo como ejemplo de una

mejor comprensioacuten de dicha metodologiacutea analizando la aplicacioacuten

del Aacutencora en un trabajo propuesto para el Instituto Tecnoloacutegico de

Orizaba Meacutexico

Palabras clave mdash Aacutencora Metodologiacutea Desarrollo de Software

Educativo Requerimientos Calidad

XVI INTRODUCCIOacuteN

Hoy en diacutea la tecnologiacutea esta dentro de las

actividades que realizamos es asiacute que la educacioacuten no

queda exenta de ella por o cual es necesario adaptarse

al movimiento tecnoloacutegico que nos trae grandes

ventajas en la transmisioacuten de conocimientos de una

manera sencilla y dinaacutemica

De esta manera han surgido infinidad de

metodologiacuteas de desarrollo de software educativo el

cual tiene como objetivo ser el apoyo para docentes

alumnos y toda persona que este dentro del proceso de

aprendizaje

Tomando en cuenta este ramillete infinito de

metodologiacuteas surge en el ejemplo propuesto la

adaptacioacuten del Aacutencora en el desarrollo de software

educativo teniendo como objetivo principal la

comprensioacuten de los elementos y conceptos de la

metodologiacutea Aacutencora

Aacutencora es una metodologiacutea enfocada a la

adquisicioacuten de requerimientos para software que

ofrece guiacuteas y elementos de apoyo para la obtencioacuten de

estos requerimientos Al mismo tiempo permite pasar a

la fase de disentildeo de manera sencilla Aprovechando las

ventajas que presenta Aacutencora se le hicieron algunas

adaptaciones con el fin de cubrir algunas

caracteriacutesticas del disentildeo instruccional y enriquecer

Aacutencora habilitaacutendola para la adquisicioacuten de

requerimientos de software educativo

XVII APLICACIOacuteN DE LA METODOLOGIacuteA AacuteNCORA

Como es el objetivo principal la comprensioacuten de la

aplicacioacuten de la metodologiacutea Aacutencora dentro del

desarrollo de software educativo de calidad solo

describiremos los meacutetodos del meacutetodo y los resultados

obtenidos

Claro esta que para ahondar maacutes en tema del

software educativo en si el lector puede recurrir a los

siguientes autores Metodologiacutea de desarrollo de

sistemas multimedia (Vaughan 2006) Propuesta de

metodologiacutea para el disentildeo desarrollo y evaluacioacuten

de software educativo (Reyes 2009) Ingenieriacutea de

software educativo con modelaje orientado por objetos

(Goacutemez 1998) asi como tambieacuten los siguientes

modelos ADDIE (Anaacutelisis Disentildeo Desarrollo

Implantacioacuten y Evaluacioacuten) de (McGriff 2000) y el

disentildeo instruccional aplicado al desarrollo de software

educativo EISE (Especificacioacuten Instruccional de

Software Educativo) de (Hernaacutendez 2005)

] INGENIERIacuteA DE SOFTWARE

29

INGENIERIacuteA DE SISTEMAS

Quienes tienen el mismo objetivo de crear software

educativo de calidad podemos sintetizar de ellos los

siguientes puntos

Anaacutelisis del puacuteblico al que se dirigiraacute el software

Problema oacute necesidad educativa a atender

Anaacutelisis de contenido (Tema a tratar actividades

para alcanzar el objetivo de ensentildeanza y forma de

evaluarlo)

Actividades oacute forma actual de llevar a cabo la

ensentildeanza del tema en cuestioacuten

Elaboracioacuten de guiones metaacuteforas escenarios

Creacioacuten de prototipo oacute Storyboard

Disentildeo de interfaz

Mapas de navegacioacuten

Modelos de datos

Elaboracioacuten de diagramas de contexto diagramas

de flujo o diagramas de casos de uso

Ahora enfocaacutendonos en el aacutencora se establece la

propuesta de seleccionar las actividades de Aacutencora que

permitan obtener los requerimientos de un software

educativo

La Tabla 1 presenta las actividades y artefactos

producidos en las fases de Aacutencora para la elaboracioacuten

de software educativo

TABLA 1 ACTIVIDADES Y ARTEFACTOS DE LA METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO

Metodologiacutea Aacutencora

Fases Actividades y artefactos

Anaacutelisis de

Requerimientos

A traveacutes de entrevistas con los clientes

(maestros y pedagogos) y de la lectura

del respectivo material proporcionado

por ellos se definiraacute la asignatura a la

que se enfocaraacute el software el tema a

tratar y la forma en que se abordaraacute y

evaluaraacute Tambieacuten se estableceraacute el

objetivo general de aprendizaje la

metaacutefora que se emplearaacute y se

determinaraacute el puacuteblico al que se

dirigiraacute el software

Artefactos

Documento que define la asignatura

contenido objetivo general de

aprendizaje metaacutefora y puacuteblico al que

se dirigiraacute el software Guion de la

situacioacuten actual

Recoleccioacuten y

clasificacioacuten de

requerimientos

El guion de la propuesta

computacional reflejaraacute la metaacutefora

que se sigue el ambiente de cada

escena

La bitaacutecora de desarrollo permitiraacute ver

coacutemo el sistema responderaacute a las

diversas acciones que realice el

usuario

En lugar del prototipo raacutepido se

elaboraraacute un Storyboard para presentar

graacuteficamente la estructura de sistema

propuesto

Artefactos

Guion de propuesta computacional

bitaacutecora de desarrollo Storyboard

Resolucioacuten de

conflictos

jerarquizacioacuten y

validacioacuten de

requerimientos

Modificaciones al guion de la

propuesta computacional de acuerdo a

los cambios propuestos por los

maestros y pedagogos

Artefactos

Guion de propuesta computacional e

Storyboard con adecuaciones sentildealas

Cierre

Trasladar los guiones a casos de uso

Artefactos

Casos de uso

Se agregaron algunas caracteriacutesticas a ciertos

artefactos de Aacutencora para poder cubrir los

requerimientos de software educativo Uno de estos

elementos es el guion de la propuesta computacional

al que se propone agregar lo siguiente

Conocimientos previos del usuario Se refiere a los

conocimientos baacutesicos o miacutenimos que debe tener el

alumno para poder interactuar con el moacutedulo

Objetivo de aprendizaje Es el aprendizaje que

debe obtener el alumno despueacutes de haber interactuado

con el moacutedulo

La Figura 1 se presenta la estructura sugerida para el

guion de la propuesta computacional En la bitaacutecora de

desarrollo se propone antildeadir una fila al final de cada

pista donde se describan las situaciones favorables y

no favorables para el cumplimiento del objetivo de

aprendizaje para esa pista en particular Por otra parte

en lugar del prototipo se sugiere utilizar el Storyboard

ya que permite mostrar de manera maacutes completa la

estructura del guion de la propuesta computacional La

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

30

Figura 2 muestra el formato para la elaboracioacuten del

Storyboard

Figura 1 Estructura del guion para la propuesta computacional

Figura 2 Formato para la elaboracioacuten del Storyboard

XVIII RESULTADOS

Aplicando Aacutencora en un ejemplo para la parte de

requerimientos se obtuvo la siguiente informacioacuten

Asignatura Matemaacuteticas

Contenido Estaacute articulado con base en seis ejes

con sus respectivos temas y subtemas que variacutean de

acuerdo al grado escolar Considerando lo anterior se

tiene lo siguiente

a) Grado escolar De segundo hasta quinto grado de

primaria

b) Temas Nuacutemeros naturales capacidad peso

tiempo y ubicacioacuten espacial planteamiento y

resolucioacuten de problemas sencillos en los que se

requiera recolectar y registrar informacioacuten

perioacutedicamente representacioacuten de informacioacuten en

tablas de frecuencia y graacuteficas de barras registros de

los resultados de experimentos aleatorios

representacioacuten de los resultados de un experimento

aleatorio en tablas y graacuteficas

c) Subtemas Planteamiento y resolucioacuten de

problemas que impliquen dos o maacutes operaciones con

nuacutemeros naturales

d) Ejes Introduccioacuten del kiloacutemetro como la unidad

que permite medir grandes distancias y recorridos

largos capacidad peso y tiempo uso del reloj y el

calendario los nuacutemeros sus relaciones y sus

operaciones medicioacuten la prediccioacuten y el azar

tratamiento de la informacioacuten

Objetivo general de aprendizaje Ejercitar las

operaciones aritmeacuteticas baacutesicas interpretar la

informacioacuten y los resultados de la informacioacuten dada

aplicada en situaciones de la vida cotidiana

Con las actividades hasta ahora realizadas se ha

observado que los artefactos de Aacutencora son flexibles y

pueden por lo tanto adaptarse de acuerdo a las

necesidades que implican la adquisicioacuten de

requerimientos de un software educativo Tambieacuten se

aprecian las ventajas de algunos artefactos como la

bitaacutecora de desarrollo que permite determinar las

respuestas del sistema ante las acciones del usuario y

estimar tambieacuten el tiempo que llevaraacute implementar

cada quinteta

La estimacioacuten del tiempo ayuda a tener un valor

aproximado del tiempo de desarrollo de software

Agregar el objetivo de aprendizaje a la bitaacutecora de

desarrollo puede parecer repetitivo despueacutes de

incluirlo en el Storyboard pero esto nos permite ver las

situaciones u obstaacuteculos que pueden impedir que el

objetivo de aprendizaje se alcance y por tanto tenerlos

presente durante el disentildeo A pesar de las ventajas de

la bitaacutecora de desarrollo un inconveniente hasta ahora

encontrado es lo tedioso al manejar muchas quintetas

] INGENIERIacuteA DE SOFTWARE

31

INGENIERIacuteA DE SISTEMAS

cuando por la naturaleza del guion se tienen varios

avisos y mensajes para el usuario Por otra parte los

guiones han ayudado a realizar de manera sencilla el

modelo de casos de uso

En lo referente a la presentacioacuten con los clientes el

guion es un artefacto que pude dar un panorama

general del software que se va a elaborar y queda

reforzada a traveacutes de los Storyboard Cuando se

requieren cambios solicitados por los clientes las

modificaciones a estos artefactos no han sido muy

complicadas dado que por su estructura es faacutecil de

ubicar las secciones y respectivos elementos

XIX CONCLUSIONES

Con los resultados hasta ahora obtenidos se puede

decir que la propuesta permite a los desarrolladores

con poca experiencia en desarrollo de software

educativo obtener los requerimientos de una manera

sencilla

Permite realizar un mejor relevamiento de informacioacuten

de los requerimientos del cliente enfocaacutendonos mas en

este

Es tambieacuten importante mencionar los avances que

tiene y seguiraacute teniendo el software educativo aplicado

no solo a nivel escolar sino tambieacuten al superior

Habiendo revisado el concepto y la aplicacioacuten de la

metodologiacutea Aacutencora en el desarrollo de software

educativo se llegoacute a una comprensioacuten mas extensa de

dicho meacutetodo el cual es de gran importancia dentro de

la ingenieriacutea de Software ya que nos

REFERENCIAS

httpwwwuvmxmisproductividaddocumentsCarmenChay_CIIM2010pdf

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 27: Revista de Ingenieria de Software

] INGENIERIacuteA DE SOFTWARE

27

INGENIERIacuteA DE SISTEMAS

12 2AAAAAAB 1 AAAAAAAB 0 3

25 51EB851F 3 51EB851F 0 3

125 10624DD3 3 10624DD3 0 3

Tabla 1 Algunos nuacutemeros maacutegicos (32 bits)

Ahora bien conociendo la tabla 1 sabiendo

que el nuacutemero cargado en esta ocasioacuten

corresponde al once lo que hace el coacutedigo es

multiplicar el resultado de la salida temporal por

aquel nuacutemero (Fig 11)

Figura 11 Multiplicacioacuten del resultante por el numero 11

Naturalmente la multiplicacioacuten por un nuacutemero

tan grande produce una especie de

desbordamiento en el registro contenedor del

resultado al exceder el tamantildeo de palabra del

procesador (en este caso de 32 bits) Estos bits

sobrantes se almacenan naturalmente en el

registro EDX registro que es contiguo a ECX

dentro de la memoria de los registros del

procesador

Ahora desplazamos un bit del registro EDX

(equivalente a una divisioacuten entera por dos) para

obtener la solucioacuten de la divisioacuten por once

generando una sencilla ecuacioacuten

Figura 12 Desplazamiento del bit de registro EDX

El uacuteltimo paso luego de documentar estos

resultados seraacute crear una aplicacioacuten que recree

esta foacutermula soacutelo en caso de tener intenciones de

re-codificacioacuten del desarrollo Consumando este

punto es sencillo confeccionar un diagrama con

todo el proceso anteriormente visto

XV CONCLUSIONES

Queda claro que el tema de la ingenieriacutea

inversa es uno de los toacutepicos maacutes interesantes a

los que podriacutea afrontarse un profesional de la

tecnologiacutea y en general disfrutar el largo proceso

involucrado gracias al desafiacuteo poco predecible

que presenta

En general podemos darnos cuenta de que no

existen muchas metodologiacuteas y teoriacuteas estrictas

sobre coacutemo aplicar las teacutecnicas de ingenieriacutea

inversa Afortunadamente un ingeniero estaacute

preparado para afrentar desafiacuteos de este tipo

Adicionalmente podemos deducir tambieacuten el

aspecto bidireccional de la ingenieriacutea inversa

pues como ya lo comprobamos no solo es un

desafiacuteo aplicarla sino que tambieacuten lo es tener que

dificultar el proceso o incluso tratar de impedirlo

si la situacioacuten lo requiere

REFERENCIAS

[12] Roger Pressman Ingenieriacutea de Software ―Un Enfoque Moderno 6th ed

MC Graw Hill [13] httpeswikipediaorgwikiIngenieria_inversa

[14] httpwwwinfosecwritersconntext_resourcespdfsoftware_security_and_r

everse_engineeringpdf [15] httperwinriedclmodo=visorampelemento=239

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

28

METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO Univ Alejandro Meacutendez Escobar

Universidad San Francisco de Asiacutes

Ingenieriacutea de Sistemas

Ingenieriacutea de Software I

La Paz - Bolivia

amendezusfaedubo

Resumenmdash Al adquirir el software educativo dentro del campo de

desarrollo de software una gran importancia y siendo este

inspiracioacuten de propuestas de innumerables metodologiacuteas que buscan

la elaboracioacuten de un software de calidad

Tomaremos la metodologiacutea Aacutencora enfocada a la fase de

requerimientos y que ofrece elementos que indican las actividades

que deben realizarse los artefactos que se producen y la forma de

obtenerlos

Usando al desarrollo de software educativo como ejemplo de una

mejor comprensioacuten de dicha metodologiacutea analizando la aplicacioacuten

del Aacutencora en un trabajo propuesto para el Instituto Tecnoloacutegico de

Orizaba Meacutexico

Palabras clave mdash Aacutencora Metodologiacutea Desarrollo de Software

Educativo Requerimientos Calidad

XVI INTRODUCCIOacuteN

Hoy en diacutea la tecnologiacutea esta dentro de las

actividades que realizamos es asiacute que la educacioacuten no

queda exenta de ella por o cual es necesario adaptarse

al movimiento tecnoloacutegico que nos trae grandes

ventajas en la transmisioacuten de conocimientos de una

manera sencilla y dinaacutemica

De esta manera han surgido infinidad de

metodologiacuteas de desarrollo de software educativo el

cual tiene como objetivo ser el apoyo para docentes

alumnos y toda persona que este dentro del proceso de

aprendizaje

Tomando en cuenta este ramillete infinito de

metodologiacuteas surge en el ejemplo propuesto la

adaptacioacuten del Aacutencora en el desarrollo de software

educativo teniendo como objetivo principal la

comprensioacuten de los elementos y conceptos de la

metodologiacutea Aacutencora

Aacutencora es una metodologiacutea enfocada a la

adquisicioacuten de requerimientos para software que

ofrece guiacuteas y elementos de apoyo para la obtencioacuten de

estos requerimientos Al mismo tiempo permite pasar a

la fase de disentildeo de manera sencilla Aprovechando las

ventajas que presenta Aacutencora se le hicieron algunas

adaptaciones con el fin de cubrir algunas

caracteriacutesticas del disentildeo instruccional y enriquecer

Aacutencora habilitaacutendola para la adquisicioacuten de

requerimientos de software educativo

XVII APLICACIOacuteN DE LA METODOLOGIacuteA AacuteNCORA

Como es el objetivo principal la comprensioacuten de la

aplicacioacuten de la metodologiacutea Aacutencora dentro del

desarrollo de software educativo de calidad solo

describiremos los meacutetodos del meacutetodo y los resultados

obtenidos

Claro esta que para ahondar maacutes en tema del

software educativo en si el lector puede recurrir a los

siguientes autores Metodologiacutea de desarrollo de

sistemas multimedia (Vaughan 2006) Propuesta de

metodologiacutea para el disentildeo desarrollo y evaluacioacuten

de software educativo (Reyes 2009) Ingenieriacutea de

software educativo con modelaje orientado por objetos

(Goacutemez 1998) asi como tambieacuten los siguientes

modelos ADDIE (Anaacutelisis Disentildeo Desarrollo

Implantacioacuten y Evaluacioacuten) de (McGriff 2000) y el

disentildeo instruccional aplicado al desarrollo de software

educativo EISE (Especificacioacuten Instruccional de

Software Educativo) de (Hernaacutendez 2005)

] INGENIERIacuteA DE SOFTWARE

29

INGENIERIacuteA DE SISTEMAS

Quienes tienen el mismo objetivo de crear software

educativo de calidad podemos sintetizar de ellos los

siguientes puntos

Anaacutelisis del puacuteblico al que se dirigiraacute el software

Problema oacute necesidad educativa a atender

Anaacutelisis de contenido (Tema a tratar actividades

para alcanzar el objetivo de ensentildeanza y forma de

evaluarlo)

Actividades oacute forma actual de llevar a cabo la

ensentildeanza del tema en cuestioacuten

Elaboracioacuten de guiones metaacuteforas escenarios

Creacioacuten de prototipo oacute Storyboard

Disentildeo de interfaz

Mapas de navegacioacuten

Modelos de datos

Elaboracioacuten de diagramas de contexto diagramas

de flujo o diagramas de casos de uso

Ahora enfocaacutendonos en el aacutencora se establece la

propuesta de seleccionar las actividades de Aacutencora que

permitan obtener los requerimientos de un software

educativo

La Tabla 1 presenta las actividades y artefactos

producidos en las fases de Aacutencora para la elaboracioacuten

de software educativo

TABLA 1 ACTIVIDADES Y ARTEFACTOS DE LA METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO

Metodologiacutea Aacutencora

Fases Actividades y artefactos

Anaacutelisis de

Requerimientos

A traveacutes de entrevistas con los clientes

(maestros y pedagogos) y de la lectura

del respectivo material proporcionado

por ellos se definiraacute la asignatura a la

que se enfocaraacute el software el tema a

tratar y la forma en que se abordaraacute y

evaluaraacute Tambieacuten se estableceraacute el

objetivo general de aprendizaje la

metaacutefora que se emplearaacute y se

determinaraacute el puacuteblico al que se

dirigiraacute el software

Artefactos

Documento que define la asignatura

contenido objetivo general de

aprendizaje metaacutefora y puacuteblico al que

se dirigiraacute el software Guion de la

situacioacuten actual

Recoleccioacuten y

clasificacioacuten de

requerimientos

El guion de la propuesta

computacional reflejaraacute la metaacutefora

que se sigue el ambiente de cada

escena

La bitaacutecora de desarrollo permitiraacute ver

coacutemo el sistema responderaacute a las

diversas acciones que realice el

usuario

En lugar del prototipo raacutepido se

elaboraraacute un Storyboard para presentar

graacuteficamente la estructura de sistema

propuesto

Artefactos

Guion de propuesta computacional

bitaacutecora de desarrollo Storyboard

Resolucioacuten de

conflictos

jerarquizacioacuten y

validacioacuten de

requerimientos

Modificaciones al guion de la

propuesta computacional de acuerdo a

los cambios propuestos por los

maestros y pedagogos

Artefactos

Guion de propuesta computacional e

Storyboard con adecuaciones sentildealas

Cierre

Trasladar los guiones a casos de uso

Artefactos

Casos de uso

Se agregaron algunas caracteriacutesticas a ciertos

artefactos de Aacutencora para poder cubrir los

requerimientos de software educativo Uno de estos

elementos es el guion de la propuesta computacional

al que se propone agregar lo siguiente

Conocimientos previos del usuario Se refiere a los

conocimientos baacutesicos o miacutenimos que debe tener el

alumno para poder interactuar con el moacutedulo

Objetivo de aprendizaje Es el aprendizaje que

debe obtener el alumno despueacutes de haber interactuado

con el moacutedulo

La Figura 1 se presenta la estructura sugerida para el

guion de la propuesta computacional En la bitaacutecora de

desarrollo se propone antildeadir una fila al final de cada

pista donde se describan las situaciones favorables y

no favorables para el cumplimiento del objetivo de

aprendizaje para esa pista en particular Por otra parte

en lugar del prototipo se sugiere utilizar el Storyboard

ya que permite mostrar de manera maacutes completa la

estructura del guion de la propuesta computacional La

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

30

Figura 2 muestra el formato para la elaboracioacuten del

Storyboard

Figura 1 Estructura del guion para la propuesta computacional

Figura 2 Formato para la elaboracioacuten del Storyboard

XVIII RESULTADOS

Aplicando Aacutencora en un ejemplo para la parte de

requerimientos se obtuvo la siguiente informacioacuten

Asignatura Matemaacuteticas

Contenido Estaacute articulado con base en seis ejes

con sus respectivos temas y subtemas que variacutean de

acuerdo al grado escolar Considerando lo anterior se

tiene lo siguiente

a) Grado escolar De segundo hasta quinto grado de

primaria

b) Temas Nuacutemeros naturales capacidad peso

tiempo y ubicacioacuten espacial planteamiento y

resolucioacuten de problemas sencillos en los que se

requiera recolectar y registrar informacioacuten

perioacutedicamente representacioacuten de informacioacuten en

tablas de frecuencia y graacuteficas de barras registros de

los resultados de experimentos aleatorios

representacioacuten de los resultados de un experimento

aleatorio en tablas y graacuteficas

c) Subtemas Planteamiento y resolucioacuten de

problemas que impliquen dos o maacutes operaciones con

nuacutemeros naturales

d) Ejes Introduccioacuten del kiloacutemetro como la unidad

que permite medir grandes distancias y recorridos

largos capacidad peso y tiempo uso del reloj y el

calendario los nuacutemeros sus relaciones y sus

operaciones medicioacuten la prediccioacuten y el azar

tratamiento de la informacioacuten

Objetivo general de aprendizaje Ejercitar las

operaciones aritmeacuteticas baacutesicas interpretar la

informacioacuten y los resultados de la informacioacuten dada

aplicada en situaciones de la vida cotidiana

Con las actividades hasta ahora realizadas se ha

observado que los artefactos de Aacutencora son flexibles y

pueden por lo tanto adaptarse de acuerdo a las

necesidades que implican la adquisicioacuten de

requerimientos de un software educativo Tambieacuten se

aprecian las ventajas de algunos artefactos como la

bitaacutecora de desarrollo que permite determinar las

respuestas del sistema ante las acciones del usuario y

estimar tambieacuten el tiempo que llevaraacute implementar

cada quinteta

La estimacioacuten del tiempo ayuda a tener un valor

aproximado del tiempo de desarrollo de software

Agregar el objetivo de aprendizaje a la bitaacutecora de

desarrollo puede parecer repetitivo despueacutes de

incluirlo en el Storyboard pero esto nos permite ver las

situaciones u obstaacuteculos que pueden impedir que el

objetivo de aprendizaje se alcance y por tanto tenerlos

presente durante el disentildeo A pesar de las ventajas de

la bitaacutecora de desarrollo un inconveniente hasta ahora

encontrado es lo tedioso al manejar muchas quintetas

] INGENIERIacuteA DE SOFTWARE

31

INGENIERIacuteA DE SISTEMAS

cuando por la naturaleza del guion se tienen varios

avisos y mensajes para el usuario Por otra parte los

guiones han ayudado a realizar de manera sencilla el

modelo de casos de uso

En lo referente a la presentacioacuten con los clientes el

guion es un artefacto que pude dar un panorama

general del software que se va a elaborar y queda

reforzada a traveacutes de los Storyboard Cuando se

requieren cambios solicitados por los clientes las

modificaciones a estos artefactos no han sido muy

complicadas dado que por su estructura es faacutecil de

ubicar las secciones y respectivos elementos

XIX CONCLUSIONES

Con los resultados hasta ahora obtenidos se puede

decir que la propuesta permite a los desarrolladores

con poca experiencia en desarrollo de software

educativo obtener los requerimientos de una manera

sencilla

Permite realizar un mejor relevamiento de informacioacuten

de los requerimientos del cliente enfocaacutendonos mas en

este

Es tambieacuten importante mencionar los avances que

tiene y seguiraacute teniendo el software educativo aplicado

no solo a nivel escolar sino tambieacuten al superior

Habiendo revisado el concepto y la aplicacioacuten de la

metodologiacutea Aacutencora en el desarrollo de software

educativo se llegoacute a una comprensioacuten mas extensa de

dicho meacutetodo el cual es de gran importancia dentro de

la ingenieriacutea de Software ya que nos

REFERENCIAS

httpwwwuvmxmisproductividaddocumentsCarmenChay_CIIM2010pdf

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 28: Revista de Ingenieria de Software

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

28

METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO Univ Alejandro Meacutendez Escobar

Universidad San Francisco de Asiacutes

Ingenieriacutea de Sistemas

Ingenieriacutea de Software I

La Paz - Bolivia

amendezusfaedubo

Resumenmdash Al adquirir el software educativo dentro del campo de

desarrollo de software una gran importancia y siendo este

inspiracioacuten de propuestas de innumerables metodologiacuteas que buscan

la elaboracioacuten de un software de calidad

Tomaremos la metodologiacutea Aacutencora enfocada a la fase de

requerimientos y que ofrece elementos que indican las actividades

que deben realizarse los artefactos que se producen y la forma de

obtenerlos

Usando al desarrollo de software educativo como ejemplo de una

mejor comprensioacuten de dicha metodologiacutea analizando la aplicacioacuten

del Aacutencora en un trabajo propuesto para el Instituto Tecnoloacutegico de

Orizaba Meacutexico

Palabras clave mdash Aacutencora Metodologiacutea Desarrollo de Software

Educativo Requerimientos Calidad

XVI INTRODUCCIOacuteN

Hoy en diacutea la tecnologiacutea esta dentro de las

actividades que realizamos es asiacute que la educacioacuten no

queda exenta de ella por o cual es necesario adaptarse

al movimiento tecnoloacutegico que nos trae grandes

ventajas en la transmisioacuten de conocimientos de una

manera sencilla y dinaacutemica

De esta manera han surgido infinidad de

metodologiacuteas de desarrollo de software educativo el

cual tiene como objetivo ser el apoyo para docentes

alumnos y toda persona que este dentro del proceso de

aprendizaje

Tomando en cuenta este ramillete infinito de

metodologiacuteas surge en el ejemplo propuesto la

adaptacioacuten del Aacutencora en el desarrollo de software

educativo teniendo como objetivo principal la

comprensioacuten de los elementos y conceptos de la

metodologiacutea Aacutencora

Aacutencora es una metodologiacutea enfocada a la

adquisicioacuten de requerimientos para software que

ofrece guiacuteas y elementos de apoyo para la obtencioacuten de

estos requerimientos Al mismo tiempo permite pasar a

la fase de disentildeo de manera sencilla Aprovechando las

ventajas que presenta Aacutencora se le hicieron algunas

adaptaciones con el fin de cubrir algunas

caracteriacutesticas del disentildeo instruccional y enriquecer

Aacutencora habilitaacutendola para la adquisicioacuten de

requerimientos de software educativo

XVII APLICACIOacuteN DE LA METODOLOGIacuteA AacuteNCORA

Como es el objetivo principal la comprensioacuten de la

aplicacioacuten de la metodologiacutea Aacutencora dentro del

desarrollo de software educativo de calidad solo

describiremos los meacutetodos del meacutetodo y los resultados

obtenidos

Claro esta que para ahondar maacutes en tema del

software educativo en si el lector puede recurrir a los

siguientes autores Metodologiacutea de desarrollo de

sistemas multimedia (Vaughan 2006) Propuesta de

metodologiacutea para el disentildeo desarrollo y evaluacioacuten

de software educativo (Reyes 2009) Ingenieriacutea de

software educativo con modelaje orientado por objetos

(Goacutemez 1998) asi como tambieacuten los siguientes

modelos ADDIE (Anaacutelisis Disentildeo Desarrollo

Implantacioacuten y Evaluacioacuten) de (McGriff 2000) y el

disentildeo instruccional aplicado al desarrollo de software

educativo EISE (Especificacioacuten Instruccional de

Software Educativo) de (Hernaacutendez 2005)

] INGENIERIacuteA DE SOFTWARE

29

INGENIERIacuteA DE SISTEMAS

Quienes tienen el mismo objetivo de crear software

educativo de calidad podemos sintetizar de ellos los

siguientes puntos

Anaacutelisis del puacuteblico al que se dirigiraacute el software

Problema oacute necesidad educativa a atender

Anaacutelisis de contenido (Tema a tratar actividades

para alcanzar el objetivo de ensentildeanza y forma de

evaluarlo)

Actividades oacute forma actual de llevar a cabo la

ensentildeanza del tema en cuestioacuten

Elaboracioacuten de guiones metaacuteforas escenarios

Creacioacuten de prototipo oacute Storyboard

Disentildeo de interfaz

Mapas de navegacioacuten

Modelos de datos

Elaboracioacuten de diagramas de contexto diagramas

de flujo o diagramas de casos de uso

Ahora enfocaacutendonos en el aacutencora se establece la

propuesta de seleccionar las actividades de Aacutencora que

permitan obtener los requerimientos de un software

educativo

La Tabla 1 presenta las actividades y artefactos

producidos en las fases de Aacutencora para la elaboracioacuten

de software educativo

TABLA 1 ACTIVIDADES Y ARTEFACTOS DE LA METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO

Metodologiacutea Aacutencora

Fases Actividades y artefactos

Anaacutelisis de

Requerimientos

A traveacutes de entrevistas con los clientes

(maestros y pedagogos) y de la lectura

del respectivo material proporcionado

por ellos se definiraacute la asignatura a la

que se enfocaraacute el software el tema a

tratar y la forma en que se abordaraacute y

evaluaraacute Tambieacuten se estableceraacute el

objetivo general de aprendizaje la

metaacutefora que se emplearaacute y se

determinaraacute el puacuteblico al que se

dirigiraacute el software

Artefactos

Documento que define la asignatura

contenido objetivo general de

aprendizaje metaacutefora y puacuteblico al que

se dirigiraacute el software Guion de la

situacioacuten actual

Recoleccioacuten y

clasificacioacuten de

requerimientos

El guion de la propuesta

computacional reflejaraacute la metaacutefora

que se sigue el ambiente de cada

escena

La bitaacutecora de desarrollo permitiraacute ver

coacutemo el sistema responderaacute a las

diversas acciones que realice el

usuario

En lugar del prototipo raacutepido se

elaboraraacute un Storyboard para presentar

graacuteficamente la estructura de sistema

propuesto

Artefactos

Guion de propuesta computacional

bitaacutecora de desarrollo Storyboard

Resolucioacuten de

conflictos

jerarquizacioacuten y

validacioacuten de

requerimientos

Modificaciones al guion de la

propuesta computacional de acuerdo a

los cambios propuestos por los

maestros y pedagogos

Artefactos

Guion de propuesta computacional e

Storyboard con adecuaciones sentildealas

Cierre

Trasladar los guiones a casos de uso

Artefactos

Casos de uso

Se agregaron algunas caracteriacutesticas a ciertos

artefactos de Aacutencora para poder cubrir los

requerimientos de software educativo Uno de estos

elementos es el guion de la propuesta computacional

al que se propone agregar lo siguiente

Conocimientos previos del usuario Se refiere a los

conocimientos baacutesicos o miacutenimos que debe tener el

alumno para poder interactuar con el moacutedulo

Objetivo de aprendizaje Es el aprendizaje que

debe obtener el alumno despueacutes de haber interactuado

con el moacutedulo

La Figura 1 se presenta la estructura sugerida para el

guion de la propuesta computacional En la bitaacutecora de

desarrollo se propone antildeadir una fila al final de cada

pista donde se describan las situaciones favorables y

no favorables para el cumplimiento del objetivo de

aprendizaje para esa pista en particular Por otra parte

en lugar del prototipo se sugiere utilizar el Storyboard

ya que permite mostrar de manera maacutes completa la

estructura del guion de la propuesta computacional La

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

30

Figura 2 muestra el formato para la elaboracioacuten del

Storyboard

Figura 1 Estructura del guion para la propuesta computacional

Figura 2 Formato para la elaboracioacuten del Storyboard

XVIII RESULTADOS

Aplicando Aacutencora en un ejemplo para la parte de

requerimientos se obtuvo la siguiente informacioacuten

Asignatura Matemaacuteticas

Contenido Estaacute articulado con base en seis ejes

con sus respectivos temas y subtemas que variacutean de

acuerdo al grado escolar Considerando lo anterior se

tiene lo siguiente

a) Grado escolar De segundo hasta quinto grado de

primaria

b) Temas Nuacutemeros naturales capacidad peso

tiempo y ubicacioacuten espacial planteamiento y

resolucioacuten de problemas sencillos en los que se

requiera recolectar y registrar informacioacuten

perioacutedicamente representacioacuten de informacioacuten en

tablas de frecuencia y graacuteficas de barras registros de

los resultados de experimentos aleatorios

representacioacuten de los resultados de un experimento

aleatorio en tablas y graacuteficas

c) Subtemas Planteamiento y resolucioacuten de

problemas que impliquen dos o maacutes operaciones con

nuacutemeros naturales

d) Ejes Introduccioacuten del kiloacutemetro como la unidad

que permite medir grandes distancias y recorridos

largos capacidad peso y tiempo uso del reloj y el

calendario los nuacutemeros sus relaciones y sus

operaciones medicioacuten la prediccioacuten y el azar

tratamiento de la informacioacuten

Objetivo general de aprendizaje Ejercitar las

operaciones aritmeacuteticas baacutesicas interpretar la

informacioacuten y los resultados de la informacioacuten dada

aplicada en situaciones de la vida cotidiana

Con las actividades hasta ahora realizadas se ha

observado que los artefactos de Aacutencora son flexibles y

pueden por lo tanto adaptarse de acuerdo a las

necesidades que implican la adquisicioacuten de

requerimientos de un software educativo Tambieacuten se

aprecian las ventajas de algunos artefactos como la

bitaacutecora de desarrollo que permite determinar las

respuestas del sistema ante las acciones del usuario y

estimar tambieacuten el tiempo que llevaraacute implementar

cada quinteta

La estimacioacuten del tiempo ayuda a tener un valor

aproximado del tiempo de desarrollo de software

Agregar el objetivo de aprendizaje a la bitaacutecora de

desarrollo puede parecer repetitivo despueacutes de

incluirlo en el Storyboard pero esto nos permite ver las

situaciones u obstaacuteculos que pueden impedir que el

objetivo de aprendizaje se alcance y por tanto tenerlos

presente durante el disentildeo A pesar de las ventajas de

la bitaacutecora de desarrollo un inconveniente hasta ahora

encontrado es lo tedioso al manejar muchas quintetas

] INGENIERIacuteA DE SOFTWARE

31

INGENIERIacuteA DE SISTEMAS

cuando por la naturaleza del guion se tienen varios

avisos y mensajes para el usuario Por otra parte los

guiones han ayudado a realizar de manera sencilla el

modelo de casos de uso

En lo referente a la presentacioacuten con los clientes el

guion es un artefacto que pude dar un panorama

general del software que se va a elaborar y queda

reforzada a traveacutes de los Storyboard Cuando se

requieren cambios solicitados por los clientes las

modificaciones a estos artefactos no han sido muy

complicadas dado que por su estructura es faacutecil de

ubicar las secciones y respectivos elementos

XIX CONCLUSIONES

Con los resultados hasta ahora obtenidos se puede

decir que la propuesta permite a los desarrolladores

con poca experiencia en desarrollo de software

educativo obtener los requerimientos de una manera

sencilla

Permite realizar un mejor relevamiento de informacioacuten

de los requerimientos del cliente enfocaacutendonos mas en

este

Es tambieacuten importante mencionar los avances que

tiene y seguiraacute teniendo el software educativo aplicado

no solo a nivel escolar sino tambieacuten al superior

Habiendo revisado el concepto y la aplicacioacuten de la

metodologiacutea Aacutencora en el desarrollo de software

educativo se llegoacute a una comprensioacuten mas extensa de

dicho meacutetodo el cual es de gran importancia dentro de

la ingenieriacutea de Software ya que nos

REFERENCIAS

httpwwwuvmxmisproductividaddocumentsCarmenChay_CIIM2010pdf

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 29: Revista de Ingenieria de Software

] INGENIERIacuteA DE SOFTWARE

29

INGENIERIacuteA DE SISTEMAS

Quienes tienen el mismo objetivo de crear software

educativo de calidad podemos sintetizar de ellos los

siguientes puntos

Anaacutelisis del puacuteblico al que se dirigiraacute el software

Problema oacute necesidad educativa a atender

Anaacutelisis de contenido (Tema a tratar actividades

para alcanzar el objetivo de ensentildeanza y forma de

evaluarlo)

Actividades oacute forma actual de llevar a cabo la

ensentildeanza del tema en cuestioacuten

Elaboracioacuten de guiones metaacuteforas escenarios

Creacioacuten de prototipo oacute Storyboard

Disentildeo de interfaz

Mapas de navegacioacuten

Modelos de datos

Elaboracioacuten de diagramas de contexto diagramas

de flujo o diagramas de casos de uso

Ahora enfocaacutendonos en el aacutencora se establece la

propuesta de seleccionar las actividades de Aacutencora que

permitan obtener los requerimientos de un software

educativo

La Tabla 1 presenta las actividades y artefactos

producidos en las fases de Aacutencora para la elaboracioacuten

de software educativo

TABLA 1 ACTIVIDADES Y ARTEFACTOS DE LA METODOLOGIacuteA AacuteNCORA PARA EL

DESARROLLO DE SOFTWARE EDUCATIVO

Metodologiacutea Aacutencora

Fases Actividades y artefactos

Anaacutelisis de

Requerimientos

A traveacutes de entrevistas con los clientes

(maestros y pedagogos) y de la lectura

del respectivo material proporcionado

por ellos se definiraacute la asignatura a la

que se enfocaraacute el software el tema a

tratar y la forma en que se abordaraacute y

evaluaraacute Tambieacuten se estableceraacute el

objetivo general de aprendizaje la

metaacutefora que se emplearaacute y se

determinaraacute el puacuteblico al que se

dirigiraacute el software

Artefactos

Documento que define la asignatura

contenido objetivo general de

aprendizaje metaacutefora y puacuteblico al que

se dirigiraacute el software Guion de la

situacioacuten actual

Recoleccioacuten y

clasificacioacuten de

requerimientos

El guion de la propuesta

computacional reflejaraacute la metaacutefora

que se sigue el ambiente de cada

escena

La bitaacutecora de desarrollo permitiraacute ver

coacutemo el sistema responderaacute a las

diversas acciones que realice el

usuario

En lugar del prototipo raacutepido se

elaboraraacute un Storyboard para presentar

graacuteficamente la estructura de sistema

propuesto

Artefactos

Guion de propuesta computacional

bitaacutecora de desarrollo Storyboard

Resolucioacuten de

conflictos

jerarquizacioacuten y

validacioacuten de

requerimientos

Modificaciones al guion de la

propuesta computacional de acuerdo a

los cambios propuestos por los

maestros y pedagogos

Artefactos

Guion de propuesta computacional e

Storyboard con adecuaciones sentildealas

Cierre

Trasladar los guiones a casos de uso

Artefactos

Casos de uso

Se agregaron algunas caracteriacutesticas a ciertos

artefactos de Aacutencora para poder cubrir los

requerimientos de software educativo Uno de estos

elementos es el guion de la propuesta computacional

al que se propone agregar lo siguiente

Conocimientos previos del usuario Se refiere a los

conocimientos baacutesicos o miacutenimos que debe tener el

alumno para poder interactuar con el moacutedulo

Objetivo de aprendizaje Es el aprendizaje que

debe obtener el alumno despueacutes de haber interactuado

con el moacutedulo

La Figura 1 se presenta la estructura sugerida para el

guion de la propuesta computacional En la bitaacutecora de

desarrollo se propone antildeadir una fila al final de cada

pista donde se describan las situaciones favorables y

no favorables para el cumplimiento del objetivo de

aprendizaje para esa pista en particular Por otra parte

en lugar del prototipo se sugiere utilizar el Storyboard

ya que permite mostrar de manera maacutes completa la

estructura del guion de la propuesta computacional La

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

30

Figura 2 muestra el formato para la elaboracioacuten del

Storyboard

Figura 1 Estructura del guion para la propuesta computacional

Figura 2 Formato para la elaboracioacuten del Storyboard

XVIII RESULTADOS

Aplicando Aacutencora en un ejemplo para la parte de

requerimientos se obtuvo la siguiente informacioacuten

Asignatura Matemaacuteticas

Contenido Estaacute articulado con base en seis ejes

con sus respectivos temas y subtemas que variacutean de

acuerdo al grado escolar Considerando lo anterior se

tiene lo siguiente

a) Grado escolar De segundo hasta quinto grado de

primaria

b) Temas Nuacutemeros naturales capacidad peso

tiempo y ubicacioacuten espacial planteamiento y

resolucioacuten de problemas sencillos en los que se

requiera recolectar y registrar informacioacuten

perioacutedicamente representacioacuten de informacioacuten en

tablas de frecuencia y graacuteficas de barras registros de

los resultados de experimentos aleatorios

representacioacuten de los resultados de un experimento

aleatorio en tablas y graacuteficas

c) Subtemas Planteamiento y resolucioacuten de

problemas que impliquen dos o maacutes operaciones con

nuacutemeros naturales

d) Ejes Introduccioacuten del kiloacutemetro como la unidad

que permite medir grandes distancias y recorridos

largos capacidad peso y tiempo uso del reloj y el

calendario los nuacutemeros sus relaciones y sus

operaciones medicioacuten la prediccioacuten y el azar

tratamiento de la informacioacuten

Objetivo general de aprendizaje Ejercitar las

operaciones aritmeacuteticas baacutesicas interpretar la

informacioacuten y los resultados de la informacioacuten dada

aplicada en situaciones de la vida cotidiana

Con las actividades hasta ahora realizadas se ha

observado que los artefactos de Aacutencora son flexibles y

pueden por lo tanto adaptarse de acuerdo a las

necesidades que implican la adquisicioacuten de

requerimientos de un software educativo Tambieacuten se

aprecian las ventajas de algunos artefactos como la

bitaacutecora de desarrollo que permite determinar las

respuestas del sistema ante las acciones del usuario y

estimar tambieacuten el tiempo que llevaraacute implementar

cada quinteta

La estimacioacuten del tiempo ayuda a tener un valor

aproximado del tiempo de desarrollo de software

Agregar el objetivo de aprendizaje a la bitaacutecora de

desarrollo puede parecer repetitivo despueacutes de

incluirlo en el Storyboard pero esto nos permite ver las

situaciones u obstaacuteculos que pueden impedir que el

objetivo de aprendizaje se alcance y por tanto tenerlos

presente durante el disentildeo A pesar de las ventajas de

la bitaacutecora de desarrollo un inconveniente hasta ahora

encontrado es lo tedioso al manejar muchas quintetas

] INGENIERIacuteA DE SOFTWARE

31

INGENIERIacuteA DE SISTEMAS

cuando por la naturaleza del guion se tienen varios

avisos y mensajes para el usuario Por otra parte los

guiones han ayudado a realizar de manera sencilla el

modelo de casos de uso

En lo referente a la presentacioacuten con los clientes el

guion es un artefacto que pude dar un panorama

general del software que se va a elaborar y queda

reforzada a traveacutes de los Storyboard Cuando se

requieren cambios solicitados por los clientes las

modificaciones a estos artefactos no han sido muy

complicadas dado que por su estructura es faacutecil de

ubicar las secciones y respectivos elementos

XIX CONCLUSIONES

Con los resultados hasta ahora obtenidos se puede

decir que la propuesta permite a los desarrolladores

con poca experiencia en desarrollo de software

educativo obtener los requerimientos de una manera

sencilla

Permite realizar un mejor relevamiento de informacioacuten

de los requerimientos del cliente enfocaacutendonos mas en

este

Es tambieacuten importante mencionar los avances que

tiene y seguiraacute teniendo el software educativo aplicado

no solo a nivel escolar sino tambieacuten al superior

Habiendo revisado el concepto y la aplicacioacuten de la

metodologiacutea Aacutencora en el desarrollo de software

educativo se llegoacute a una comprensioacuten mas extensa de

dicho meacutetodo el cual es de gran importancia dentro de

la ingenieriacutea de Software ya que nos

REFERENCIAS

httpwwwuvmxmisproductividaddocumentsCarmenChay_CIIM2010pdf

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 30: Revista de Ingenieria de Software

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

30

Figura 2 muestra el formato para la elaboracioacuten del

Storyboard

Figura 1 Estructura del guion para la propuesta computacional

Figura 2 Formato para la elaboracioacuten del Storyboard

XVIII RESULTADOS

Aplicando Aacutencora en un ejemplo para la parte de

requerimientos se obtuvo la siguiente informacioacuten

Asignatura Matemaacuteticas

Contenido Estaacute articulado con base en seis ejes

con sus respectivos temas y subtemas que variacutean de

acuerdo al grado escolar Considerando lo anterior se

tiene lo siguiente

a) Grado escolar De segundo hasta quinto grado de

primaria

b) Temas Nuacutemeros naturales capacidad peso

tiempo y ubicacioacuten espacial planteamiento y

resolucioacuten de problemas sencillos en los que se

requiera recolectar y registrar informacioacuten

perioacutedicamente representacioacuten de informacioacuten en

tablas de frecuencia y graacuteficas de barras registros de

los resultados de experimentos aleatorios

representacioacuten de los resultados de un experimento

aleatorio en tablas y graacuteficas

c) Subtemas Planteamiento y resolucioacuten de

problemas que impliquen dos o maacutes operaciones con

nuacutemeros naturales

d) Ejes Introduccioacuten del kiloacutemetro como la unidad

que permite medir grandes distancias y recorridos

largos capacidad peso y tiempo uso del reloj y el

calendario los nuacutemeros sus relaciones y sus

operaciones medicioacuten la prediccioacuten y el azar

tratamiento de la informacioacuten

Objetivo general de aprendizaje Ejercitar las

operaciones aritmeacuteticas baacutesicas interpretar la

informacioacuten y los resultados de la informacioacuten dada

aplicada en situaciones de la vida cotidiana

Con las actividades hasta ahora realizadas se ha

observado que los artefactos de Aacutencora son flexibles y

pueden por lo tanto adaptarse de acuerdo a las

necesidades que implican la adquisicioacuten de

requerimientos de un software educativo Tambieacuten se

aprecian las ventajas de algunos artefactos como la

bitaacutecora de desarrollo que permite determinar las

respuestas del sistema ante las acciones del usuario y

estimar tambieacuten el tiempo que llevaraacute implementar

cada quinteta

La estimacioacuten del tiempo ayuda a tener un valor

aproximado del tiempo de desarrollo de software

Agregar el objetivo de aprendizaje a la bitaacutecora de

desarrollo puede parecer repetitivo despueacutes de

incluirlo en el Storyboard pero esto nos permite ver las

situaciones u obstaacuteculos que pueden impedir que el

objetivo de aprendizaje se alcance y por tanto tenerlos

presente durante el disentildeo A pesar de las ventajas de

la bitaacutecora de desarrollo un inconveniente hasta ahora

encontrado es lo tedioso al manejar muchas quintetas

] INGENIERIacuteA DE SOFTWARE

31

INGENIERIacuteA DE SISTEMAS

cuando por la naturaleza del guion se tienen varios

avisos y mensajes para el usuario Por otra parte los

guiones han ayudado a realizar de manera sencilla el

modelo de casos de uso

En lo referente a la presentacioacuten con los clientes el

guion es un artefacto que pude dar un panorama

general del software que se va a elaborar y queda

reforzada a traveacutes de los Storyboard Cuando se

requieren cambios solicitados por los clientes las

modificaciones a estos artefactos no han sido muy

complicadas dado que por su estructura es faacutecil de

ubicar las secciones y respectivos elementos

XIX CONCLUSIONES

Con los resultados hasta ahora obtenidos se puede

decir que la propuesta permite a los desarrolladores

con poca experiencia en desarrollo de software

educativo obtener los requerimientos de una manera

sencilla

Permite realizar un mejor relevamiento de informacioacuten

de los requerimientos del cliente enfocaacutendonos mas en

este

Es tambieacuten importante mencionar los avances que

tiene y seguiraacute teniendo el software educativo aplicado

no solo a nivel escolar sino tambieacuten al superior

Habiendo revisado el concepto y la aplicacioacuten de la

metodologiacutea Aacutencora en el desarrollo de software

educativo se llegoacute a una comprensioacuten mas extensa de

dicho meacutetodo el cual es de gran importancia dentro de

la ingenieriacutea de Software ya que nos

REFERENCIAS

httpwwwuvmxmisproductividaddocumentsCarmenChay_CIIM2010pdf

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 31: Revista de Ingenieria de Software

] INGENIERIacuteA DE SOFTWARE

31

INGENIERIacuteA DE SISTEMAS

cuando por la naturaleza del guion se tienen varios

avisos y mensajes para el usuario Por otra parte los

guiones han ayudado a realizar de manera sencilla el

modelo de casos de uso

En lo referente a la presentacioacuten con los clientes el

guion es un artefacto que pude dar un panorama

general del software que se va a elaborar y queda

reforzada a traveacutes de los Storyboard Cuando se

requieren cambios solicitados por los clientes las

modificaciones a estos artefactos no han sido muy

complicadas dado que por su estructura es faacutecil de

ubicar las secciones y respectivos elementos

XIX CONCLUSIONES

Con los resultados hasta ahora obtenidos se puede

decir que la propuesta permite a los desarrolladores

con poca experiencia en desarrollo de software

educativo obtener los requerimientos de una manera

sencilla

Permite realizar un mejor relevamiento de informacioacuten

de los requerimientos del cliente enfocaacutendonos mas en

este

Es tambieacuten importante mencionar los avances que

tiene y seguiraacute teniendo el software educativo aplicado

no solo a nivel escolar sino tambieacuten al superior

Habiendo revisado el concepto y la aplicacioacuten de la

metodologiacutea Aacutencora en el desarrollo de software

educativo se llegoacute a una comprensioacuten mas extensa de

dicho meacutetodo el cual es de gran importancia dentro de

la ingenieriacutea de Software ya que nos

REFERENCIAS

httpwwwuvmxmisproductividaddocumentsCarmenChay_CIIM2010pdf

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 32: Revista de Ingenieria de Software

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

32

Redes Bayesianas en la

Ingenieriacutea del Software Luis Miguel Ticona

1

Universidad San Francisco de Asiacutes Av 20 de Octubre esq Belisario Salinas (Plaza Avaroa)

La Paz - Bolivia 1lticonacopyusfaedubo

Resumen - Recientemente modelos graacuteficos que combinan la

probabilidad y la teoriacutea de grafos estaacuten siendo aplicados a

problemas de la ingenieriacutea del software donde la incertidumbre

estaacute presente En el presente artiacuteculo veremos de manera general

sobre las redes bayesianas sus fundamentos en la teoriacutea de la

probabilidad y ademaacutes se describiraacute diferentes extensiones de las

redes bayesianas asiacute como su aplicacioacuten a la ingenieriacutea del

software y teacutecnicas de mineriacutea de datos

Palabras clave- redes bayesianas graacuteficos aciacuteclicos nodos

grafo probabilidades inferencia discretizacioacuten dominio

I Introduccioacuten

Las redes bayesianas son graacuteficos aciacuteclicos dirigidos que

los nodos representan variables y los arcos que los unen

codifican dependencias condicionales entre las variables

Los nodos pueden representar cualquier tipo de variable ya

sea un paraacutemetro medible (o medido) una variable latente

o una hipoacutetesis Existen algoritmos que realizan inferencias

y aprendizaje basados en redes bayesianas

A modo de ejemplo la red Bayesiana de la Figura 1

representa un modelo simplificado de estimacioacuten de errores

en la ingenieriacutea del software Cada nodo del grafo

representa una variable del dominio defectos insertados

detectados y residuales (nuacutemero de defectos que

permanecen en el coacutedigo una vez entregado al

cliente)Cada arco del grafo representa una relacioacuten causal

entre variables los defectos insertados influyen en el

nuacutemero de defectos detectados durante el testeo y el

nuacutemero de defectos residuales a su vez el nuacutemero defectos

influye en el nuacutemero de defectos residuales En este caso

cada variable puede tomar solamente dos valores bajo o

alto Las relaciones entre variables son caracterizadas por

medio de las tablas de probabilidad tambieacuten mostradas en

la Figura 1

Fig 1 Red Bayesiana simplificada para la estimacioacuten de defectos

Una vez que se tienen evidencias el estado de ciertas

variables es decir cuando tenemos conocimiento o

podemos observar su estado se actualizan las tablas de

probabilidad propagando las nuevas probabilidades

Fig 2 Modo de ejecucioacuten sin evidencias introducidas

En general los programas para manipular redes Bayesianas

tienen dos modos de operar un modo de edicioacuten que

permite la creacioacuten de redes y la especificacioacuten de tablas de

probabilidad como muestra la figura 1 Y un modo de

consulta (ver Figuras 2 y 3) donde se introducen las

evidencias y se propagan las nuevas probabilidades En el

caso de la Figura 2 muestra las probabilidades de cada

variable sin evidencias introducidas En este caso las

probabilidades estaacuten distribuidas uniformente y no se

puede decir mucho del estado del dominio

Fig 3 Modo de ejecucioacuten con evidencias introducidas

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 33: Revista de Ingenieria de Software

] INGENIERIacuteA DE SOFTWARE

33

INGENIERIacuteA DE SISTEMAS

Sin embargo si tenemos la certeza (100 de probabilidad) de

que el nuacutemero de defectos insertados es bajo y de que un alto

nuacutemero de defectos fueron detectados durante el testeo la red

Bayesiana propaga las probabilidades estimando que el

nuacutemero de defectos residuales seraacute bajo con una probabilidad

de 08 y alto con una probabilidad de 02 La figura 3 muestra

dicho escenario las barras que marcan un 100 indican

variables con estado conocido el resto muestran las nuevas

probabilidades despueacutes de propagar las evidencias Noacutetese que

la salida es una distribucioacuten de probabilidades en vez de un

uacutenico valor Naturalmente consideraremos el valor con mayor

probabilidad como valor estimado

II Fundamentos de las redes Bayesianas

Formalmente una red Bayesiana es un grafo dirigido

aciacuteclico Los nodos representan variables aleatorias del

dominio X1 X2hellip Xn y los arcos representan relaciones de

dependencia entre variables Las redes Bayesianas asumen

que un nodo depende solamente de sus padres y que cada

nodo estaacute asociado a una tabla de probabilidades

condicionales que definen la probabilidad de cada estado

en los que puede estar una variable dados los posibles

estados de sus padres Una red Bayesiana se muestra la

probabilidad de distribucioacuten conjunta para un conjunto de

X1 X2hellip Xn tal que

P(x1 x2 hellipxn ) = prod i=1hellipn P (xi | padres (X))

Donde xi representa el valor que toma la variable X y

padres (X) denota los valores que tienen el conjunto de los

padres en la red Bayesiana del nodo X Por tanto cada

estado de una variable puede ser calculado multiplicando

un nuacutemero reducido de valores en las tablas de

probabilidad

III Tipos de Evidencia

Hay dos tipos de evidencia

- Evidencia firme o especiacutefica (instanciacioacuten)se da cuando

se asigna un valor concreto a una variable

- Evidencia parcial o virtual de un nodo permite actualizar

las probabilidades a priori de los estados que puede tomar

la variable

IV Variables Continuas

Las redes Bayesianas permiten usar variables continuas sin

embargo al haber un nuacutemero infinito de estados el

problema reside en la especificacioacuten de las tablas de

probabilidad condicional Hay dos formas de contrarrestar

estos problemas

La discretizacioacuten consiste en dividir el rango de las

variables continuas en un nuacutemero finito en un dominio a

modelar puede tomar cualquier valor entre 0 y 100 es

posible dividir el rango en un nuacutemero finito de intervalos

(0 - 20) (20 - 40) y (40 ndash 100) Naturalmente al discretizar

se pierde informacioacuten que depende del dominio y el

nuacutemero de intervalos Es el meacutetodo maacutes comuacuten ya que la

mayoriacutea de las herramientas y algoritmos se basan en

nodos discretos

El segundo meacutetodo consiste en usar modelos parameacutetricos

como la distribucioacuten Gausiana que es representada por dos

paraacutemetros la media y la varianza

V Inferencia en Redes Bayesianas

Proporciona un sistema de inferencia donde una vez

encontradas nuevas evidencias sobre el estado de ciertos

nodos se modifican sus tablas de probabilidad y a su vez

las nuevas probabilidades son propagadas al resto de los

nodos a esto se lo denomina inferencia probabiliacutestica es

decir que algunas variables pueden ser calculadas dadas la

evidencias de otras variables

Los algoritmos de propagacioacuten exactos maacutes simples

incluyen Inferencia mediante Enumeracioacuten y Eliminacioacuten

de variables (Russel y Norvihg 2003) Los algoritmos de

propagacioacuten exacta funcionan bien con redes de hasta

aproximadamente 30 nodos sin embargo no son

apropiados para redes con maacutes nodos o altamente conexas

Para estos casos se han desarrollado algoritmos

aproximados

Los meacutetodos aproximados se clasifican en meacutetodos de

simulacioacuten estocaacutestica y los meacutetodos de buacutesqueda

determiniacutestica

VI Mineriacutea de Datos

Sin embargo a menudo se tienen base de datos del dominio

(en la ingenieriacutea del software por ejemplo histoacutericos de

proyectos) para automatizar en cierta medida la creacioacuten

de redes Bayesianas siguiendo los pasos tiacutepicos de la

mineriacutea de datos que son los siguientes

Preparacioacuten de los datos Los son formateados de forma

que las herramientas puedan manipularlos juntar diferentes

bases de datos etc

Seleccioacuten y limpieza de los datos Este paso consiste en la

seleccioacuten de variables discretizar los datos decidir sobre

valores anoacutemalos ruido etc

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 34: Revista de Ingenieria de Software

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

34

Mineriacutea de datos En este paso se produce la extraccioacuten del

conocimiento donde se aplican los algoritmos El proceso

de mineriacutea de datos estaacute compuesto de dos tareas

principales

- Introduccioacuten del mejor modelo cualitativo partiendo de los

datos yo conocimiento previo de los expertos del dominio

- Estimacioacuten de las tablas de probabilidades se definen las

tablas de probabilidad siendo el meacutetodo maacutes sencillo

Interpretacioacuten de los resultados en el caso de las redes

bayesianas consistiraacute en realizar inferencias basaacutendose en

las evidencias obtenidas

Asimilacioacuten y explotacioacuten de los resultados

En la figura 4 muestra los pasos indicando que el experto

de dominio necesita complementar los algoritmos de

mineriacutea de datos

Fig 4 Pasos tiacutepicos en la construccioacuten de redes Bayesianas partiendo de

base de datos

Como ejemplo de la creacioacuten de redes Bayesianas en la

ingenieriacutea del software imaginemos que una compantildeiacutea con

una base de datos de proyectos con los atributos definidos

en la Tabla 1 y un sub conjunto de los datos podriacutea ser

como los que se muestra Tabla 1 Ejemplo de atributos de una base de datos de proyectos

Vari

able

Descripcioacuten Tipo

Com

pleji

dad

Tipo de

proyecto(orgaacute

nico mediano

y complejo)

Discreta

Tam

antildeo

No de liacuteneas

de coacutedigo(en

miles)

Continu

a

Esfu

erzo

Horas Continu

a

Dura

cioacuten

No de meses Continu

a

Pers

onal

No de

personas a

tiempo

completo

requeridas

para llevar a

cabo el

proyecto

Continu

a

Dise

ntildeo

Calidad Discreta

Def

Intro

No de defectos

introducidos

durante el

desarrollo

Continu

a

EsfT

est

Calidad

experiencia el

equipo de

testeo

Discreta

defR

es

No de defectos

encontrados

posteriores a la

entrega

continua

Tabla 2 En cursiva y negrita se destacan posibles errores en los datos

Tabla 3 Muestra parcialmente como los atributos continuos pueden ser

discretizados

En la figura 5 se muestra la pantalla de la herramienta Hugi

(2006) para refinar la red obtenida por el algoritmo de

mineriacutea de aprendizaje de la red Fi

g

5

Pa

ntal

la

de

H

ugi

n

par

a

reso

lv

er in

certidumbres de la estructura de red Por ejemplo la Figura 6 muestra que si el Tamantildeo

(Tamano_d es la variable dis-cretizada) estaacute entre las 335

y 445 miles de liacuteneas de coacutedigo la probabilidad de

que la duracioacuten sea menor de 1235 (etiquetado como

lt1235lsquo) es de 096 la pro-babilidad de que esteacute entre

1235 y 1625 es de 1962 la probabilidad de que esteacute

entre 1915 y 2145 es de 096 y de que sea mayor de 2145

es solamente 096 Na-turalmente la prediccioacuten es que la

duracioacuten estimada estaraacute dentro el intervalo con mayor

probabilidad Para obtener valores concretos podriacutea usarse

la esperanza ma-temaacutetica E[X]=sumixip(xi) donde xi podriacutea

ser el valor medio del intervalo

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 35: Revista de Ingenieria de Software

] INGENIERIacuteA DE SOFTWARE

35

INGENIERIacuteA DE SISTEMAS

Fig 6 Ejemplo de inferencia utilizando Hugin

VII Redes Bayesianas Orientadas a Objetos

Las Redes Bayesianas Orientadas a Objetos (OOBN en sus

siglas en ingleacutes) facilitan la representacioacuten de redes con un

gran nuacutemero de nodos de una manera modular (Koller y

Pfeffer 1997) Por tanto es posible reutilizar subredes ya

construidas dentro del sistema en las que cada subred tiene

su propia identidad ahorrando tiempo y esfuerzo a los

ingenieros del conocimiento encargados de modelar el

sistema

Hasta la fecha muy pocas herramientas implementan redes

orientadas a objetos una de ellas es Hugin (2006) en la

que se incluyen nodos llamados instancias que representan

subredes Las instancias o moacutedulos contienen nodos de

interfaz que pueden ser de entrada o de salida La Figura 7

(a) muestra un ejemplo de subred y su equivalente de forma

abstracta (Figura 7 (b)) Las subredes se comportan como

redes Bayesianas normales de manera que tambieacuten

pueden ser usadas para el razonamiento Para realizar la

inferencia en las redes Bayesianas orientadas a objetos lo

normal es transformarlas en redes normales y entonces

realizar las inferencias Fig 7 (a) OOBN extendida (b) OOBN representada de modo abstracto

En

ingenieriacutea del software Neil et al (2000) han aplicado

las redes Bayesianas orientadas a objetos y han

propuesto una metodologiacutea basada en una serie de

modismos para ayudar a los expertos del dominio a crear

redes complejas con un gran nuacutemero de nodos en un

proyecto llamado SERENE (SafEty and Risk

Evaluation using Bayesian Networks)

VIII Diagrama de Influencia

Los diagramas de influencia extienden las redes

Bayesianas con dos nuevos nodos llamados utilidad (o

valor) y decisioacuten para modelar expliacutecitamente la toma de

decisiones

Fig 8 Tipos de nodos en un diagrama de influencias

Por ejemplo imagiacutenese un escenario en la ingenieriacutea del

software donde el gestor de proyectos necesita decidir si

lleva a cabo inspecciones (reuniones formales don-de se

evaluacutea el disentildeo o coacutedigo) o no Es de sobra conocido que

las inspecciones de coacutedigo reducen el nuacutemero de defectos

y que corregir un error en un sistema ya en produccioacuten es

mucho maacutes caro que lo que seriacutea durante el testeo sin

embargo las inspecciones son costosas debido al nuacutemero

de horas invertidas por el personal Por tanto puede ser

beneficioso recabar informacioacuten adicional antes de

decidirse por la realizacioacuten de inspecciones La Tabla 4

muestra la funcioacuten de utilidad combinando el coste de

realizar inspecciones junto con el hecho de que si

entregamos al cliente un producto con alto nuacutemero de

errores se perderiacutea dinero en el proyecto A menor nuacutemero

de errores mayor beneficio proporcionaraacute el proyecto Tabla 4 Funcioacuten de utilidad

Un posible escenario se muestra en el diagrama de

influencia de la Figura 9 con el nodo de decisioacuten

Inspeccionar y el nodo valor Coste asociado con el nodo

Residual

Fig

9

Diag

ra

m

a

de

infl

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 36: Revista de Ingenieria de Software

INGENIERIacuteA DE SOFTWARE

INGENIERIacuteA DE SISTEMAS

36

uencia con bajo nuacutemero de errores introducidos

Por otro lado si sabemos que el nuacutemero de defectos

introducidos durante el desarrollo es bajo el proyecto

generaraacute beneficios se hagan o no inspecciones pero

generaraacute mayor beneficio si no se llevan a cabo las

inspecciones (la Figura 10 muestra este escenario)

Fig 10 Diagrama de influencia con un alto nuacutemero de errores

introducidos

IX Aplicaciones de las redes Bayesianas a la Ingenieriacutea del

Software

Las redes bayesianas son un tipo de modelos de mineriacutea de

datos que pueden ser utilizados en cualquiera de las

siguientes actividades de negocio

Prevencioacuten del fraude

Prevencioacuten del abandono de clientes

Marketing personalizado

Mantenimiento2

Scoring de clientes

Clasificacioacuten de datos estelares

X Propiedades y limitaciones de las redes Bayesianas

Las redes Bayesianas tienen un nuacutemero de caracteriacutesticas

que hacen que sean apropiadas para la ingenieriacutea del

software

- Representacioacuten graacutefica

- Modelado cualitativo y cuantitativo

- Inferencia bidireccional

- Anaacutelisis de sensibilidad

- Incertidumbre

- Valores de confianza

A pesar de sus ventajas tienen las siguientes limitaciones o

dificultades a la hora de crearlas

- Estructura

- Variables ocultas

- Probabilidades inconsistentes

XI Conclusiones

Las redes Bayesianas modelos que combinan la teoriacutea de

grafos y de probabilidad son aplicadas a la toma de

decisiones en dominios donde la incertidumbre representa

un papel importante como es el caso de la ingenieriacutea del

software Aunque este tipo de modelos han sido conocidos

desde hace mucho tiempo solamente han podido ser

aplicados desde finales de los antildeos 80 gracias al desarrollo

de nuevos algo-ritmos que permiten la creacioacuten y

propagacioacuten de probabilidades en redes suficientemente

complejas como para representar problemas reales En este

capiacutetulo se han introducido sus extensiones y uso en la

ingenieriacutea del software donde han sido aplicadas Se ha

proporcionado una visioacuten general de la metodologiacutea para su

construccioacuten asiacute como algunos algoritmos que podriacutean

considerarse como parte de la mine-riacutea de datos Ademaacutes

se han comparado con otras teacutecnicas maacutes tradicionales

dentro de la ingenieriacutea del software y se han descrito sus

ventajas e inconvenientes

Reconocimientos

Fenton (1999) ha descrito ―La clave de un uso maacutes

eficiente de meacutetricas del software no se encuentra en

meacutetricas maacutes potentes sino en la combinacioacuten

inteligente de diferentes meacutetricas Una vez dominada

dicha combinacioacuten se pueden estudiar meacutetodos

estadiacutesticos avanzados para obtener buenas predicciones

Las redes Bayesianas son uno de los meacutetodos con un futuro

prometedor

Referencias [1] Fenton N E Neil M (1999) A Critique of Software Defect Prediction

Models IEEE Trans-actions on Software Engineering 25 (5) pp 675-689

[2] Hugin (2006) Hugin httpwwwhugincom [3]Fenton N E Neil M (2000) Software Metrics A Roadmap en

Finkelstein A (Ed) The Fu-ture of Software Engineering ACM Press

[4] Redes Bayesianas Wikipeid httpwwwwikipediaorg

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS

Page 37: Revista de Ingenieria de Software

] INGENIERIacuteA DE SOFTWARE

37

INGENIERIacuteA DE SISTEMAS