COMPONENTES
REUTILIZABLES DE
SOFTWARE
Jhon Richard Huanca Suaquita
Gladys Marleny Auquitias Condori
Jhon Richard Huanca Suaquita
Gladys Marleny Auquitias Condori
COMPONENTES REUTILIZABLES
DE SOFTWARE
Autores:
JHON RICHARD HUANCA SUAQUITA
GLADYS MARLENY AUQUITIAS CONDORI
Editor:
Jhon Richard Huanca Suaquita
Correo: [email protected]
Dirección: Jr. Machupicchu MZ “A” LT “1D”
Celular: +51 951672429
1a Edición febrero del 2021
Tiraje: 100 ejemplares
HECHO EL DEPÓSITO LEGAL EN LA BIBLIOTECA NACIONAL DEL PERÚ Nº 2021 - 01803
ISBN: 978-612-00-6026-1
Se terminó de imprimir en febrero del 2021 en:
LUCERO IMPRESIONES
RUC 10411509015
De Antonia Ccama Quispe
Av. Floral Nº 1025 – Puno
Teléfono 051 208093 – Cel. 921 431042
No está permitido la reproducción total o parcial del contenido de este libro, ni su
tratamiento informático, ni la transmisión de ninguna forma o por cualquier medio, ya
sea electrónico, mecánico, fotocopia, por registro u otros métodos, sin el permiso
previo de los autores.
EL orden mundial académico requiere de la existencia
de todos los niveles académicos desarrollados, el rol
que desempeñemos en el nivel que decidamos, es nues-
tra elección que determinará nuestra miseria o éxito
profesional.
Jhon R. Huanca
Los analfabetos del siglo XXI no serán aquellos que
no sepan leer o escribir, sino aquellos que no puedan
aprender, desaprender y reaprender
Alvin Toffler
PRESENTACIÓN
En pleno siglo XXI, las tecnologías de la información han tomado un rol im-
portante e indispensable en los procesos de desarrollo de software, su ex-
pansión es acorde al avance tecnológico, ahora con la presencia de las redes
sociales, las tecnologías de la información tienen mayor presencia, y el desa-
rrollo de software se torna como una herramienta de expansión, de tal manera
que los usuarios resultan empoderándose día a día y mucho más con el uso
de las redes de redes denominado internet.
Los componentes reutilizables de software son base fundamental para el
desarrollo de software, trabajan como un puente entre el sistema operativo y
las aplicaciones que importan funciones de estas. Los componentes reutili-
zables de software permiten dejar de lado la verticalidad del desarrollo de
sistemas de información, brindando así un enfoque práctico a la hora de
desarrollar software. En un escenario de desarrollo de sistemas de informa-
ción tradicional, por lo general el programador usa solo un lenguaje de pro-
gramación, en el cual, desarrolla los módulos de: complejidad algorítmica,
eficiencia de procedimientos y funciones, optimización de búsquedas de da-
tos orientados a consultas en bancos de datos, determinación de rutas opti-
mas, cálculos operacionales, apertura y cierre de cubos de datos, entre otros.
Los cuales permiten sintetizar la información con el propósito de contribuir en
la toma de decisiones. En este contexto muchas veces se tienen limitaciones
de programación en cuanto a determinadas tareas, como importar y usar fun-
ciones privadas del sistema operativo, o importar funciones específicas de
tratamiento de archivos, así también adicionar funciones restringidas que se
ejecuten en el anillo cero ”funciones que permiten y contribuyan en la seguri-
dad e integridad de la información u otro procedimiento en particular”, todas
estas funciones así como muchas otras populares funciones de softwares
como Facebook, Instagram no se han implementado en un solo lenguaje de
programación, el hecho de que sean tan populares radica en que ellos desa-
rrollaron sus propios componentes, sus funciones exportables reutilizan y op-
timizan el uso operacional del kernel del Sistema Operativo.
Sin embargo, precisamente es esa parte, no se aborda el desarrollo de
los sistemas de información con una estructura adecuada de desarrollo. Los
componentes reutilizables de software empoderan el desarrollo de las aplica-
ciones debido a que hacen que soporten parámetros de escalabilidad, ha-
ciendo que las aplicaciones tengan una característica de interoperabilidad por
el tiempo que tenga soporte. En lo práctico, esto es posible, por ejemplo,
cuando se trabaja con varios lenguajes de programación, en los cuales se
crean independientemente módulos exportables denominadas librerías diná-
micas y estáticas, estas se ejecutan en la memoria Ram y solamente son
llamadas a la memoria principal cuando el programa principal los requiere,
siendo dinámico su carga y descarga en el sistema. Todo esto ocurre en
tiempo de ejecución y quien se encarga de administrar todos estos módulos
exportables es el programa principal, quien también por su naturaleza debe
ser otro modulo escalable y por lo general este tipo de programas están desa-
rrollados en varios lenguajes de programación, como: Ensamblador ASM,
Fortran, Basic, Cobol, C/C++, Pascal, y da como resultado software escala-
ble, como otro ejemplo pero a gran escala nos da como resultado software
como Windows, Unix, y las diferentes distribuciones de Linux.
El presente texto tiene como propósito ilustrar y ejemplificar el desarrollo
y operación elemental de los sistemas de información basados en la reutili-
zación de componentes reutilizables de software.
Juliaca, febrero del 2021
Los Autores
ÍNDICE
CAPITULO I
SOFTWARE Y COMPONENTES REUTILIZABLES DE SOFTWARE.......... 3
Software .................................................................................................................... 3
Tipos de software ...................................................................................................... 3
Software propietario .................................................................................................. 3
Componentes reutilizables de software..................................................................... 4
Elementos que intervienen en la reutilización ........................................................... 4
Propósito de la reutilización de componentes de software ....................................... 5
Dificultades de la reutilización de componentes........................................................ 5
Ventajas..................................................................................................................... 5
Desventajas............................................................................................................... 5
Los componentes reutilizables en Windows.............................................................. 6
Librerías de software ............................................................................................... 11
Tipos de librerías ..................................................................................................... 11
Librerías estáticas ................................................................................................... 11
Ventajas................................................................................................................... 11
Desventajas............................................................................................................. 12
Librerías dinámicas ................................................................................................. 12
CAPITULO II
MODELAMIENTO DE SISTEMAS BASADO EN COMPONENTES ........... 15
UML ......................................................................................................................... 15
Tipos de diagramas de modelamiento UML............................................................ 15
Diagramas de casos de uso .................................................................................... 16
Actor ........................................................................................................................ 16
Comunicación.......................................................................................................... 17
Dependencia ........................................................................................................... 18
Cometarios .............................................................................................................. 18
Caso de uso con <<extend>> ................................................................................. 19
Casos de uso monitoreo de detección de actividad ................................................ 20
Modelado de Sistema de Seguridad de archivos .................................................... 21
Modelado de Datawarehouse elemental ................................................................. 22
Diagrama de Clases ................................................................................................ 22
Relaciones entre clases .......................................................................................... 23
Roles ....................................................................................................................... 23
Asociación. .............................................................................................................. 23
Comentarios en una clase....................................................................................... 24
Diagrama de secuencia........................................................................................... 26
Diagrama de estados .............................................................................................. 27
Diagrama de componentes ..................................................................................... 28
CAPITULO III
DESARROLLO DE COMPONENTES DE SOFTWARE................................ 33
Desarrollo de componentes reutilizables en Visual Studio - Visual C# ................... 33
Implementación de la aplicación en Visual C# de Visual Studio ............................. 33
Desarrollo de componentes reutilizables en Visual C++ ......................................... 45
Depends .................................................................................................................. 51
Reutilización de componentes desde Microsoft Visual Basic.................................. 52
Propiedades dentro del entorno Visual Basic.......................................................... 53
Método..................................................................................................................... 53
Entorno de programación de Visual Basic 6.0 ........................................................ 53
Implementación de código fuente............................................................................ 55
Re-implementación de código fuente ...................................................................... 57
Reusó de Librería implementada desde Visual C++ ............................................... 69
Desarrollo de componentes reutilizables Active X en Visual Basic......................... 84
Desarrollo de componentes reutilizables dll Active X.............................................. 99
Implementación de código fuente de una librería dll Active X................................. 99
Desarrollo de Componentes Reutilizables dll en Ensamblador MASM32............. 107
Implementación de código de librería dinámica en Masm32 ................................ 107
BIBLIOGRAFÍA .................................................................................................. 130
INTRODUCCIÓN
Actualmente el uso de las tecnologías de la información se basa en el desa-
rrollo del hardware y el software, este último inclusive ha avanzado mucho
más rápido. Por tanto, ello demanda mayores recursos tecnológicos para
completar las operaciones computacionales que se propone; parte funda-
mental del software es el procesador y las instrucciones que brinda este como
servicio para que los programas logren operar en una determinada plata-
forma. Estos servicios generalmente son pre-compilados en componentes
que contienen una interfaz para poder exportar funciones privadas y públicas
del mismo Sistema Operativos a aplicaciones que se ejecutan el anillo tres –
aplicaciones y programas del usuario final, este último proceso se denomina:
reutilización de componentes de software.
En adelante se denomina a estas aplicaciones computacionales software, de-
bido a que haciendo un análisis retrospectivamente software no surge con los
equipos electrónicos, aunque es con ellos que adopta tal denominación. Cabe
precisar que en el proyecto ENIAC el control de las operaciones estaba par-
cialmente integrado en el equipo, dicho control era realizado por un circuito
que requería un alambrado específico para cada operación, en la actualidad
todo ha cambiado.
El concepto de “programa de control de operaciones en memoria”, aportación
atribuida a John von Neumann, precipitó el desarrollo de lo que hoy denomi-
namos software, en éste, inicialmente se perfilaron dos tendencias de desa-
rrollo de software: los programas de aplicación y los de servicio. Estos últimos
tenían como propósito principal facilitar el desarrollo de programas a partir de
sub – programas; y por otro lado algunos programas de servicio fueron sim-
plemente cargadores que permitieron emplear notaciones básicas en octal o
hexadecimal más compactas que el binario. El siguiente paso fundamental
fue la traducción de fórmulas matemáticas, que permitió el desarrollo y ex-
pansión de la historia del software, siendo su principal insumo el diseño de
los algoritmos.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 1
Los componentes reutilizables de software están presentes en los diferentes
sistemas operativos tales como Windows, Minix, Unix, Linux. Cuando estos
se instalan, se encuentran en los directorios de sistema con diferentes exten-
siones tales como: .dll, .vxd, .sys, .so, los archivos con estas extensiones
exportan funciones a los programas que reutilizan sus funciones para inter-
actuar con el usuario final.
Hoy en día, los componentes reutilizables de software se implementan en los
frameworks, a través de estos, se incrementan de funcionalidades y convier-
ten al software tradicional en software escalable, llegando a interactuar con
el usuario desarrollador, además se tiene la opción dinámica de reemplazar
total o parcialmente sus módulos o sub-sistemas de trabajo, denominados
componentes reutilizables de software. Sin embargo, es importante precisar
que la presencia o ausencia de los componentes reutilizables de software es
imperceptible por los usuarios finales, debido a que estos se encuentran im-
plementados e instalados en directorios del Sistema Operativo, en términos
generales son archivos que no se ejecutan directamente, por el contrario es-
tos son cargados y descargados directamente en memoria RAMy son refe-
renciados por programas ejecutables.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 2
Componentes Reutilizables de Software
CAPITULO I
SOFTWARE Y COMPONENTES REUTILIZABLES DE SOFTWARE
En el presente capitulo es indispensable realizar una previa revisión retros-
pectiva sobre software y la forma en que se disgrega este, de acuerdo, a la
naturaleza de desarrollo y aplicación del mismo, a continuación, un breve re-
sumen sobre software.
Software
El software es un conjunto de instrucciones lógicas que son ejecutadas por
un mecanismo, ya sea un ordenador o un dispositivo que soporte la ejecución
de instrucciones computacionales. Es el término genérico que se utiliza para
describir programas, scripts, e instrucciones para código directamente incrus-
tado, con el fin de secuenciar las operaciones que debe hacer un ordenador.
Cada programa en su ordenador, teléfono celular, tableta, TV inteligente,
emulador de videojuegos, etc. es software, ya sea un procesador de texto, un
explorador de archivos, un editor de video, un juego en particular o una apli-
cación de control de inventarios. El software puede venir en muchas formas,
desde una aplicación en un teléfono celular hasta aplicaciones corporativas
que administran la nube de datos.
Tipos de software
El software se divide por lo general en dos grandes grupos, software propie-
tario y software libre, esto de acuerdo a su naturaleza de desarrollo, aplica-
ción y distribución.
Software propietario
Se denomina software propietario a aquel que para ser usado, comercializado
y distribuido requiere una autorización por parte de los desarrolladores de
software, pudiendo ser necesario realizar un pago previo para una licencia de
uso, entre los programas de este tipo podemos mencionar:
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 3
Componentes Reutilizables de Software
Kaspersky Antivirus, McAfee, DesignaKnit, Microsoft Windows, Microsoft Of-
fice, Oracle, Interbase, Delphi Architech, Visual Studio y muchos otros soft-
wares los cuales requieren el pago de una licencia de uso.
Software Libre
Se denomina software libre a aquel que para ser usado, comercializado y
distribuido no requiere una autorización por parte de los desarrolladores de
software, sin embargo, en algunos casos, dentro de esta categoría se tienen
ciertas restricciones, esto último de acuerdo a los desarrolladores de soft-
ware. A continuación, algunos softwares libres:
Linux Ubuntu, OpenOffice, Gimp, Mozilla Firefox, Linux Fedora, Scilab,
C/C++, Minix, entre otros. Los cuales no requieren de pago alguno para su
uso.
Componentes reutilizables de software
Básicamente son programas compilados que no ejecutan directamente en el
computador, son programas desarrollados en diferentes lenguajes de progra-
mación, la característica común es que exportan funciones para que otros
programas las puedan cargar en memoria y reutilizar. Por tanto, en cuanto a
su forma de trabajo podemos definirla como el reusó de elementos de soft-
ware u otros de nivel superior, creados por desarrolladores anteriores, para
de este modo, reducir los tiempos y principalmente conseguir simplificar el
desarrollo del software, mejorando la portabilidad, calidad y modularidad del
software.
Elementos que intervienen en la reutilización
Diseños previamente definidos (seudocódigos, algoritmos, diagramas de
secuencia de exportación de procedimientos, etc.)
Código fuente probado y depurado con anterioridad
Análisis exploratorio de los Sistemas Operativos para determinar y deli-
mitar la portabilidad de los componentes desarrollados
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 4
Componentes Reutilizables de Software
Propósito de la reutilización de componentes de software
La reutilización de componentes de software aparece como una alternativa
para desarrollar aplicaciones de un manera más eficiente, productiva y rá-
pida.
La idea es reutilizar componentes de software en lugar de tener que desarro-
llarlos desde un principio, por tanto, tiene el objetivo de reutilizar lo existente
sin tener que volver a rediseñarlo desde el principio. Como ejemplo ilustrativo
se podría mencionar que, para elaborar una solicitud en un programa de ofi-
mática de nuestro computador, no es necesario crear un nuevo sistema ope-
rativo.
Dificultades de la reutilización de componentes:
- En la mayoría de los casos, los desarrolladores no contemplan la idea de
que el software que desarrollan podría ser parte de otro software
- Escasa formación especifica
- Falta de modelado especializado de los sistemas
Ventajas
- Reducir los costos de desarrollo
- Reducir el tiempo de desarrollo e implementación
- Incrementar la modularidad y escalabilidad.
- Actualización de componentes por módulos.
- Mayor precisión para detectar errores durante la programación
- Reutilización de objetos, procedimientos y funciones
Desventajas
- Necesidad de conocimiento de distintos lenguajes de programación.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 5
Componentes Reutilizables de Software
- Identificar unidades de software que se reutilizaran en proyectos poste-
riores
- Incompatibilidad con algunas plataformas Win9x, WinNT, Mac, etc.
Los componentes reutilizables en Windows
Todas las aplicaciones requieren de componentes reutilizables, por ejemplo,
en la mayoría de los casos, un programa requiere una interfaz gráfica (un
formulario de presentación entre el usuario y la aplicación), en el cual, mu-
chas veces se utiliza colores, e inclusive se usan hasta presentaciones ani-
madas. Todos estos procedimientos e incluso el hecho de dibujar tan solo un
punto en un formulario, requiere hacer uso de GDI32.DLL, debido a que esta
librería tiene funciones importables para el desarrollo de interfaces gráficas,
es por lo que los lenguajes de programación como: Visual C++, Delphi, entre
otras solo las reutilizan para darle el acabado final a sus aplicaciones. Para
ilustrar mejor lo dicho, se visualiza gráficamente las dependencias de EX-
PLORER.EXE (archivos de sistema ubicado en C:\Windows), además cada
librería depende de otras librerías.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 6
Componentes Reutilizables de Software
En el siguiente grafico se puede visualizar las primeras 4 librerías que utiliza
Explorer.exe, evidentemente el árbol de dependencia es para explorer.exe,
aquí solo se visualiza solo una parte.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 7
Componentes Reutilizables de Software
El sistema operativo Windows, este compuesto por múltiples componentes
reutilizables, por ejemplo, Kernel32.dll, a continuación, se muestra las algu-
nas funciones exportables con que cuenta kernel32.dll
KERNEL32.DLL
ActivateActCtx CommConfigDialogW
AddAtomA CompareFileTime
AddAtomW CompareStringA
AddConsoleAliasA CompareStringW
AddConsoleAliasW ConnectNamedPipe
AddLocalAlternateComputerNameA ConsoleMenuControl
AddLocalAlternateComputerNameW ContinueDebugEvent
AddRefActCtx ConvertDefaultLocale
AddVectoredExceptionHandler ConvertFiberToThread
AllocConsole ConvertThreadToFiber
AllocateUserPhysicalPages CopyFileA
AreFileApisANSI CopyFileExA
AssignProcessToJobObject CopyFileExW
AttachConsole CopyFileW
BackupRead CopyLZFile
BackupSeek CreateActCtxA
BackupWrite CreateActCtxW
BaseCheckAppcompatCache CreateConsoleScreenBuffer
BaseCleanupAppcompatCache CreateDirectoryA
BaseCleanupAppcompatCacheSupport CreateDirectoryExA
BaseDumpAppcompatCache CreateDirectoryExW
BaseFlushAppcompatCache CreateDirectoryW
BaseInitAppcompatCache CreateEventA
BaseInitAppcompatCacheSupport CreateEventW
BaseProcessInitPostImport CreateFiber
BaseQueryModuleData CreateFiberEx
BaseUpdateAppcompatCache CreateFileA
BasepCheckWinSaferRestrictions CreateFileMappingA
Beep CreateFileMappingW
BeginUpdateResourceA CreateFileW
BeginUpdateResourceW CreateHardLinkA
BindIoCompletionCallback CreateHardLinkW
BuildCommDCBA CreateIoCompletionPort
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 8
BuildCommDCBAndTimeoutsA Componentes Reutilizables de Software
BuildCommDCBAndTimeoutsW
BuildCommDCBW CreateJobObjectA
CallNamedPipeA CreateJobObjectW
CallNamedPipeW CreateJobSet
CancelDeviceWakeupRequest CreateMailslotA
CancelIo CreateMailslotW
CancelTimerQueueTimer CreateMemoryResourceNotification
CancelWaitableTimer CreateMutexA
ChangeTimerQueueTimer CreateMutexW
CheckNameLegalDOS8Dot3A CreateNamedPipeA
CheckNameLegalDOS8Dot3W CreateNamedPipeW
CheckRemoteDebuggerPresent CreateNlsSecurityDescriptor
ClearCommBreak CreatePipe
ClearCommError CreateProcessA
CloseConsoleHandle CreateProcessInternalA
CloseHandle CreateProcessInternalW
CloseProfileUserMapping CreateProcessInternalWSecure
CmdBatNotification CreateProcessW
CommConfigDialogA CreateRemoteThread
CreateSemaphoreA
CreateSemaphoreW
En Windows10, 8, 7, XP, Kernel32.dll es parte principal del SO, pero de-
pende de otras, librerías como Ntdll.dll (Librería ubicada en C:\Win-
dows\System32), lo que implica que kernel32.dll depende de otros módulos
y tendrá errores al iniciar de no encontrarlos, ya que importa funciones de
Ntdll.dll
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 9
Componentes Reutilizables de Software
Imaginemos un sistema operativo sin componentes reutilizables, en forma
gráfica seria como una aplicación única grande y pesada (sería un problema
cargar todo el programa en memoria Ram ).
Ningún sistema operativo podría trabajar en estas condiciones, además el
hecho de trabajar con componentes reutilizables, administra mejor los com-
ponentes (mediante la carga y descarga de procesos en memoria, creando
un dinamismo optimo). Con la siguiente ilustración se disgregan todos los
componentes y hacen más versátil su uso.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 10
Componentes Reutilizables de Software
Librerías de software
En el contexto de desarrollo de software se denomina librería al programa
que exporta procedimientos y funciones, para que, otras aplicaciones las pue-
dan importar e incorporarlas a sus aplicaciones.
Tipos de librerías
Las librerías de software por lo general se dividen en dos grandes grupos,
librerías estáticas y librerías dinámicas, a continuación, una breve descripción
de cada una.
Librerías estáticas
son librerías que "se copian" en nuestros programas ”se adhieren al ejecuta-
ble” cuando las compilamos. Una vez que tenemos el ejecutable de nuestro
programa, la librería no se usa más (es un decir, sirve para otros futuros pro-
yectos a compilarse). Podríamos borrarla y nuestro programa seguiría funcio-
nando, ya que tiene una copia de todo lo que necesita dentro del mismo eje-
cutable “Sólo se copia aquella parte de la librería que se necesite”, acciones
que realiza el compilador, por ejemplo: Borland BC31. En el contexto de la
programación, en un proyecto si la librería tiene dos funciones y nuestro pro-
grama sólo llama a una, sólo se copia esa función al ejecutable generado.
Ventajas
- Un programa compilado con librerías estáticas al generar el ejecutable
este se hace más grande, ya que hace copia de todas las funciones que
necesita y los empaqueta en la aplicación final, siendo este portable.
- Un programa compilado(ejecutable) con librerías estáticas se puede lle-
var a otro ordenador sin necesidad de llevarse las librerías estáticas.
- Un programa compilado con librerías estáticas es, en principio, más rá-
pido en ejecución, ya que, ya contiene en su código la función y no tiene
que ir a leer otro fichero que contiene determinada función para ejecutar
la tarea.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 11
Componentes Reutilizables de Software
- Si cambiamos o recodificamos una librería estática, los ejecutables ya
generados con anterioridad no son afectados, Sin embargo, si recodifi-
camos una librería dinámica, los ejecutables se ven afectados y dejan de
funcionar. Por otro lado, el hecho de modificar una librería dinámica sería
una ventaja, porque si se cambia o recodifica la librería dinámica para
corregir un error (se corrige automáticamente en todos los ejecutables
que usan la librería), pero, es si un error crítico, y si, se recodifica, esto
genera consecuencias en los ejecutables (por ejemplo: Si hemos aña-
dido un parámetro más a una función de una librería, los ejecutables ya
compilados dejarían de funcionar por incompatibilidad de la función).
Desventajas
Entre las desventajas más importantes se tiene:
- Recodificación en la codificación del código fuente, en caso de tener un
módulo desarrollado por otra persona o corporación, al cual no se tiene ac-
ceso
- Mayor demanda de espacio en el disco duro, por ser librerías estáticas, es-
tas generalmente tienen muchas copias en los ordenadores.
- Mayor uso de memoria RAM
- Mayor dificultad en encontrar errores de programación
Librerías dinámicas
Las librerías dinámicas por lo general son independientes y no se copian al
programa ejecutable. Cada vez que se ejecuta un ejecutable, este usa las
funciones de las librerías, trabajo como un pequeño servidor de servicios, y
si simultáneamente se ejecutan más de 2 aplicaciones que usan la misma
librería solo se carga la librería una vez en memoria y todos los programas
las reutilizan desde la memoria.
Por otro lado, se tienen a las librerías Active X, están no son más que exten-
siones de estas librerías dinámicas, están implementados en los lenguajes
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 12
Componentes Reutilizables de Software
de programación con objetos y funciones propias de cada lenguaje de pro-
gramación. Entre algunos de los lenguajes de programación que generan
este tipo de librerías tenemos Microsoft Visual Studio, Delphi Architech y
otros.
Los componentes reutilizables en Linux.
En los sistemas operativos Linux las librerías con funciones exportables usan
la extensión .SO, estos contienen funciones y procedimientos compartidos,
la carga de estos archivos es dinámica para aplicaciones Unix / Linux.
Componentes indispensables de GNU/Linux
Las bibliotecas SO son objetos ELF (formato ejecutable y enlazable - formato
de enlace extensible). ELF es un formato de archivo ejecutable estándar co-
mún para brindar servicios a archivos ejecutables, bibliotecas compartidas,
estas bibliotecas tienen una característica en particular, no ejecutan directa-
mente, son inicializadas por otras aplicaciones.
Por lo general su desarrollo y programación se realiza en lenguaje C, con la
ayuda de un compilador adecuado, por ejemplo, GCC, primero traduce su
código fuente en código objeto. Finalmente, el vinculador traduce el código
objeto en un archivo binario que vincula el código objeto con las bibliotecas
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 13
Componentes Reutilizables de Software
referenciadas. Este archivo contiene las instrucciones individuales como có-
digo de máquina que son entendidas por la CPU y se ejecutan tan pronto
como se ejecuta el programa compilado.
A continuación, la estructura del archivo SO.
El diseño de ELF no se limita a un procesador, es un conjunto de instruccio-
nes basado en una arquitectura de hardware.
En la actualidad, varios sistemas operativos utilizan el formato ELF. Como
ejemplo podemos mencionar: Linux, Solaris, OpenBSD, QNX, BeOS, Haiku
y Fuchsia OS. Además, en dispositivos móviles con Android, Maemo OS,
Sailfish OS, así como en consolas para de juegos como PlayStation Portable
y Dreamcast.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 14
Componentes Reutilizables de Software
CAPITULO II
MODELAMIENTO DE SISTEMAS BASADO EN COMPONENTES
En el contexto de la reingeniería y la reutilización de los componentes, la pla-
nificación es fundamental, debido a que contribuye significativamente en la
reutilización de funciones y procedimientos exportables, es por lo que en el
presente texto se aborda El Lenguaje Unificado de Modelado – UML, a con-
tinuación, una breve descripción sobre UML asociado a ejemplos ilustrativos.
UML
Es un Lenguaje de Modelado Unificado, basado en una notación gráfica la
cual permite: Identificar, especificar, construir, visualizar y documentar los ob-
jetos de un sistema programado o a programar, este lenguaje es el resultado
de la unificación de los métodos de modelado orientados a objetos de Booch,
Rumbaugh y Jacobson. Uml es un lenguaje de modelado que sirve para iden-
tificar, visualizar, especificar, construir y documentar un sistema, Uml modela
los sistemas mediante el uso de objetos denominados estereotipos, que for-
man parte de él así como, las relaciones que existen entre ellos. Uml puede
ser utilizado por cualquier metodología de análisis y diseño orientada a obje-
tos para expresar los diseños de desarrollo, Por ejemplo, es posible usar las
metodologías agiles basado en Uml.
Tipos de diagramas de modelamiento UML
Entre los principales se tiene los siguientes:
Diagrama de casos de Uso
Diagrama de clases
Diagrama de secuencia
Diagrama de componentes
Diagramas de estados
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 15
Componentes Reutilizables de Software
Diagramas de casos de uso
Un diagrama de casos de uso, muestra las distintas operaciones que se es-
peran de una aplicación o sistema, además da a conocer las relaciones con
su entorno de operación, este es una herramienta esencial para la recolec-
ción de requerimientos y para la planificación y control de un proyecto.
Los casos de uso, se representan en el diagrama por una elipse que denota
un requerimiento operativo en el sistema, cada caso de uso de uso, es una
operación completa desarrollada por los actores, estereotipos y por el sis-
tema, el conjunto de los casos de uso representa la totalidad de operaciones
desarrolladas por el sistema
El caso de uso de denota por:
Actor
Es un usuario del sistema, que necesita o usa alguno de los casos de uso,
un usuario puede tomar más de un rol, un solo actor puede actuar en muchos
casos de uso; recíprocamente, un caso de uso puede tener varios actores.
Los actores no necesitan ser humanos pueden ser sistemas externos que
necesitan alguna información del sistema actual.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 16
Componentes Reutilizables de Software
También se puede encontrar tres tipos de relaciones, como son:
Comunicación
Entre un actor y un caso de uso, también la comunicación entre casos de uso,
se denota por una línea
<<INCLUDE>>
Una instancia del caso de uso origen incluye también el comportamiento des-
crito por el caso de uso destino.
Nota: ahora <<USE>> fue remplazado por Include.
Caso de uso <<INCLUDE>> Caso de uso
origen destino
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 17
Componentes Reutilizables de Software
<<EXTEND>>:
El caso de uso origen extiende el comportamiento de del caso de uso destino.
Caso de uso <<EXTEND>> Caso de uso
origen destino
Dependencia
El caso de uso destino depende del caso de uso origen.
Cometarios
Los comentarios ayudan a documentar el rol de los estereotipos y los acto-
res.
Ejemplo 1 de caso de uso
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 18
Componentes Reutilizables de Software
Caso de uso con <<extend>>
Estudiante Solicita recu-
peración
<<Extend>>
Solicita examen
a distancia
Descripción
Este diagrama muestra la forma como están distribuidos los casos de uso en
el sistema de evaluación de un estudiante.
Ejemplo 2 de caso de uso, en este caso se tiene parte de un modelo de un
sistema de monitoreo de detección de actividad en cubos de datos de un
Datawarehouse.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 19
Componentes Reutilizables de Software
Casos de uso monitoreo de detección de actividad
Detector Detecta cubos bo-
rrados
Detecta cubos modi-
ficado
Detecta cubo renom-
brado
Posible infección viral
Consulta
Usuario
Descripción
Este diagrama muestra la forma como interactúa el objeto detector con la
actividad en los cubos de datos.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 20
Componentes Reutilizables de Software
Ejemplo 3.- Diagrama de casos de uso - Sistema de seguridad de archivos
en disco duro.
Modelado de Sistema de Seguridad de archivos
Descripción
El diagrama de casos de uso muestra como interactúa el objeto Seguridad
de archivos y aplica procedimientos algorítmicos para proteger bases de da-
tos, ejecutables, documentos, entre otros de nivel restringido.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 21
Componentes Reutilizables de Software
Ejemplo 4.- Diagrama de casos de uso – Datawarehouse.
Modelado de Datawarehouse elemental
Descripción
El diagrama de casos de uso muestra como interactúa el objeto Datawa-
rehouse, con el Back Room, From Room, Servidor Interbase, etc. El Datawa-
rehouse propuesto tiene como propósito principal crear repositorios de datos
corporativos de los sistemas de información de una organización.
Diagrama de Clases
Una clase se representa mediante una caja sub. Dividida en 3 partes en la
caja superior se muestra en nombre de la clase, en la media los atributos y
en la inferior las operaciones.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 22
Componentes Reutilizables de Software
Nombre de la clase
Atributos de la clase
Procedimientos
Relaciones entre clases
Roles
Para indicar el papel que juega una clase en una asociación se puede espe-
cificar un nombre de rol.
Asociación:
La asociación expresa una conexión bidireccional entre objetos. Una asocia-
ción es una abstracción de la relación existente en los enlaces entre los ob-
jetos. Puede determinarse por la especificación de multiplicidad (mí-
nima...máxima)
Uno y sólo uno
0..1 Cero o uno
M..N Desde M hasta N (enteros naturales)
* Cero o muchos
0..* Cero o muchos
1..* Uno o muchos (al menos uno)
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 23
Componentes Reutilizables de Software Clase 2
Clase 1
Comentarios en una clase
los comentarios de una clase están definidos por una etiqueta, a continua-
ción, su representación gráfica.
Generalización
Es la especialización de la clase y esta denota por Δ, esta consiste en facto-
rizar las propiedades comunes de un conjunto de clases en una clase más
general.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 24
Componentes Reutilizables de Software
Agregación
La agregación representa una relación entre objetos o clases. En UML se
proporciona una escasa caracterización de la agregación. Esta relación
puede ser caracterizada con precisión determinando las relaciones de com-
portamiento y estructura que existen entre el objeto agregado y cada uno de
sus objetos componentes.
Composición. - es un especial tipo de agregación
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 25
Componentes Reutilizables de Software
Diagrama de secuencia
UML provee un medio gráfico para representar la interacción entre los objetos
a lo largo del tiempo en los diagramas de secuencia. Éstos muestran típica-
mente a un usuario o a un actor, los objetos y componentes con los que in-
teractúen durante la ejecución de un caso de uso. Un diagrama de secuencia
representa típicamente un único escenario de caso de uso o flujo de eventos.
A continuación, se ilustra en la siguiente gráfica.
Diagrama de Secuencia – Objeto Autentificación en un Sistema de Seguridad
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 26
Componentes Reutilizables de Software
Diagrama de Secuencia - Autentificación en Datawarehouse
Diagrama de estados
Muestra el conjunto de estados por los cuales pasa un objeto durante su vida
en una aplicación, junto con los cambios que permiten pasar de un estado a
otro, está representado principalmente por los siguientes elementos
Partes que compone un estado
Nombre
Acciones de entrada y de salida.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 27
Componentes Reutilizables de Software
Transiciones internas, es una relación entre estados de una fuente
a un destino.
A continuación, presentamos un ejemplo ilustrado.
Diagrama de estado sobre el proceso de bloqueo
En la siguiente ilustración se muestra los estados por los que pasa dicho pro-
cedimiento.
Diagrama de componentes
Se utilizan para modelar la vista estática de un sistema. Muestra la organiza-
ción y las dependencias entre un conjunto de componentes, no es necesario
que un diagrama incluya todos los componentes del sistema, normalmente
se realizan por partes, cada diagrama describe un apartado del sistema.
Describen librerías, tablas, archivos, ejecutables y documentos que formen
parte del sistema, contribuye en identificar que componentes pueden reutili-
zarse entre sistemas, con el propósito de realizar la optimizar el desarrollo de
sistemas de información.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 28
Componentes Reutilizables de Software
Aquí se tiene un componente del sistema operativo Windows User32.dll, en
el diagrama de componentes de Windows debe salir este componente docu-
mentado, este es muy importante, ya que, sin él, todo el sistema operativo
dejaría de funcionar.
Además, en el componente User32.dll, se identifica la interface en línea rojo,
con el cual, exportan funciones a otras aplicaciones. Al ser User32.dll un com-
ponente, este brinda servicios de sus funciones a otras aplicaciones. A con-
tinuación, ilustramos componentes desarrollados para un Sistema de Segu-
ridad de archivos elemental.
Componentes reutilizables personalizados de un Sistema de seguridad
Los componentes son implementaciones desarrolladas en diferentes lengua-
jes de programación, cada uno de ellas cuenta con interfaces de comunica-
ción exportables.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 29
Componentes Reutilizables de Software
Ahora ilustramos parte del diagrama de componentes de un básico Datawa-
rehouse modelado con UML.
Componentes del Sistema de seguridad
A continuación, una ilustración completa de los componentes que participan
en el desarrollo del sistema.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 30
Componentes Reutilizables de Software
Y Ilustración básica del proceso de comunicación entre el componente reuti-
lizable y la aplicación.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 31
Componentes Reutilizables de Software
CAPITULO III
DESARROLLO DE COMPONENTES DE SOFTWARE
Desarrollo de componentes reutilizables en Visual Studio - Visual C#
Microsoft Visual Studio ha ido mejorando, actualmente está en la versión
2019, ahora cuenta con módulos de desarrollo para diferentes plataformas,
inclusive para el desarrollo de aplicaciones móviles, en todos los casos se
hace uso de los componentes reutilizables de software.
Implementación de la aplicación en Visual C# de Visual Studio
Para desarrollar la presente aplicación es necesario instalar Visual Studio
2019, de no contar el software indicado, se podrá usar Visual Studio 2015,
pero debe instalar las actualizaciones de framework y demás componentes
de runtime. A continuación, se ilustra una implementación elemental sobre
una aplicación que reutiliza las funciones matemáticas elementales. Siga la
siguiente secuencia de pasos.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 33
Componentes Reutilizables de Software
Al hacer clic en Aceptar, muestra la siguiente sección de código, ya listo para
digitar el código fuente.
Ahora remplazamos public class Class1 e implementamos las siguientes
líneas de código fuente.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 34
Componentes Reutilizables de Software
namespace OperacionesBasicas
{
public class MisOperaciones
{
private double a;
private double b;
private double r;
public MisOperaciones(double pA, double pB)
{
a = pA;
b = pB;
r = 0;
}
public double R { get { return r; } }
public double suma()
{
r = a + b;
return r;
}
public double resta()
{
r = a ‐ b;
return r;
}
public double multiplicacion()
{
r = a * b;
return r;
}
public double division()
{
r = a / b;
return r;
}
}
}
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 35
Componentes Reutilizables de Software
Debe quedar como se muestran la siguiente gráfica.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 36
Componentes Reutilizables de Software
Es importante genera la aplicación de distribución en el modo RELEASE, de-
bido a que el modo DEBUG, es solo para desarrollo e implementación.
Para ver el archivo generado, buscar en el directorio creado la carpeta bin,
dentro buscar la carpeta RELEASE.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 37
Componentes Reutilizables de Software
Ahora MiComponente.dll es compatible para distribución. Al mismo proyecto
agregamos un proyecto de consola para reutilizar las funciones implementa-
das en la librería Componenete.dll. dar clic derecho en Solución ubicado en
el explorador de soluciones y seguir la secuencia de pasos ilustrada.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 38
Componentes Reutilizables de Software
Y dar clic en el botón aceptar.
El código fuente siguiente, se genera automáticamente. Es importante grabar
los proyectos, tanto el de librería, el de consola.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 39
Componentes Reutilizables de Software
A continuación, referenciamos a la librería creada, para lo cual seguir la si-
guiente instrucción.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 40