Automatización para novatos

La creación de software es una ocupación difícil, altamente cualificada y profesional; a veces puede hacer que ingeniería espacial parezca relativamente fácil. Debe estar seguro de que es capaz de cumplir el trabajo, especialmente si le encargan crear una solución para otra persona. No se lo agradecerán si lo estropea todo, y es posible que Ud. tampoco se lo agradezca a si mismo. Sin embargo, hay muchas formas de adquirir una confianza real en sus habilidades para crear soluciones de automatización e integración de Impact.

Tener confianza

Formación

Arden ofrece cursos de formación sobre los aspectos específicos de nuestra interfaz de automatización y el desarrollo de soluciones para que pueda aprovechar al máximo su potencial. Nuestro propio equipo de ingenieros de software altamente cualificados y con gran experiencia siempre está dispuesto a compartir sus secretos y está aquí para ayudarle y motivarle. Su éxito es tan importante para nosotros como lo es para Ud.

Otras cualificaciones

Los autores deben tener conocimientos sobre los procesos generales de análisis y diseño de desarrollo de software, además de conocimientos sobre las tecnologías y los lenguajes que puedan utilizar. Muchas instituciones académicas y organismos como Microsoft ofrecen cursos de certificación y titulación así como de formación. Puede que ya cuente con cualificaciones relevantes y habilidades transferibles.

Profesionalidad

Animamos a los autores que deseen tomarse en serio su profesión a que se afilien a un organismo profesional como la IEEE Computer Society, la Association for Computing Machinery (ACM), o la British Computer Society (BCS) [Sociedad Científica Informática de España SCIE]. Estos organismos exigen a sus miembros que sigan un código de conducta y buenas prácticas en cuanto a confidencialidad, competencia, equidad, calidad, responsabilidad e integridad, y ofrecen apoyo y protección tanto a sus miembros como a quienes los contraten.

Capacidad

Los autores pueden necesitar tener conocimientos sobre el sector además de formación en matemáticas/CAD para poder utilizar de forma eficiente y eficaz las funciones de la interfaz de automatización.

Diversión

Dicho esto, aunque supone un reto, crear soluciones con nuestra tecnología es extremadamente gratificante y satisfactorio. No olvide disfrutar de la experiencia.

Acerca de la interfaz

Para que pueda escribir macros, scripts y plugins que puedan automatizar e integrar nuestro software con otros sistemas, le proporcionamos una interfaz de programación

IML o COM

Nuestro primer intento de crear una interfaz de este tipo, lenguaje macro de Impact (IML), era potente, pero en última instancia estaba limitado por las tecnologías disponibles en ese momento. Fue sustituido por Impact COM y nServer, que utilizan la tecnología Component Object Model (COM) de Microsoft, estándar del sector. Aunque los autores pueden seguir utilizando macros, ya no ofrecemos soporte técnico para ni desarrollamos el IML. Debe utilizar Impact COM y nServer para todos los nuevos proyectos de automatización de Impact.

Abstracción

Las bibliotecas COM de Impact ofrecen una interfaz que puede utilizar para acceder a las funciones clave de Impact por medio de un script o un plugin. Los métodos y propiedades del sistema CAD que se exponen en esta interfaz están cuidadosamente planificados y controlados; hay muchos aspectos internos del sistema CAD que no se exponen y que nunca se expondrán. Las bibliotecas COM de Impact no son una representación directa de los componentes internos de Impact, sino una abstracción de los mismos. Esta abstracción hace que las bibliotecas sean más fáciles de entender y utilizar, pero no les confiere el mismo grado de potencia y control que tienen nuestros propios desarrolladores con acceso directo a los componentes internos. Impact no es de código abierto. Además, esto significa necesariamente que los sistemas que utilizan las bibliotecas COM de Impact para ofrecer una solución funcionarán peor que un sistema escrito en código nativo por nuestro propio equipo; hay una sobrecarga al pasar por la interfaz COM. Aunque puede que no sea una de sus prioridades, no podemos garantizar que el rendimiento de cualquier sistema que utilice las funciones COM y nServer de Impact siempre satisfagan sus expectativas. Por favor, contacte con nosotros si esto le plantea un problema.

Implementación

Como anteriormente comentado, una automatización de Impact puede adoptar la forma de una macro, un script o una biblioteca de plugins. También es posible crear una aplicación o un script independiente, concebido para ejecutarse independientemente de Impact. Cada forma tiene sus ventajas e inconvenientes. Depende de usted elegir cuál implementar para cada tarea.

Macros

Aunque Impact le permite escribir macros utilizando IML, estas no pueden utilizar Impact COM ni nServer, por lo que no debe escribir nuevas. Están admitidos únicamente por motivos de compatibilidad con versiones anteriores.

Scripts

Impact y nServer le permiten escribir scripts con Visual Basic Script (VBScript o VBS) de Microsoft. Estos scripts pueden incrustarse directamente en el objeto que los utiliza en Impact, tales como plantillas, entidades de texto, tareas automáticas, herramientas de plugin/elementos de menú, o pueden almacenarse en un archivo externo – o archivos utilizando inclusiones, una novedad en Impact 2014. VBScript es compatible con Windows por defecto, por lo que no es necesario instalar nada adicional en la estación de trabajo. El VBScript incrustado es útil para soluciones pequeñas y sencillas, sobre todo porque no requiere distribuir los archivos o colocarlos en una ubicación accesible por la estación de trabajo. Sin embargo, puede resultar difícil gestionar y editar el código fuente cuando está incrustado de esta manera, ya que solo se puede hacerlo en el entorno Impact. También puede distribuir archivos de script actualizados sin tener que modificar los propios objetos, lo que puede ser ventajoso si está modificando los scripts en un entorno de prueba antes de distribuir los cambios a un sistema en vivo u otro sistema. Los scripts son legibles para los humanos y más fáciles de crear y editar que las bibliotecas de plugins y las aplicaciones independientes. Puede desarrollar rápidamente pequeñas utilidades con ellos y prototiparlos en el cuadro de herramientas de scripts en Impact.

Bibliotecas de plugins

En lugar de scripts, puede escribir una biblioteca en cualquier lenguaje que admita COM. Una sola biblioteca de plugins puede admitir varias interfaces, cada una de las cuales se puede utilizar en lugar de un script en un objeto en Impact. Son más difíciles de desarrollar, pero mucho más potentes. A diferencia de las macros y los scripts, para ello necesita un entorno de desarrollo integrado (IDE) como Microsoft Visual Studio o Embarcadero RAD Studio, aunque existe una versión gratuita (Express) de Visual Studio con capacidades de depuración limitadas. Tiene una mayor variedad de lenguajes que para los scripts, incluidos VB.Net, C# y C++, siempre que sean compatibles con COM. Si utiliza Visual Studio, tendrá acceso completo a .Net Framework, lo que proporciona a los autores acceso a un conjunto adicional de potentes herramientas. Hace falta compilar las bibliotecas, creando archivos binarios (.dll o .tlb) que no son legibles para los humanos, pero esto suele ser deseable, ya que mejora el rendimiento en tiempo de ejecución y puede ofuscarse el código (véase Protección de propiedad intelectual). A continuación, estas bibliotecas deben instalarse y registrarse en cada estación de trabajo Impact, lo que puede requerir también crear un instalador si desea distribuirlas. Lo ideal es que dichos instaladores no requieran instalar la biblioteca para todos los usuarios de esa estación de trabajo, ya que suele requerir derechos administrativos. No se puede recompilar una biblioteca si Impact ya la tiene cargada, por lo que las pruebas de desarrollo pueden complicarse porque es necesario reiniciar Impact cada vez que se cambie el código.

Aplicaciones independientes

También puede escribir una aplicación independiente sin dependencia alguna de Impact, pero que siga utilizando Impact COM y nServer. Son mucho más limitadas que las bibliotecas de plugins, ya que los objetos en Impact pueden usarlas. Ellas solo pueden ejecutarse junto con Impact. No se recomienda que los autores creen aplicaciones independientes que deban interactuar con Impact. Aunque sean ligeramente más fáciles de desarrollar que una biblioteca de plugins, aun requieren un IDE, deben compilarse en archivos binarios (.exe) que no son legibles para los humanos y aun deben instalarse.

Innovación

Al igual que todos los demás productos de software exitosos y actuales, Impact sigue evolucionando, extendiéndose y mejorándose. Estamos comprometidos con la innovación. El funcionamiento interno del sistema CAD no es una excepción a este principio. Esta es una razón clave por la que las bibliotecas COM de Impact son una abstracción en lugar de una interfaz directa; de lo contrario, la interfaz cambiaría con demasiada frecuencia y los autores tendrían que seguir rediseñando o reescribiendo sus scripts y aplicaciones para estar al día. Para su beneficio, hacemos todo lo posible por mantener la funcionalidad de la interfaz COM y nServer de Impact entre cada versión del producto, añadiendo solo elementos nuevos en lugar de cambiar los métodos y propiedades existentes. Afortunadamente, las funciones de bajo nivel como la estructura de dibujo y el recorrido son menos propensas a cambiar significativamente con el tiempo que las funciones de alto nivel como la interfaz de usuario de Impact. Nos resulta difícil exponer funciones que siguen cambiándose por medio de COM, al tiempo que mantenemos la interfaz entre versiones. Por lo tanto, hemos decidido no exponer dicha funcionalidad de alto nivel por medio de COM, o proporcionarla con muy poca granularidad. El autor no debe sentirse limitado por lo que puede lograr con la interfaz COM de Impact. Es libre de escribir el código que desee o incluso utilizar APIs de terceros, para lograr cosas que la interfaz COM de Impact no admite directamente en la actualidad. No podemos garantizar que la funcionalidad de Impact COM y nServer quede sin cambios en el futuro. Al igual que los avances tecnológicos hicieron IML obsoleto, lo mismo podría ocurrir con COM. Esto está fuera del control de Arden. Los autores son responsables de mantener sus sistemas compatibles con cualquier cambio futuro.

Pruebas

Tenemos acceso completo a nuestros propios sistemas y dedicamos grandes esfuerzos a probar exhaustivamente todos nuestros productos de software antes de su lanzamiento. De detectar un error o un problema después del lanzamiento como inevitablemente ocurre de vez en cuando en todos los productos de software, podemos investigar y resolver los problemas de manera eficiente internamente, teniendo en cuenta los efectos que cualquier cambio pueda tener en otras partes del sistema, ya que tenemos todo el código fuente y la documentación bajo nuestro control. Nos comprometemos a proporcionar mantenimiento y asistencia de calidad para todos nuestros productos de software. Lamentablemente, no podemos ofrecer la misma garantía para el software que usted crea. No podemos probar el código que usted ha escrito, al que no tenemos acceso o del que ni siquiera tenemos conocimiento, con todas las versiones del software que lanzamos. La responsabilidad de probar y mantener cualquier código fuente que utilice la interfaz COM y nServer de Impact con cada versión recae en el autor. Cualquier error que exista exclusivamente en su código lo debe corregir usted. Aunque siempre nos esforzamos por solucionar lo antes posible cualquier error que exista en nuestro código, si dichos errores solo pueden reproducirse por su código, puede resultar difícil identificar exactamente dónde se encuentra el fallo, especialmente sin plena cooperación y ayuda del autor. Esto puede suponer un problema si el código fuente tiene un carácter comercialmente confidencial. Arden garantiza a sus clientes que siempre actuará en su mejor interés y que nunca divulgará dicha información a terceros.

Conservar el fruto del esfuerzo

El código fuente de Impact y la documentación técnica de diseño de estándar del sector se almacenan de forma segura en nuestras instalaciones, tanto ahora como en el futuro. Si nos ocurriera algún desastre, ya sea a nivel individual o a la empresa en su conjunto, habría otras personas que podrían rescatar el código fuente y, utilizando la documentación para comprenderlo, seguir prestando servicio a nuestros clientes en el futuro. Como autor del código fuente, se le aplica el mismo principio. Es su responsabilidad asegurarse de que cualquier trabajo realizado se conserve en el futuro.

Copias de respaldo

Realice copias de respaldo periódicas de su código. Perder su trabajo debido a un fallo de hardware u otro evento fuera de su control puede ser devastador. Considere utilizar una herramienta de gestión de código fuente, que también puede ayudarle a realizar un seguimiento de los cambios en su código y a organizarse para facilitar la reutilización del código que ha escrito para diferentes fines.

Documentación y comentarios del código

Es muy difícil para otra persona comprender el código fuente sin documentación adjunta, o incluso comentarios dentro del código sin haberlos escrito ella misma. Sin entendimiento es imposible mantenerlo. Si le han encargado como autor la entrega de una solución a otra persona, no es profesional entregar una solución sin tener en cuenta cómo podría afectar el negocio de ese cliente si no estuviera disponible para mantenerla tanto ahora como en el futuro, por muy tentador que resulte casi obligarle a utilizar sus servicios. No proporcione ninguna solución que funcione ahora, pero tal vez no funcione en el futuro. Proporcione el código fuente y la documentación. Por lo general, sus clientes se lo agradecerán y será más probable que vuelvan a contratarle. Incluso si no le preocupa que otras personas entiendan su código, a menos que tenga una memoria fotográfica, en seis meses le resultará muy difícil recordar y entender ¡incluso su propio código sin documentación! Será como si lo hubiera escrito otra persona.

Depósito en garantía

En situaciones en las que no desee proporcionar el código fuente y la documentación a un cliente, una opción puede ser utilizar los servicios de terceros para conservar la información en su nombre.

Protección de propiedad intelectual

Existen medidas que un autor puede tomar para proteger su propiedad intelectual.

Seguridad del código

Los autores tal vez puedan querer proteger su código para que no se lo pueda utilizar sino dentro de su organización o con su permiso. Los scripts son archivos de texto legibles por humanos y, por lo tanto, fácil de modificar y vulnerables al abuso. En cambio, las bibliotecas de plugins y las aplicaciones independientes son binarios compilados y por lo tanto más seguros, pero siguen siendo archivos que se pueden copiar y reutilizar. El autor tiene la facultad de incorporar cualquier medida de seguridad que piensa que sea necesaria para proteger la propiedad intelectual de su empresa. Hay muchas formas de hacerlo. La más sencilla es que la biblioteca de plugins o la aplicación obtenga el número de licencia de Impact para la estación de trabajo o la organización y lo compare con una lista aprobada de licencias para protegerlo contra el uso no autorizado. Además, si el autor desea distribuir y vender sus plugins a terceros, Arden Software puede ayudarle mediante el uso de «objetos de biblioteca» que controlan el acceso a la biblioteca de plugins en toda la base de clientes mundial de Impact. Asimismo, el desarrollador debe proteger los binarios contra la ingeniería inversa mediante herramientas de depuración de terceros. Para las aplicaciones .net, hay varias herramientas de ofuscamiento populares disponibles para conseguirlo.

Ejemplos

El siguiente ejemplo sencillo de VBScript muestra lo fácil que es recuperar la información de la licencia de Impact.

Recuperar el número de licencia

licenceNumber = Impact.System.Licence.Id

Observe que el número será único para la estación de trabajo, el sitio o su organización, dependiendo de su preferencia al pedir las licencias.

Búsqueda de un objeto de biblioteca 

‘ Este es el nombre del objeto de biblioteca para buscar,
‘ proporcionado por Arden para su aplicación
name = “Mega Corp\Plug-ins\Mega Plugin 1”
‘ buscar el objeto de biblioteca
Set libraryObject = Impact.System.Licence.LibraryObjects.Item( name )
If libraryObject Is Nothing Then
‘ Esta licencia de Impact no incluye el elemento especificado,
‘ así que avise al usuario y quite la aplicación
Else
‘ La licencia es válida, así que continúe...
End If

Antes de distribuir sus productos

Es relativamente fácil crear un código fuente que haga lo que usted desea. En su ordenador. Con un dibujo concreto. Un viernes. Con viento en popa. Tarda mucho más en construir sobre eso, en pulir ese código fuente y producir una solución que funcione en suficientes escenarios diferentes con bastante fiabilidad como para considerarla «terminada» – por supuesto, ningún software está nunca terminado – o al menos corresponde a su propósito y es distribuible. Este proceso siempre lleva más tiempo del que se piensa.

Robustez

El código que escriba debe ser robusto en el sentido de que no haga suposiciones sobre el resultado de una sola operación o llamada de función. Compruebe todos los resultados y genere mensajes de error. La biblioteca COM permite escribirlos en el registro de depuración de Impact, lo que resulta muy útil. Esto le ayudará a solucionar cualquier problema que pueda surgir. Pruebe su solución con muchos ejemplos, muchos casos realistas, muchos casos extraños. La mayor parte del tiempo dedicado a crear código fuente lo pasará probándolo en vez de escribiéndolo.

Audiencia

Impact y nServer disponen de una amplia gama de opciones de configuración diferentes, lo que significa que no hay dos estaciones de trabajo Impact iguales. Si estás creando código específicamente para una empresa, será tentador ahorrar tiempo teniendo en cuenta únicamente las opciones que ella utiliza. De este modo, corre el riesgo de tener problemas si deciden cambiar esas opciones en el futuro, pero puede que le salga con la suya. Desde luego, no le saldrá con la suya si pretende distribuir su solución. He aquí algunas de las muchas cosas que hay que tener en cuenta:

  • ¿Su solución funcionará con distintas bases de datos (Oracle, SQL Server...)?
  • ¿Su solución funcionará con distintos idiomas (inglés, alemán...)?
  • ¿Su solución funcionará con diferentes configuraciones de localización (sistema métrico, inglés...)?
  • ¿Su solución funcionará con diferentes configuraciones de apariencia (colores, visibilidad...)?
  • ¿Su solución funcionará con diferentes usuarios (permisos, sitios...)?

Distribuir sus productos

Compartir

Un principio clave de la ingeniería de software es que nunca debe escribir código ya escrito por otra persona. ¿Por qué perder el tiempo si sería más eficaz (¡y barato!) utilizar o comprar el código existente? Por supuesto, para ello es necesario saber que alguien ya ha escrito un código para hacer lo que se necesita. Aunque los autores quieran proteger su propiedad intelectual y los detalles de su solución desarrollada, es raro que la existencia de esa solución tenga que ser un secreto comercial. Haría bien en presumir de ella. Nos encantaría conocer sus soluciones desarrolladas. Con su permiso, podemos incluso ayudar a comercializarlas como productos.

Plugins automáticos de Impact

Como novedad para Impact 2014, plugins automáticos de Impact (IAP) permitirá al autor distribuir de forma sencilla, fácil y eficaz paquetes de funciones de automatización a otros usuarios de Impact. Estos usuarios se beneficiarán de la perfecta integración de estas herramientas de automatización en su instalación, entorno y configuración de apariencia de Impact. Está previsto que esto animará a los autores a compartir, intercambiar y comercializar sus IAP, y establecerá un mercado mayor para las soluciones del software Impact de terceros.

Conclusiones

Las empresas no aceptan un enfoque único para el software que necesitan. La automatización de Impact permite a los autores personalizar, integrar y ampliar nuestro software de formas que ni siquiera nosotros podemos imaginar, para proporcionar a ellos mismos o a sus clientes una verdadera ventaja competitiva en el mercado. Déjenos ayudarle a hacerlo.

¿Ha sido útil esta respuesta? No

Enviar comentario
Lamentamos no haber sido de ayuda. Ayúdenos a mejorar este artículo dejándonos sus comentarios.

Puede que le apetezca leer: