Está en la página 1de 12

Universidad De La Costa.

Tarea investigación.

Nombres: María Camila Lora Cárdenas.

Curso: Entornos de desarrollo.

Grupo: REMOTA-AN.

Fecha: 13-08-2020

Barranquilla-Atlántico.

2020-II

Tipos de entornos de desarrollo.


Un entorno de desarrollo es un conjunto de procedimientos y herramientas que se
utilizan para desarrollar un código fuente o programa. Este término se utiliza a
veces como sinónimo de entorno de desarrollo integrado (IDE), que es la
herramienta de desarrollo de software utilizado para escribir, generar, probar y
depurar un programa. También proporcionan a los desarrolladores una interfaz de
usuario común (UI) para desarrollar y depurar en diferentes modos.

A la hora de elegir en entorno de desarrollo o IDE (Integrated Development


Environment) es fundamental tener definido qué lenguaje de programación se va a
utilizar tanto en el Frontend (la parte visible de la web) como en el Backend.
[ CITATION ARI20 \l 9226 ]

¿Para qué sirve? Sirve para proporcionar las herramientas necesarias para el
proceso de programación. También sirve para construir un programa, una página
web o una aplicación integral con las herramientas necesarias reunidas en un solo
lugar. En otras palabras, se podría asimilar a un editor en el que puedes colorear o
resaltar una parte del texto, agregar imágenes y gráficos, buscar y reemplazar
palabras y crear archivos a partir de plantillas. Pero eso no es todo, ya que un
entorno de desarrollo también sirve para:

 Buscar y remplazar códigos.


 Colorear sintaxis para mejorar la legibilidad.
 Ejecutar en modo debug.
 Autocompletar códigos.
 Integrar sistemas de control de versiones.
 Diseñar proyectos a partir de plantillas.
 Insertar trozos de código o snippets.
 Refactorizar códigos.

Existe una gran cantidad de programas especializados para facilitar las tareas del
programador, se pueden clasificar en las siguientes categorías:

Tabla. 1 lenguaje de programación


Los ejemplos anteriores, están dirigidos especialmente a profesionales del área de
la programación, pero también existen plataformas o entornos de desarrollo
diseñados para aquellos que quieren crear un proyecto por sí mismos, aún sin
dominar los lenguajes de programación.

Este tipo de entornos de desarrollo se denominan Wysiwyg (What You See Is


What You Get). Algunos ejemplos son:

 Dreamweaver.
 BlueGriffon.
 Kompozer.

Y para facilitar el acceso a quienes definitivamente no quieren complicarse con


lenguaje de programación, se crearon los CMS Content Management System
como WordPress.[ CITATION Neo20 \l 9226 ]

Paradigma estructurado y sus entornos de desarrollo

 La visión clásica de la programación estructurada:

La programación sin goto: se refiere al control de ejecución. El control de su


ejecución es una de las cuestiones más importantes que hay que tener en cuenta
al construir un programa en un lenguaje de alto nivel. La regla general es que las
instrucciones se ejecuten sucesivamente una tras otra, pero diversas partes del
programa se ejecutan o no dependiendo de que se cumpla alguna condición.
Además, hay instrucciones (los bucles) que deben ejecutarse varias veces, ya sea
en número fijo o hasta que se cumpla una condición determinada.

A finales de los años sesenta, surgió una nueva forma de programar que reduce a
la mínima expresión el uso de la instrucción goto y la sustituye por otras más
comprensibles. Esta forma de programar se basa en un famoso teorema,
desarrollado por Edsger Dijkstra, que demuestra que todo programa puede
escribirse utilizando únicamente las tres estructuras básicas de control siguientes:

a) Secuencia: el bloque secuencial de instrucciones, instrucciones ejecutadas


sucesivamente, una detrás de otra.
b) Selección: la instrucción condicional con doble alternativa, de la forma "if
condición then instrucción-1 else instrucción-2".
c) Iteración: el bucle condicional "while condición do instrucción", que ejecuta la
instrucción repetidamente mientras la condición se cumpla.

Los programas que utilizan sólo estas tres instrucciones de control básicas o sus
variantes (como los bucles for, repeat o la instrucción condicional switch-case),
pero no la instrucción goto, se llaman estructurados. Ésta es la noción clásica de lo
que se entiende por programación estructurada (llamada también programación
sin goto) que hasta la aparición de la programación orientada a objetos se convirtió
en la forma de programar más extendida. Esta última se enfoca hacia la reducción
de la cantidad de estructuras de control para reemplazarlas por otros elementos
que hacen uso del concepto de polimorfismo. Se utilizan las estructuras de control
(if, while, for, etc.) para implementar sus algoritmos porque en muchos casos es la
forma más natural de hacerlo.

Una característica importante en un programa estructurado es que puede ser leído


en secuencia, desde el comienzo hasta el final sin perder la continuidad de la tarea
que cumple el programa, lo contrario de lo que ocurre con otros estilos de
programación. Este hecho es importante debido a que es mucho más fácil
comprender completamente el trabajo que realiza una función determinada si
todas las instrucciones que influyen en su acción están físicamente contiguas y
encerradas por un bloque. La facilidad de lectura, de comienzo a fin, es una
consecuencia de utilizar solamente tres estructuras de control, y de eliminar la
instrucción de transferencia de control goto.

La visión moderna de la programación estructurada: Cuando en la actualidad


se habla de programación estructurada, hace referencia a la división de un
programa en partes más manejables (usualmente denominadas segmentos o
módulos). La visión moderna de un programa estructurado es un compuesto de
segmentos, los cuales puedan estar constituidos por unas pocas instrucciones o
por una página o más de código. Cada segmento tiene solamente una entrada y
una salida, asumiendo que no poseen bucles infinitos y no tienen instrucciones
que jamas se ejecuten. La relación entre ambas visiones es que los segmentos se
combinan utilizando las tres estructuras básicas de control y, por tanto, el
resultado es también un programa estructurado. Cada una de estas partes
englobará funciones y datos íntimamente relacionados semántica o
funcionalmente. En una correcta partición del programa deberá resultar fácil e
intuitivo comprender lo que debe hacer cada módulo. En una segmentación bien
realizada, la comunicación entre segmentos se lleva a cabo de una manera
cuidadosamente controlada. Así, una correcta partición del problema producirá
una nula o casi nula dependencia entre los módulos, pudiéndose entonces trabajar
con cada uno de estos módulos de forma independiente. Esto garantizará que los
cambios que se efectúen a una parte del programa, durante la programación
original o su mantenimiento, no afecten al resto del programa que no ha sufrido
cambios. Esta técnica de programación conlleva las siguientes ventajas:

a) El coste de resolver varios subproblemas de forma aislada es con frecuencia


menor que el de abordar el problema global.
b) Facilita el trabajo simultáneo en paralelo de distintos grupos de programadores.
c) Posibilita en mayor grado la reutilización del código (especialmente de alguno de
los módulos) en futuras aplicaciones. [ CITATION Pro \l 9226 ]

Paradigma orientado a objetos y sus entornos de desarrollo.


Programación estructurada y orientación a objetos: Consiste en agrupar las funciones
que permiten operar con un determinado conjunto (o estructura) de datos, existe una
analogía evidente con la programación orientada a objetos. De hecho, ésta puede verse
como la continuación lógica de aquélla.

La programación estructurada y la orientación a objetos constituyen los pasos finales de


este camino, ya que permiten a los programadores escribir código sin necesidad de
conocer los detalles de la implementación de funciones de una librería y objetos
respectivamente. Su implementación permanece oculta a los programadores, liberándoles
de los condicionantes que esto imponía. De ese modo, un programador no necesita saber
cómo se representan internamente los datos del sistema, por ejemplo un tablero de
ajedrez, aquí sólo necesitará saber cómo mover, iniciar una partida o validar un
determinado movimiento. Lo realmente complicado es encontrar los modelos o patrones
conceptuales correctos para el problema y no la implementación de los mismos.

La propuesta de la moderna programación estructurada y de la orientación a objetos


consiste principalmente en intentar superar la complejidad inherente a los problemas del
mundo real sobre tales problemas y su encapsulación dentro de módulos o librerías y
objetos respectivamente. El término encapsular porque los objetos y las librerías pueden
verse como "cáp sulas" a modo de barrera conceptual que separa un conjunto de valores
y operaciones, que poseen un substrato conceptual idéntico, del resto del sistema. Así, en
el ejemplo número 2 hemos encapsulado los datos del tablero (piezas y posiciones) y las
operaciones (iniciar, mover, validar y dibujar) dentro de la misma barrera conceptual que
ha surgido de la abstracción de la idea de tablero. Así, tanto los objetos como librerías
tienen dos partes bien diferenciadas: la declaración y la implementación. La declaración o
interfaz es de dominio público, conocido por las demás partes del programa.

En la implementación se explicitan y codifican los elementos necesarios para responder a


lo especificado en la declaración. Esto permite que cada objeto definido en nuestro
sistema pueda ocultar su implementación y hacer pública su interfaz de comunicación.
[ CITATION Pro \l 9226 ]

Paradigma de descripción de hardware y sus entornos de desarrollo.

Lenguaje de descripción de hardware (HDL, hardware description language) es un


lenguaje de programación especializado que se utiliza para definir la estructura, diseño y
operación de circuitos electrónicos, y más comúnmente, de circuitos electrónicos digitales,
como el convertidor analógico-digital o cualquier antena satelital. Así, los lenguajes de
descripción de hardware hacen posible una descripción formal de un circuito electrónico, y
posibilitan su análisis automático y su simulación.

Los lenguajes de descripción de hardware se parecen mucho a otros lenguajes de


programación de ordenadores tales como el C o Java: básicamente consisten en una
descripción textual con expresiones, declaraciones y estructuras de control. Sin embargo,
una importante diferencia entre los HDL y otros lenguajes de programación está en que el
HDL incluye explícitamente la noción de tiempo.

Utilizan expresiones estándar basadas en texto que reflejan la estructura de los circuitos
electrónicos, si se viera dentro de una tarjeta, se podrían observar más de un millón de
compuertas a disposición del programador. Al igual que los lenguajes de programación
concurrentes, la sintaxis y semántica de los HDL incluyen notaciones específicas para la
concurrencia. Sin embargo, al contrario de lo que ocurre con la mayoría de los lenguajes
de programación, los HDL incluyen también una notación específica para el tiempo,
debido a que este es una característica fundamental en los circuitos electrónicos reales.
Los lenguajes cuyo único propósito es expresar la conectividad entre una jerarquía de
bloques son más bien clasificados como "lenguajes de listas de conexiones" (o lenguajes
"netlist"), tales como los que se usan en los programas de diseño asistido por ordenador
(CAD). Los HDL son algo más rico que estos lenguajes de listas de conexiones, ya que no
sólo permiten definir la estructura de un circuito, sino también su comportamiento.

Pueden ser usados para escribir especificaciones "ejecutables" de hardware. Es decir, un


programa escrito en HDL hace posible que el diseñador de hardware pueda modelar y
simular un componente electrónico antes de que este sea construido físicamente. Es esta
posibilidad de "ejecución" de componentes lo que hace que a veces los HDL se vean
como lenguajes de programación convencionales, cuando en realidad se debería
clasificarlos más precisamente como lenguajes de modelado.

En la práctica existen distintos tipos de simuladores capaces de trabajar tanto con eventos
discretos (digitales) como continuos (analógicos), existiendo lenguajes HDL específicos
para cada caso. Desde el punto de vista práctico, una gran ventaja de los HDL está en
que, utilizando un programa llamado "sintetizador" es posible inferir, a partir de la
expresión textual del programa, el conjunto de operaciones lógicas y el circuito
equivalente necesarios para realizar la función del programa. Esto permite saltar desde el
ámbito de la simulación software al de la implementación real del hardware sobre circuitos
lógicos reales tales como los ASIC o las FPGA. [ CITATION med19 \l 9226 ]

Paradigmas G y sus entornos de desarrollo.

Un paradigma de programación es una manera o estilo de programación de software.


Existen diferentes formas de diseñar un lenguaje de programación y varios modos de
trabajar para obtener los resultados que necesitan los programadores. Se trata de un
conjunto de métodos sistemáticos aplicables en todos los niveles del diseño de programas
para resolver problemas computacionales. Los lenguajes de programación adoptan uno o
varios paradigmas en función del tipo de órdenes que permiten implementar como, por
ejemplo, Python o JavaScript, que son multiparadigmas.

Paradigma imperativo

Los programas consisten en una sucesión de instrucciones o conjunto de sentencias,


como si el programador diera órdenes concretas. El desarrollador describe en el código
paso por paso todo lo que hará su programa.
Algunos lenguajes: Pascal, COBOL, FORTRAN, C, C++, etc.

Otros enfoques subordinados al paradigma de programación imperativa son:

–          Programación estructurada: La programación estructurada es un tipo de


programación imperativa donde el flujo de control se define mediante bucles anidados,
condicionales y subrutinas, en lugar de a través de GOTO.

–          Programación procedimental: Este paradigma de programación consiste en


basarse en un número muy bajo de expresiones repetidas, englobarlas todas en un
procedimiento o función y llamarlo cada vez que tenga que ejecutarse.

–          Programación modular: consiste en dividir un programa en módulos o


subprogramas con el fin de hacerlo más manejable y legible. Se trata de una evolución de
la programación estructurada para resolver problemas de programación más complejos.

Paradigma declarativo

Este paradigma no necesita definir algoritmos puesto que describe el problema en lugar
de encontrar una solución al mismo. Este paradigma utiliza el principio del razonamiento
lógico para responder a las preguntas o cuestiones consultadas.

Este paradigma a su vez se divide en dos:

–          Programación Lógica: Prolog

–          Programación funcional: Lisp, Scala, Java, Kotlin.[CITATION Mir20 \l 9226 ]

Entornos para la gestión

Un proyecto de software de gestión se basa en la elección adecuada de los necesarios


entornos de desarrollo, así como de las metodologías de desarrollo usadas. En cuanto a
la elección de los entornos de desarrollo, desde el punto de vista de la imprescindibilidad,
podríamos ordenarlos (de mayor a menor) en: entorno de producción y entorno de
preproducción en el cliente; entorno de desarrollo, entorno de integración y entorno de
pruebas en el fabricante. El uso de éstos se aconseja en función de las características y
volumen del proyecto.

Tradicionalmente se considera 5 entornos necesarios en la implementación de un sistema


de gestión, sin embargo, la realidad es que depende de la tipología del cliente y sus
necesidades las que determinarán el número de éstos. En cuanto a la metodología de
implantación, tampoco se puede considerar que exista una idónea, sino que dependerá
también claramente del tipo de proyecto. Veamos con algunos ejemplos (quizá un poco
extremos) una aproximación.

 CASO 1.- Implantación sin ningún desarrollo especial a medida, software


“out of the box”

Número de entornos que se utilizarán durante el proyecto: Dada el innecesario


desarrollo de software a medida para este tipo de cliente, los entornos relacionados con
los desarrolladores son evitables, siendo solo necesario los entornos de instalación en el
propio cliente. Si algunas de las actualizaciones del sistema hubieran sido requeridas por
el cliente (alguna mejora funcional, la corrección de algún error, etc.), podría ser necesario
el entorno de pruebas, aunque suele ser innecesario en este caso.

 Entorno de desarrollo.
 Entorno de integración continua.
 Entorno de pruebas.
 Entorno de preproducción.
 Entorno de producción.
 Metodología de desarrollo elegida

En este caso, no aplica metodología de desarrollo.

Plan concreto (fases) para la promoción de desarrollos: Si la versión incorporase


alguna solicitud del cliente, sería el propio consultor el que debería realizar las primeras
pruebas sobre el entorno de preproducción, y una vez comprobada la funcionalidad
correcta, trasladar al cliente la realización de su batería de pruebas.

Si la versión NO incorporase solicitudes del cliente, sería directamente el propio cliente el


que debería realizar la batería de pruebas.

Una vez comprobado que la calidad del desarrollo es acorde a los estándares y aprobada
y aceptada la nueva versión por el cliente, se promocionará el código al entorno de
producción.

Herramienta utilizada para promocionar los desarrollos: En este caso, no aplica


ninguna herramienta para promocionar desarrollos.
Fig.1 ciclo-de-vida-software.

 CASO 2.- El proyecto requiere de desarrollos a medida, siendo su fecha de


entrega 4 meses. Involucrará a 2 desarrolladores y un jefe de proyecto, así
como 2 consultores.

Número de entornos que se utilizarán durante el proyecto: Prácticamente son


necesarios todos los entornos, si bien el entorno de integración podría obviarse dado el
limitado tamaño del proyecto.

 Entorno de desarrollo.
 Entorno de integración continua.
 Entorno de pruebas.
 Entorno de preproducción.
 Entorno de producción.
 Metodología de desarrollo elegida

La metodología de desarrollo en este caso se recomienda que sea iterativa e incremental,


de tal forma que el feedback entre desarrolladores y consultores, así como el de
consultores y clientes sea continuo, y permita generar un código lo suficientemente
ajustado a los requerimientos del cliente. Podría aplicar también una metodología ágil, o
incluso mixta, dada la importancia en este caso de las interacciones con el cliente y el
ajuste y priorización de sus necesidades. Al no existir key users es difícil obtener una
visión general y definida de los procesos y requerimientos, así que una metodología en
cascada queda totalmente descartada.

Plan concreto (fases) para la promoción de desarrollos:

 Promoción al entorno de pruebas: Al no haber ningún téster en el proyecto, los


propios desarrolladores deben asumir ese rol, así que deberán garantizar que al
promocionar el código al entorno de pruebas dispondrá de suficiente calidad. En
este momento pasará al entorno de pruebas.
 Promoción al entorno de preproducción: Los propios desarrolladores realizarán las
funciones de téster “cruzados”, de tal forma que el desarrollo realizado por
cualquiera de ellos deberá ser revisado y comprobado en profundidad por
cualquiera de los otros. Si es así, pasará al entorno de preproducción.
 Promoción al entorno de producción: Tanto los consultores como el cliente
procederán a realizar las pruebas de funcionalidad solicitadas, así como el
cumplimiento del estándar de calidad, en cuyo caso, promocionará a producción.

Herramienta utilizada para promocionar los desarrollos: En este caso, la promoción


del código se haría a través de una herramienta de control de versiones centralizada, por
ejemplo Subversion. Al ser una instalación con pocos recursos humanos dedicados al
desarrollo parece más factible una herramienta centralizada que una distribuida, aunque
podría depender finalmente la elección de otros factores tales como el coste, la ubicación
de los desarrolladores, etc.

 CASO 3.- Una gran empresa tiene un equipo de proyectos formado por 10
desarrolladores, 4 testers, 2 usuarios claves y más de 100 usuarios finales.
El proyecto es de largo alcance (10 años) en donde multitud de desarrollos
serán implementados sobre el ERP.

Número de entornos que se utilizarán durante el proyecto: Son necesarios todos los
entornos dado el tamaño y complejidad del proyecto.

 Entorno de desarrollo.
 Entorno de integración continúa.
 Entorno de pruebas.
 Entorno de preproducción.
 Entorno de producción.
 Metodología de desarrollo elegida

La metodología de desarrollo en este caso se recomienda que sea una metodología en


cascada. La existencia de 2 key users, permitirá definir junto con los consultores, un
listado de requerimientos completo, así como preparar un amplio diseño técnico y
funcional del proyecto, que deberá ser aprobado por el cliente para cada una de sus fases
(se entiende que aplicará una implantación step-by-step dado el volumen del proyecto).

Plan concreto (fases) para la promoción de desarrollos:

 Promoción al entorno de integración continua: El código se encuentra bajo un


sistema de control de versiones distribuido, así que los desarrolladores podrán
realizar branches y forks si fuera necesario, con la finalidad de consolidar y subir al
entorno de integración cuando el código sea estable y coherente, aunque no
disponga todavía de funcionalidad.
 Promoción al entorno de pruebas: Los desarrolladores, y aunque no suele ser
necesario, en este caso debería ser con la aprobación del jefe del proyecto,
promocionarían el código al entorno de pruebas cuando entiendan que el código
se encuentra en condiciones de sufrir ciclos completos con resultados coherentes
y reproducibles. Aunque el jefe del proyecto no es una figura que debiera aparecer
aquí, por el volumen del proyecto y para evitar que los testers sufran código en
malas condiciones, entiendo que debería ser aprobado por éste.
 Promoción al entorno de preproducción: El jefe del proyecto, tras el feedback con
los testers y una vez garantizada la calidad de los desarrollos por éstos, aprobará
la entrada en preproducción.
 Promoción al entorno de producción: Tanto los consultores como el cliente
procederán a realizar las pruebas de funcionalidad solicitadas, así como el
cumplimiento del estándar de calidad, en cuyo caso, promocionará a producción
con el consentimiento del cliente.

Herramienta utilizada para promocionar los desarrollos: En este caso, la promoción


del código se haría a través de una herramienta de control de versiones distribuida, por
ejemplo Mercurial. Mercurial es una herramienta con gran rendimiento y escalabilidad,
permite la gestión de archivos tanto de texto como binario y una completa capacidad para
las ramificaciones y las integraciones. [ CITATION Mar15 \l 9226 ].

Bibliografía
ARIMETICS. (s.f.). Recuperado el 06 de 08 de 2020, de https://www.arimetrics.com/glosario-
digital/entorno-de-desarrollo

Canelo, M. M. (09 de junio de 2020). Profile. Recuperado el 06 de 08 de 2020, de


https://profile.es/blog/que-son-los-paradigmas-de-programacion/

DMARTIN. (01 de julio de 2020). Velneo. Recuperado el 06 de 08 de 2020, de


https://velneo.es/software-de-programacion/

Martínez, S. (2015). Entornos y metodologías en la implementación de un sistema de gestión. ERP.

mediawiki. (19 de julio de 2019). Recuperado el 06 de 08 de 2020, de


https://es.wikipedia.org/wiki/Lenguaje_de_descripci%C3%B3n_de_hardware#:~:text=Un
%20lenguaje%20de%20descripci%C3%B3n%20de,convertidor%20anal%C3%B3gico
%2Ddigital%20o%20cualquier

NeoAttack. (s.f.). NeoAttack. Recuperado el 06 de 08 de 2020, de


https://neoattack.com/neowiki/entorno-de-desarrollo/

(s.f.). Programación estructurada 05.

También podría gustarte