Nuevas Metodologias de Ingeniería de Software

Share Embed Donate


Short Description

Nuevas Metodologias de Ingeniería de Software...

Description

 Nuevas Metodologías Metodologías de Ingeniería Ingeniería de Software William Hernando Álvarez Villota Luis Fernando Díaz Muñoz Juan Sebastián Erazo Chamorro Robín Adrián Rúales Bastidas  Institución universitaria universitaria CESMAG San Juan de Pasto, Republica de Colombia [email protected] [email protected] [email protected] [email protected] [email protected]

I.

INTRODUCCIÓN

El desarrollo del siguiente formato contiene información sobre las nuevas metodologías de ingeniería de software, los métodos de desarrollo de software que han innovado y cambiado la perspectiva del manejo de la ingeniería de software, de igual manera también las ventajas y desventajas que pueden  presentar cada uno de los métodos métodos a mencionar. II.

ABSTRACT

The development of the following format contains information on new methodologies of software engineering, methods of software development have innovated and changed management  perspective of software engineering, likewise also the advantages and disadvantages that can present each of the methods mentioned. III.

¿QUE ES METODOLOGIA EN INGENIERIA DE SOFTWARE?

Una metodología es un conjunto integrado de técnicas y métodos que permite abordar de forma homogénea y abierta cada una de las actividades del ciclo de vida de un proyecto de desarrollo. Es un  proceso de software detallado detallado y completo. Una metodología para el desarrollo de software comprende los procesos a seguir sistemáticamente para idear, implementar y mantener un producto software desde que surge la necesidad del producto hasta que cumplimos el objetivo por el cual fue creado. La metodología dentro de la ingeniería del software es un tema que produce cierto tipo de confusión tanto en estudiantes como en profesionales involucrados en procesos de desarrollo de software, de

tal manera, que en muchos proyectos la aplicación de una metodología no se la aprecia de la manera que debe, tomando este un concepto del cual poco se conoce. Entre las metodologías que hay para la ingeniería de software no hay una que se pueda decir que es superior a las demás, en cambio todas las metodologías según la problemática son bienintencionadas, solo que,  por obvias razones las metodologías modernas o nuevas se ven encaminadas a problemáticas y necesidades actuales. Gracias a los avances que hay dentro de la informática, muchos profesionales de las tecnologías de la información como algunos de los clientes han visto la necesidad de usar unos pasos predefinidos para el desarrollo del software de calidad, es decir seguir un lineamiento metódico: una una metodología. metodología. b Que metodología utilizar dentro de la Ingeniería  de Software

Dentro de la buena utilización de una metodología dentro de la ingeniería de software, el paso más importante y el cual decide que rumbo tomara el desarrollo del software es la elección de cual metodología hacer uso, hay una serie de metodologías que se pueden llamar “tradicionales”, las cuales son

 propuestas en el periodo de los años 90 del siglo XX, que tenían como propósito ayudar a los profesionales indicando pautas para realizar y documentar cada una de las tareas del desarrollo del software, las cuales tienen un problema con respecto al contexto informático, que es tomarlo como la extensión de un  proyecto burocrático tradicional. Así utilizando pasos que sugieren un desarrollo de la tarea de forma

 burocrática, reiterada, con ambigüedades, etc. Dejando a un lado cosas como la calidad, satisfacción, competitividad y los beneficios que puede tomar el desarrollo del Software. Gran parte de las metodologías tradicionales ya no funcionan, estando ya obsoletas desde casi todas las perspectivas, obligando a algunas a ser revisadas y adaptadas pero con una funcionalidad limitada a proyectos que pueden tornarse  poco innovadores.

Entre las metodologías modernas se pueden destacar:

Las metodologías que surgieron y surgen desde los años 90 hasta aquí suelen tener una visión diferente  porque son conscientes de que el mundo del software es un campo amplio y que está en constante cambio, utilizando un desarrollo preciso como para que todas las personas puedan seguirlas y sea de utilidad como  pauta común; pero de la misma forma tiene que ser adaptable para que se pueda aplicar en proyectos diferentes y suficientemente sencilla para que su ejecución no sea muy grave, pero sea completamente y complejamente provechosa, resumiendo en una solo concepto: Metodología ágil.

Hay muchas más, pero quizá éstas sean las más  populares en el momento.





 

¿Qué cosas no podemos tomar  metodologías de Ingeniería de Software? 

¿Qué tipo de metodologías hay dentro de la  Ingeniería de Software? 

Como se puede ver las metodologías se pueden “dividir” en dos tipos las cuales son: metodologías

tradicionales y metodologías modernas. Entre las metodologías tradicionales podemos encontrar: 







Desarrollo de sistemas de Jackson (JSD). De los años 80. Ingeniería de la información. De los 80 también. Structured System Analysis and Design Method (SSADM). También de los 80. Muy  popular en Europa, ya que tiene su origen el Reino Unido. Metodología METRICA, promovida por el Ministerio de las Administraciones Públicas del gobierno de España

Algunas, como las dos primeras (Jackson, Ingeniería de la información), tienen un interés  principalmente histórico. Otras, como SSADM o MÉTRICA, tienen cierta vigencia, en especial en lo que concierne a proyectos públicos.

Rational Unified Process. (Proceso Racional Unificado - RUP) Agile Unified Process. (Proceso Ágil Unificado - AUP) Programación Orientada A Aspectos (POA) Arquitectura Orientada a Servicios (SOA)



como

La "Programación estructurada" o la "Programación Orientada a Objetos" son  paradigmas o modelos de programación. Indican pautas de comportamiento en los sistemas de programación que por consecuente no tienen nada que ver con el ciclo de vida del software ni la manera en la que debe realizarse cada tarea para un proyecto. Los términos "Ciclo de vida en espiral ", " Ciclo de vida incremental ", " en Cascada", " con  prototipo", etc. fueron propuestos en los años 70 y 80 por autores hoy en día clásicos, como Barry Boehm o Winston W. Royce. Todavía aparecen en los libros, y probablemente tienen cierta vigencia dado que se tratan de ideas muy  básicas, que "no pasan de moda". Son esquemas generales de organización en las tareas del ciclo de vida, unas con respecto a otras y con respecto a otros aspectos como el tiempo, los requisitos o el riesgo. Actualmente se prefiere la denominación de PATRONES del ciclo de vida del software , aunque antaño fueron denominados simplemente distintos " Ciclos de vida " . Indican ideas estructurales sencillas en el proceso de desarrollo, y no la manera en la que debe realizarse cada tarea del ciclo para un proyecto concreto El

lenguaje UML (Unified  Languaje) es un gran logro de la

Modeling

ingeniería. Aún con sus carencias, y puntos criticables es un avance muy significativo: un lenguaje común para que todos los profesionales del desarrollo de sistemas expresen sus ideas pero el UML no indica a nadie la manera de realizar cada tarea en un proyecto concreto: tan solo es una herramienta para expresar ideas. Sin

embargo, algunas metodologías de las que hemos comentado, como RUP o METRICA hacen referencia a UML como herramienta  para expresar ideas. IV.

PROGRAMACIÓN ORIENTADA A ASPECTOS

La programación orientada a aspectos es una de las nuevas metodologías de programación, intenta separar componentes y aspectos por aparte arrojando como resultando mecanismos que puedan ser utilizados para componer todo un sistema de una manera que sea eficiente y a su vez fácil de entender. POA es un paradigma de programación la cual intenta permitir una modularización de las aplicaciones y posibilitar una separación de conceptos Se usa poa ya que existen conceptos que no pueden encapsularse dentro de una sola unidad funcional  puesto que atraviesan todo el sistema como por ejemplo: manejo de memoria, manejo de errores, sincronización, etc.

elementos que se cruzan entre sí como elementos de  primera clase. Para tener más claro el concepto de POA es necesario saber lo que es un aspecto: Se entiende por aspecto a una unidad modular que se disemina por la estructura de varias unidades funcionales, estos aspectos existen no solo al principio o al final sino tanto en la etapa de diseño como en la de implementación. Los aspectos son la unidad básica de la programación orientada a aspectos. El soporte necesitado para este tipo se logra mediante una nueva clase de lenguajes llamados LOA (lenguajes orientados a aspectos), lenguajes los cuales  brindan los mecanismos necesarios para poder capturar y junto con ello declarar los elementos que están diseminados por todo el sistema, son capaces de manejar uno o varias aspectos pero no pueden manejar aspectos diferentes a los cuales no fueron diseñados.    

Los aspectos deben ser identificables Los aspectos deben auto contenerse Los aspectos deben ser accesibles al modificar Los aspectos no deben interferir entre si

 Algunos LOA son:

La programación orientada a aspectos ayuda a resolver problemas de scattered (código disperso, un mismo servicio llamado de manera similar desde diferentes partes dentro del programa) y de tangled (código enmarañado, una misma operación tiene que acceder a diferentes servicios además de cumplir con la operación a la que está asignado)

    

Cool RIDL MALAJ AspectC AspectC++

Una implementación basada en POA consiste  principalmente en un lenguaje base para programar la funcionalidad básica, al igual que uno o varios lenguajes de aspectos para poder especificar los concerns, todo esto acompañado de un “tejedor” de

aspectos para la combinación de los diferentes lenguajes y por último uno o más programas de aspectos que puedan implementarlos. La gráfica siguiente demuestra cómo se enmarca en cada uno de los conceptos anteriores

POA es la consecución de la POO., donde la fortaleza del segundo se basa en la demostración de cuando hay que modelar conceptos comunes pero falla al modelar dichos conceptos, lo contrario pasa con POA puesto que logra dicho objetivo al tratar Ilustración 1 Programación orientada a aspectos [estructura (POA)]

Ventajas: 

Un código más natural, menos enredado y reducido





  



Facilidad para depurar y hacer modificaciones al código Código reusable que se puede acoplarar/desacoplar cuando sea requerido y/o necesario Razonamiento mejor sobre los conceptos Eliminación de la dispersión del código Implementaciones en el código, comprensibles, adaptables, limpias, fáciles de entender. Ayuda a superar los problemas causados  por el código mezclado y el código diseminado

 Desventajas: 







V.

Posibles choques entre el código funcional y en el código de aspectos Posibles choques entre el código de aspectos y los mecanismos del lenguaje, ejemplo: la herencia de un aspecto a otro Posibles choques entre los aspectos, ejemplo: dos aspectos que separados funcionan muy bien pero al juntarlos arrojan como resultado un comportamiento anormal. Los LOA actuales no cuentan con mecanismos suficientes para poder respetar por completo los principios de diseño como por ejemplo el encapsulamiento

subyacentes. En lugar de exigir que todos los datos y lógica de negocio residan en un mismo ordenador, el modelo de servicios facilita el acceso y consumo de los recursos de IT a través de la red. Puesto que los servicios están diseñados para ser independientes, autónomos y para interconectarse adecuadamente,  pueden combinarse y recombinarse con suma facilidad en aplicaciones complejas que respondan a las necesidades de cada momento en el seno de una organización. Las aplicaciones compuestas (también llamadas “dinámicas”) son lo que p ermite a las empresas mejorar y automatizar sus procesos manuales, disponer de una visión consistente de sus clientes y socios comerciales y orquestar sus procesos de negocio para que cumplan con las regulaciones legales y políticas internas. El resultado final es que las organizaciones que adoptan la orientación a servicios  pueden crear y reutilizar servicios y aplicaciones y adaptarlos ante los cambios evolutivos que se producen dentro y fuera de ellas, y con ello adquirir la agilidad necesaria para ganar ventaja competitiva. MODELOS.

ARQUITECTURA ORIENTADA A SERVICIOS (SOA)

El acrónimo S.O.A. proviene de las palabras inglesas Service Oriented Architecture, establece un marco de diseño para la integración de aplicaciones independientes de manera que desde la red pueda accederse a sus funcionalidades, las cuales se ofrecen como servicios. La forma más habitual de implementarla es mediante Servicios Web, una tecnología basada en estándares e independiente de la  plataforma, con la que SOA puede descomponer aplicaciones monolíticas en un conjunto de servicios e implementar esta funcionalidad en forma modular. La estrategia de orientación a servicios permite la creación de servicios y aplicaciones compuestas que  pueden existir con independencia de las tecnologías

Ventajas 

  

 

Respuesta rápida a nuevas necesidades de negocio. Reducción del costo de desarrollo de IT. Capacidad de integrar a clientes y socios. Capacidad de generar nuevos modelos de negocios. Alinear objetivos de IT a objetivos de negocio. Apertura a nuevos mercados, canales y valor de sistemas existentes.





  

Permite la reutilización de componentes  prefabricados de servicio para implementaciones lógicas. Integra sistemas separados de distintas  plataformas. Eliminar duplicidad de sistemas. Automatiza los procesos de negocios. Mejorar la visibilidad de procesos de negocio.

 Desventajas: 









SOA depende de la implementación de estándares. Sin estándares, la comunicación entre aplicaciones requiere de mucho tiempo y código. SOA no es para: aplicaciones con alto nivel de transferencia de datos, aplicaciones que no requieren de implementación del tipo request/response y para aplicaciones que tienen un corto periodo de vida. Incrementalmente se hace difícil y costoso el ser capaz de cumplir con los protocolos y hablar con un servicio. Implica conocer los procesos del negocio, clasificarlos, extraer las funciones que son comunes a ellos, estandarizarlas y formar con ellas capas de servicios que serán requeridas  por cualquier proceso de negocio. En la medida en que un servicio de negocio, vaya siendo incorporado en la definición de los  procesos de negocio, dicho servicio aumentara su nivel de criticidad. Con lo cual cada que se requiera efectuar una actualización en dicho servicio (por ejemplo, un cambio en el código, una interfaz nueva, etc.), deberá evaluarse  previamente el impacto y tener mucho cuidado con su implementación. Sin embargo, parte de la problemática anterior, puede ser solventada en virtud a un buen diseño del servicio.

Utilización de las nuevas metodologías en  distintos países.

Debido a los beneficios que representa SOA & POA como nuevas metodologías y que van directamente aplicadas en el ámbito empresarial son muchos los países que han comenzado a desarrollar y/o utilizar estas estrategias, principalmente los países y empresas orientales que han sido los que en su mayoría

le apuestan más al uso de éstas metodologías puesto que ayudan a optimizar varios de sus procesos creando así un entorno más evolutivo de diversos campos en ellas arrojando así como resultado avances importantes en las mismas. VI.

BIBLIOGRAFÍA

[1] Joskowicz, José. Programación orientada a aspectos. Disponible en: http://iie.fing.edu.uy/%7Ejosej/docs/Programacion%2 0Orientada%20Aspectos%20%20Jose%20Joskowicz.pdf [2] Nieto Moreno, Juan Manuel. Escuela técnica superior de ingeniería informática. Introducción a la  programación orientada a aspectos. Disponible en: http://lsi.ugr.es/~pdo/MaterialTeoriaAlumnos/Tema% 206.-%20Dise%F1o%20OO/POA.pdf [3] Asteasuain, Fernando. Contreras, Ezequiel, Bernardo. Universidad nacional del sur. Programación orientada a aspectos. Disponible en: http://www.angelfire.com/ri2/aspectos/Tesis/tesis.pdf [4] Vic, CO “la tecla del escape”.   Metodologías de desarrollo del software. Disponible en: http://latecladeescape.com/h/2015/07/metodologiasde-desarrollo-del-software [1] MICROSOFT. La Arquitectura Orientada a Servicios (SOA) de Microsoft aplicada al mundo real. [Online]. Disponible en: www.microsoft.com/soa. [2] MARTIN, Isabel. RODRIGO, José. Arquitectura Orientada a Servicios (SOA). Disponible en:

https://emergingtechuva.wordpress.com/2013/11/25/a rquitectura-orientada-a-servicios-soa/ [3] SOAINT. SERVICIOS

ARQUITECTURA ORIENTADA A (SOA). Disponible en:

http://www.soaint.com/servicios/arquitecturaorientada-a-servicios/

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF