SlideShare una empresa de Scribd logo
1 de 5
Descargar para leer sin conexión
“RAP”
Reutilización Apropiada para Programadores
Universidad Politécnica de Sinaloa
Ingeniería en Informática
Canizales Torres, Axel (2014030422@upsin.edu.mx)
Gama Herrera, Andrea Elizabeth Guadalupe (2014030455@upsin.edu.mx)
Hernández Tirado, Miguel Aaron (2014030461@upsin.edu.mx)
Munguía Brito, César Abraham (2014030476@upsin.edu.mx)
Rodríguez Benítez, José Carlos (2014030406@upsin.edu.mx)
Rodríguez Romero, Cristo Favel (2014030348@upsin.edu.mx)
Sarabia Castellón, Jesús Gabriel (2014030516@upsin.edu.mx)
RESUMEN
Este artículo está dedicado a la
temática “Reutilización de Código” la
cual es de gran importancia en el
mundo de desarrollo de software hoy en
día, pues facilita a gran escala lo que es
el procedimiento de diseño, creación,
implementación y mantenimiento de
este mismo.
Esta práctica es difícil de efectuar,
porque requiere cierta preparación por
parte del desarrollador, el cliente y los
administradores del proyecto para que
se pueda implementar de manera
correcta, ya que para poder reutilizar es
vital conocer la problemática a resolver
así como sus limitantes y adaptabilidad
del código.
Si bien, se espera poder orientar al
lector en lo que es reutilización de
código como práctica de desarrollo
considerando beneficios y desventajas
durante la planeación e implementación
de dicho código así como el por qué
debe realizar estas prácticas y cuando
no es recomendado ya sea por factores
internos (experiencia, costos) o
externos (tiempo, objetivos).
Palabras Clave:
Reutilización, Tiempo, Adaptabilidad,
Limitantes, Diseño.
ABSTRACT
This article it’s dedicated to the topic:
“Code Reuse” which is one of the main
factors on software development now on
days because it makes much easier to
design, creation, application and
maintenance of the very same software.
This kind of practice is hard to apply,
most likely because it requires a lot of
preparation from the software
developer, the client and the project
managers in order to be able to apply it
properly. It is also a good idea to know
well the objectives, limits and code
adaptability.
As main goal for this article, is to help
the reader to reuse code as a normal
practice considering the benefits and
disadvantages during the design and
application for those codes or methods,
including when you should reuse or not
to do so because of factors such as
internal (experience, costs) or external
(time, objectives).
Keywords:
Reuse, Time, Adaptability, Limits,
Design.
I. INTRODUCCIÓN
La reutilización es uno de los conceptos
de la programación más antiguos y
simples de entender, pero complejo al
poner en práctica. El uso de software
existente para desarrollar uno nuevo ha
sido empleado desde los primeros días
de la programación, siempre se han
reusado partes de un código, planillas,
funciones o procedimientos. Esta es la
idea: parte o todo el código de un
programa de computadora escrito una
vez, sea o pueda ser usado en otros
programas.
En sí, consiste en la creación de
sistemas de software a partir de un
software existente, en lugar de tener
que rediseñar desde el principio.
En el siglo pasado resultaba imposible
poder representar artefactos de
software por su propio contenido (por
ejemplo, buscar diagramas de clase
similares a uno dibujado en otra
herramienta), lo cual impedía que
cualquiera pudiera buscarlos sin
conocimiento previo de su existencia.
Por este motivo, para reutilizar hubo
que realizar el proceso inverso: primero
parar la organización para ver qué
podía ser reutilizable, después hacerlo
reutilizable, lo siguiente era obligar a
que todos conocieran lo que existe para
reutilizar en la organización (puesto que
si no, NO sabrían que existía), y luego
intentar obligar a que reutilizaran lo
existente por lo que tendrían que saber
operar con ellos de antemano.
Tal cual la reutilización de código no se
formalizo si no, hasta 1968 cuando en
un congreso que organizó el Comité de
Ciencia de la OTAN el ingeniero de Bell
Laboratories, M.D. McIlroy, afirmó que
“La industria del software se asienta
sobre una base débil, y un aspecto
importante de esa debilidad es la
ausencia de una sub-industria de
componentes”. Es entonces cuando
empiezan a surgir las primeras librerías
de software con el fin de poder facilitar
el diseño de diferentes módulos dentro
de las compañías.
II. DESARROLLO
En el área de programación o ingeniería
de software la reutilización se refiere a
la habilidad de poder extraer código, ya
sean módulos, métodos, vistas, o
cualquier pieza funcional de un
algoritmo y poder implementarlo a otro
sistema con el fin de poder ahorrar
tiempo y esfuerzo durante las fases de
diseño del software.
Así mismo, existen diferentes tipos de
reutilización.
 Conocimiento: se reutiliza el
conocimiento y la experiencia de
otros desarrolladores.
 Oportunista se reutilizan piezas
que se sabe que se ajustan al
problema.
 Sistemática: se diseñan
componentes genéricos para que
sean reutilizados con facilidad.
 Bottom-Up: se desarrollan
pequeños componentes para una
determinada aplicación.
 Top-Down: se van desarrollando
las piezas necesarias poco a
poco.
Y niveles, que se definen más por el
componente a reutilizar.
 Reutilización de código: librerías
de funciones, editores, inclusión
de ficheros, mecanismos de
herencia en POO, componentes,
etc.
 Reutilización de diseños: no
volver a inventar arquitecturas.
 Reutilización de especificaciones:
reutilización de las abstracciones
del dominio.
Pero, como en todo proceso, se
contemplan las grandes ventajas y
desventajas por igual.
Ventajas:
 Reducción de costos.
 Reducción de tiempo de
desarrollo.
 Reducción de esfuerzos durante
la programación.
 Facilita el mantenimiento con la
apropiada documentación.
Desventajas:
 Ambigüedad del método a
reutilizar.
 Alto conocimiento en el lenguaje
de desarrollo para implementarse
de manera eficaz.
 Conocer en su totalidad el
objetivo final del programa así
como contemplar sus limitantes.
 El ritmo de avance del siglo XXI
en programación hace más difícil
implementarlo debido a que se
puede encontrar desactualizada
rápidamente.
Si bien, como todo, reutilizar código es
una práctica que muchos siempre
contemplan poder realizar pero la cual
no siempre se logra poder llevar a cabo
por diferentes factores que están fuera
del alcance del programador la mayoría
de las veces tales como son los
objetivos finales del sistema, cuestión
de costos o seguridad, adaptabilidad del
código, etc.
Entonces…
¿Cuándo reutilizar código?
Tanto novatos como expertos se
preguntan con frecuencia cuando
reutilizar código. Los novatos suelen
buscar código que sea implementable
sin cuestionar el funcionamiento lógico
o algorítmico; en cambio, los expertos
buscan un código que sea fácil de
comprender a simple vista y verificar el
nivel de abstracción que este presenta
así como diferentes factores (entradas
de datos, procesamientos de datos,
etc.) haciendo quizá más difícil su
selección.
Pero realmente el cuándo
implementarlo debería de ser siempre
que sea posible y resuelva la
problemática de manera eficiente. Mas
existe una gran cantidad de factores a
considerar para poder reutilizar código,
tales como:
 Tener primero previsto los
objetivos del software o producto
final: Esto con el fin que cuando
se encuentre en la fase de
diseño sea más fácil planear la
atomicidad de los métodos.
 Conocimiento del lenguaje de
programación: Sea un lenguaje
estructurado u orientado a
objetos es importante conocer
bien el mismo, debido a que
quizá sea necesario adaptar el
código para que cumpla con los
requisitos iniciales.
 Costos y Mantenimiento: Muchas
veces es más económico
reutilizar módulos, métodos,
vistas o inclusive porciones de
código programado para facilitar
la creación de uno nuevo desde
cero (Scratch) pero siempre se
debe de recordar que una vez
terminado este, se le debe dar
mantenimiento o actualizaciones
al producto final, por lo que se
recomienda conocer el cómo
funciona bien cada pieza de
código y verificar antecedentes
tanto de éxitos como fallos de la
reutilización.
¿Cómo reutilizar código?
La reutilización de código se vuelve
compleja ya que requiere de una gran
versatilidad por parte del programador,
hay una gran cantidad de puntos a
considerar para poder diseñar y crear
un código reutilizable, pero los
principales serían:
 DRY( Don’t Repeat Yourself- No
te repites a ti mismo): Esto hace
referencia a que cada pieza de
código sea única y original, si
bien es una mentalidad muy
contradictoria ya que promueve y
a la vez no lo que es reutilizar el
código; es importante
considerarlo debido a que DRY
dice que “Cada pieza de
conocimiento, deberá tener un
único sentido, representación
autoritaria dentro de un sistema”
esto se puede interpretar tanto a
que no se deba reutilizar código
fuera de un sistema terminado o
a no se deberá de tener más de
una misma pieza del mismo
código en otro. Ejemplo:
“Reciclar 4 módulos del
programa A e implementarlos en
B; DRY desde el punto de vista a
favor de la reutilización, diría que
solo usemos un módulo del
programa A desde el punto de
vista negativo diría que ninguno”.
 Diseñar Métodos independientes
y con un fin único: Esto nos dice
que los métodos diseñados para
un sistema deben cumplir un fin
único, ya sean sumas, restas,
multiplicaciones, altas, bajas,
consultas, etc. así como que
estos sean lo más
independientes posibles, o sea
que no dependan de otros
métodos del mismo sistema, es
tolerable que dependa de
parámetros y retorne un proceso
interno.
 Mantener la objetividad a un
lado: Referente a que si es un
sistema bancario, sus métodos
reutilizables deberán mantener al
mínimo las peticiones de datos
de casos específicos.
 Técnicas de programación: Si
bien un gran fallo de la
reutilización, es que en la
actualidad el ritmo de avance en
técnicas y métodos de
programación puede opacar
rápidamente un método diseñado
un año atrás, ya que puede que
se implementara como función
pasiva del mismo lenguaje en su
versión posterior.
Estadísticas
La reutilización tiene ciertos
indicadores, por ejemplo:
1. Entre el 40% y 60% de una aplicación
es re-utilizable en otra.
2. Aproximadamente el 60% de una
aplicación administrativa es re-utilizable.
3. Aproximadamente el 75% de las
funciones son comunes a más de un
programa.
4. Solo el 15% del código encontrado en
muchos sistemas es único y novedoso a
una aplicación específica.
Para comprender mejor lo que es la
reutilización es oportuno analizar el
siguiente caso práctico:
Juan es un programador con 5 años de
experiencia en Java, y por primera vez
le piden un módulo con compatibilidad
con web mail, el realiza 80% de los
módulos de manera eficiente, pero lo
que respecta al módulo de envió
automático de e-mails, lo descarga de
internet, de un blog aparentemente
confiable, el verifica el procedimiento y
lo adapta a sus necesidades.
El ejemplo anterior, nos muestra un
ejemplo de cuando un programador
novato encuentra código reciclable pero
lo analiza y adapta para sus
necesidades, a diferencia del siguiente
ejemplo:
Pedro tiene la misma experiencia que
Juan en Java y se encuentra en la
misma situación, salvo que, él ya había
hecho un programa con web mail antes,
y decide reciclar 40% de las clases que
uso, involucrando datos de entrada del
web mail y el sistema de auto-mensaje.
Pero nunca se dio cuenta de un
pequeño error en “case sensitive” el
cual estaba desactivado, ósea no
discriminaba minúsculas de
mayúsculas, reduciendo la seguridad de
entrada de contraseñas bastantemente.
En este último ejemplo, vemos que
Pedro tendrá problemas de seguridad si
se realiza un ataque a su sistema, o
alguien descubre ese error. Él puede
reusar módulos que él cree que
funcionan de manera eficiente, pero al
no hacerlo transfiere una debilidad de
un sistema a otro.
III. CONCLUSIÓN
Se espera que este artículo satisfaga la
necesidad del lector en su búsqueda de
conocimiento relacionado a la
"Reutilización de Código". Es altamente
recomendado el empleo de esta misma
por una gran gama de razones, mas es
necesario estar conscientes que el
poder lograrlo de la mejor manera no
siempre es fácil y al final la decisión de
realizar o no esta práctica cae en las
manos de cada individuo debido a que
cada programador piensa de diferente
manera en lo que consta sobre la lógica
de su programa así como las
circunstancias en las que se ha
solicitado el producto. La reutilización es
una práctica que se ha ejercido a lo
largo de los años, desde que surgió
formalmente la computación siempre se
ha encontrado conflictiva en diferentes
factores pero cuando estos son
solucionados o adaptados se logra
entregar un producto con una calidad
inigualable. Recordemos que la
finalidad de reutilizar código es facilitar
los plazos de tiempo predeterminados o
ir por la funcionalidad de algun módulo
operacional existente sin fallos, por
ende este articulo apoya la reutilización
siempre y cuando esta sea para mejorar
o facilitar su código y usted, estimado
lector, este consciente que el
fragmento a anexar a su código
resuelva su necesidad sin generar
errores.
IV. BIBLIOGRAFÍA
http://biblioteca.usac.edu.gt/tesis/08/08_0476_C
S.pdf
http://c2.com/cgi/wiki?DontRepeatYourself
Patrones de diseño: elementos de software orientado
a objetos reutilizables
Erich Gamma. Addison Wesley, 2002
Müller Hausi A.. “Understanding software systems
using reverse engineering technologies research and
practice” (tutorial). En la 18 Conferencia Internacional
de Ingeniería de Software (ICSE-18), Berlin,
Alemania, Marzo 1996. Disponible en:
http://www.rigi.csc.uvic.ca/UVicRevTut/UVicRevTut.ht
ml

Más contenido relacionado

La actualidad más candente

Fundamentos de Diseño - Grupo Delta
Fundamentos de Diseño - Grupo DeltaFundamentos de Diseño - Grupo Delta
Fundamentos de Diseño - Grupo DeltaNicola Pizzi Castro
 
Arquitectura software.taxonomias.construccion.002
Arquitectura software.taxonomias.construccion.002Arquitectura software.taxonomias.construccion.002
Arquitectura software.taxonomias.construccion.002Jose Emilio Labra Gayo
 
CUADRO COMPARATIVO DE LOS MODELOS DE CICLO DE VIDA DE SOFTWARE
CUADRO COMPARATIVO DE LOS MODELOS DE CICLO DE VIDA DE SOFTWARECUADRO COMPARATIVO DE LOS MODELOS DE CICLO DE VIDA DE SOFTWARE
CUADRO COMPARATIVO DE LOS MODELOS DE CICLO DE VIDA DE SOFTWAREFreddy Aguilar
 
Arquitectura software.taxonomias.definiciones.001
Arquitectura software.taxonomias.definiciones.001Arquitectura software.taxonomias.definiciones.001
Arquitectura software.taxonomias.definiciones.001Jose Emilio Labra Gayo
 
Alfonso software
Alfonso softwareAlfonso software
Alfonso softwareismael_2014
 
Trabajo diapositiva Software por Jhonatan Ruiz
Trabajo diapositiva  Software por Jhonatan RuizTrabajo diapositiva  Software por Jhonatan Ruiz
Trabajo diapositiva Software por Jhonatan Ruizjhonatanalex
 
Trabajo de sistemas de software
Trabajo de sistemas de softwareTrabajo de sistemas de software
Trabajo de sistemas de softwareJhonJairoPerez
 
Investigación de ingeniería de software
Investigación de ingeniería de software Investigación de ingeniería de software
Investigación de ingeniería de software ingenieriadsoftware
 
Prueba informatica
Prueba informaticaPrueba informatica
Prueba informaticaJuan Gunsha
 
Arquitectura software.taxonomias.comportamiento.001
Arquitectura software.taxonomias.comportamiento.001Arquitectura software.taxonomias.comportamiento.001
Arquitectura software.taxonomias.comportamiento.001Jose Emilio Labra Gayo
 
Clase 06 diseno_arquitectura
Clase 06 diseno_arquitecturaClase 06 diseno_arquitectura
Clase 06 diseno_arquitecturaDemián Gutierrez
 
Diapositivas De Ingenieria De Software
Diapositivas De Ingenieria De SoftwareDiapositivas De Ingenieria De Software
Diapositivas De Ingenieria De Softwarerapa69
 
Software alejandra reyes
Software alejandra reyesSoftware alejandra reyes
Software alejandra reyesvelasquezz
 
mauro hoyos software y sistemas operativos
mauro hoyos software y sistemas operativosmauro hoyos software y sistemas operativos
mauro hoyos software y sistemas operativosmaurohoy
 
Software y sistemas operativos
Software y sistemas operativosSoftware y sistemas operativos
Software y sistemas operativosmaurohoy
 

La actualidad más candente (19)

Fundamentos de Diseño - Grupo Delta
Fundamentos de Diseño - Grupo DeltaFundamentos de Diseño - Grupo Delta
Fundamentos de Diseño - Grupo Delta
 
Arquitectura software.taxonomias.construccion.002
Arquitectura software.taxonomias.construccion.002Arquitectura software.taxonomias.construccion.002
Arquitectura software.taxonomias.construccion.002
 
CUADRO COMPARATIVO DE LOS MODELOS DE CICLO DE VIDA DE SOFTWARE
CUADRO COMPARATIVO DE LOS MODELOS DE CICLO DE VIDA DE SOFTWARECUADRO COMPARATIVO DE LOS MODELOS DE CICLO DE VIDA DE SOFTWARE
CUADRO COMPARATIVO DE LOS MODELOS DE CICLO DE VIDA DE SOFTWARE
 
P informatica
P informaticaP informatica
P informatica
 
Arquitectura software.taxonomias.definiciones.001
Arquitectura software.taxonomias.definiciones.001Arquitectura software.taxonomias.definiciones.001
Arquitectura software.taxonomias.definiciones.001
 
Alfonso software
Alfonso softwareAlfonso software
Alfonso software
 
Enfoques para la reutilización
Enfoques para la reutilizaciónEnfoques para la reutilización
Enfoques para la reutilización
 
Trabajo diapositiva Software por Jhonatan Ruiz
Trabajo diapositiva  Software por Jhonatan RuizTrabajo diapositiva  Software por Jhonatan Ruiz
Trabajo diapositiva Software por Jhonatan Ruiz
 
Trabajo de sistemas de software
Trabajo de sistemas de softwareTrabajo de sistemas de software
Trabajo de sistemas de software
 
Investigación de ingeniería de software
Investigación de ingeniería de software Investigación de ingeniería de software
Investigación de ingeniería de software
 
Prueba informatica
Prueba informaticaPrueba informatica
Prueba informatica
 
Arquitectura software.taxonomias.comportamiento.001
Arquitectura software.taxonomias.comportamiento.001Arquitectura software.taxonomias.comportamiento.001
Arquitectura software.taxonomias.comportamiento.001
 
Clase 06 diseno_arquitectura
Clase 06 diseno_arquitecturaClase 06 diseno_arquitectura
Clase 06 diseno_arquitectura
 
Diapositivas De Ingenieria De Software
Diapositivas De Ingenieria De SoftwareDiapositivas De Ingenieria De Software
Diapositivas De Ingenieria De Software
 
Patrones de-diseño
Patrones de-diseñoPatrones de-diseño
Patrones de-diseño
 
Software alejandra reyes
Software alejandra reyesSoftware alejandra reyes
Software alejandra reyes
 
prueva
pruevaprueva
prueva
 
mauro hoyos software y sistemas operativos
mauro hoyos software y sistemas operativosmauro hoyos software y sistemas operativos
mauro hoyos software y sistemas operativos
 
Software y sistemas operativos
Software y sistemas operativosSoftware y sistemas operativos
Software y sistemas operativos
 

Similar a RAP: Reutilización de código para programadores

La programación extrema
La programación extremaLa programación extrema
La programación extremaingridleona
 
Metodologias De Analisis Y Diseño De Sistemas
Metodologias De Analisis Y Diseño De SistemasMetodologias De Analisis Y Diseño De Sistemas
Metodologias De Analisis Y Diseño De Sistemasgrupo7inf162
 
Metodologia rup
Metodologia rupMetodologia rup
Metodologia rupmireya2022
 
Herremientas de sofware libre en ingenieria
Herremientas de sofware libre en ingenieriaHerremientas de sofware libre en ingenieria
Herremientas de sofware libre en ingenieriaalexmor91
 
Metodologia rad luis c
Metodologia rad luis cMetodologia rad luis c
Metodologia rad luis cLuis Cambal
 
Ingeniería de Software
Ingeniería de Software Ingeniería de Software
Ingeniería de Software Luis Valeriano
 
Fundamentos del diseño de software
Fundamentos del diseño de software Fundamentos del diseño de software
Fundamentos del diseño de software AlessandreMndez
 
Fundamentos de ingenieria de software
Fundamentos de ingenieria de softwareFundamentos de ingenieria de software
Fundamentos de ingenieria de softwareITSPR
 
Metodologia xp (tarea msmad)
Metodologia xp (tarea msmad)Metodologia xp (tarea msmad)
Metodologia xp (tarea msmad)Renata Briseño
 
Fundamentos básicos para el diseño de software
Fundamentos básicos para el diseño de softwareFundamentos básicos para el diseño de software
Fundamentos básicos para el diseño de softwaremichellvillegas3
 
Metodologias de analisis y diseño de sistemas
Metodologias de analisis y diseño de sistemasMetodologias de analisis y diseño de sistemas
Metodologias de analisis y diseño de sistemasgrupo7inf162
 
Trabajo de sistemas de informacion rad
Trabajo de sistemas de informacion radTrabajo de sistemas de informacion rad
Trabajo de sistemas de informacion radHenry Cambal
 
Trabajo de sistemas de informacion rad
Trabajo de sistemas de informacion radTrabajo de sistemas de informacion rad
Trabajo de sistemas de informacion radHenry Cambal
 

Similar a RAP: Reutilización de código para programadores (20)

La programación extrema
La programación extremaLa programación extrema
La programación extrema
 
Metodologiaxp
MetodologiaxpMetodologiaxp
Metodologiaxp
 
Metodologias De Analisis Y Diseño De Sistemas
Metodologias De Analisis Y Diseño De SistemasMetodologias De Analisis Y Diseño De Sistemas
Metodologias De Analisis Y Diseño De Sistemas
 
Diseño de software
Diseño de softwareDiseño de software
Diseño de software
 
Metodologia rup
Metodologia rupMetodologia rup
Metodologia rup
 
Desarrollo eficiente de software
Desarrollo eficiente de softwareDesarrollo eficiente de software
Desarrollo eficiente de software
 
Herremientas de sofware libre en ingenieria
Herremientas de sofware libre en ingenieriaHerremientas de sofware libre en ingenieria
Herremientas de sofware libre en ingenieria
 
Plan
PlanPlan
Plan
 
Metodologia rad luis c
Metodologia rad luis cMetodologia rad luis c
Metodologia rad luis c
 
Ingeniería de Software
Ingeniería de Software Ingeniería de Software
Ingeniería de Software
 
Fundamentos del diseño de software
Fundamentos del diseño de software Fundamentos del diseño de software
Fundamentos del diseño de software
 
Fundamentos de ingenieria de software
Fundamentos de ingenieria de softwareFundamentos de ingenieria de software
Fundamentos de ingenieria de software
 
Metodologia RUP
Metodologia RUPMetodologia RUP
Metodologia RUP
 
Metodologia xp (tarea msmad)
Metodologia xp (tarea msmad)Metodologia xp (tarea msmad)
Metodologia xp (tarea msmad)
 
Programacion
ProgramacionProgramacion
Programacion
 
Fundamentos básicos para el diseño de software
Fundamentos básicos para el diseño de softwareFundamentos básicos para el diseño de software
Fundamentos básicos para el diseño de software
 
Metodologias de analisis y diseño de sistemas
Metodologias de analisis y diseño de sistemasMetodologias de analisis y diseño de sistemas
Metodologias de analisis y diseño de sistemas
 
Trabajo de sistemas de informacion rad
Trabajo de sistemas de informacion radTrabajo de sistemas de informacion rad
Trabajo de sistemas de informacion rad
 
Trabajo de sistemas de informacion rad
Trabajo de sistemas de informacion radTrabajo de sistemas de informacion rad
Trabajo de sistemas de informacion rad
 
Prototipos
PrototiposPrototipos
Prototipos
 

Último

SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVOSISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVOELIAMARYTOVARFLOREZD
 
Tipos de pensamiento y pensamiento lógico
Tipos de pensamiento y pensamiento lógicoTipos de pensamiento y pensamiento lógico
Tipos de pensamiento y pensamiento lógicoMaxCaldern2
 
Instalacion de servicios windows, configuracion y aplicacion.
Instalacion de servicios windows, configuracion y aplicacion.Instalacion de servicios windows, configuracion y aplicacion.
Instalacion de servicios windows, configuracion y aplicacion.CZSOTEC
 
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...Neo4j
 
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...Neo4j
 
Estructura del lenguaje c++. Operaciones básicas y su jerarquía aplicada en e...
Estructura del lenguaje c++. Operaciones básicas y su jerarquía aplicada en e...Estructura del lenguaje c++. Operaciones básicas y su jerarquía aplicada en e...
Estructura del lenguaje c++. Operaciones básicas y su jerarquía aplicada en e...FabianCruz73
 
SQL server Analysis Services & SQL Server Reporting Services.pptx
SQL server Analysis Services & SQL Server Reporting Services.pptxSQL server Analysis Services & SQL Server Reporting Services.pptx
SQL server Analysis Services & SQL Server Reporting Services.pptxRAMIROANTONIOGALINDO
 
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptxMacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptxcalzadillasluis134
 
Delitos informáticos en Slideshare.pptx
Delitos informáticos en  Slideshare.pptxDelitos informáticos en  Slideshare.pptx
Delitos informáticos en Slideshare.pptxmaykolmagallanes012
 
Webinar Resolucion2335 de 2023 Kubapp.pdf
Webinar Resolucion2335 de 2023 Kubapp.pdfWebinar Resolucion2335 de 2023 Kubapp.pdf
Webinar Resolucion2335 de 2023 Kubapp.pdfAnaRosaMontenegro
 
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafosBBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafosNeo4j
 

Último (11)

SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVOSISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
 
Tipos de pensamiento y pensamiento lógico
Tipos de pensamiento y pensamiento lógicoTipos de pensamiento y pensamiento lógico
Tipos de pensamiento y pensamiento lógico
 
Instalacion de servicios windows, configuracion y aplicacion.
Instalacion de servicios windows, configuracion y aplicacion.Instalacion de servicios windows, configuracion y aplicacion.
Instalacion de servicios windows, configuracion y aplicacion.
 
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
 
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
 
Estructura del lenguaje c++. Operaciones básicas y su jerarquía aplicada en e...
Estructura del lenguaje c++. Operaciones básicas y su jerarquía aplicada en e...Estructura del lenguaje c++. Operaciones básicas y su jerarquía aplicada en e...
Estructura del lenguaje c++. Operaciones básicas y su jerarquía aplicada en e...
 
SQL server Analysis Services & SQL Server Reporting Services.pptx
SQL server Analysis Services & SQL Server Reporting Services.pptxSQL server Analysis Services & SQL Server Reporting Services.pptx
SQL server Analysis Services & SQL Server Reporting Services.pptx
 
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptxMacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
 
Delitos informáticos en Slideshare.pptx
Delitos informáticos en  Slideshare.pptxDelitos informáticos en  Slideshare.pptx
Delitos informáticos en Slideshare.pptx
 
Webinar Resolucion2335 de 2023 Kubapp.pdf
Webinar Resolucion2335 de 2023 Kubapp.pdfWebinar Resolucion2335 de 2023 Kubapp.pdf
Webinar Resolucion2335 de 2023 Kubapp.pdf
 
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafosBBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
 

RAP: Reutilización de código para programadores

  • 1. “RAP” Reutilización Apropiada para Programadores Universidad Politécnica de Sinaloa Ingeniería en Informática Canizales Torres, Axel (2014030422@upsin.edu.mx) Gama Herrera, Andrea Elizabeth Guadalupe (2014030455@upsin.edu.mx) Hernández Tirado, Miguel Aaron (2014030461@upsin.edu.mx) Munguía Brito, César Abraham (2014030476@upsin.edu.mx) Rodríguez Benítez, José Carlos (2014030406@upsin.edu.mx) Rodríguez Romero, Cristo Favel (2014030348@upsin.edu.mx) Sarabia Castellón, Jesús Gabriel (2014030516@upsin.edu.mx) RESUMEN Este artículo está dedicado a la temática “Reutilización de Código” la cual es de gran importancia en el mundo de desarrollo de software hoy en día, pues facilita a gran escala lo que es el procedimiento de diseño, creación, implementación y mantenimiento de este mismo. Esta práctica es difícil de efectuar, porque requiere cierta preparación por parte del desarrollador, el cliente y los administradores del proyecto para que se pueda implementar de manera correcta, ya que para poder reutilizar es vital conocer la problemática a resolver así como sus limitantes y adaptabilidad del código. Si bien, se espera poder orientar al lector en lo que es reutilización de código como práctica de desarrollo considerando beneficios y desventajas durante la planeación e implementación de dicho código así como el por qué debe realizar estas prácticas y cuando no es recomendado ya sea por factores internos (experiencia, costos) o externos (tiempo, objetivos). Palabras Clave: Reutilización, Tiempo, Adaptabilidad, Limitantes, Diseño. ABSTRACT This article it’s dedicated to the topic: “Code Reuse” which is one of the main factors on software development now on days because it makes much easier to design, creation, application and maintenance of the very same software. This kind of practice is hard to apply, most likely because it requires a lot of preparation from the software developer, the client and the project managers in order to be able to apply it properly. It is also a good idea to know well the objectives, limits and code adaptability. As main goal for this article, is to help the reader to reuse code as a normal practice considering the benefits and disadvantages during the design and application for those codes or methods, including when you should reuse or not to do so because of factors such as internal (experience, costs) or external (time, objectives). Keywords: Reuse, Time, Adaptability, Limits, Design. I. INTRODUCCIÓN La reutilización es uno de los conceptos de la programación más antiguos y simples de entender, pero complejo al
  • 2. poner en práctica. El uso de software existente para desarrollar uno nuevo ha sido empleado desde los primeros días de la programación, siempre se han reusado partes de un código, planillas, funciones o procedimientos. Esta es la idea: parte o todo el código de un programa de computadora escrito una vez, sea o pueda ser usado en otros programas. En sí, consiste en la creación de sistemas de software a partir de un software existente, en lugar de tener que rediseñar desde el principio. En el siglo pasado resultaba imposible poder representar artefactos de software por su propio contenido (por ejemplo, buscar diagramas de clase similares a uno dibujado en otra herramienta), lo cual impedía que cualquiera pudiera buscarlos sin conocimiento previo de su existencia. Por este motivo, para reutilizar hubo que realizar el proceso inverso: primero parar la organización para ver qué podía ser reutilizable, después hacerlo reutilizable, lo siguiente era obligar a que todos conocieran lo que existe para reutilizar en la organización (puesto que si no, NO sabrían que existía), y luego intentar obligar a que reutilizaran lo existente por lo que tendrían que saber operar con ellos de antemano. Tal cual la reutilización de código no se formalizo si no, hasta 1968 cuando en un congreso que organizó el Comité de Ciencia de la OTAN el ingeniero de Bell Laboratories, M.D. McIlroy, afirmó que “La industria del software se asienta sobre una base débil, y un aspecto importante de esa debilidad es la ausencia de una sub-industria de componentes”. Es entonces cuando empiezan a surgir las primeras librerías de software con el fin de poder facilitar el diseño de diferentes módulos dentro de las compañías. II. DESARROLLO En el área de programación o ingeniería de software la reutilización se refiere a la habilidad de poder extraer código, ya sean módulos, métodos, vistas, o cualquier pieza funcional de un algoritmo y poder implementarlo a otro sistema con el fin de poder ahorrar tiempo y esfuerzo durante las fases de diseño del software. Así mismo, existen diferentes tipos de reutilización.  Conocimiento: se reutiliza el conocimiento y la experiencia de otros desarrolladores.  Oportunista se reutilizan piezas que se sabe que se ajustan al problema.  Sistemática: se diseñan componentes genéricos para que sean reutilizados con facilidad.  Bottom-Up: se desarrollan pequeños componentes para una determinada aplicación.  Top-Down: se van desarrollando las piezas necesarias poco a poco. Y niveles, que se definen más por el componente a reutilizar.  Reutilización de código: librerías de funciones, editores, inclusión de ficheros, mecanismos de herencia en POO, componentes, etc.  Reutilización de diseños: no volver a inventar arquitecturas.  Reutilización de especificaciones: reutilización de las abstracciones del dominio.
  • 3. Pero, como en todo proceso, se contemplan las grandes ventajas y desventajas por igual. Ventajas:  Reducción de costos.  Reducción de tiempo de desarrollo.  Reducción de esfuerzos durante la programación.  Facilita el mantenimiento con la apropiada documentación. Desventajas:  Ambigüedad del método a reutilizar.  Alto conocimiento en el lenguaje de desarrollo para implementarse de manera eficaz.  Conocer en su totalidad el objetivo final del programa así como contemplar sus limitantes.  El ritmo de avance del siglo XXI en programación hace más difícil implementarlo debido a que se puede encontrar desactualizada rápidamente. Si bien, como todo, reutilizar código es una práctica que muchos siempre contemplan poder realizar pero la cual no siempre se logra poder llevar a cabo por diferentes factores que están fuera del alcance del programador la mayoría de las veces tales como son los objetivos finales del sistema, cuestión de costos o seguridad, adaptabilidad del código, etc. Entonces… ¿Cuándo reutilizar código? Tanto novatos como expertos se preguntan con frecuencia cuando reutilizar código. Los novatos suelen buscar código que sea implementable sin cuestionar el funcionamiento lógico o algorítmico; en cambio, los expertos buscan un código que sea fácil de comprender a simple vista y verificar el nivel de abstracción que este presenta así como diferentes factores (entradas de datos, procesamientos de datos, etc.) haciendo quizá más difícil su selección. Pero realmente el cuándo implementarlo debería de ser siempre que sea posible y resuelva la problemática de manera eficiente. Mas existe una gran cantidad de factores a considerar para poder reutilizar código, tales como:  Tener primero previsto los objetivos del software o producto final: Esto con el fin que cuando se encuentre en la fase de diseño sea más fácil planear la atomicidad de los métodos.  Conocimiento del lenguaje de programación: Sea un lenguaje estructurado u orientado a objetos es importante conocer bien el mismo, debido a que quizá sea necesario adaptar el código para que cumpla con los requisitos iniciales.  Costos y Mantenimiento: Muchas veces es más económico reutilizar módulos, métodos, vistas o inclusive porciones de código programado para facilitar la creación de uno nuevo desde cero (Scratch) pero siempre se debe de recordar que una vez terminado este, se le debe dar mantenimiento o actualizaciones al producto final, por lo que se recomienda conocer el cómo funciona bien cada pieza de
  • 4. código y verificar antecedentes tanto de éxitos como fallos de la reutilización. ¿Cómo reutilizar código? La reutilización de código se vuelve compleja ya que requiere de una gran versatilidad por parte del programador, hay una gran cantidad de puntos a considerar para poder diseñar y crear un código reutilizable, pero los principales serían:  DRY( Don’t Repeat Yourself- No te repites a ti mismo): Esto hace referencia a que cada pieza de código sea única y original, si bien es una mentalidad muy contradictoria ya que promueve y a la vez no lo que es reutilizar el código; es importante considerarlo debido a que DRY dice que “Cada pieza de conocimiento, deberá tener un único sentido, representación autoritaria dentro de un sistema” esto se puede interpretar tanto a que no se deba reutilizar código fuera de un sistema terminado o a no se deberá de tener más de una misma pieza del mismo código en otro. Ejemplo: “Reciclar 4 módulos del programa A e implementarlos en B; DRY desde el punto de vista a favor de la reutilización, diría que solo usemos un módulo del programa A desde el punto de vista negativo diría que ninguno”.  Diseñar Métodos independientes y con un fin único: Esto nos dice que los métodos diseñados para un sistema deben cumplir un fin único, ya sean sumas, restas, multiplicaciones, altas, bajas, consultas, etc. así como que estos sean lo más independientes posibles, o sea que no dependan de otros métodos del mismo sistema, es tolerable que dependa de parámetros y retorne un proceso interno.  Mantener la objetividad a un lado: Referente a que si es un sistema bancario, sus métodos reutilizables deberán mantener al mínimo las peticiones de datos de casos específicos.  Técnicas de programación: Si bien un gran fallo de la reutilización, es que en la actualidad el ritmo de avance en técnicas y métodos de programación puede opacar rápidamente un método diseñado un año atrás, ya que puede que se implementara como función pasiva del mismo lenguaje en su versión posterior. Estadísticas La reutilización tiene ciertos indicadores, por ejemplo: 1. Entre el 40% y 60% de una aplicación es re-utilizable en otra. 2. Aproximadamente el 60% de una aplicación administrativa es re-utilizable. 3. Aproximadamente el 75% de las funciones son comunes a más de un programa. 4. Solo el 15% del código encontrado en muchos sistemas es único y novedoso a una aplicación específica. Para comprender mejor lo que es la reutilización es oportuno analizar el siguiente caso práctico:
  • 5. Juan es un programador con 5 años de experiencia en Java, y por primera vez le piden un módulo con compatibilidad con web mail, el realiza 80% de los módulos de manera eficiente, pero lo que respecta al módulo de envió automático de e-mails, lo descarga de internet, de un blog aparentemente confiable, el verifica el procedimiento y lo adapta a sus necesidades. El ejemplo anterior, nos muestra un ejemplo de cuando un programador novato encuentra código reciclable pero lo analiza y adapta para sus necesidades, a diferencia del siguiente ejemplo: Pedro tiene la misma experiencia que Juan en Java y se encuentra en la misma situación, salvo que, él ya había hecho un programa con web mail antes, y decide reciclar 40% de las clases que uso, involucrando datos de entrada del web mail y el sistema de auto-mensaje. Pero nunca se dio cuenta de un pequeño error en “case sensitive” el cual estaba desactivado, ósea no discriminaba minúsculas de mayúsculas, reduciendo la seguridad de entrada de contraseñas bastantemente. En este último ejemplo, vemos que Pedro tendrá problemas de seguridad si se realiza un ataque a su sistema, o alguien descubre ese error. Él puede reusar módulos que él cree que funcionan de manera eficiente, pero al no hacerlo transfiere una debilidad de un sistema a otro. III. CONCLUSIÓN Se espera que este artículo satisfaga la necesidad del lector en su búsqueda de conocimiento relacionado a la "Reutilización de Código". Es altamente recomendado el empleo de esta misma por una gran gama de razones, mas es necesario estar conscientes que el poder lograrlo de la mejor manera no siempre es fácil y al final la decisión de realizar o no esta práctica cae en las manos de cada individuo debido a que cada programador piensa de diferente manera en lo que consta sobre la lógica de su programa así como las circunstancias en las que se ha solicitado el producto. La reutilización es una práctica que se ha ejercido a lo largo de los años, desde que surgió formalmente la computación siempre se ha encontrado conflictiva en diferentes factores pero cuando estos son solucionados o adaptados se logra entregar un producto con una calidad inigualable. Recordemos que la finalidad de reutilizar código es facilitar los plazos de tiempo predeterminados o ir por la funcionalidad de algun módulo operacional existente sin fallos, por ende este articulo apoya la reutilización siempre y cuando esta sea para mejorar o facilitar su código y usted, estimado lector, este consciente que el fragmento a anexar a su código resuelva su necesidad sin generar errores. IV. BIBLIOGRAFÍA http://biblioteca.usac.edu.gt/tesis/08/08_0476_C S.pdf http://c2.com/cgi/wiki?DontRepeatYourself Patrones de diseño: elementos de software orientado a objetos reutilizables Erich Gamma. Addison Wesley, 2002 Müller Hausi A.. “Understanding software systems using reverse engineering technologies research and practice” (tutorial). En la 18 Conferencia Internacional de Ingeniería de Software (ICSE-18), Berlin, Alemania, Marzo 1996. Disponible en: http://www.rigi.csc.uvic.ca/UVicRevTut/UVicRevTut.ht ml