Anda di halaman 1dari 18

Universidad Tecnolgica de Hermosillo

Tecnologas de la Informacin y la Comunicacin

Ingeniera de Software
Definiciones en la Ing. De Software

Prof. Jos Padilla Duarte

Alumno Aaron Clark Daz

Grupo (SI 5-1)


Hermosillo, Sonora a 15 de enero del 2014

Introduccin
La ingeniera del software, segn la definicin de la IEEE en 1993, es la aplicacin de un enfoque sistemtico, disciplinado y cuantificable al desarrollo, operacin y mantenimiento del software. La ingeniera del software ofrece mtodos o tcnicas para desarrollar y mantener software de calidad que resuelven problemas de todo tipo, y trata reas muy diversas de la informtica y de las ciencias computacionales. Esta disciplina trasciende la actividad de programacin, que es el pilar fundamental a la hora de crear una aplicacin. El ingeniero de software se encarga de toda la gestin del proyecto para que ste se pueda desarrollar en un plazo determinado y con el presupuesto previsto. La ingeniera de software, por lo tanto, incluye el anlisis previo de la situacin, el diseo del proyecto, el desarrollo del software, las pruebas necesarias para confirmar su correcto funcionamiento y la implementacin del sistema. Cabe destacar que el proceso de desarrollo de software implica lo que se conoce como ciclo de vida del software, que est formado por cuatro etapas: concepcin, elaboracin, construccin y transicin. La concepcin fija el alcance del proyecto y desarrolla el modelo de negocio; la elaboracin define el plan del proyecto, detalla las caractersticas y fundamenta la arquitectura; la construccin es el desarrollo del producto; y la transicin es la transferencia del producto terminado a los usuarios. Una vez que se completa este ciclo, entra en juego el mantenimiento del software. Se trata de una fase de esta ingeniera donde se solucionan los errores descubiertos (muchas veces advertidos por los propios usuarios) y se incorporan actualizaciones para hacer frente a los nuevos requisitos. El proceso de mantenimiento incorpora adems nuevos desarrollos, para permitir que el software pueda cumplir con una mayor cantidad de tareas.

Definiciones
Ingeniera: Profesin que posee conocimientos cientficos, actividades y criterios (ingenio) para crear dispositivos, mtodos y sistemas para transformar los recursos y satisfacer mejor las necesidades de una sociedad.

Software: Conjunto de programas que se pueden ejecutar en una computadora, as como toda la informacin, utileras y recursos necesarios para su diseo, instalacin, operacin, mantenimiento y refinamiento.

Ingeniera de Software: Disciplina que establece el uso de principios de ingeniera robustos, orientados a obtener software econmico, que sea confiable y funcione de manera eficiente.

Perfil del Ingeniero de Software: Debe ser capaz de encabezar o ser miembro de grupos multidisciplinarios de desarrollo de todo tipo de software y que en equipo logre producir software de alta calidad.

Diferencia entre programador e ingeniero de software: La ingeniera de software difiere de la programacin tradicional en que se utilizan tcnicas de ingeniera para especificar, disear, codificar, validar y mantener los productos dentro del tiempo y presupuesto establecidos para el proyecto, adems esta ingeniera se preocupa por aspectos administrativos que quedan fuera del dominio normal de la programacin.

Inicios
El concepto de ingeniera del software surgi en 1968, tras una conferencia en Garmisch (Alemania) que tuvo como objetivo resolver los problemas de la crisis del software. El trmino crisis del software se us desde finales de 1960 hasta mediados de 1980 para describir los frecuentes problemas que aparecan durante el proceso de desarrollo de nuevo software. Tras la aparicin de nuevo hardware basado en circuitos integrados, comenzaron a desarrollarse sistemas y aplicaciones mucho ms complejos que hasta entonces no era posible construir puesto que el hardware disponible no lo permita. Estos nuevos proyectos de desarrollo de software, en la mayora de ocasiones, no se terminaban a tiempo, lo cual tambin provocaba que el presupuesto final del software excediera de aquel que se haba pactado. Algunos de estos proyectos eran tan crticos (sistemas de control de aeropuertos, equipos para medicina, etc.) que sus implicaciones iban ms all de las prdidas millonarias que causaban. Adems, en muchos casos el software no daba respuesta a las verdaderas necesidades del cliente o haba que ser un usuario experto para poder utilizarlo, todo ello sumado a que el mantenimiento de los productos era complejo y muy costoso. El software no se produca como el hardware, que tena un proceso de fabricacin definido y dividido en fases. El resultado eran productos de psima calidad en los que se haban invertido mucho tiempo y dinero pero que o bien no llegaban a terminarse o bien a la larga no daban el resultado que se esperaba. Se detect que los mtodos de desarrollo de software informales que hasta entonces haban bastado para proyectos pequeos no eran suficientes para los nuevos y grandes proyectos, y que se necesitaban profesionales especializados en esta nueva disciplina que fueran capaces de lidiar con la creciente complejidad de los nuevos sistemas. Una de las primeras y ms conocidas referencias a los conceptos crisis el software e ingeniera del software fue hecha por Edsger Dijkstra, durante la presentacin de 1972 titulada The Humble Programmer en la Association for Computing Machinery, cuando se le hizo entrega de un Premio Turing.

Evolucin del Software

Importancia del Software


El software es ahora la clave del xito de muchos de los sistemas basados en computadora. El software marca la diferencia. Lo que diferencia una compaa de otra es la suficiencia, exactitud y oportunidad de la informacin dada por el software. Ejemplo de la importancia del software: Dos consultorios dentales, ambos cuentan con los ltimos modelos de computadora personal y destinada a apoyar las tareas y actividades relacionadas con el consultorio. Pero uno de ellos cuenta con un dispositivo especial conectado a la computadora y un SOFTWARE para obtener radiografas de piezas dentales por computadora, en un par de minutos la muestra radiogrfica est en pantalla y el medico puede obtener diferentes vistas de la placa usando el software. Adems puede establecer una conexin a travs de internet o va modem para enviar el archivo de la radiografa a otro colega experto con el fin de consultar y apoyar el diagnostico, todo esto en la misma cita. En la forma tradicional la placa radiogrfica esta lista en un par de das. El desarrollo de software se ha convertido en una industria con crecimiento vertical en los ltimos aos, hoy por hoy uno de los hombres ms ricos del mundo es el dueo de una casa de software, Microsoft. Hace un par de dcadas se sostena la teora de que los pases que posean los mejores recursos naturales estaban destinados a ser los ms ricos y poderosos del mundo, en Mxico por ejemplo, se manej la idea de que el petrleo era la puerta de entrada grande al mundo desarrollado. Indudablemente los recursos naturales tienen un papel importante en la economa de los pases, sin embargo poco a poco se fue acuando una nueva ideologa que se sintetiza en lo siguiente: El que posee la informacin y el conocimiento y hace mejor uso de l, es el que tiene el poder.

Clasificacin de los tipos de aplicaciones de Cmputo:


El Software de Aplicacin (tambin conocidos como aplicaciones o apps) es un software diseado para ayudar a la gente a realizar una tarea especfica. Dependiendo de la tarea para la que fue diseada, una aplicacin puede manipular texto, nmeros, grficos o una combinacin de estos. Dependiendo de la tarea para la que fueron diseados las aplicaciones se pueden clasificar en: Una Suite de Aplicaciones consiste en mltiples aplicaciones reunidas en un solo paquete. Por lo general cuentan con funcionalidades, caractersticas e interfaz grfica homogneas y pueden ser capaces de interactuar entre ellas. Las aplicaciones para negocios por lo general vienen en Suites, ejemplo: Microsoft Office, OpenOffice.org e iWork las cuales renen un procesador de textos, una hoja de clculo, creador de presentaciones, etc. Aunque no son las nicas, tambin hay suites para msica y grficos. El Software Empresarial est dirigido a satisfacer las necesidades en los procesos organizacionales y de flujo de datos, usualmente en un ambiente bastante grande y distribuido (Ejemplos: Sistemas Financieros, Manejo de las relaciones con los clientes, etc.). Mucho de este software est hecho a la medida. El Software de Infraestructura Empresarial proporciona la base para el Software Empresarial. Ejemplos incluyen: Bases de Datos, Servidores de Correo Electrnico y Seguridad de Redes. El Software para los Trabajadores de la Informacin est dirigido para satisfacer la necesidad de la gente de crear y manejar informacin. Ejemplos incluyen manejo de tiempo, manejo de recursos, herramientas colaborativas, analticas y de documentacin. Los Procesadores de Texto, Hojas de Clculo, Clientes de Correo Electrnico, Sistema de Informacin Personal y Editores de Medios pueden ayudar en mltiples actividades del trabajador de la Informacin. El Software de Acceso a Contenidos es usado principalmente para utilizar algn contenido sin la posibilidad de modificarlo. Tales softwares estn diseados para satisfacer la necesidad de la gente de consumir entretenimiento digital y publicar contenido digital. Ejemplos incluyen: Reproductores de Medios, Navegadores Web, Navegadores de Ayuda y Juegos. El Software Educativo se relaciona al Software de Acceso a Contenidos pero adapta los contenidos para su uso por educadores o estudiantes. Por ejemplo, puede llevar acabo evaluaciones, registrar el progreso de avance en un material didctico o incluir capacidades de colaboracin. El Software de Simulacin se utiliza para simular sistemas fsicos o abstractos ya sea para investigacin, entrenamiento o entretenimiento.

El Software de Desarrollo de Medios est dirigido a las personas con la necesidad de crear medios impresos o electrnicos para que otra gente los consuma. Estos incluyen Softwares de Arte Grfico, Publicacin, Desarrollo de Multimedia, Editores de Pginas Web, Editores de Animacin Digital, Composicin de Audio y Video y muchos ms. El Software de Ingeniera de Producto se utiliza en el desarrollo de productos de Hardware o Software. Incluyen: Diseo Asistido por Computadora, Ingeniera Asistida por Computadora, Herramientas de edicin de lenguaje de computadoras, Entornos Integrados de Desarrollo etc.

Software Engineering Institute (SEI).


Software Engineering Institute (SEI) es un instituto federal estadounidense de investigacin y desarrollo, fundado por Congreso de los Estados Unidos en 1984 para desarrollar modelos de evaluacin y mejora en el desarrollo de software, que dieran respuesta a los problemas que generaba al ejrcito estadounidense la programacin e integracin de los sub-sistemas de software en la construccin de complejos sistemas militares. El Carnegie Mellon Software Engineering Institute (SEI) trabaja en estrecha colaboracin con las organizaciones de defensa y del gobierno, la industria y el mundo acadmico para mejorar continuamente los sistemas intensivos en software. Su objetivo principal es ayudar a organizaciones para mejorar sus capacidades de ingeniera de software y para desarrollar o adquirir el software adecuado, libre de defectos, dentro del presupuesto y a tiempo, cada vez. Para lograr esto, el SEI realiza investigaciones para explorar soluciones prometedoras a los problemas de ingeniera de software identifica y codifica las soluciones tecnolgicas y metodolgicas pruebas y refina las soluciones a travs de programas piloto que ayuden a la industria y el gobierno a resolver sus problemas ampliamente difunde soluciones probadas a travs de la formacin, concesin de licencias, y la publicacin de las mejores prcticas. Visin Liderar y promover el software y la ciberseguridad para resolver los problemas ms difciles de la nacin Misin Para avanzar en las tecnologas y prcticas necesarias para adquirir, desarrollar, operar y mantener sistemas de software que son innovadores, confiables y duraderos. Logramos nuestra misin a travs de: Investigacin - el avance de la ciencia y la prctica Colaboracin - que rene y basndose en el trabajo que se encuentra en la industria, la academia y el gobierno Desarrollo y Demostracin - avance de las tecnologas y las prcticas prometedoras y demostrar su utilidad a travs de aplicacin de prueba y prototipos Transicin - la propagacin de tecnologas y prcticas probadas a travs de la publicacin, las normas y otros lugares

Objetivos Estratgicos Objetivo tcnico - Desarrollar, ejecutar y desarrollar una agenda tcnica que aporta soluciones eficaces y escalables para software y ciberseguridad retos actuales y futuros de nuestros grupos de inters. Investigacin Meta - Ser un lder respetado en la comunidad del software y de la investigacin de seguridad ciberntica. Workforce Meta - Atraer, desarrollar, reconocer, recompensar y retener una fuerza de trabajo altamente capacitado y multidisciplinar. Meta al cliente - Desarrollar una cartera de clientes estratgica para maximizar el impacto de los proyectos crticos para la nacin. Ingresos Meta - Mantener un flujo de ingresos que sostiene la masa crtica necesaria para lograr nuestra misin. Operaciones Meta - Crear una infraestructura organizativa eficiente que apoye nuestra direccin estratgica y las necesidades de los clientes dinmicos.

Competencias distintivas del SEI incluyen: Ingeniera del Software y de Investigacin ciberseguridad Tecnologas Emergentes de Software Soluciones de Adquisicin Historia Desde 1984, el SEI ha servido a la nacin como un centro de investigacin y desarrollo financiado por el gobierno federal con sede en la Universidad Carnegie Mellon, una organizacin que es bien conocida por sus programas de alta calificacin en ciencias de la computacin y la ingeniera. Como parte de Carnegie Melln, el SEI opera en la vanguardia de la innovacin tcnica. El personal SEI ha avanzado principios y prcticas de ingeniera de software y ha servido como un recurso nacional en ingeniera de software, seguridad informtica, y la mejora de procesos. Ver SEI Estadsticas e Historia de un resumen de nuestros logros.

W3C
El Consorcio World Wide Web (W3C) es una comunidad internacional donde las Organizaciones Miembro, el personal a tiempo completo, y la obra pblica trabajan conjuntamente para desarrollar estndares Web. Liderados por el inventor Web Tim Berners-Lee y CEO Jeffrey Jaffe, la misin del W3C es guiar la Web hacia su mximo potencial. Qu hace el W3C? La actividad principal del W3C es el desarrollo de protocolos y pautas que aseguren el crecimiento a largo plazo para la Web. Estndares del W3C definen las partes fundamentales de lo que hace el trabajo World Wide Web. Aprenda ms sobre la misin del W3C. Dnde se encuentra W3C? W3C no tiene una nica sede fsica. Hay cuatro instituciones, sin embargo, que "host" W3C: MIT (Cambridge, MA, EE.UU.), ERCIM (en Sophia-Antipolis, Francia), la Universidad de Keio (cerca de Tokio, Japn), y la Universidad de Beihang (en Beijing, China ).

El personal del W3C se distribuye en todo el mundo, pero hay concentraciones de gente en Cambridge, Massachusetts (EE.UU.), Sophia-Antipolis (Francia) y Tokio (Japn). Adems, el W3C est representado en otras 17 regiones del mundo a travs de los representantes basados en las organizaciones. W3C llama a estos puntos regionales de contacto "Oficinas del W3C." Cmo est organizado el W3C? El W3C recibe ingresos de: Cuotas de los Miembros del W3C[ingles] Becas de investigacin y otras fuentes de subvencin pblica y privada[ingles] Donaciones individuales de dinero y equipamiento

Modelos de desarrollo de Software


MODELO LINEAL SECUENCIAL Caractersticas: Requerimientos del sistema de informacin son predecibles. Requiere almacenamiento de datos en archivos y BD. Sirve para modelar sistema que un gran volumen de transacciones y procedimientos. Es necesaria validacin de los datos de entrada Requiere de la participacin de personal de sistemas de varias secciones (anlisis, diseo y programacin). El desarrollo del proyecto se hace por equipos de trabajo.

Ventajas: No exige experiencias del grupo de desarrollo. El desarrollo de las actividades es secuencial, por lo tanto es fcil de seguir. Desventajas: Es una tcnica que para entregar un producto final, necesita de mucho tiempo. Exige que las personas que suministren los requerimientos estn comprometidas con el proyecto. La tcnica arranca solo si se tienen TODOS los requerimientos. Las pruebas se hacen en etapas que estn al final, por lo que encontrar un error es muy costoso. No se sigue un ciclo de vida estrictamente secuencial, porque en la vida real hay etapas que se traslapan. Solo se dispone de una versin funcional de software al final.

Pasos:
Ingeniera del Sistema. Estudia el entorno del sistema y el impacto que este tiene en l. Anlisis. Estudia en detalle el problema (tamao y alcance)

Diseo. Modela las Estructuras de datos, la Arquitectura y la Interfaz, del sistema propuesto como solucin. Codificacin- Implementacin. Es la implementacin de la solucin (diseo) a travs de un lenguaje de programacin. Pruebas. Verifica la funcionalidad del programa y la validez de la estructura del cdigo desarrollado. Mantenimiento. Cambios que sufre el software a lo largo de su vida til. Sustitucin. La vida del software limitada. Promedio de vida del software es de 5 aos.

MODELO DE PROTOTIPOS Un Prototipo es un sistema a pequea escala que funciona y que incluye las principales caractersticas del sistema final. Este modelo incluye los elementos suficientes para permitir a las personas determinar si les agrada o no.
Caractersticas: Es una aplicacin funcional. Sirve para probar suposiciones de analistas y usuarios. Se crean con rapidez. Evoluciona con su uso. Bajo costo de desarrollo. Ventajas: Permite probar ideas del equipo desarrollador. Facilitan mejorar la productividad. Trabajo permanente con el usuario. Son ideales para aclarar requerimientos de usuarios. Permite verificar la factibilidad del diseo del sistema.

Desventajas: Requiere de experiencia. Requiere un control para el desarrollo planificado. Necesita de usuarios comprometidos. Pasos:

Identificar requerimientos disponibles. Planificar el trabajo de analistas y usuarios. Desarrollo del prototipo (A D P). Evaluacin de prototipo por usuario. Revisin y arreglo del prototipo de acuerdo a solicitudes. Implantacin del sistema.

Cuando usar Prototipos Cuando no se conocen todos los requerimientos Cuando los requerimientos no son fiables. Cuando hay costos por errores son altos. Cuando hay altos riesgos (informacin confidencial). Cuando hay nueva tecnologa (SW HW). Razones para Usarlos Aumentar la productividad del departamento de sistemas. Permitir redesarrollo planificado. Mantienen la motivacin de los usuarios.

MODELO INCREMENTAL Este modelo combina elementos del modelo lineal secuencial con la filosofa iterativa de construccin de prototipos. Desarrolla aplicaciones de manera independiente, donde cada mdulo se realiza en un incremento. Caractersticas: Es ideal para proyectos medianos Requiere de equipos consolidados de trabajo Ventajas: El usuario recibe un mdulo funcional en poco tiempo. El uso del producto realimenta el proceso (Primer mdulo sirve para depurar los dems). Pasos: Anlisis -> Diseo -> Cdigo -> Pruebas (TODOS LOS PASOS SON REPETITIVOS) Descripcin: La primera parte del software debe tener la informacin ms bsica, importante y compleja para que en las versiones siguientes sea ms fcil incrementar y mejorar la

Funcionalidad: En el modelo iterativo incremental se reduce mucho el tiempo y los costos ya que si algo falla dentro de una versin, no se pierde el tiempo y costo de todo el desarrollo, como en otros modelos, sino tan solo lo invertido para el desarrollo de esta versin. Para la aplicacin de este modelo se requiere de mucha organizacin, ya que muchas veces una versin puede estar casi completa cuando la versin anterior recin se presenta a los usuarios, tambin se debe planificar muy bien el tiempo en el que se har una nueva versin, ya que este no puede ser largo. Este modelo permite ir completando los requerimientos y necesidades del cliente poco a poco.

MODELO DRA Caractersticas: Se basa en el modelo lineal secuencial. Se hace en etapas secuenciales. Se entrega en corto tiempo. Construccin basada en componentes (elementos de otros sistemas). Necesita de habilidades de programadores y analistas. Usa cdigos reutilizable. Requiere de bastante personal. El personal debe contar con experiencia. Ventajas: Permite entregar aplicaciones en corto tiempo (< 3 meses). Reduccin de costos en la produccin del software. Desventajas: Cuando el proyecto es grande requiere de mucho recurso humano. Se necesita de compromiso cada uno de los integrantes del equipo de desarrollo (personal calificado). Exige la popularizacin del sistema. Si no hay componentes ya desarrollados no se puede utilizar. Personal con experiencia. Pasos: Modelado de Gestin. Analiza datos que maneja y genera el sistema (a donde van, quien los procesa, etc.) Modelado de Datos. Define los datos que necesita el sistema (estructura de datos). Modelado de Procesos. Disea los procesos que hacen parte del sistema. Generacin de Aplicaciones. Construir la aplicacin. Utiliza cdigo reutilizable para agilizar esta labor. Prueba y Entrega. Aplicar pruebas al sistema y entregar.

MODELO ESPIRAL Es un modelo evolutivo que combina la naturaleza iterativa de la construccin de prototipos con los aspectos controlados y sistemticos del modelo lineal secuencial. Caractersticas: Metodologa demorada para obtener un modelo optimo Modelo evolutivo (cada vez las versiones son ms completas). Mezcla del modelo lineal secuencial y prototipos. Desarrolla versiones incrementales del software. Hace un anlisis de riesgos que pueden afectar el proyecto. Se usa para generar programas que requieren de gran exactitud (aeronutica, medicina, robtica, etc.). Para productores de software (no debe ser usada por empresas normales) Ventajas: Se aplica a cualquier proyecto sin importar el tamao. Permite evaluar si el ciclo que se va a hacer, aporta algo o no (reduccin de riesgos). Se mejora la calidad con el tiempo (mientras ms tiempo pase mejor). Desventajas: -No es una tcnica de aprendices -Es una tcnica muy demorada para obtener un producto final.

-Debe existir un control para el nmero de ciclos necesarios para obtener el producto final.

Pasos: Comunicacin con el cliente. Planificacin (recursos, tiempo). Anlisis de riesgos (evaluar riesgos tcnicos) Ingeniera (tareas requeridas para construir una o ms representaciones de la aplicacin). Construccin y accin (probar, instalar, soporte a usuarios). Evaluacin del cliente (reduccin del cliente).

Ciclo de vida del software


El trmino ciclo de vida del software describe el desarrollo de software, desde la fase inicial hasta la fase final. El propsito de este programa es definir las distintas fases intermedias que se requieren para validar el desarrollo de la aplicacin, es decir, para garantizar que el software cumpla los requisitos para la aplicacin y verificacin de los procedimientos de desarrollo: se asegura de que los mtodos utilizados son apropiados. Estos programas se originan en el hecho de que es muy costoso rectificar los errores que se detectan tarde dentro de la fase de implementacin. El ciclo de vida permite que los errores se detecten lo antes posible y por lo tanto, permite a los desarrolladores concentrarse en la calidad del software, en los plazos de implementacin y en los costos asociados. El ciclo de vida bsico de un software consta de los siguientes procedimientos:

Definicin de objetivos: definir el resultado del proyecto y su papel en la estrategia global. Anlisis de los requisitos y su viabilidad: recopilar, examinar y formular los requisitos del cliente y examinar cualquier restriccin que se pueda aplicar.

Diseo general: requisitos generales de la arquitectura de la aplicacin. Diseo en detalle: definicin precisa de cada subconjunto de la aplicacin. Programacin (programacin e implementacin): es la implementacin de un lenguaje de programacin para crear las funciones definidas durante la etapa de diseo. Prueba de unidad: prueba individual de cada subconjunto de la aplicacin para garantizar que se implementaron de acuerdo con las especificaciones. Integracin: para garantizar que los diferentes mdulos se integren con la aplicacin. ste es el propsito de la prueba de integracin que est cuidadosamente documentada. Prueba beta (o validacin), para garantizar que el software cumple con las especificaciones originales. Documentacin: sirve para documentar informacin necesaria para los usuarios del software y para desarrollos futuros. Implementacin Mantenimiento: para todos los procedimientos correctivos (mantenimiento correctivo) y las actualizaciones secundarias del software (mantenimiento continuo). El orden y la presencia de cada uno de estos procedimientos en el ciclo de vida de una aplicacin dependen del tipo de modelo de ciclo de vida acordado entre el cliente y el equipo de desarrolladores.

Arquitectura de Software
Antes de elaborar sobre el tema, es conveniente definir el concepto ya que hoy en da el trmino de arquitectura se usa para referirse a varios aspectos relacionados con las TI. De acuerdo al Software Engineering Institute (SEI), la Arquitectura de Software se refiere a las estructuras de un sistema, compuestas de elementos con propiedades visibles de forma externa y las relaciones que existen entre ellos.[1] El trmino elementos dentro de la definicin del SEI es vago a propsito, pues puede referirse a distintas entidades relacionadas con el sistema. Los elementos pueden ser entidades que existen en tiempo de ejecucin (objetos, hilos), entidades lgicas que existen en tiempo de desarrollo (clases, componentes) y entidades fsicas (nodos, directorios). Por otro lado, las relaciones entre elementos dependen de propiedades visibles (o pblicas) de los elementos, quedando ocultos los detalles de implementacin. Finalmente, cada conjunto de elementos relacionados de un tipo particular corresponde a una estructura distinta, de ah que la arquitectura est compuesta por distintas estructuras. Por qu es importante la arquitectura de software? La arquitectura de software es de especial importancia ya que la manera en que se estructura un sistema tiene un impacto directo sobre la capacidad de este para satisfacer lo que se conoce como los atributos de calidad del sistema. Ejemplos de atributos de calidad son el desempeo, que tiene que ver con el tiempo de respuesta del sistema a las peticiones que se le hacen, la usabilidad, que tiene que ver con qu tan sencillo les resulta a los usuarios realizar operaciones con el sistema, o bien la modificabilidad, que tiene que ver con qu tan simple resulta introducir cambios en el

sistema. Los atributos de calidad son parte de los requerimientos (no funcionales) del sistema y son caractersticas que deben expresarse de forma cuantitativa. No tiene sentido, por ejemplo, decir que el sistema debe devolver una peticin de manera rpida, o presentar una pgina ligera, ya que no es posible evaluar objetivamente si el sistema cubre o no esos requerimientos. La manera en que se estructura un sistema permitir o impedir que se satisfagan los atributos de calidad. Por ejemplo, un sistema estructurado de tal manera que una peticin deba transitar por muchos componentes antes de que se devuelva una respuesta podra tener un desempeo pobre. Por otro lado, un sistema estructurado de tal manera que los componentes estn altamente acoplados entre ellos limitar severamente la modificabilidad. Curiosamente, la estructuracin tiene un impacto mucho menor respecto a los requerimientos funcionales del sistema. Por ejemplo, un sistema difcil de modificar puede satisfacer plenamente los requerimientos funcionales que se le imponen. Adems de los atributos de calidad, la arquitectura de software juega un papel fundamental para guiar el desarrollo. Una de las mltiples estructuras que la componen se enfoca en partir el sistema en componentes que sern desarrollados por individuos o grupos de individuos. La identificacin de esta estructura de asignacin de trabajo es esencial para apoyar las tareas de planeacin del proyecto. Finalmente, los diseos arquitectnicos que se crean en una organizacin pueden ser reutilizados para crear sistemas distintos. Esto permite reducir costos y aumentar la calidad, sobre todo si dichos diseos han resultado previamente en sistemas exitosos. El ciclo de desarrollo de la arquitectura Dentro de un proyecto de desarrollo, e independientemente de la metodologa que se utilice, se puede hablar de desarrollo de la arquitectura de software. Este desarrollo, que precede a la construccin del sistema, est dividido en las siguientes etapas: requerimientos, diseo, documentacin y evaluacin. Cabe sealar que las actividades relacionadas con el desarrollo de la arquitectura de software generalmente forman parte de las actividades definidas dentro de las metodologas de desarrollo. A continuacin se describen dichas etapas. Requerimientos. La etapa de requerimientos se enfoca en la captura, documentacin y priorizacin de requerimientos que influencian la arquitectura. Como se mencion anteriormente, los atributos de calidad juegan un papel preponderante dentro de estos requerimientos, as que esta etapa hace nfasis en ellos. Otros requerimientos, sin embargo, son tambin relevantes para la arquitectura, estos son los requerimientos funcionales primarios y las restricciones. Diseo. La etapa de diseo es la etapa central en relacin con la arquitectura y probablemente la ms compleja. Durante esta etapa se definen las estructuras que componen la arquitectura. La creacin de estas estructuras se hace en base a patrones de diseo, tcticas de diseo y elecciones tecnolgicas. El diseo que se realiza debe buscar ante todo satisfacer los requerimientos que influencian a la arquitectura, y no simplemente incorporar diversas tecnologas porque estn de moda.

Documentacin. Una vez creado el diseo de la arquitectura, es necesario poder comunicarlo a otros involucrados dentro del desarrollo. La comunicacin exitosa del diseo muchas veces depende de que dicho diseo sea documentado de forma apropiada. La documentacin de una arquitectura involucra la representacin de varias de sus estructuras que son representadas a travs de distintas vistas. Una vista generalmente contiene un diagrama, adems de informacin adicional, que apoya en la comprensin de dicho diagrama. Evaluacin. Dado que la arquitectura de software juega un papel crtico en el desarrollo, es conveniente evaluar el diseo una vez que este ha sido documentado con el fin de identificar posibles problemas y riesgos. La ventaja de evaluar el diseo es que es una actividad que se puede realizar de manera temprana (an antes de codificar), y que el costo de correccin de los defectos identificados a travs de la evaluacin es mucho menor al costo que tendra el corregir estos defectos una vez que el sistema ha sido construido. El rol de arquitecto Las actividades descritas anteriormente requieren de habilidades particulares que son la responsabilidad del arquitecto de software. El arquitecto es un lder tcnico que debe conocer los principios relacionados con la arquitectura de software, tener un amplio conocimiento respecto a la tecnologa, y tener excelentes habilidades de comunicacin escrita y oral. Desafortunadamente, en la actualidad pocos arquitectos de software que laboran en la industria han recibido una formacin terica respecto al tema. Esto se debe a que no es sino hasta pocas recientes que se han establecido de manera ms formal los conceptos relacionados con la arquitectura de software, y que actualmente pocas instituciones ofrecen cursos enfocados en el tema. El desconocimiento de los principios relativos a la arquitectura de software frecuentemente impacta de manera negativa a los proyectos de desarrollo. Apenas empezamos A lo largo de las distintas entregas de esta columna que inicia se buscar dar una panormica del tema de arquitectura de software y se discutir de manera ms detallada aspectos como: Requerimientos que influyen en la arquitectura El diseo, documentacin y evaluacin de la arquitectura Los retos relacionados con la introduccin de prcticas de arquitectura de software en un contexto organizacional, La arquitectura de software dentro de las metodologas de desarrollo, El perfil del arquitecto de software.

Conclusin

Bibliografa http://definicion.de/ingenieria-de-software/ http://www.itlalaguna.edu.mx/academico/carreras/sistemas/ingsofware1/Unidad1.pdf http://histinf.blogs.upv.es/2010/12/28/ingenieria-del-software/ https://sites.google.com/a/colegiomiguelaleman.edu.mx/sistemas/inicio/compu-queo_0/clasificacion-del-software-de-aplicacion http://www.sei.cmu.edu/about/?location=secondary-nav&source=1358 http://es.wikipedia.org/wiki/Software_Engineering_Institute http://www.w3.org/Help/ http://es.kioskea.net/contents/223-ciclo-de-vida-del-software http://sg.com.mx/content/view/922

Anda mungkin juga menyukai