Está en la página 1de 45

MARCO TERICO

2.1 METODOLOGIAS Una metodologa es una coleccin de procedimientos, tcnicas, herramientas y documentos auxiliares que ayudan a los desarrolladores de software en sus esfuerzos por implementar nuevos sistemas de informacin. Una metodologa est formada por fases, cada una de las cuales se puede dividir en sub-fases, que guiarn a los desarrolladores de sistemas a elegir las tcnicas ms apropiadas en cada momento del proyecto y tambin a planificarlo, gestionarlo, controlarlo y evaluarlo. (D.E. Avison, 1995) Se tiene la siguiente puntuacin del 1 al 3 para cada propiedad en funcin de los criterios elegidos. 1 2 3 2.1.1 Propiedades Bajo Medio Alto

a) Tipo de metodologa En general determina todo el enfoque de la investigacin influyendo en instrumentos, y hasta la manera de cmo se analiza los datos recaudados. As, el punto de los tipos de investigacin en una investigacin va a constituir un paso importante en la metodologa, pues este va a determinar el enfoque del mismo (tradicional o gil). b) Facilidad de uso (usabilidad) Definicin ms extendida por ISO grado de eficacia, eficiencia y satisfaccin con la que usuarios especficos pueden lograr objetivos especficos, en contextos de uso especficos. Evala la percepcin del usuario respecto a la sencillez de las aplicaciones, cmo se siente el usuario al mando de la aplicacin, cmo de fcil es moverse en software y cunto disfruta el usuario con el software. c) Ciclo de vida Un modelo de ciclo de vida como pueden ser el iterativo, secuencial, etc. De esta manera se establecen los pasos en el proceso de desarrollo y se pueden ubicar los recursos adecuadamente. 9

MARCO TERICO

d) Fiable La fiabilidad del software se define en trminos estadsticos como la probabilidad de operacin libre de fallos de un programa de computadora es un entorno determinado y durante un tiempo especfico. e) Herramientas El conjunto de mtodos basados en principios, se integran en el marco del ciclo de vida de los sistemas. La metodologa debe recoger las tareas a realizar, los responsables de cada una de ellas y los productos a obtener en el desarrollo de un sistema de informacin. Para realizar una tcnica, podemos apoyarnos en las herramientas de software que automatizan su aplicacin, ya sea dentro de una tcnica o para producir un entregable de acuerdo al estndar. f) Estndares En un grupo de trabajo deben establecerse normas que definan la metodologa a la que debe someterse todo el personal involucrado en el desarrollo de sistemas con objeto de obtener productos de alta calidad que resulten fciles de mantener por cualquier miembro del equipo de trabajo. Los programadores que trabajan en la empresa o institucin debern apegarse a los estndares convenidos para el desarrollo de sistemas. g) Mtricas Medida efectuada sobre los programas, documentacin, su desarrollo y mantenimiento, o sobre algn aspecto del sistema en desarrollo o del proceso empleado que permite, previa comparacin con unos valores de referencia, obtener conclusiones sobre el aspecto medido con el fin de adoptar las decisiones necesarias. h) Capacidad de Prueba Indica que no se trata del primer lanzamiento pblico o semi pblico de prueba, pero a su vez tampoco se trata de la ltima liberacin pblica. La produccin de cdigo est dirigida por las pruebas unitarias. stas son establecidas por el cliente antes de escribirse el cdigo y son ejecutadas constantemente ante cada modificacin del sistema.

10

MARCO TERICO

i)

Riesgo Maneras de medir el riesgo. Un plan debe tener en cuenta los posibles problemas que pueden ocurrir durante el proceso de desarrollo, el impacto de estos problemas y que acciones deberan ser llevadas a cabo para solucionar o prevenir estos problemas. La gestin de los riesgos es la responsabilidad diaria de los project managers y desarrolladores

j)

Incertidumbre Los modelos de ciclo de vida del software detallados en este acpite desean tener cierta medida de la incertidumbre. Y muchos de estos ciclos de vida consideran que se puede medir, en un sentido de deseo, como la cantidad de informacin necesaria para evitar los riesgos posibles cuando se emprende la tarea de desarrollo de software.

k) Estimacin Prevenir que se sobrepasen las fechas de entrega y los costes. Es el resultado probable calculado, que regularmente se aplica a cuestiones cuantitativas como costos y lapsos de tiempo. Es el clculo de la duracin, del esfuerzo y/o costo requerido para completar una tarea o un proyecto. 2.1.2 Modelo Cascada (waterfall) El modelo cascada se caracteriza por ser un modelo secuencial. Secuencial quiere decir que las etapas se llevan a cabo una detrs de la otra, sin superponerse temporalmente. 2.1.2.1 Propiedades tem 1 2 3 4 5 6 7 8 Propiedades Tipo de metodologa Facilidad de uso Ciclo de vida Fiable Herramientas Estndares Mtricas Capacidad de Prueba Valor Tradicional 3 Lineal, Secuencial 1 3 3 3 2 11

MARCO TERICO

9 10 11

Riesgo Incertidumbre Estimacin

1 1 3

Tabla 2.1: Propiedades del Modelo Cascada Fuente: (P.Letelier, 2009)1,3,4,8,9 (Paredes, 2009) 2,5,6,7,10,11

2.1.2.2

Caractersticas

Las actividades estn relacionadas secuencialmente Cada fase empieza cuando se ha terminado la fase anterior La realizacin de bucles de realimentacin entre etapas, permitiendo que se puedan resolver los problemas detectados que provengan de una fase anterior

En l se identifican ya prcticamente todas las clases de actividades distintas que intervienen en el desarrollo y explotacin del software. Ayuda a prevenir que se sobrepasen las fechas de entrega y los costes esperados Al final de cada fase el personal tcnico y los usuarios tienen la oportunidad de revisar el progreso del proyecto. La implementacin se pospone hasta que no se comprendan los objetivos. (Cataldi, 2000)

2.1.2.3

Procesos

Definicin de los requisitos Diseo de software Implementacin y pruebas unitarias Integracin y pruebas del sistema Operacin y mantenimiento

12

MARCO TERICO

Figura 2.1: Modelo de desarrollo en cascada Fuente: (P.Letelier, 2009)

2.1.2.4

Ventajas El diseo y la planificacin es sencilla sigue un proceso secuencial. La calidad del producto resultante es alta Permite trabajar con personal poco calificado Se tiene todo bien organizado y las fases no se mesclan Es perfecto para proyectos rgidos, donde se especifiquen bien los requerimientos. Sus fases son reconocidas por los desarrolladores Los usuarios lo pueden comprender fcilmente. Hace uso de prototipos, en la que se establece un ciclo antes de llegar a la fase de mantenimiento, verificando que el sistema final est libre de fallos

2.1.2.5

Desventajas Las iteraciones son costosas e implican rehacer trabajo debido a la produccin y aprobacin de documentos. Aunque son pocas iteraciones, es normal congelar parte del desarrollo y continuar con las siguientes fases. Los problemas se dejan para su posterior resolucin, lo que lleva a que 13

MARCO TERICO

estos sean ignorados o corregidos de una forma poco elegante. Existe una alta probabilidad de que el software no cumpla con los requisitos del usuario por el largo tiempo de entrega del producto. Es inflexible a la hora de evolucionar para incorporar nuevos requisitos. Es difcil responder a cambios en los requisitos. Los proyectos reales raramente siguen el flujo secuencial que propone el modelo, siempre hay iteraciones y se crean problemas en la aplicacin del paradigma. Si los requerimientos del usuario varan es muy difcil satisfacerlo si el proceso se encuentra en las ltimas fases. (Cantabria)

2.1.3

Rational Unified Process (RUP) El ciclo de vida de RUP es UP o proceso unificado y describe la dimensin temporal del proyecto, esto es un proyecto dividido en fases e iteraciones. Se caracteriza por utilizar UML, una gramtica bien definida y usa una terminologa para la definicin de los procesos. (Per Kroll, 2006)

2.1.3.1

Propiedades

tem 1 2 3 4 5 6 7 8 9 10 11

Propiedades Tipo de metodologa Facilidad de uso Ciclo de vida Fiable Herramientas Estndares Mtricas Capacidad de Prueba Riesgo Incertidumbre Estimacin

Valor Tradicional/gil 1 Iterativo e Incremental 1 3 2 3 3 1 2 3

Tabla 2.2: Propiedades de la Metodologa RUP Fuente: (P.Letelier, 2009)1,3,4,8,9 (Paredes, 2009) 2,5,6,7,10

14

MARCO TERICO

2.1.3.2

Caractersticas Tiene una forma disciplinada de asignar tareas y responsabilidades (quien hace que, cuando y como) Pretende implementar las mejores prcticas en ingeniera de software Centrado en los Modelos: Los diagramas son un vehculo de comunicacin ms expresivo que las descripciones en lenguaje natural. Se trata de minimizar el uso de descripciones y especificaciones textuales del sistema.

Guiado por lo casos de uso: Los casos de uso son el instrumento para validar la arquitectura del software y extraer los casos de prueba. Centrado en la arquitectura: Los modelos son proyecciones del anlisis y el diseo constituye la arquitectura del producto a desarrollar.

Iterativo e incremental: Durante todo el proceso de desarrollo se producen versiones incrementales del producto en desarrollo (Gezzi Ghezzi &al)

2.1.3.3

Proceso. UP divide el proyecto en cuatro fases Inicio Elaboracin Construccin del sistema Transicin

Figura 2.2: Modelo de desarrollo en PU Fuente: (Software, 2006)

15

MARCO TERICO

2.1.3.4

Ventajas

Evaluacin en cada fase que permite cambios de objetivos Funciona bien en proyectos de innovacin. Es sencillo, ya que sigue los pasos intuitivos necesarios a la hora de desarrollar el software. Seguimiento detallado en cada una de las fases. El uso de UML hace que se apegue a estndares de la industria Las tazas de adaptacin a la organizacin Existen herramientas que ayudan a implementar el RUP en todas las areas de la empresa Definen actividades, roles y responsabilidades desde el jefe de proyectos hasta el equipo de pruebas

2.1.3.5

Desventajas

La evaluacin de riesgos es compleja Excesiva flexibilidad para algunos proyectos Estamos poniendo a nuestro cliente en una situacin que puede ser muy incmoda para l. Nuestro cliente deber ser capaz de describir y entender a un gran nivel de detalle para poder acordar un alcance del proyecto con l. Sistemas hbridos no todo encaja en metodologas orientadas a objetos UML no es efectivo. Conocimientos avanzados la sintaxis de modelacin requieren de notaciones que no requieren los desarrolladores promedio. Costos Comparar las herramientas y entrenar a los equipos puede ser caro en trminos econmicos para la empresa. Limitacin con el ciclo de vida El RUP tiene limitaciones con el ciclo de vida complejo no contempla el retiro del software. (XPyRup) 16

MARCO TERICO

2.2 ARQUITECTURAS Entendemos como diseo conceptual de arquitectura al proceso de definicin de la arquitectura software, intentando aislar en la medida de lo posible las tecnologas de implementacin final. Es decir, se trata de la definicin de la estructura y comportamiento de los componentes del sistema, utilizando en primer lugar las ideas base o patrones de diseo que mejor se adapten a nuestras necesidades, posteriormente, concretando las tecnologas que las soportan (qu tecnologas), y finalmente definiendo el modelo de programacin (cmo utilizamos las tecnologas). (Phase Design)

2.2.1

Diagrama de contexto Es el modelo fundamental para la definicin de la arquitectura que permite extraer los principales requerimientos funcionales, como as tambin identificar los tipos de usuario, sistemas e intercambios. No solo sirve desde un punto de vista funcional sino tambin en lo referente a infraestructura.

2.2.2

Mdulos y componentes Los mdulos o sub sistemas agrupan componentes arquitecturales con una razn que pueden ser desde el punto de vista de negocio, organizacional o tecnolgica. En general poseen un mismo dominio del conocimiento. Los componentes son bloques de funcionalidad nicos del sistema con interfaces definidas que deben seguir con ciertos principios de diseo arquitectural y se agrupan en componentes de nivel 1 y 2 de acuerdo a la granularidad y los niveles dependen del tamao de la aplicacin.

2.2.3

Propiedades

a) Atributos de un componente Modularidad Est relacionada con la descomposicin de un sistema de software y al agrupamiento de componentes en subsistemas, como ser transformado de una unidad funcional/desarrollo en algo fsico o distribuible. 17

MARCO TERICO

Bajo Acoplamiento El acoplamiento es el grado en el cual un componente depende de otro, puede ser alto o bajo. Bajo acoplamiento es que un componente no depende con la manera en la cual un componente maneja internamente su lgica o que la cantidad de interrupciones sean bajas y a travs de interfaces claras.

Alta Cohesin La cohesin es la medida del grado de dependencia entre los elementos de un componente. Las responsabilidades asignadas a los componentes necesitan estar relacionadas en alguna manera para que el componente muestre signos de buena o alta cohesin.

nico punto de referencia Cualquier responsabilidad dentro de nuestro sistema debe estar localizada y asignada un solo componente de acuerdo a los principios enumerados, con el objetivo de eliminar la duplicacin de esfuerzo al construir un componente que tenga la misma responsabilidad lo cual agrega esfuerzo en la construccin, en el testing y mantenimiento.

b) Patrones de Software 1. Estilo arquitectico Los estilos arquitectnicos son patrones de software que expresan una estructura organizacional para los sistemas de software. Estos proveen un conjunto de tipos de elementos, sus responsabilidades e incluyen reglas, restricciones y las guas para el relacionamiento de estos. Existen diferentes estilos arquitectnicos como ser: Tubera-filtros Organizacin de abstraccin de datos y orientacin a objetos Invocacin implcita, basada en eventos Sistemas en capas Repositorios Intrpretes orientados por tablas Procesos distribuidos. Una forma particular de proceso distribuido es, por ejemplo, la arquitectura cliente-servidor. Organizaciones programa principal / subrutina. 18

MARCO TERICO

Arquitecturas de software especficas de dominio Sistemas de transicin de estado Sistemas de procesos de control Estilos heterogneos

2. Patrn de Diseo Un patrn de diseo proporciona un esquema para refinar los subsistemas o componentes de un sistema de software, o las relaciones entre ellos. En l se describe comnmente la estructura de comunicacin de los componentes que resuelve un problema de diseo general, en un contexto particular. (Ivan, 2010)

c) Organizacin de componentes

1. Interfaz usuario. Cliente pesado Se denomina cliente pesado al programa "cliente" de una arquitectura cuando la mayor carga de cmputo est desplazada hacia la computadora que ejecuta dicho programa. Tambin se conoce como cliente grueso, un cliente pesado es la anttesis de un cliente liviano. Cliente liviano Un cliente liviano es una computadora cliente o un software de cliente en una arquitectura de red que depende primariamente del servidor central para las tareas de procesamiento, y principalmente se enfoca en transportar la entrada y la salida entre el usuario y el servidor remoto. Cliente ria (aplicaciones de Internet enriquecidas) Las rich Internet applications, o RIA , son aplicaciones web que tienen la mayora de las caractersticas de las aplicaciones de escritorio tradicionales. Estas aplicaciones utilizan un navegador web estandarizado para ejecutarse y por medio de complementos o mediante una mquina virtual se agregan las caractersticas adicionales. Las RIA surgen como una combinacin de 19

MARCO TERICO

las ventajas que ofrecen las aplicaciones web y las aplicaciones tradicionales. 2. Domino de negocio Transaction script (o servicios) Las reglas o lgica de negocio se expresan por medio de scripts, secuencia de instrucciones sin conservar estado, cada servicio tiene una interfaz separada de su implementacin. Transaction script organiza la lgica de negocio de las rutinas en cada rutina maneja una sola peticin de la capa de presentacin. Pasos necesarios para realizar una tarea se identifican y se expresan utilizando la semntica del lenguaje. Rutinas comunes se pueden dividir en subprogramas. Domain model Al contrario que el patrn Transaction Script, la idea ahora es poder soportar lgica de negocio muy compleja por medio de Clases.El patrn Domain Model, nos dice que ahora habr que modelar el negocio y bajarlo a nivel de entidades, que en algn momento se traducirn a clases. Table module Este patrn tiene su base en el modelo E-R de una base de datos, ya que ahora las clases contendas en la capa de negocio son una representacin de las tablas de la base de datos. Es decir que ahora habr una Clase que se encargar de administrar todo el comportamiento y lo datos que una tabla en particular. Este Patrn hace uso de la fortaleza que tienen las bases de datos relacionales, como los ndices de las tablas mediante los cuales podemos obtener informacin particular de una forma ms rpida.

3. Persistencia Archivos. Los archivos son los mecanismos ms antiguos y simples para almacenar informacin, hay diferentes tipos de formatos que fueron evolucionando a lo largo del tiempo para mejorar las inserciones, bsquedas y lecturas. Muchos de ellos terminan siendo base de datos, los archivos por lo general 20

MARCO TERICO

no cuentan con un proceso secundario que los procese, si no que la misma aplicacin es la que se encarga de abrirlos, accederlos, leerlo, actualizarlos y cerrarlos. Base Datos. Las bases de Datos, son programas que se encargan de almacenar la informacin fsicamente independizando del como al que la usa. Permite compartir la BD entre varios programas, tiene un mecanismo para recuperarse si algo falla, nos permite establecer reglas de integridad, etc. Base objetos Las bases de objeto permiten unir las mejores prcticas, los lenguajes de programacin orientados a objeto y la robustez de las bases de datos relacionales, trabaja con las relaciones de objeto como herencia y polimorfismo (Nick Rozanski, 2005)

2.2.4

Arquitectura capas jerrquicas Organizado jerrquicamente en capas, donde cada capa provee servicios a la capa superior y es servido por la capa inferior, los componentes son cada una de las capas, los conectores son los protocolos de interaccin entre las capas. (Csar)

2.2.4.1 Proceso El sistema se organiza en capas. Cada una provee un conjunto de servicios a las capas superiores y requiere servicios de las inferiores.

Modelo estricto: una capa slo utiliza servicios de la inmediata inferior. Modelo relajado: se pueden saltar capas. Definicin de protocolos mediante los que interactan las capas

21

MARCO TERICO

figura2. 3: Arquitectura Capas jerrquicas Fuente: (Csar)

2.2.4.2 Ventajas Facilita la descomposicin del problema en varios niveles de abstraccin. Soporta la mejora, los cambios solo afectan a las capas vecinas Se pueden cambiar las implementaciones respetando las interfaces con las capas adyacentes.

2.2.4.3 Desventajas No siempre es fcil estructurar en capas ni identificar los niveles de abstraccin a partir de los Requerimientos La interpretacin de comandos en mltiples niveles puede afectar el desempeo. (Csar)

2.2.5

Arquitectura MVC (Modelo vista controlador) El Modelo Vista Controlador (MVC) es un patrn de arquitectura de software que separa los datos de una aplicacin, la interfaz de usuario, y la lgica de control en tres componentes distintos (Modelo, Vista y Controlador). El Patrn MVC se ve frecuentemente en aplicaciones Web, donde la Vista es la pgina HTML y el cdigo que provee de datos dinmicos a la pgina; el Modelo es el Sistema de Gestin de Base de Datos y la Lgica de negocio; el Controlador es el responsable de recibir los eventos de entrada desde la Vista. (Prestashop 5 Estrellas, 2010) 22

MARCO TERICO

2.2.5.1 Proceso El Modelo: Consiste en. Data Transfer Objects (dto's): Java Beans que sirven para transferir informacin entre clases Data Accs Objects (dao): Clases Java que sirven para acceder a los datos Una fuente de datos configurada con JNDI. La Vista: Que en este caso sern las JSP El Controlador: Que es un servlet que recibe las peticiones del cliente y las gestiona.

figura2.4 : Arquitectura MVC Fuente: (Prestashop 5 Estrellas, 2010)

2.2.5.2 Ventajas

Clara separacin entre interfaz, lgica de negocio y de presentacin, que adems provoca parte de las ventajas siguientes.

Sencillez para crear distintas representaciones de los mismos datos. Facilidad para la realizacin de pruebas unitarias de los componentes, as como de aplicar desarrollo guiado por pruebas (TDD).

Reutilizacin de los componentes. Simplicidad en el mantenimiento de los sistemas. Facilidad para desarrollar prototipos rpidos. Los desarrollos suelen ser ms escalables. 23

MARCO TERICO

2.2.5.3 Desventajas

Tener que ceirse a una estructura predefinida, lo que a veces puede incrementar la complejidad del sistema. Hay problemas que son ms difciles de resolver respetando el patrn MVC.

La curva de aprendizaje para los nuevos desarrolladores se estima mayor que la de modelos ms simples como Webforms.

La distribucin de componentes obliga a crear y mantener un mayor nmero de ficheros. (Prestashop 5 Estrellas, 2010)

2.2.6

Atributos de calidad Performance y escalabilidad Tiempo que requiere el sistema para responder a un evento o estmulo, o bien el nmero de eventos procesados en un intervalo de tiempo. La performance de un sistema depende de: Tiempo de respuesta: Es el tiempo que toma para completar una interaccin especifica con el sistema. Rendimiento: Es la cantidad de carga de trabajo el sistema es capaz de manejar en u periodo de tiempo unitario. Es importante tener en cuenta que el rendimiento se hace con valores de tiempo unitarios. Escalabilidad: Es la habilidad de un sistema para manejar el crecimiento en la caga de trabajo. La misma se puede deber a, principalmente, 2 razones: aumento de la cantidad de transacciones/mensajes/jobs, aumento de la complejidad del trabajo de a cualquiera de estas tareas. Predictibilidad: Nos referimos al hecho de que transacciones similares se completen en periodos de tiempo similares, ms all del momento en que sean ejecutadas. Recursos de hardware: El HW debe ser considerado muy tempranamente en un proyecto, el mismo necesita tiempo para estar listo y cuesta dinero. 24

MARCO TERICO

Carga pico: cualquier sistema experimenta una cada de performance en la medida que se siga incrementando trabajo. Disponibilidad Proporcin del tiempo que el sistema est en ejecucin. Se mide como el tiempo entre fallas o la rapidez en que el sistema puede reiniciar la operacin cuando ocurre una falla. Clases de servicio: Cuando hablamos de tipos de servicio, no hay que restringirse solamente a Disponible/No disponible. Downtime planificado: Downtime es el momento en que el sistema no estar funcionando. Virtualmente cualquier sistema necesitara algn tiempo de downtime planificado. Downtime no planificado: El Down time no planificado, por el contrario, ocurre debido algn tipo de falla de HW o SW no esperado. Tiempo de reparacin: En la disponibilidad d, la falla es solo el primer problema, inmediatamente viene el siguiente problema, cunto tiempo tardaremos en rectificar la falla. Dependiendo la falla, podremos rectificar el problema antes. Recuperacion de desastres: Se da en los casos en que un sistema falla completamente y no est ms disponible, puede ser por una falla o por algn tipo de desastre. En estos casos se necesitara un completo proceso de recuperacin de desastres para restaurar el servicio.

Modificabilidad Habilidad para hacer cambios al sistema de una forma rpida y poco costosa. Es el atributo de calidad ms ntimamente relacionado con la arquitectura. Magnitud del cambio: La magnitud del cambio puede ir desde solamente correccin de errores o cambios cosmticos hasta cambios de funcionalidades completas. 25

MARCO TERICO

Posibilidades de cambio: Agregar posibilidades de modificaciones a las diferentes partes de un sistema trae aparejados costos, por lo cual hay que tener muy en cuenta que partes tienen reales posibilidades de ser

modificadas de modo de agregar estas propiedades a las mismas. Dimensiones del cambio: Los cambios pueden ser de diferentes tipos, resulta aconsejable tratar de dividirlos de modo que puedan ser ms manejables: Funcional, plataforma, contexto. Tiempos necesarios para el cambio: Hay requerimientos de cambios que tiene que ser satisfechos en muy poco tiempo, para otros, en cambio, contaremos con ms tiempo, para planificarlo, desarrollarlo y probarlo. Confiabilidad del cambio: Cualquier cambio que se realice, debe ser hecho de forma de minimizar el impacto o cualquier posibilidad de error en el sistema. Cuando pagar por el cambio: Hacer sistemas extremadamente flexibles ser, sin duda alguna, ms caro de construir. Sistemas ms rgidos sern, con mucha probabilidad, ms baratos de construir hasta el primer relase. Preservacin del conocimiento: Mientras se est haciendo el desarrollo de un sistema, es ms fcil realizar modificaciones. Una vez que el sistema esta productivo. Seguridad Medida de la capacidad del sistema para resistir intentos de uso y negacin de servicios a usuarios no autorizados sin restar servicios a los usuarios autorizados. Polticas de seguridad: Puede considerarse como la especificacin de seguridad de un sistema, ya que define todos los constraints de seguridad que el sistema debe aplicar, una poltica de seguridad tpica define la poltica de acceso a la informacin.

26

MARCO TERICO

Amenazas (threats): Son las formas posibles en que un atacante puede romper con el conjunto de constraints descripto en las polticas las

amenazas ms comunes son: cracking del password, DoS (Denial-ofService), ingeniera social. Mecanismos de seguridad: Son el conjunto de tecnologas,

configuraciones y procedimiento disponibles para aplicar las polticas de seguridad. Responsabilidad: Podra denominarse a la capacidad de auditar cualquier accin hasta llegar a la persona responsable de la misma en forma univoca. Disponibilidad: En este caso la disponibilidad se trata de asegurar que un atacante no impida la posibilidad de disponer de un recurso en la forma necesitada. Deteccin y recuperacin: Evitar completamente un acceso no autorizado o que se explote algn tipo de vulnerabilidad es virtualmente imposible. Usabilidad Gran parte de los mecanismos para lograr usabilidad no tienen relacin con la arquitectura: modelo mental del usuario del sistema reflejado en la interfaz usuaria, distribucin de elementos y colores en la pantalla. Otros elementos s tienen relacin con la arquitectura: la informacin relevante para el usuario debe estar disponible para una determinada interfaz, debe disponerse de un conector que traiga esta informacin al componente que corresponda la eficiencia tiene implicancias en la usabilidad. Usabilidad de la interfaz de usuario: Obviamente el concern principal es que tan fcil resulta la utilizacin de todas interfaces del sistema, por que aplica a los usuarios del sistema y tambin a los operadores, administradores o cualquier otro actor que interactu con el mismo.

27

MARCO TERICO

Flujos de procesos: Los flujos de trabajo tienen que ser simples y directos, flujos de trabajo complicados van a traer mltiples complicaciones a un sistema Calidad de la informacin: La informacin que llegue a un sistema debe contar, de la mejor manera posible, con las siguientes caractersticas: Precisa, Relevante, Consistente, Oportuna. Alineamiento con los skills de los usuarios: Hay muchos factores que pueden impactar el conocimiento de los usuarios, principalmente el contexto de donde viene y su experiencia con los sistemas informticos, esto es un factor a tener en cuenta, un sistemas con muchas explicaciones y preguntas puede aburrir a un usuario avanzado. Testeabilidad Facilidad con la cual el software puede mostrar sus defectos (tpicamente a travs de pruebas de ejecucin). Probabilidad de que, suponiendo que el software tiene al menos un defecto, fallar en la siguiente prueba. Las condiciones necesarias: controlabilidad - poder controlar el estado interno de las componentes, observabilidad - poder observar las salidas (outputs). Confiabilidad de los cambios: Como lo vimos previamente, los cambios que se realizan en el software deben ser confiables, por esta razn nuestro software debe ser lo ms testeable posible, logrando probar al mximo las funcionalidades ante los cambios. Riesgos de Releases: Similar al punto anterior, cualquier release que sale de desarrollo para otro ambiente debe ser lo ms confiable posible y reducir cualquier riesgo de que falle y tenga que volver o , lo que sera peor, retrasar las fechas de produccin. Tipos de test a ser realizados: Existen diferentes de test, el arquitecto debe estar capacitado para saber cules utilizar y que momentos: Unitario, Integracin, Aceptacin, Performance, Regresin. (Len Bass, 2003)

28

MARCO TERICO

2.3 MANEJADORES DE BASE DE DATOS Una base de datos es una coleccin de informacin organizada de forma que un programa de ordenador pueda seleccionar rpidamente los fragmentos de datos que necesite. Las bases de datos tradicionales se organizan por campos, registros y archivos. (masadelante)

2.3.1

Propiedades a) Gestor de base de datos Son un tipo de software muy especfico, dedicado a servir de interfaz entre la base de datos, el usuario y las aplicaciones que la utilizan. b) Rendimiento Medida o cuantificacin de la velocidad/resultado con que se realiza una tarea o proceso. Las BD permiten que los objetos hagan referencia directamente a otro mediante apuntadores suaves. Esto hace que las BD pasen ms rpido del objeto A al objeto B que las BDR, las cuales deben utilizar comandos JOIN para lograr esto. Incluso el JOIN optimizado es ms lento que un recorrido de los objetos. As, incluso sin alguna afinacin especial, una BDOO es en general ms rpida en esta mecnica de caza-apuntadores. c) Capacidad Se refiere a la cantidad de datos que pueden almacenarse en un dispositivo de almacenamiento. Esta capacidad puede ser medida en bytes, kilobytes, megabytes, gigabytes, terabytes, etc. d) Eficiencia manejo de concurrencia A mayor eficiencia menor la cantidad de recursos que se emplearn, logrando mejor optimizacin y rendimiento. La concurrencia es la propiedad de los sistemas que permiten que mltiples procesos sean ejecutados al mismo tiempo, y que potencialmente puedan interactuar entre s. e) Licencia Conjunto de permisos que un desarrollador da para la distribucin, uso y/o modificacin de la aplicacin que desarroll. 29

MARCO TERICO

f) Multiplataforma Se dice que un elemento (programas, lenguajes de programacin, elementos de hardware) es multiplataforma cuando tiene la capacidad de funcionar en ms de un sistema operativo con similares caractersticas y sin que su funcionalidad vare en exceso. g) Maneja buena seguridad La seguridad se relaciona a diversas tcnicas, aplicaciones y dispositivos encargados de asegurar la integridad y privacidad de la informacin de un sistema informtico y sus usuarios h) Soporta procedimientos almacenados Es un programa (o procedimiento) el cual es almacenado fsicamente en una base de datos. Su implementacin vara de un gestor de bases de datos a otro. (Asubadin, junio 2006)

2.3.2

SQL Server SQL es el lenguaje estndar para la gestin de bases de datos. Es el lenguaje utilizado por los programadores para desarrollar sus aplicaciones y con el que podemos realizar todas las tareas necesarias para explotar al completo una base de datos. Con la aparicin de los servidores de datos, las aplicaciones pueden conectarse a un servidor para la transmisin y el trabajo de datos. 2.3.2.1 Propiedades

tem 1 2 3 4 5 6 7 8

Propiedades Gestor de base de datos Rendimiento Capacidad Eficiencia manejo de concurrencia Licencia libre Multiplataforma Maneja buena seguridad Soporta procedimientos almacenados
Tabla 2.5:Propiedades SQL Server Fuente: (Asubadin, junio 2006)

Valor 3 3 3 3 1 1 3 3

30

MARCO TERICO

2.3.2.2 Caractersticas Soporte de transacciones. Escalabilidad, estabilidad y seguridad. Soporta procedimientos almacenados. Incluye tambin un potente entorno grfico de administracin, que permite el uso de comandos DDL y DML grficamente. Permite trabajar en modo cliente-servidor, donde la informacin y datos se alojan en el servidor y las terminales o clientes de la red slo acceden a la informacin. 2.3.2.3 Ventajas Soporte de transacciones Escalabilidad, estabilidad y seguridad Soporta procedimientos almacenados Incluye tambin un potente entorno grfico de administracin, que permite el uso de comandos DDL y DML grficamente. Permite trabajar en modo cliente-servidor, donde la informacin y datos se alojan en el servidor y las terminales o clientes de la red slo acceden a la informacin. Adems permite administrar informacin de otros servidores de datos.

2.3.2.4 Desventajas MSSQL requiere de un sistema operativo Microsoft Windows. La relacin calidad-precio est muy debajo comparado con Oracle La principal desventaja es la enorme cantidad de memoria RAM que utiliza para la instalacin y utilizacin del software. Una de las desventajas de SQL es que si lo quieres para prcticas no te va hacer til porque se prohben muchas cosas tiene restricciones en lo particular me parase ms viable usar MySQL es mucho mejor adems de ser un software gratis.

La relacin calidad-precio est muy debajo comparado con Oracle. 31

MARCO TERICO

2.3.3

MySQL Es el gestor de base de datos ms popular usado en la red. Sin embargo desde sus inicios su objetivo ha sido ser el gestor de base de datos libre ms rpido y libre pero sacrificando muchas caractersticas como el ser compatible con ACID, procedimientos almacenados y otras caractersticas (que ahorran cientos de lneas de cdigo fuente).Uno de los puntos fuertes de MySQL es su facilidad de uso y la documentacin existente. Est tan extendido, que gran cantidad de

plataformas web estn construidas contando con MySQL. 2.3.3.1 Propiedades

tem 1 2 3 4 5 6 7 8

Propiedades Gestor de base de datos Rendimiento Capacidad Eficiencia manejo de concurrencia Licencia libre Multiplataforma Maneja buena seguridad Soporta procedimientos almacenados
Tabla 2.6:Propiedades MySql Fuente: (Asubadin, junio 2006)

Valor 3 3 3 2 3 2 2 1

2.3.3.2 Caractersticas. Las principales caractersticas: Escrito en C y en C++ Probado con un amplio rango de compiladores diferentes Funciona en diferentes plataformas Proporciona sistemas de almacenamiento transaccionales y no transaccionales Un sistema de reserva de memoria muy rpido basado en threads Un sistema de privilegios y contraseas que es muy flexible y seguro, y que permite verificacin basada en el host MySQL maneja ciertas caractersticas nicas:

32

MARCO TERICO

Mltiples motores de almacenamiento permitiendo al usuario escoger la que sea ms adecuada para cada tabla de la base de datos. Agrupacin de transacciones, reuniendo mltiples transacciones de varias conexiones para incrementar el nmero de transacciones por segundo.

2.3.3.3 Ventajas MySQL software es Open Source Velocidad al realizar las operaciones, lo que le hace uno de los gestores con mejor rendimiento. Bajo costo en requerimientos para la elaboracin de bases de datos, ya que debido a su bajo consumo puede ser ejecutado en una mquina con escasos recursos sin ningn problema. Facilidad de configuracin e instalacin. Soporta gran variedad de Sistemas Operativos Baja probabilidad de corromper datos, incluso si los errores no se producen en el propio gestor, sino en el sistema en el que est. Su conectividad, velocidad, y seguridad hacen de MySQL Server altamente apropiado para acceder bases de datos en Internet El software MySQL usa la licencia GPL

2.3.3.4 Desventajas Un gran porcentaje de las utilidades de MySQL no estn documentadas. No es intuitivo, como otros programas (ACCESS).

2.4 HERRAMINETAS DE DESARROLLO

2.4.1

ENTORNOS DE TRABAJO El entorno/marco de trabajo desde el desarrollo de software, es una estructura de soporte definida, en la cual otro proyecto de software puede ser

33

MARCO TERICO

organizado y desarrollado. Estas son algunas framework: Bibliotecas Lenguajes de scripting

caractersticas de los

Software para desarrollo y unir diferentes componentes de un proyecto de programas Facilitar el desarrollo de software Evitar los detalles de bajo nivel, permitiendo concentrar ms esfuerzo y tiempo en identificar los requerimientos del software

2.4.1.1 Propiedades

a) Facilidad de uso La facilidad de uso evala la percepcin del usuario respecto a la sencillez de las aplicaciones, cmo se siente el usuario al mando de la aplicacin, cmo de fcil es moverse en software y cunto disfruta el usuario con el software. b) Compilacin Cuando se desarrolla un programa, en la fase de codificacin se llevar a cabo la compilacin, que consiste en que el compilador traducir el cdigo fuente a cdigo mquina, tambin llamado cdigo objeto, siempre y cuando, el propio compilador no detecte ningn error en dicho cdigo fuente c) Escalabilidad Escalabilidad es la capacidad de un sistema para soportar ms carga de trabajo, usualmente debida al aumento de usuarios que lo utilizan. d) Seguridad Protege la integridad y la privacidad de la informacin almacenada en un sistema informtico. Los servicios de autenticacin y autorizacin que son proporcionados mediante el sistema operativo y sus ficheros de identificacin.

34

MARCO TERICO

e) Rendimiento En informtica, medida o cuantificacin de la velocidad/resultado con que se realiza una tarea o proceso. En una computadora, su rendimiento no depende slo del microprocesador como suele pensarse, sino de la suma de sus componentes como la memoria, el bus, los diversos dispositivos, etc. y sus softwares. f) Portabilidad Se refiere a la capacidad de un programa o sistema de ejecutarse en diferentes plataformas o arquitecturas con mnimas modificaciones. g) Coste El costo o coste es el gasto econmico que representa la fabricacin de un producto o la prestacin de un servicio. Si bien es cierto que se pueden encontrar en el mercado productos a precios muy reducidos e incluso gratis, en funcin de la solucin escogida (hay que tener en cuenta que las soluciones gratuitas o baratas no incluyen todos los servicios). (Padilla & Prez)

2.4.1.2 Marco de trabajo .NET


.NET Framework es la plataforma de desarrollo de cdigo administrado de

Microsoft. Est formado por una serie de herramientas y libreras con las que se pueden crear todo tipo de aplicaciones, desde las tradicionales aplicaciones de escritorio (WPF o Windows Forms ) hasta aplicaciones para XBOX (XNA) pasando por desarrollo web (ASP.NET), desarrollo para mviles (compact framework), aplicaciones de servidor (WPF, WCF), etctera. (Framework) 2.4.1.2.1 Propiedades tem 1 2 3 4 5 6 Criterios Facilidad de Uso(entorno de desarrollo) Compilacin Escalabilidad Seguridad Portabilidad / Multiplataforma Mltiples lenguajes de programacin Valor 3 3 2 2 1 2 35

MARCO TERICO

7 8 9 10 11

Rendimiento Velocidad de desarrollo Reutilizacin Estndar abierto (Open Source) Coste


Tabla 2.7: Propiedades .NET Fuente: (Padilla & Prez)

2 3 1 1 2

2.4.1.2.2

Arquitectura Es una infraestructura de desarrollo que est compuesta por diversos recursos, entre los cuales se destaca el ms importante:

CLR Mquina virtual sobre la cual se ejecutan las aplicaciones. BCL El framework tambin define una librera base de clases la cual puede acceder desde cualquier lenguaje desarrollado para la plataforma.

CLS Por encima de la infraestructura se ubicar un conjunto de reglas bsicas que debe implementar un lenguaje para poder ser parte de la familia .NET, como el C#, el VB.NET, Managed C++, etc.

Figura2.5: Arquitectura .NET Fuente: (Padilla & Prez)

36

MARCO TERICO

2.4.1.2.3 Caractersticas Proporciona un desarrollo de aplicaciones sencillo y rpido gracias a que gran parte de las funcionalidades que tradicionalmente deba crear el programador, vienen implementadas en el entorno de ejecucin. Administra el cdigo en tiempo de ejecucin, en todo lo referente a su carga, disposicin en memoria, recuperacin de memoria no utilizada a travs de un recolector de memoria, adems de caractersticas de gestin a bajo nivel (administracin de memoria, por ejemplo), que en ciertos lenguajes, eran labor del programador. Proporciona un sistema comn de tipos para todos los lenguajes del entorno, gestionando la seguridad del cdigo que es ejecutado. Adems dispone de un diseo abierto a lenguajes y herramientas de desarrollo creadas por otros fabricantes. Facilita la distribucin e instalacin de aplicaciones, ya que en teora, es posible instalar una aplicacin simplemente copiando los ficheros que la componen en uno de los directorios del equipo en el que se vaya a ejecutar. 2.4.1.2.4 Ventajas 2.4.1.2.5 Entorno de desarrollo altamente productivo Posibilidad de utilizacin de una amplia gama de lenguajes de programacin C# es un lenguaje muy completo y con excelentes caractersticas

Desventajas Entorno de desarrollo no disponible en otras plataformas implementaciones del .NET framework aun no son totalmente suficientes

2.4.1.3 Marco de Trabajo Java Enterprise Edition (JEE) JEE no es un lenguaje particular de java, sino que es una plataforma que habilita soluciones para desarrollo, uso efectivo y manejo de multicapas en aplicaciones centralizadas en el servidor. La principal funcionalidad es 37

MARCO TERICO

utilizarlo en desarrollos de aplicaciones empresariales, debido a que comprenden un conjunto de especificaciones y funcionalidades orientadas a negocios. Entre sus ventajas se encuentran la gran robustez, fiabilidad, estabilidad y seguridad. 2.4.1.3.1 Propiedades tem 1 2 3 4 5 6 7 8 9 10 11 2.4.1.3.2 Criterios Facilidad de Uso(entorno de desarrollo) Compilacin Escalabilidad Seguridad Portabilidad / Multiplataforma Mltiples lenguajes de programacin Rendimiento Velocidad de desarrollo Reutilizacin Estndar abierto (Open Source) Coste
Tabla 2.8: Propiedades .JEE Fuente: (Padilla & Prez)

Valor 1 1 2 2 3 1 2 1 3 3 2

Arquitectura Capa cliente Capa web Capa de negocio Capa de datos

Figura2.6: Estilos arquitectnicos: de Java EE Fuente: Jatun

38

MARCO TERICO

2.4.1.3.3

Caractersticas Posibilidad de altas productividades en el desarrollo de las distintas tecnologas JEE para la integracin de aplicaciones corporativa e integracin de sistemas existentes. Mayor Escalabilidad al describir las caractersticas bsicas de transacciones y desarrollando distintos tipos de componentes de aplicacin JEE con modelos flexibles de seguridad. Libertad de eleccin de plataformas de desarrollo y produccin, lo que define los aspectos necesarios que puedan solucionar una determinada problemtica. El desarrollo de aplicaciones Web utilizando conceptos de la arquitectura JEE que permiten la construccin de este tipo de aplicaciones. La utilizacin de herramientas libres que agilizan el desarrollo de software con JEE y que permiten el funcionamiento en los distintos mdulos de ejecucin.

2.4.1.3.4

Ventajas Tecnologa altamente madura Muchos entornos de desarrollo alternativos Existe una implementacin de la JRE para casi cualquier plataforma

2.4.1.3.5

Desventajas Permite solo la utilizacin de java como lenguaje de programacin No ofrece un entorno de desarrollo altamente productivo

2.4.2

LENGUAJES DE PROGRAMACION Un lenguaje de programacin es aquel elemento dentro de la informtica que nos permite crear programas mediante un conjunto de instrucciones, operadores y reglas de sintaxis; que pone a disposicin del programador para que este pueda comunicarse con los dispositivos hardware y software existentes.

39

MARCO TERICO

2.4.2.1 Propiedades a) Sencillez Claridad, sencillez y unidad (legibilidad) la sintaxis del lenguaje afecta la facilidad con la que un programa se puede escribir, por prueba, y ms tarde entender y modificar. b) Robustez Es la capacidad de los productos software de reaccionar adecuadamente ante situaciones excepcionales. c) Seguridad La seguridad se relaciona a diversas tcnicas, aplicaciones y

dispositivos encargados de asegurar la integridad y privacidad de la informacin de un sistema informtico y sus usuarios. d) Interpretado Un lenguaje interpretado es un lenguaje de programacin que est diseado para ser ejecutado por medio de un intrprete, en contraste con los lenguajes compilados e) Dinamicidad Mtodo para reducir el tiempo de ejecucin de un algoritmo mediante la utilizacin de subproblemas superpuestos y subestructuras ptimas. f) Portabilidad El trmino "portabilidad" describe la capacidad de usar un programa de software en diferentes tipos de equipos. Para poder utilizar un programa de software escrito en un cdigo ensamblador en otro tipo de equipo. g) Threads Cualquier Proceso posee al menos un hilo o thread de ejecucin. Cuando un proceso posee un solo hilo de ejecucin, posee un nico contexto con todos los parmetros representativos de su estado. h) Garbage Colection (Recoleccin automtica de basura) Explica cmo se asignan los recursos, ofrece un detallado paso a paso la descripcin de cmo funciona el algoritmo de la basura

recogida. Tambin se discute la forma de recursos, puede limpiar 40

MARCO TERICO

correctamente cuando el recolector de basura decide liberar a la memoria de un recurso y la manera de forzar a un objeto de limpiar cuando se libera. La recoleccin automtica de basura absuelve a los desarrolladores de seguimiento del uso de la memoria y saber cuando la memoria esta libre. i) Polimorfismo El polimorfismo es la capacidad de un solo operador o nombre de subprograma para referirse a varias definiciones en funcin del contexto, es decir, de los tipos de datos de los argumentos y del resultado. (Besteiro & Rodrguez) (Richter, 1999) 2.4.2.2 Lenguaje C# C# es un lenguaje de programacin orientado a objetos desarrollado y

estandarizado por Microsoft como parte de su plataforma.NET, que despus fue aprobado como un estndar por la ECMA e ISO. su sintaxis bsica deriva de C/C++ y utiliza el modelo de objetos de la plataforma .NET el cual es similar al de Java. C# fue diseado para combinar el control de lenguajes de bajo nivel como C y la velocidad de programacin de lenguajes de alto nivel como Visual Basic.

2.4.2.2.1

Propiedades

tem 1 2 3 4 5 6 8 9 10

Propiedades Sencillez Robustez Seguridad Interpretado Dinamicidad Portabilidad Threads Garbage Colection Polimorfismo

Valor 3 3 3 2 1 3 3 3 Soporta

Tabla 2.9:Propiedades C# Fuente: (C#)

41

MARCO TERICO

2.4.2.2.2

Caractersticas Implementa Seguridad de Tipos Orientado a Objetos Sintaxis parecida a C, C++ y Java, facilita la curva de aprendizaje, simplifica el uso de C++, proporciona caractersticas que no estaban en Java cuando sali C# (algunas ya estn en Java a partir de 1.5)

C# facilita el desarrollo de componentes de software a travs de: Firmas de mtodos encapsulados denominadas delegados, que permiten notificaciones de eventos con seguridad de tipos. Propiedades, que actan como descriptores de acceso para variables miembro privadas. Atributos, que proporcionan metadatos declarativos sobre tipos en tiempo de ejecucin. Comentarios en lnea de documentacin XML

2.4.2.2.3

Interoperabilidad, Para comunicarse con Windows como haca C++. Ventajas CIL (el lenguaje intermedio de .NET) est estandarizado, mientras que los bytecodes de java no lo estn Soporta bastantes ms tipos primitivos (value types), incluyendo tipos numricos sin signo Indizadores que permiten acceder a cualquier objeto como si se tratase de un array Compilacin condicional Aplicaciones multi-hilo simplificadas Soporta la sobrecarga de operadores, que aunque pueden complicar el desarrollo son opcionales y algunas veces muy tiles Permite el uso (limitado) de punteros cuando realmente se necesiten, como al acceder a libreras nativas que no se ejecuten sobre la mquina virtual (urriellu.net)

2.4.2.2.4

Desventajas Las desventajas que se derivan del uso de este lenguaje de programacin son que en primer lugar se tiene que conseguir una versin reciente de Visual Studio .NET, por otra parte se tiene que 42

MARCO TERICO

tener algunos requerimientos mnimos del sistema para poder trabajar adecuadamente tales como contar con Windows NT 4 o superior, tener alrededor de 4 gigas de espacio libre para la pura instalacin, etc. Adems para quien no est familiarizado con ningn lenguaje de programacin, le costar ms trabajo iniciarse en su uso, y si se quiere consultar algn tutorial ms explcito sobre la programacin en C# se tendra que contar adems con una conexin a Internet. (programacin I, 2009)

2.4.2.3 Lenguaje Java (JEE) JEE es una plataforma de desarrollo empresarial que define un estndar para el desarrollo de aplicaciones empresariales multicapa. JEE simplifica el desarrollo de estas aplicaciones basndolas en componentes modulares estandarizados, proporcionando un conjunto muy completo de servicios a estos componentes y gestionando automticamente muchas de las funcionalidades o caractersticas complejas que requiere cualquier aplicacin empresarial (seguridad, transacciones, etc.), sin necesidad de una programacin compleja

2.4.2.3.1

Propiedades

tem 1 2 3 4 5 6 8 9 10

Propiedades Sencillez Robustez Seguridad Interpretado Dinamicidad Portabilidad Threads Garbage Colection Polimorfismo

Valor 2 2 1 3 3 2 3 2 Soporta

Tabla 2.10:Propiedades Java Fuente: (Java)

43

MARCO TERICO

2.4.2.3.2

Caractersticas Es un lenguaje que es compilado, generando ficheros de clases compilados, pero estas clases compiladas, son en realidad interpretadas por la mquina virtual de java. Siendo la mquina virtual de java la que mantiene el control sobre las clases que se estn ejecutando.

Es un lenguaje multiplataforma: El mismo cdigo java que funciona en un sistema operativo, funcionar en cualquier otro sistema operativo que tenga instalada la mquina virtual java.

Es un lenguaje seguro: La mquina virtual, al ejecutar el cdigo java, realiza comprobaciones de seguridad, adems el propio lenguaje carece de caractersticas inseguras, como por ejemplo los punteros.

Gracias al API de java podemos ampliar el lenguaje para que sea capaz de, por ejemplo, comunicarse con equipos mediante red, acceder a bases de datos, crear pginas HTML dinmicas, crear aplicaciones visuales al estilo Windows. (Java)

2.4.2.3.3

Ventajas Escribe una vez, corre por cualquier lado. Seguridad. Robustez. Recolector de basura (elimina referencias en desuso). Quiz facilidad de aprendizaje a los que sepan C++. Soporta distintas codificaciones (caracteres especiales y orientales).

2.4.2.3.4

Desventajas Lenguaje interpretado. Lentitud frente a un programa equivalente en C o C++. Se necesita el intrprete para poder usar tu programa (me dara lata tener que instalar el JRE. Necesitas un compilador pesado y quiz un IDE pesado (opcional) Si has estado viviendo en el mundo de la programacin estructurada, puede que te cueste pasar a la POO. (DeltaLinuXer, 2007)

44

MARCO TERICO

2.4.3

HERRAMIENTAS DE DIAGRAMACION

2.4.3.1 Schematic Es una herramienta de diagramacin que permite dibujar diagramas complejos con facilidad. Schematic le permite combinar texto, fotografas, figuras y conectores para crear diagramas claros e informativos. Schematic incluye conectores inteligentes que enlazan objetos grficos e incluyen libreras de UML, elctricos, red, diagrama de flujo, DFD y ERD. Los usuarios pueden crear sus propias libreras de objetos. Soporta la exportacin de diagramas como archivos EMF, PNG y JPG. 2.4.3.2 Edraw Max Es un programa de mucha ayuda para la creacin de diagramas de flujo, organigramas, procesos de negocio, diagramas UML, flujos de trabajo, estructuras de programa, diagramas de red, grfico y grficos, mapa mental, mapas direccionales y diagramas de base de datos, adems de contar con plantillas pre-diseadas, solo debes elegir y ponerte a trabajar en ellas.

2.4.4

OTRAS HERRAMIENTAS Debido a que la esteganografa es invasiva, es decir, deja huellas en el medio de transporte utilizado, las tcnicas de estegoanlisis se basan en cmo detectar estos cambios. Entonces se toma en consideracin la siguiente herramienta:

2.4.4.1 Stegsecret (Estegoanlisis) StegSecret es una herramienta para estegoanlisis de imgenes en busca de informacin oculta, comprobando diferentes tipos de tcnicas comunes y patrones usados por programas como camuflaje, inThePicture, inPlainView, steghide, dataStealth y entre otros ms. La presente herramienta tiene las siguientes caractersticas: Detectar la presencia de informacin oculta. Estimacin del tamao de la informacin oculta. Localizacin exacta de la informacin oculta dentro de una cubierta. 45

MARCO TERICO

Extraccin de la informacin til, invirtiendo la codificacin aplicada, si es necesario.

2.5 OTRAS METODOLOGIAS

2.5.1

Anlisis de costo/beneficio de soluciones de Software Las Soluciones de Software generalmente parten de iniciativas que abordan una problemtica concreta, con puntos de vista diversos de lo que con exactitud precisan y cmo hacerlas realidad. El proceso de gestacin de un aplicativo de software encierra un conjunto de actividades, una de las primeras para el usuario es el de resolver un dilema nada sencillo, como el de determinar si es conveniente entrar en un proyecto de desarrollo de software o adquirir un producto terminado. Para llegar a una definicin objetiva de cul es la mejor alternativa, se pueden utilizar mtodos de evaluacin que difieren de los mismos criterios y como son ponderados. Se propone un modelo de evaluacin Costo-Beneficio, que sirve como gua para lograr una respuesta de viabilidad, que si bien no es para nada definitiva, pero aterriza las expectativas que pueden ser profundizadas de ser necesario. Lo relevante es que podemos estar en condiciones de tomar decisiones oportunas con un nivel de certeza muy razonable, sin invertirle tiempo valioso en analizar muchas ideas cuando pocas son acogidas e implementadas. Buscar la practicidad (efectividad) en un tiempo de grandes cambios, nos puede llevar a ser ms eficientes, que en otro sentido tratando de conseguir la solucin ms optima y perfecta pero poco realizable o a destiempo. Los resultados obtenidos no representan una regla a seguir por todo el mercado y ni por un sector en particular. Sin embargo, las tendencias nos pueden decir mucho y referencias de organizaciones que tomaron uno u otro camino son de gran ayuda el momento de decidir.

46

MARCO TERICO

Descripcin del Modelo Con esta introduccin de lo que interviene en un Anlisis de Costo-Beneficio, se describen a continuacin los elementos que debern contemplarse en la evaluacin, as tenemos: Costos A. Precio del Software: Generalmente se contempla el Licenciamiento y Soporte B. Infraestructura: Toda los componentes de Hardware y Software requeridos. C. Implantacin: Consultora para instalacin y puesta en

funcionamiento D. Entrenamiento: Dirigido a los Usuarios de la Aplicacin Costo Total de la Solucin (CTS) = A + B + C + D Beneficios A. Mejora de Procesos.- Conducen a reduccin de tiempo y recursos B. Disponer de Sistemas de Informacin.- Mejora la toma de decisiones y obtencin de ingresos. C. Personal Motivado.- Creciente moral del personal al funcionar en un entorno de herramientas modernas para el negocio. D. Intangibles.- Otros beneficios intangibles que sean identificados y cuantificables. Beneficio Total de la Solucin (BTS) = A + B + C + D Resultado Si CTS < BTS entonces la Solucin es Viable, caso contrario no es recomendable. Cada uno de los elementos a incluirse debe ser cuantificado y ponderado, de tal forma que el agregado final determine un resultado tangible. La utilizacin de estos criterios puede variar de una realidad a otra, es decir, se tiene libertad para cambiar el listado cuidando no perder el equilibrio, que fcilmente se altera al modificar el modelo. (Snchez, 2008)

47

MARCO TERICO

2.5.2

El modelo COCOMO Este modelo es fcil de realizar y de interpretar tiene pocas variables, se acerca a la realidad en la mayora de los casos pero no saca resultados fiables en proyectos demasiado pequeos. (Adriana Gmez)

2.6

CRIPTOLOGIA La criptologa es el estudio de los criptosistemas: sistemas que ofrecen medios seguros de comunicacin en los que el emisor oculta o cifra el mensaje antes de transmitirlo para que slo un receptor autorizado (o nadie) pueda descifrarlo. Sus reas principales de inters son la criptografa y el criptoanlisis, pero tambin se incluye la esteganografa como parte de esta ciencia aplicada. (Martorell)

2.6.1

Esteganografa De acuerdo a algunas definiciones, esteganografa es el arte de cifrar, o en caracteres, que no son inteligibles excepto a personas que tienen la clave (criptogrfica). En trminos computacionales, la esteganografa ha evolucionado en la prctica de esconder un mensaje en uno ms grande de forma que los dems no puedan saber de la presencia o contenido del mensaje oculto. Actualmente, la esteganografa ha evolucionado en la forma de esconder un archivo en forma de multimedia, como una imagen, un archivo de audio (.wav o .mp3) o incluso un archivo de video. (Martorell)

2.6.2

Funcionamiento

Para esconder un mensaje mediante esteganografa, en primer lugar se escoge un fichero cualquiera: un documento Word, un documento PDF de Adobe, un fichero de imagen BMP o uno de sonido .WAV o .MP3, y se escoge el mensaje que se quiere ocultar, un mensaje de texto u otro fichero. El programa encriptado modifica el portador de varias formas posibles: alterando los valores de algunos de los puntos de la imagen, sumndoles o restndoles uno 48

MARCO TERICO

(+1 para indicar el bit 1, por ejemplo, y -1 para indicar el bit 0), de forma que sea imperceptible al usuario, pero que alguien que sepa que en esa imagen hay un mensaje, pueda recuperarlo. Existen otros mtodos para ocultar informacin. La siguiente figura muestra cmo funciona, a grandes rasgos, la esteganografa:

Figura 2.7: funcionamiento del algoritmo de esteganografa Fuente: (Martorell)

fE = Funcin para embeber fE-1= Funcin para extraer cover = Objeto donde embeber el mensaje (foto, audio o video) emb = Mensaje embebido key = Parmetro de fE stego = Objeto con el mensaje embebido sender = Emisor recipient = Receptor 2.6.3 Mtodos Mtodo LSB Este mtodo es uno de los ms comunes por su fcil implementacin.Cada fichero que es creado contiene areas de datos no usadas o que no son importantes. Estas areas pueden ser reemplazadas sin aparentes cambios visuales o estructurales del fichero original. Esto permite esconder informacin sensible dentro del fichero y tener an la certeza que el fichero original no ha sufrido ninguna mutacin. El mtodo del bit menos significativo (LSB) sustituye el ltimo bit de cada byte, de tal forma que podemos repetir este proceso con cada byte sin que el ojo humano aprecie diferencia alguna. 49

MARCO TERICO

Mtodo Sustitucin Esta tcnica implica el coger el mensaje y usarlo para generar un nuevo fichero desde la nada. Una de las ventajas de este mtodo es que no existe un fichero original con el que comparar.

2.6.4

Estegoanlisis Estegoanlisis es la tcnica mediante la cual se identifica un mensaje oculto dentro de un medio. Tendremos dos tipos de ataques: ataques pasivos y ataques activos.

2.6.5

Algoritmos Algoritmo Lucifer A finales de 1960 dirigido por Horst Feistel y ms tarde por Walt Tuchman, IBM inici un programa de investigacin en informtica de criptografa llamado Lucifer. Lucifer es tambin el nombre de un algoritmo de bloque que sali de ese programa a principios de los aos 1970. Lucifer es una red de sustitucin-permutacin, con bloques de construccin similar a la DES. (Applied Crytography)

Figura 2.8: algoritmo de Feistel Fuente: (Applied Crytography)

Dado un bloque de N bits (tpico 64) ste se dividir en dos mitades. Existir una funcin unidireccional F (muy difcil de invertir).

50

MARCO TERICO

Se realizan operaciones con la clave ki slo con una mitad del bloque, y se permutan en cada vuelta las dos mitades, operacin que se repite durante n-vueltas.

Figura 2.9: Cifrado y descifrado de dispositivos Lucifer Fuente: (Willian Friedrich, 1975)

Un ejemplo bsico de cifrado tipo Feistel El algoritmo usar bloques de tamao 8 caracteres. Tendr dos vueltas y en cada vuelta realizar una operacin de sustitucin S y una permutacin P sobre la 1 mitad. Sustitucin: Ci= (Mi+1) mod 27 Permutacin: Ci= 3241(el carcter 1 pasa a la 4 posicin en el criptograma, el 4 a la 3, el 2 a la 2 y el 3 a la 1) Mensaje: M = STAR WARS, LA MISIN CONTINA

51

MARCO TERICO

C = SBTX BUST PJT NBJM VBJ PUD Aunque le parezca increble, el DES har prcticamente lo mismo trabajando con bits y con funciones un poco ms complejas.

Algoritmo Madryga

Madryga consta

de

dos

ciclos anidados. El

ciclo se

repite

ocho

veces exterior (aunque esto podra ser mayor si se garantiza la seguridad) y consiste en una aplicacin del ciclo de interior para el texto. El

ciclo interno se transforma en texto plano texto cifrado y se repite una vez para cada bloque de 8 bits (byte) del texto plano. Por lo tanto, el algoritmo pasa a travs de todo el texto en ocho ocasiones sucesivas. Una iteracin del ciclo interno funciona en una ventana de 3 bytes de datos, llamada marco de trabajo. En esta ventana se avanza 1 byte para cada iteracin. (Los datos son considerados circular cuando se trata de los ltimos 2 bytes). Los primeros 2 bytes del marco de

trabajo conjunto gira un nmero variable de posiciones, mientras que el ltimo byte es XOR con algunos bits de la clave. A medida que avanza el marco de trabajo, todos los bytes sucesivamente se gira y XOR con material clave. Rotaciones sucesivas se superponen los resultados de un XOR anterior y rotacin, y los datos de la XOR se utilizan para influir en la rotacin. Esto hace que todo el proceso reversible. Debido a que cada byte de datos influye en la de 2 bytes a la izquierda y el byte de 1 a su derecha, despus de ocho pases cada byte del texto cifrado depende de 16 bytes a la izquierda y 8 bytes a la derecha. En el cifrado, cada iteracin del ciclo interno se inicia el marco de trabajo en la siguiente al ltimo byte del texto plano y circular a travs de los avances de la tercera a la ltima.

52

MARCO TERICO

Text

...

TL-2

TL-1

TL

Movie Working Frame

WF(1)

WF(2)

WF(3) 8 bits Rotate Count 3 bits Translate Target

8 bits ROT

8 bits

Transposition

Rotate Target 16 bits

Traslation

8 bits XOR

Key

3 XOR

...

KL

Key Hash

...

KL

Figura2.10: Una iteracin de Madryga Fuente: (Applied Crytography)

Algunas personas creen que Lucifer es ms seguro que DES debido a la mayor clave longitud y la falta de resultados publicados. Este no es el caso. Lucifer es el objeto de varias patentes de EE.UU. Todos ellos han expirado. (Applied Crytography)

Figura 2.11 : Cifrado y descifrado de Madryga fuente: (Maraon, 98)

53