unidad 3.pdf

54
3 DISEÑO Y ARQUITECTURA DE SOFTWARE Identificar los conceptos fundamentales de arquitectura de software y su relevancia. Objetivo

Upload: martha-alcala

Post on 25-Nov-2015

37 views

Category:

Documents


0 download

TRANSCRIPT

  • 3 DISEO Y ARQUITECTURA DE SOFTWARE Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

  • ADS

    3.1 Desarrollo de software basado en arquitecturas. 3.1.1 Historia En los inicios de la informtica, la programacin se consideraba un arte y se desarrollaba como tal, debido a la dificultad que entraaba para la mayora de las personas, pero con el tiempo se han ido descubriendo y desarrollando formas y guas generales, con base a las cuales se puedan resolver los problemas.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    A estas, se les ha denominado Arquitectura de Software, porque, a semejanza de los planos de un edificio o construccin, estas indican la estructura, funcionamiento e interaccin entre las partes del software. En el libro "An introduction to Software Architecture", David Garlan y Mary Shaw definen que la Arquitectura es un nivel de diseo que hace foco en aspectos "ms all de los algoritmos y estructuras de datos de la computacin; el diseo y especificacin de la estructura global del sistema es un nuevo tipo de problema". Todava no se ha escrito una historia aceptable del desarrollo de software basado en arquitecturas. Lo que se tiene de historia se remota a principios de los 90s. Se trata entonces de una prctica joven, de apenas un par de dcadas de trabajo constante, que en estos momentos experimenta una nueva ola creativa en el desarrollo cabal de sus tcnicas.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    Cada vez que se narra la historia de la arquitectura de software (o de la ingeniera de software, segn el caso), se reconoce que en un principio, hacia 1968, Edsger Dijkstra, de la Universidad Tecnolgica de Eindhoven en Holanda y Premio Turing 1972, propuso que se establezca una estructuracin correcta de los sistemas de software antes de lanzarse a programar, escribiendo cdigo de cualquier manera.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    La Arquitectura del Software es el diseo de ms alto nivel de la estructura de un sistema.

    Una Arquitectura de Software, tambin denominada Arquitectura

    lgica, consiste en un conjunto de patrones y abstracciones coherentes que proporcionan el marco.

    La Arquitectura de Software define, de manera abstracta, los componentes que llevan a cabo alguna tarea de computacin, sus interfaces y la comunicacin entre ellos. Toda arquitectura debe ser implementable en una arquitectura fsica, que consiste simplemente en determinar qu computadora tendr asignada cada tarea.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    Una Arquitectura de Software se selecciona y disea con base en objetivos y restricciones. Los objetivos son aquellos prefijados para el sistema de informacin, pero no solamente los de tipo funcional, tambin otros objetivos como la mantenibilidad, auditabilidad, flexibilidad e interaccin con otros sistemas de informacin. Las restricciones son aquellas limitaciones derivadas de las tecnologas disponibles para implementar sistemas de informacin. Unas arquitecturas son ms recomendables de implementar con ciertas tecnologas mientras que otras tecnologas no son aptas para determinadas arquitecturas. Por ejemplo, no es viable emplear una arquitectura de software de tres capas para implementar sistemas en tiempo real.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    La Arquitectura de Software, tiene que ver con el diseo y la implementacin de estructuras de software de alto nivel. Es el resultado de ensamblar un cierto nmero de elementos arquitectnicos de forma adecuada para satisfacer la mayor funcionalidad y requerimientos de desempeo de un sistema, as como requerimientos no funcionales, como la confiabilidad, escalabilidad, portabilidad, y disponibilidad.

    Kruchten, Philippe En los aos 1960 ya se acercaba el concepto de arquitectura de software en los crculos de investigacin (por ejemplo, por Edsger Dijkstra). No obstante, toma popularidad en los aos 1990 tras reconocerse la denominada crisis del software y como tema de inters de la incipiente disciplina de la ingeniera del software.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    La crisis del software se fundament en el tiempo de creacin de software, ya que en la creacin del mismo no se obtenan los resultados deseados, adems de un gran costo y poca flexibilidad.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    Es un trmino informtico acuado en 1968, en la primera conferencia organizada por la OTAN sobre desarrollo de software, de la cual naci formalmente la rama de la ingeniera de software. El trmino se adjudica a F. L. Bauer, aunque previamente haba sido utilizado por Edsger Dijkstra en su obra The Humble Programmer. Bsicamente, la crisis del software se refiere a la dificultad en escribir programas libres de defectos, fcilmente comprensibles, y que sean verificables. Las causas son, entre otras, la complejidad que supone la tarea de programar, y los cambios a los que se tiene que ver sometido un programa para ser continuamente adaptado a las necesidades de los usuarios.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    La crisis de software englob a una serie de sucesos que se venan observando en los proyectos de desarrollo de software: Los proyectos no terminaban en plazo. Los proyectos no se ajustaban al presupuesto inicial. Baja calidad del software generado. Software que no cumpla las especificaciones. Cdigo inmantenible que dificultaba la gestin y evolucin del

    proyecto.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    3.2 Atributos funcionales. Los requerimientos de software son las especificaciones o los atributos funcionales y tcnicas de la aplicacin proporcionadas por el cliente. Los requerimientos de software se pueden catalogar en dos tipos: requerimientos funcionales (RF) y requerimientos no funcionales (RNF)

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    Los requerimientos de software son muy importantes pues son las especificaciones explicitas e implcitas de lo que el usuario espera del producto de software, es necesario tener una definicin concisa de los distintos tipos de requerimientos que existen. Requerimientos Funcionales Los requerimientos funcionales especifican las actividades de negocio del cliente y la funcionalidad que la aplicacin permitir realizar al usuario final. Estas actividades definen el comportamiento especfico de cada aplicacin. Retomando la figura anterior, es posible observar que dentro de los requerimientos funcionales de software se encuentran los requerimientos de negocio, estos consisten en la manera en que la empresa lleva a cabo las actividades necesarias para que esta funcione dentro del rubro en el que se desenvuelve.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    Es decir, todas las actividades y procesos propios de la empresa que los empleados utilizan para realizar su trabajo dentro de la empresa. Tambin dentro de los requerimientos funcionales se consideran necesidades especficas de los usuarios finales (personas que operan el sistema) y especificaciones de cmo debe operar el sistema, llamados casos de uso (CU). El anlisis de estos requerimientos permite desarrollar la implementacin detallada del funcionamiento de la aplicacin.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    Requerimientos No Funcionales Los requerimientos no funcionales son las especificaciones, caractersticas, objetivos de desempeo y atributos que el cliente proporciona, no siempre de manera explcita, y que desea que tenga la aplicacin que se desarrollar. Estos requerimientos deben ser considerados al momento de realizar el diseo y la implementacin pues imponen restricciones en esta actividad. Reglas de negocio. Definen o limitan como se realizan algunos

    aspectos de negocio.

    Atributos de calidad. Son propiedades que especifican caractersticas para poder verificar y medir el grado de satisfaccin de los usuarios y/o diseadores con respecto al sistema de software.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    Interfaces externas. Describen las conexiones del sistema con otras herramientas o productos.

    Restricciones. Describen o limitan aspectos de diseo e implementacin.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    3.3 Atributos de calidad. De acuerdo con el modelo ISO 9126 los atributos de calidad son caractersticas que permiten verificar y medir el grado de satisfaccin de los usuarios y/o diseadores con respecto al sistema de software.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    El concepto de calidad es muy abstracto, por lo tanto, para poder definir una manera cuantificable de medir la calidad existen estndares de calidad o modelos de calidad. Uno de estos modelos de calidad es ISO 9126, el cual define varios atributos de calidad dentro de seis distintas categoras. Los atributos de calidad, como su nombre lo indica, permite medir y controlar la calidad de un sistema. Los atributos de calidad pueden ser vistos como cualidades que el sistema presenta acorde con las especificaciones que el usuario solicita. Estas cualidades el SEI (Software Engineering Institute) las clasifica por disponibilidad, modificabilidad, desempeo, seguridad, facilidad de pruebas y usabilidad.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    El SEI tambin propone una manera de especificar los atributos de calidad, para que estos puedan ser manejados por todos los involucrados del proyecto durante el desarrollo de este. Disponibilidad. La disponibilidad es la probabilidad de que un sistema sea capaz de operar cuando le sea requerido, bajo circunstancias especificas. La disponibilidad de un sistema tiene que ver con las fallas de este y las consecuencias asociadas. Una falla de sistema ocurre cuando el sistema no proporciona un servicio en el tiempo especificado, una falla como tal es observada por los usuarios del sistema.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    Modificabilidad. La modificabilidad de un sistema es referente al costo de realizar cambios a este, es decir cun fcil es poder sustituir componentes de software o cambiar la implementacin de un componente sin modificar los componentes que se encuentran relacionados a este. Para realizar un cambio es necesario considerar dos aspectos muy importantes: Qu elementos deben cambiarse? Cundo se debe realizar el cambio y por quien? Una vez que un cambio ha sido especificado, la nueva implementacin debe ser diseada, implementada, probada y puesta en prctica.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    Desempeo. El desempeo es referente a los eventos (interrupciones, mensajes, solicitudes de usuario, o tiempo transcurrido) que ocurren y a los cuales el sistema debe responder. Bsicamente el desempeo considera cunto tiempo le toma al sistema responder a un evento. Seguridad. La seguridad es una manera de juzgar la habilidad de un sistema para resistir a peticiones de usuarios no autorizados mientras este continua proporcionando servicios a los usuarios registrados. Un intento para traspasar la seguridad es llamado ataque o amenaza y este puede tomar un gran nmero de formas con distintos objetivos especficos.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    Facilidad de pruebas. Un software fcil de probar se refiere a la facilidad con la cual el software puede ser construido para posteriormente encontrar defectos o problemas directamente probando sus componentes. Usabilidad. El atributo de calidad de usabilidad es concerniente a que tan fcil un sistema puede ser usado por el usuario para realizar una tarea deseada.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    3.4 Procesos de elaboracin de arquitectura de software 3.4.1 Forward engineering Qu es la Reingeniera? Tengamos en consideracin cualquier producto de tecnologa que haya adquirido. Lo ve con regularidad, pero est envejeciendo. Se rompe con frecuencia, tarda en repararse y ya no representa la ltima tecnologa.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    Si el producto es de hardware, probablemente se reemplazar por uno nuevo. Pero si es un software personalizado, no dispondr posiblemente de la opcin de cambiarlo. Necesitar reconstruirlo. Crear un producto con una funcionalidad nueva, un mejor rendimiento y fiabilidad, y un mantenimiento mejorado. Eso es lo que llamamos reingeniera.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    Quin lo hace? A nivel de negocio, la reingeniera es ejercida por especialistas de negocio (frecuentemente empresas de consultora). A nivel de software, la reingeniera es ejecutada por ingenieros del software. Por qu es importante? Vivimos en un mundo en constante cambio. Las demandas de funciones de negocios y de tecnologa de informacin que las soportan estn cambiando a un ritmo que impone mucha presin competitiva en todas las organizaciones comerciales. Tanto los negocios como el software que soportan (o es) el negocio debern disearse una vez ms para mantener el ritmo

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    Cules son los Pasos? 1. Definir las Metas comerciales. 2. Identificar y evaluar los procesos de negocios existentes. 3. Crear Procesos Comerciales revisados que mejoren las metas

    comerciales. El Proceso de la Reingeniera del Software Acompaa el anlisis de inventarios. La reestructuracin de documentos. La ingeniera Inversa. La estructuracin de Programas y datos. La ingeniera directa.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    Reingeniera del Software Este escenario resulta sumamente conocido: Una aplicacin ha dado servicio y ha cubierto las necesidades del negocio de una compaa durante diez o quince aos. A lo largo de este tiempo, ha sido corregida, adaptada y mejorada muchas veces. Las personas se dedicaban a esta tarea con la mejor de sus intenciones, pero las prcticas de ingeniera del software buenas siempre se echaban a un lado (por la urgencia de otros problemas). Ahora la aplicacin se ha vuelto inestable. Sigue funcionando, pero cada vez que intenta efectuar un cambio se producen efectos colaterales graves e inesperados.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    La imposibilidad de mantener el software no es un problema nuevo. De hecho, el gran inters por la reingeniera del software ha sido generado por un iceberg de mantenimiento de software que lleva creciendo desde hace ms de treinta aos.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    Gran parte del software del que dependemos en la actualidad tiene por trmino medio entre diez y quince aos de antigedad. Aun cuando estos programas se crearon empleando las mejores tcnicas de diseo y codificacin conocidas en su poca (y la mayora no lo fueron), se crearon cuando el tamao de los programas y el espacio de almacenamiento eran las preocupaciones principales. A continuacin, se trasladaron a las nuevas plataformas, se ajustaron para adecuarlos a cambios de mquina y de sistemas operativos y se mejoraron para satisfacer nuevas necesidades del usuario; y todo esto se hizo sin tener en cuenta la arquitectura global. El resultado son unas estructuras muy mal diseadas, una mala codificacin, una lgica inadecuada, y una escasa documentacin de los sistemas de software que ahora nos piden que mantengamos en marcha .

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    La reingeniera requiere tiempo; conlleva un costo de dinero enorme y absorbe recursos que de otro modo podran emplearse en preocupaciones ms inmediatas. Por todas estas razones, la reingeniera no se lleva a cabo en unos pocos meses, ni siquiera en unos pocos aos. La reingeniera de sistemas de informacin es una actividad que absorber recursos de las tecnologas de la informacin durante muchos aos. Esta es la razn por la cual toda organizacin necesita una estrategia pragmtica para la reingeniera del software.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    Anlisis de inventario. Todas las organizaciones de software debern disponer de un inventario de todas sus aplicaciones. El inventario puede que no sea ms que una hoja de clculo con la informacin que proporciona una descripcin detallada (por ejemplo: tamao, edad, importancia para el negocio) de todas las aplicaciones activas. Los candidatos a la reingeniera aparecen cuando se ordena esta informacin en funcin de su importancia para el negocio, longevidad, mantenibilidad actual y otros criterios localmente importantes. Es entonces cuando es posible asignar recursos a las aplicaciones candidatas para el trabajo de reingeniera. Es importante destacar que el inventario deber revisarse con regularidad. El estado de las aplicaciones (por ejemplo, la importancia con respecto al negocio) puede cambiar en funcin del tiempo y, como resultado, cambiarn tambin las prioridades para la reingeniera.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    Reestructuracin de documentos. Una documentacin escasa es la marca de muchos sistemas heredados. Ingeniera inversa: Es el proceso de construir especificaciones de un mayor nivel de abstraccin partiendo del cdigo fuente de un sistema software o cualquier otro producto (se puede utilizar como punto de partida cualquier otro elemento de diseo, etc.).Estas especificaciones pueden volver ser utilizadas para construir una nueva implementacin del sistema utilizando, por ejemplo, tcnicas de ingeniera directa.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    3.4.2 Reverse engineering Apple vs Samsung Las empresas Apple y Samsung han tenido un debate durante los ltimos aos en el que Apple ha acusado a Samsung de copiar con ingeniera inversa tanto el iPhone como el iPad. Apple denunci a su rival surcoreano Samsung Electronics por copiar el aspecto, el diseo de producto y la interfaz de sus dispositivos iPhone y iPad, lo que supone segn la compaa una infraccin de las patentes y marcas registradas por Apple.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    La acusacin fue presentada el pasado 15 de abril en los tribunales del distrito norte de California ante lo que Apple considera una violacin de su propiedad intelectual. "Esta clase de copia descarada est mal", indic en un comunicado la portavoz Kristin Huguet. La compaa que fuese dirigida por Steve Jobs considera que Samsung emple los avances presentados por Apple en sus telfonos inteligentes 'Galaxy S 4G', 'Epic 4G' y 'Nexus S', as como en su tableta 'Galaxy Tab', una de las mayores competidoras del iPad.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    En el documento presentado por Apple ante la Corte, la empresa de Cupertino asegura que "en lugar de innovar y desarrollar su propia tecnologa y un estilo nico de Samsung para sus telfonos inteligentes y tabletas, Samsung eligi copiar la tecnologa de Apple, el interfaz y el estilo innovador". Este juicio complicar an ms las relaciones entre ambas compaas, rivales en el sector de las comunicaciones pero con intereses comunes, ya que Samsung fabrica los microchips que Apple emplea en sus productos.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    Ingeniera inversa La ingeniera inversa es un mtodo de resolucin. Aplicar ingeniera inversa a algo supone profundizar en el estudio de su funcionamiento, hasta el punto de que podamos llegar a entender, modificar y mejorar dicho modo de funcionamiento. La aplicacin de ingeniera inversa nunca cambia la funcionalidad del software sino que permite obtener productos que indican cmo se ha construido el mismo.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    La ingeniera inversa permite obtener los siguientes beneficios: Reducir la complejidad del sistema: al intentar comprender el

    software se facilita su mantenimiento y la complejidad existente disminuye.

    Generar diferentes alternativas: del punto de partida del proceso, principalmente cdigo fuente, se generan representaciones grficas lo que facilita su comprensin.

    Recuperar y/o actualizar la informacin perdida (cambios que no se documentaron en su momento): en la evolucin del sistema se realizan cambios que no se suele actualizar en las representaciones de nivel de abstraccin ms alto, para lo cual se utiliza la recuperacin de diseo.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    Detectar efectos laterales: los cambios que se puedan realizar en un sistema puede conducirnos a que surjan efectos no deseados, esta serie de anomalas puede ser detectados por la ingeniera inversa.

    Facilitar la reutilizacin: por medio de la ingeniera inversa se

    pueden detectar componentes de posible reutilizacin de sistemas existentes, pudiendo aumentar la productividad, reducir los costes y los riesgos de mantenimiento.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    TIPOS DE INGENIERIA INVERSA Ingeniera inversa de datos: Se aplica sobre algn cdigo de bases datos (aplicacin, cdigo SQL, etc) para obtener los modelos relacionales o sobre el modelo relacional para obtener el diagrama entidad-relacin. Ingeniera inversa de lgica o de proceso: Cuando la ingeniera inversa se aplica sobre cdigo de un programa para averiguar su lgica o sobre cualquier documento de diseo para obtener documentos de anlisis o de requisitos. Ingeniera inversa de interfaces de usuario: Se aplica con objeto de mantener la lgica interna del programa para obtener los modelos y especificaciones que sirvieron de base para la construccin de la misma, con objeto de tomarlas como punto de partida en procesos de ingeniera directa que permitan modificar dicha interfaz.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    HERRAMIENTAS PARA LA INGENIERIA INVERSA Los Depuradores: Un depurador es un programa que se utiliza para controlar otros programas. Permite avanzar paso a paso por el cdigo, rastrear fallos, establecer puntos de control y observar las variables y el estado de la memoria en un momento dado del programa que se est depurando. Los depuradores son muy valiosos a la hora de determinar el flujo lgico del programa.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    Las Herramientas de Inyeccin de Fallos: Las herramientas que pueden proporcionar entradas malformadas con formato inadecuado a procesos del software objetivo para provocar errores son una clase de herramientas de insercin de fallos. Los errores del programa pueden ser analizados para determinar si los errores existen en el software objetivo. Algunos fallos tienen implicaciones en la seguridad, como los fallos que permiten un acceso directo del asaltante al ordenador principal o red. Hay herramientas de inyeccin de fallos basados en el anfitrin que funcionan como depuradores y pueden alterar las condiciones del programa para observar los resultados y tambin estn los inyectores basados en redes que manipulan el trfico de la red para determinar el efecto en el aparato receptor.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    Los Desensambladores: Se trata de una herramienta que convierte cdigo mquina en lenguaje ensamblador. El lenguaje ensamblador es una forma legible para los humanos del cdigo mquina. Los desensambladotes revelan que instrucciones mquinas son usadas en el cdigo. El cdigo mquina normalmente es especfico para una arquitectura dada del hardware. De forma que los desensambladotes son escritor expresamente para la arquitectura del hardware del software a desensamblar.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    Los compiladores Inversos o Decompiladores: Un decompilador es una herramienta que transforma cdigo en ensamblador o cdigo mquina en cdigo fuente en lenguaje de alto nivel. Tambin existen decompiladores que transforman lenguae intermedio en cdigo fuente en lenguaje de alto nivel. Estas herramientas son sumamente tiles para determinar la lgica a nivel superior como bucles o declaraciones if-then de los programas que son decompilados. Los decompiladores son parecidos a los desensambladotes pero llevan el proceso un importante paso ms all.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    Las Herramientas CASE: Las herramientas de ingeniera de sistemas asistida por ordenador (Computer-Aided Systems Engineering CASE) aplican la tecnologa informtica a las actividades, las tcnicas y las metodologas propias de desarrollo de sistemas para automatizar o apoyar una o ms fases del ciclo de vida del desarrollo de sistemas.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    REESTRUCTURACION DEL SOFTWARE La reestructuracin del software modifica el cdigo fuente y/o los datos en un intento de adecuarlo a futuros cambios. Tiende a centrarse en los detalles de diseo de mdulos individuales y en estructuras de datos locales definidas dentro de los mdulos. Los beneficios de la reestructuracin son: Programas de mayor calidad con mejor documentacin y menos

    complejidad, y ajustados a las prcticas y estndares de la ingeniera del software moderno.

    Reduce la frustracin entre ingenieros del software que deban trabajar con el programa, mejorando por tanto la productividad y haciendo ms sencillo el aprendizaje.

    Reduce el esfuerzo requerido para llevar a cabo las actividades de mantenimiento.

    Hace que el software es ms sencillo de comprobar y depurar.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    La reestructuracin se produce cuando la arquitectura bsica de la aplicacin es slida, aun cuando sus interioridades tcnicas necesiten un retoque. Comienza cuando existen partes considerables del software que son tiles todava y solamente existe un subconjunto de todos los mdulos y datos que requieren una extensa modificacin. 1. del cdigo. 2. de datos.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    Reestructuracin del cdigo La reestructuracin del cdigo se lleva a cabo para conseguir un diseo que produzca la misma funcin pero con mayor calidad que el programa original. Reestructuracin de datos Primero se realiza el ANALISIS del cdigo. Se evalan las definiciones de los datos, archivos, O/I e Interfaces. Extraer elementos y objetos de datos para obtener informacin del

    flujo de datos y comprender la estructura.

    Identificar los conceptos fundamentales de arquitectura de software y su relevancia.

    Objetivo

    Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002 Bibliografia:

  • ADS

    REFERENCIAS: http://es.wikipedia.org/wiki/Arquitectura_de_software http://es.wikipedia.org/wiki/Crisis_del_software http://mcyti.izt.uam.mx/archivos/Tesis/Generaci%F3n2006/ICR_PedroMarcial.pdf

    BIBLIOGRAFIA: Team Geek, A Software Developers Guide to Working Well With Others, Brian W. FitzPatrick, Ben Collins-Sussman, OReilly 2012 Ingeniera de Software. 6ta. Edicin, Sommerville, Ian, Prentice-Hall, 2002

    Aplicar los patrones de diseo GRASP y GoF involucrados en el anlisis y diseo de un sistema concreto.

    Objetivo

    Slide Number 1ADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADSADS