Está en la página 1de 14

B

BIENVENIDO AL CURSO DE
DISEÑO Y PROGRAMACION
DE PLATAFORMAS
TECNOLÓGICAS
Análisis y Desarrollo
Kevin Alvarez Alvarez
• Especialista en arquitectura y desarrollo
• Máster en seguridad de la información.
• Mas de 5 años de experiencia en la dirección de proyectos de software.

Objetivo bantrab: Análisis y desarrollo de aplicaciones en lenguajes de programación, no


necesariamente Oracle.

Contenidos:

 Diseño/XML,
 Programación en Java,
 Funcionalidades del plataformas
 Teoria de programación
 Análisis de mercados para apps.

Competencia: Al finalizar este curso seras capaz de conocer aplicaciones que permitan al
usuario el ingreso de informacion, necesaria para la toma de decisiones y brindar servicio al
cliente externo sobre los productos contratados con la aseguradora.
Tabla de contenido
1. Contexto..........................................................................................................................................2
2. Programación de plataformas con Java.........................................................................................4
Como desarrollar en Java...................................................................................................................4
Que frameworks implementa Java.....................................................................................................5
3. Teoría de programación..................................................................................................................7
Modelos de desarrollo.........................................................................................................................7
Tipos de Software...............................................................................................................................8
4. Análisis de mercados para Apps.....................................................................................................9
5. Material de Apoyo.........................................................................................................................10
6. Ejercicios de Aplicación................................................................................................................10
Apropiación de conceptos.................................................................................................................10
1. Contexto

El diseño de plataformas ha ido cambiando durante los últimos años, ya que esta área de la
ingeniería no solamente se basa en cómo se debe ver o de qué manera se puede presentar más
cómodamente, hoy en día, el diseño tiene también como responsabilidad la velocidad, la fácil
adaptación del usuario (plataformas intuitivas), y la experiencia que tiene el usuario al navegar por
cada una de las secciones que se presenten.

Por otro lado, la programación es el campo de la ingeniería de software que más crece, no
solamente evoluciona en sus mismos pilares (lenguajes conocidos), sino que ha construido nuevos
(nuevos lenguajes de programación). Dia a día hay nuevas mejoras, nuevas funcionalidades, nuevos
marcos de trabajo, nuevos patrones de arquitectura, nuevos alcances e incluso nuevos lenguajes.

Desde que la programación fue abierta a la comunidad, el avance tecnológico no ha podido parar y
el trabajo que hacían unas pocas empresas (IBM, Oracle, Microsoft, Apple y algunas más) hoy en
día lo hacen miles de desarrolladores (se está alcanzando el millón de colaboradores oficiales en el
mundo), este mismo crecimiento y las nuevas tecnologías de despliegue permiten que día a día se
liberen nuevas versiones de proyectos que marcan una trascendencia en el mundo de la
programación.

Ilustración 1 Evolución a gran escala

Con toda la revolución tecnológica, el uso excesivo de los celulares y la industria 4.0 miles de
negocios se han modernizado y se han lanzado miles de aplicaciones que, no solo resuelven las
necesidades del negocio, sino que apoyan el ciclo de desarrollo para facilitar y amplificar las
capacidades de cada una de las fases que lo comprende:

 En la toma de requerimientos hay muchas aplicaciones e instrucciones que permiten ser


más asertivos en las preguntas que se realizan, entender mejor al usuario y su necesidad
para que, en las próximas etapas, no haya tantos fallos o reprocesos.

 En la etapa de diseño, hay una amplia gama de aplicaciones gratuitas y de pago que nos
permiten realizar modelamientos y bosquejos de nuestra plataforma en base a los
requerimientos del usuario, algunas incluso permiten interactuar con ella como si ya
estuviera desarrollada. La etapa de diseño también comprende el diseño de pruebas, diseño
de arquitectura, diseño de clases y diseño de datos, esto garantiza que en la siguiente etapa
el desarrollador cuente con toda la información necesaria para realizar el desarrollo de la
funcionalidad o mejora.

 Para la etapa de programación, los IDE (Interfaz de desarrollo) han evolucionado conforme
al crecimiento que ha tenido cada framework y cada lenguaje. Hoy la mayoría cuentan con
un método de depuración profesional, visores de recursos y datos, modelamiento de bases
de datos, modelamiento de arquitectura de software, desarrollo y ejecución de pruebas
unitarias, diseño de interfaces gráficas, integración con terminales, entre otros. También
esta etapa comprende todo el manejo de código y versionamiento para lo cual GIT es el
sistema preferido, pero muchas plataformas de gestión de código disponibles que pueden
ayudarnos.

 En la etapa de pruebas, hay herramientas que incluso nos permiten grabar la pantalla y
subirla como evidencia al caso de prueba en revisión, integrar la ejecución y capturar la
respuesta de las pruebas unitarias y generar reportes específicos de las tareas realizadas
automáticas y manuales. Esta etapa comprende también un modelo de integración continua
que en prácticas de ingeniería como DevOps son un requerimiento obligatorio.

 En la etapa de despliegue, todo un modelo de automatización y gobierno centralizado


permite, a través de una plataforma, poner en producción nuevas versiones de una
aplicación sin cortes de servicio, a cualquier hora, pero con todas las reglas de seguridad
necesarias.
2. Programación de plataformas con Java

Java es uno de los lenguajes de programación clásicos que han evolucionado a medida que el
mercado crece, sigue siendo actualizado y es considerado un lenguaje base, ya que el sistema
operativo Android, sistema operativo de smartphone y otros dispositivos, implementa este lenguaje
como motor de interpretación principal o nativo.
Java basa su sintaxis en C y C++, tiene un alto rendimiento y es pionero en la programación
orientada a objetos, es multiplataforma y ha influido muchos otros lenguajes de programación.

Como desarrollar en Java

Java es uno de los lenguajes de programación con más baja curva de aprendizaje, tiene una sintaxis
simple y, al ser orientada a objetos, cuenta con una versatilidad amplia que permite la creación de
aplicaciones complejas en el menor tiempo posible.

Java cuenta con un kit de desarrollo (JDK), un intérprete (JRE), y el compilador. Con esto tendremos
nuestra computadora lista para compilar y probar.

Ilustración 2 Descarga JDK


Luego necesitaremos seleccionar un IDE que nos proporcione la mayor ayuda posible en las
actividades de depuración, inteligencia y diseño de interfaces graficas. Para esto hay diferentes
aplicaciones dependiendo de hacia donde queremos desarrollar, si es para el móvil utilizaremos
Android Studio, si es para la web o escritorio podremos utilizar Eclipse o NetBeans.

Que frameworks implementa Java

Java es un lenguaje de programación de código abierto que ha sido crecido por la comunidad
agregando nuevos framework que permiten establecer patrones de diseño e implementación
dependiendo de las necesidades del desarrollador, hay frameworks para aplicaciones web, escritorio
y móviles. Los principales para cada una de las plataformas son los siguientes:

SPRING (Web)
el framework más popular para Java empresarial, para crear código de alto rendimiento, liviano y
reutilizable. Ya que su finalidad es estandarizar, agilizar, manejar y resolver los problemas que
puedan ir surgiendo en el trayecto de la programación

Ilustración 3, framework spring para desarrollo web

NATIVE ANDROID FRAMEWORK (Movil)


El framework nativo de Android permite, usando Java, realizar aplicaciones nativas, con todas las
librerías API necesarias para crear, probar y depurar aplicaciones de alta calidad en este sistema
operativo. Desarrolladores que tienen que implementar código nativo en C o C++ prefieren este
framework ya que permite una flexibilidad entre lenguajes. Las aplicaciones y juegos mas complejos
para este sistema operativo han sido desarrolladas utilizando este framework.
Ilustración 4, Framework nativo de android

Java Framework + Swing (Desktop)


Utilizando el framework nativo de Java y swing como herramienta de desarrollo de interfaz gráfica,
podemos realizar aplicaciones completas que se puedan ejecutar en un ambiente de escritorio.

Ilustración 5, java y swing para aplicaciones de escritorio


3. Teoría de programación

Para entender la programación debemos ver el procedimiento del desarrollo de software desde una
perspectiva tecnológica, organizacional y experimental. Desde cada una de estas aristas se detallará
una forma correcta de planificarlo, hacerlo y entregarlo.
Modelos de desarrollo

Los modelos de desarrollo permiten gestionar todo un proyecto de software con beneficios en las
aristas anteriormente mencionadas:

- Modelo de cascada:
Este modelo fue muy famoso y utilizado antes de la inclusión de las metodologías agiles. Consiste
en ejecutar las 5 etapas del desarrollo de manera sucesiva.
- Primero se debe capturar el requerimiento de software completo, definiendo el alcance
completamente.
- Luego se realiza un diseño completo de todas las vistas, el modelo de datos, la arquitectura
a implementar, y los casos de prueba para cada una de las funcionalidades definidas
- Posterior a esto se realiza el desarrollo de la aplicación.
- Una vez esté terminada, se procede a realizar todas las pruebas.
- Luego se despliega y es donde finalmente el usuario puede ver el resultado
Este modelo presenta serias fallas ya que el usuario no puede ver el progreso de su desarrollo, solo
hasta que se termina, aunque se implementen fases, el modelo de desarrollo tiene muchos vacíos
en la entrega de valor al usuario.

Ilustración 6, Modelo desarrollo en cascada


- Modelo Ágil:
Este modelo es el más utilizado actualmente y en el que se basan la mayoría de los marcos de
trabajo (Scrum, DevOps, etc), se basa en realizar pequeñas iteraciones de las etapas de desarrollo
que garantice un moldeamiento en el camino y una aceptación de cambios incluso cuando el
proyecto ya se encuentra en desarrollo. La tendencia al retraso es muy poca y permite que los
usuarios vayan interactuando con las nuevas funcionalidades incluso cuando el desarrollo no está
terminado. El agilismo constituye la ganancia más alta entre los modelos de desarrollo y gestión ya
que tiene integrado muchas políticas y sugerencias ajustables a los proyectos.

Ilustración 7, Iteraciones del agilismo

DevOps
Esta es la práctica de ingeniería basada en el agilismo más exitosa de los últimos años, basa todo
su marco de trabajo y filosofía a integrar de la manera más automatizada y segura del desarrollo de
software y las operaciones de TI en función del ciclo de desarrollo.
DevOps es una modificación de los marcos de trabajo agiles como SCRUM en función exclusiva del
aprovechamiento del tiempo en la programación.
Los pilares principales que definen a DevOps son los conceptos “integración continua” y “despliegue
continuo” que se encargan de dictar las políticas y sugerencias que debe tener un equipo de trabajo
para el crecimiento y desarrollo de una aplicación. Toma las prácticas de iteraciones, actividades,
objetos y gestión del conocimiento del agilismo y a su vez implementa suite de pruebas, artefactos,
gestión de código y despliegue de la automatización de proyectos de software.
Ilustración 8, Iteraciones en DevOps

DevOps pretende dentro de su filosofia y marco de trabajo el crecimiento continuo de una aplicación,
basando en despliegues cortos pero frecuentes de funcionalidades a producción.
Hoy en día las plataformas de gestion de Código mas importantes implementan DevOps y sus
capacidades, Azure, Gitlab, Github y Bitbucket son ejemplo de ello.

Tipos de Software

Luego de identificar la metodología deberemos identificar que tipo de software será desarrollado,
para esto contamos con 3 tipos de software:
- Software de sistema: se refiere a las bases del sistema y sus operaciones, como sistemas
operativos, controladores, herramientas de diagnóstico de sistema.

- Software de programación: Se refiere a los componentes que permiten desarrollar, integrar o


ayudar a realizar otro software. En este tipo se comprenden los IDE, los depuradores,
compiladores, intérpretes y editores.

- Software de aplicación: Se refiere a todos los softwares destinados a asistir al usuario en


una tarea específica. Acá se comprenden todas las aplicaciones con las que interactuamos
a diario, las aplicaciones de los celulares y de sistema operativo que nos facilitan alguna
actividad.
4. Análisis de mercados para Apps

Una vez tengamos una idea clara sobre el desarrollo de una aplicación es importante conocer de
que manera puede ser recibida, con nuestra expectativa de usuarios y la categorización que
queremos darle a partir de la necesidad que queremos subsanar.
Hacer un estudio de mercado en internet es relativamente fácil, hay bastante productos y
herramientas que te permiten realizar un estudio de mercado tanto web como móvil. Hoy en día
internet se encuentra lleno de información que nos puede ayudar a ser asertivos a la hora de sacar
una nueva app, proveedores como Google tienen herramientas para hacer consultas masivas:

- Google keyword Tool:


Esta herramienta nos permite identificar cuáles son las palabras claves que podemos utilizar para
que nuestra aplicación, como nosotros la definimos, sea encontrada con mucha facilidad. Lo
importante es conocer específicamente que palabras podrían definir nuestra aplicación, y este nos
dirá cuales son las palabras por las que será encontrada con mayor facilidad.

- Google Trends
Esta herramienta nos puede ayudar a saber si la temática de la que nuestra aplicación se define
estará en tendencia o en qué momento es bueno liberarla, ya que, necesitamos que una vez salga
sea descargada y utilizada con la mayor frecuencia posible.

- Redes Sociales
Hoy en día las redes sociales tienen mucha información acerca del mercado y lo que se esta
usando. Realizando una búsqueda inteligente del mercado especifico al que queremos impactar
podremos obtener una respuesta lo suficientemente confiable como para establecer un plan de
publicidad o de enfoque en el usuario.

- AppStore
Si queremos publicar nuestra app en el sitio de aplicaciones, también es bueno indagar en este
mismo sitio que aplicaciones son competencia, que tanta presencia tiene y como puede ayudarnos a
posicionarnos en este mercado. Podemos buscar con el nombre de nuestra aplicación que otras se
encuentran y que tanta priorización vamos a tener cuando nuestra app este publicada.
Para aplicaciones de público cerrado, y/o de carácter empresarial, estas actividades no pierden
importancia, ya que debemos garantizar que nuestra aplicación tenga el uso esperado.
5. Material de Apoyo

Que es y para que la programación:


https://www.youtube.com/watch?v=6svvtOjLA-A&ab_channel=ADELSSCHOOLOFEDUCATION

Introducción al diseño de software:


https://www.youtube.com/watch?v=tKJeEXwZ1QA&ab_channel=CatchExceptionCanal

Etapas del desarrollo de software:


https://www.youtube.com/watch?v=hIhtMs9P82g&ab_channel=CatchExceptionCanal

Curso de programacion de Java:


https://www.youtube.com/playlist?list=PLyvsggKtwbLX9LrDnl1-K6QtYo7m0yXWB

Metodologías de desarrollo de software:


https://www.youtube.com/watch?v=dS8eqR9qg-o&ab_channel=OscarMenj%C3%ADvar

Estudio de mercado con herramientas digitales:


https://www.youtube.com/watch?v=WFFwDjromTA&ab_channel=Smartketin

6. Ejercicios de Aplicación

Apropiación de conceptos

Preguntas:
Se sugiere volver a ver las láminas del curso:
1. Realizar un análisis de mercado para una idea de aplicación que tengas o tenga la
organización usando Google.
2. ¿Genere una idea de proyecto corta, identifica que metodología deberías utilizar y por qué?

3. ¿De que manera puedo identificar que lenguaje de programación utilizar al implementar un
proyecto de software?

4. ¿Qué herramientas puedo utilizar para desarrollar un proyecto de software con metodología
agil?

Recuerda que al finalizar este curso Panamerican business School te entregará un diploma de
participación y harás una evaluación de retrospectiva donde podrás calificar el contenido de este
curso

Ha sido para mi un placer acompañarte en este curso y espero que nos veamos en uno próximo con
mucho más contenido de aprendizaje.

También podría gustarte