Está en la página 1de 57

Conceptos de Software de

Aplicación

Eduardo Delgado
Sales Consultant
Oracle Perú
Que es software?
 Se le denomina software a secuencias de instrucciones
que indican al hardware que debe realizar.
 Ningun hardware puede funcionar si este no tiene un
software.
 El software se divide en categorias
– Software de Sistema
– Software de Aplicación
– Software de Desarrollo de software
Que es un software de aplicación?
 En esta categoria se engloba todo el software que
permite al usuario realizar una tarea.
 Se puede considerar como un tipo de software que
extendiende las capacidades humanas, permitiendo
realizar tareas que de otra forma seria dificil o
imposible de realizarlas.
 La gran mayoria de software se encuentra en esta
categoria.
Como se realiza el desarrollo de
Software?
 El ciclo de vida de desarrollo de software consta de los
siguientes pasos
– Definición de requerimientos
– Analisis: Modelamiento de la solucion de forma funcional.
Definicion del alcance.
– Diseño: Modelamiento de la aplicación con los elementos
técnicos.
– Implementación: Desarrollo del software.
– Implantación: Despliegue del software construido hacia los
clientes y/o servidores.
– Pruebas y Mantenimiento
Tecnicamente que se requiere para la
construcción de software?
 Definir la arquitectura de la aplicación.
– Si va a trabajar en cliente servidor
– Si va a trabajar en web
 Definir el modelo de desarrollo de la aplicación.
– Modelo de desarrollo en Cascada
– Modelo iterativo
 Definir el modelamiento de la aplicación.
– Modelamiento Estructural (DFD)
– Modelamiento Orientado a Objetos (UML)
 Definir el lenguaje de programación de la aplicación.
– Java, Microsoft .Net, Delphi, PowerBuider, PL/SQL
Arquitectura de Software
 A lo largo del tiempo se han creado diferentes tipos de
arquitectura de software, cada una de estas
correponde a diferentes tipos de configuraciónes de
software, hardware.
 Cada arquitectura de software tiene ventajas y
desventajas.
 Principalmente se trabajan 2 arquitectura de software
– Arquitectura Cliente Servidor (2 capas)
– Arquitectura Web (n capas)
Arquitectura Cliente-Servidor
 Se trabaja en 2 capas
– Capa Cliente
– Capa Servidor
 En la capa cliente se tiene los ejecutables de la
aplicación, es decir la logica de la aplicación se realiza
en el cliente.
 En la capa servidor se tiene por lo general los
servidores de base de datos, y en algunos casos cierta
logica de la aplicación se implenta por medio de
procedimientos almacenados.
Arquitectura Cliente-Servidor

Local
Area
Network

Capa Cliente Capa Servidor


Arquitectura Cliente-Servidor
 Ventajas
– Aprovecha la potencia de la maquina cliente para realizar sus
procesos.
– Interfaz grafica de usuario muy rica. Permite una mejor
interacción usuario-aplicación.
– Buen tiempo de respuesta cliente-servidor pues se basa en una
LAN.
 Desventajas
– Para ejecutar la aplicación se requiere que todo el software este
instalado en el cliente.
– Satura la red lan por la gran cantidad de informacion que se
requiere en el cliente para realizar sus procesos.
– Dificulta el acceso a la aplicación desde locales remotos.
Arquitectura Cliente-Servidor
 Esta arquitectura fue la mas usada durante la decada
de los 90.
 Actualmente, con la aparicion de internet, esta
arquitectura esta en tendencia a desaparecer.
Arquitectura Web
 Se trabaja en n-capas
 Una configuracion tipica de una arquitectura web se define
por 3 capas
– Capa Cliente
– Capa de Aplicacion (Midtier)
– Capa de Base de Datos
 La capa cliente solo se encarga de mostrar la interfaz de
usuario y no procesa de forma directa la logica de la
aplicación.
 La capa Aplicación se encarga de ejecutar la lógica del
negocio.
 En la capa Base de Datos se tiene los servidores de base
de datos
Arquitectura Web

LAN

LAN

Internet

Capa Cliente Capa Aplicación Capa Servidor


Arquitectura Web
Arquitectura Web
 Ventajas
– Permite el acceso remoto y local de los usuarios a las
aplicaciones.
– Solo se necesita tener un navegador de internet para
acceder a las aplicaciones.
– Se puede acceder a la aplicacion independientemente de la
plataforma.
– No utiliza los recursos de la maquina cliente para ejecutar la
logica del negocio.
 Desventajas
– El tiempo de respuesta es dependiente del hardware.
– En la mayoria de sus casos no provee una interfaz rica. El
nivel de inteaccion usuario-cliente es pobre.
Arquitectura Web
 Indudablemente al trabajar en un entorno web se logra
la portabilidad del sistema.
 Permite el acceso a dispositivos moviles tales como
celulares, palms, etc.
 Permite que varias aplicaciones se integren entre si,
como podria ser el caso de un portal.
 Actualmente es la arquitectura de desarrollo que mas se
usa en el mercado.
 Actualmente se han desarrollado tenologias (tal como
los applets, flash) que brindan una interfaz mas rica.
 El tiempo de respuesta es una dificultad que con el
tiempo desaparecera.
Modelo de Desarrollo de una
Aplicación
 En toda labor de construcción software se realizan una
serie de pasos o tareas. Estas son:
– Definición de requierimientos
– Analisis
– Diseño
– Implementación
– Implantación
– Pruebas y Mantenimiento
 Cada tarea tiene un fin especifico dentro de todo el
desarrollo de la aplicación.
Modelo de Desarrollo de una
Aplicación
 Podemos asemejar las tareas de construcción de
software con la construcción de una casa:

- Definición de Requerimientos - Definición de Requerimientos


- Analisis - Boceto de la casa
- Diseño - Planos de la casa
- Implementación - Construcción de la casa
- Implantación - Acabados finales
- Pruebas y Mantenimiento - Prueba de la casa por el
usuario y arreglos finales.

Construcción de Software Construcción de una Casa


Modelo de Desarrollo de una
Aplicación
 Existen diferentes modelos de desarrollo de una
aplicacion. Entre los principales podemos mencionar
– Modelo de desarrollo en Cascada
Modelo de Desarrollo de una
Aplicación
 Existen diferentes modelos de desarrollo de una
aplicacion. Entre los principales podemos mencionar
– Modelo de desarrollo Iterativo
Modelo de Desarrollo de una
Aplicación
Cual es el mejor modelo?
– Depende del proyecto en el cual se aplique.
– El modelo de desarrollo en cascada es mas rigido
que el iterativo pues requiere que cada fase se
culmine completa y perfectamente antes de
continuar con la siguiente.
– Dado que los requerimientos cambian
constantemente es mejor usar un modelo en
cascada.
Modelo de Desarrollo de una
Aplicación
Se puede desarrollar sin seguir algun modelo de
desarrollo?
– Si se puede hacer desarrollos sin seguir algun modelo
de desarrollo
– Desgraciadamente por falta de tiempo algunas
empresas crean software sin seguir algun modelo de
desarrollo.
– Lo unico que se logra al desarrollar software sin seguin
un modelo de desarrollo es un caos total. Quiza al
momento del desarrollo no se den cuenta del
problema, pero en la fase del mantenimiento del
software se incurre en gastos elevados.
Modelamiento de una aplicación
 Se modela una aplicación para plasmar el resultado de
tareas de analisis y diseño de una aplicación en
documentos, tal como los planos de una casa.
 Antes de definir el modelamiento de una aplicación se
debe definir el paradigma de desarrollo de la
aplicación.
 Existen 2 paradigmas de desarrollo actualmente
– Paradigma Estructurado
– Paradigma orientado a Objetos
 Para cada paradigma existen diferentes técnicas de
modelamiento de la aplicación.
Modelamiento de una aplicación
Para el paradigma estructurado se usa
principalmente los Diagrama de Flujos de
Datos o DFD.
Para el paradigma orientado a objetos se usa
principalmente el Lenguaje de Modelamiento
Unificado o UML.
Actualmente UML se ha posicionado en el
mercado como el estandar de modelamiento de
desarrollo orientado a objetos.
Modelamiento de una aplicación
usando DFD
Modelamiento de una aplicación
usando UML
 UML brinda documentos llamados artefactos de
software para soportar el modelamiento de los
diferentes tareas del desarrollo de una aplicación.
 Los diagramas que brinda UML son
– Diagrama de Use Cases
– Diagrama de Clases
– Diagrama de Actividades
– Diagrama de Secuencias
– Diagrama de Colaboración
– Diagrama de Despliegue
– Diagrama de Paquetes
Modelamiento de una aplicación
usando UML
 Diagrama de Casos de Uso (Use Case Diagram)
Modelamiento de una aplicación
usando UML
 Diagrama de Clases (Use Class Diagram)
Lenguajes de Programación
 Existen una gran cantidad de lenguajes de
programación en el mercado.
 Para cada paradigma de desarrollo (Estructurado,
Orientado a Objetos) existen diferentes lenguajes de
programación.
 Asi mismo existen software de desarrollo (llamados
IDE, Integrated Development Enviroment) los cuales
permiten la codificacion, compilacion, ejecucion y
pruebas de un programa, escrito en un determinado
lenguaje.
Lenguajes de Programación
 Entre los principales lenguajes de programacion se
encuentran:
– Java
– Microsoft .NET
– Delphi
– Visual Basic
– Power Builder
– PHP
– Perl
– PL/SQL
– Pascal
– C++, Fortran, etc, etc…
Que es Java?
 Lenguaje de programación
creado por Sun en 1995
 Diseñado para ser utilizado en el
mundo distribuido de Internet
 Es orientado a objetos
 Permite crear aplicaciones que se
ejecuten en un solo computador,
o en toda una red distribuida
 Se parece al C++ pero es más
simple
Caracteristicas de Java?
 Es Portable. Desarrolla una sola
vez y corre en cualquier plataforma
que tenga una JVM instalado
(linux, unix, solaris, windows)
 Es muy rico en componentes. Su
propio framework de trabajo es rico
en componentes y este se agranda
con una gran cantidad de APIs que
existe en el mercado.
 Es robusto, estable y seguro (no es
de microsoft)
Java es sencillo de aprender?
 La verdad, NO es sencillo de
aprender.
 Sin embargo es un precio a
cambio de todos los beneficios
que ofrece.
 Para una persona que sabe C++
puede ser sencillo.
 Debe acostumbrarse a
programar en el paradigma de la
programacion orientado a
objetos.
Y porque escogen Java los
desarrolladores?
 Se ha convertido en un estándar
 Las empresas pagan bien a
quienes lo conocen
 Barato, solo se necesita un
editor de texto y el Java
Development Kit (JDK / J2SE)
de Sun (GRATIS!)
 Mucha información
 Mucho código disponible para
reutilizar
Java…umm… pero yo escuche algo
acerca de J2EE?
 No es lo mismo, pero estan
intimamente relacionados.
 Java es el lenguaje de programación
 J2EE es una serie de
recomendaciones para programar en
Java
 Un programa Java puede ser
= ?
ejecutado en cualquier computador
con JVM
 Las aplicaciones J2EE son ejecutadas
en servidores que tiene un contenedor
compatible con J2EE
¿Y para qué sirve J2EE?
 Para construir aplicaciones
eBusiness utilizando Java
 Si se sigue la norma J2EE la
aplicación es portable entre
contenedores J2EE.
 J2EE se ha convertido en un
estandar de la industria.
 Es definido por un comité llamado
“Java Community”, conformado por
más de 650 individuos y empresas
Que IDE existen para Java?
 Existen muchos IDEs para Java de
diferentes fabricantes.
 Entre los principales tenemos:
– JDeveloper
– Eclipse
– WebSphere
– JBuilder
– NetBeans
– Forte
– Etc, etc, etc…
 Algunos de estos IDE
proporcionan soporte para J2EE
¿Qué es Microsoft .Net?
 Es un framework de desarrollo en el cual se puede
desarrollar en diferentes lenguajes, sin embargo se
logra el mismo producto.
 Entre los principales lenguajes se tiene
– C# .NET
– Visual Basic .NET
– C++ .NET
– Java .NET
– (Cualquier cosa) .NET
¿Qué es Microsoft .Net?
 Proporciona una estensa librería de clases que
pueden ser utilizadas por sus diferentes lenguajes
 Proporciona desarrollo tanto para arquitecturas
Cliente-Servidor como para Web
 Proporcina un IDE entorno Visual de Desarrollo
llamado Microsoft Visual Studio .NET
 Este IDE brinda una edición visual, declarativa y
utilizando wizards.
¿Qué incluye .Net?
Componentes del lado del servidor Net Components
Generador de contenido dinámico ASP.NET
Integración con sistemas legacy Integration Server
Mensajes asíncronos MS MQ
Accesos a bases de datos ADO.NET
Transacciones .NET Server
Servicios de directorio y nombres Active Directory
Seguridad Kerberos con AD
Web Services Varios
Microsoft quizó reinventar Java
 En Java existe un Java Virtual Machine (JVM),
en .NET es llamado Common Language Runtime
(CLR)
 En Java se usa el Java Development Kit (JDK),
en .NET es llamado Common Language
Infrastructure (CLI)
 En Java se tiene el Garbage Collector, en .NET se
tiene igualmente un Garbage Collector.
VS

.NET vs Java
#1: Libertad de Escoger

Java Community
Microsoft
APIs Process
J2EE .NET
(ASP, COM+,
(EJB, Servlets, ADO, etc.)
JSP, etc.)

Servidor de Aplicaciones Libre de Escoger Microsoft

Herramientas de Desarrollo Libre de Escoger Microsoft

Sistema Operativo Libre de Escoger Microsoft


#2: Portabilidad
J2EE
– Actualmente, escribe una vez, depure y publique
en qualquier lugar
.NET
– Actualmente, funciona apenas en Windows
– Soporte a otras plataformas es una incógnita
#3: Estándar de Mercado
J2EE
– Estándar de la Industria
– (Java Comunity = 400 empresas)
.NET
– “Estándar Microsoft”? no, no!!
#4: Conocimiento
Las universidades enseñan Java
Un gran número de organizaciones utilizan
Java
.NET requiere nuevo entrenamiento
- Nuevo modelo de aplicaciones y nuevo
lenguaje
- Reescritura, recompilación y prueba de
aplicaciones existentes
#5: Madurez y Experiencia
J2EE .NET

1995 1999 No probado


Java J2EE
#6: Innovación
Java
– Combinación de innovaciones de varias
empresas
– Múltiples conocedores sugieren e implementan
Java Specification Request
.NET
– MS es la única empresa que adiciona
funcionalidades a .NET
– MS decide que incluir y que no incluir en .NET
#7: Competencia = Precio +
Calidad

Java
– Múltiples fabricantes para cada componente :
IDE, servidor de aplicaciones, componentes,
Sistema Operativo, JVM …
– Amplia oferta de código abierto
.NET
– Un único fabricante para el IDE, servidor de
aplicaciones, Sistema Operativo
Visual Basic
 Uno de los primeros lenguajes de programación
Visuales que permitia un RAD (Rapid Applications
Developer).
 Adoptado por muchos desarrolladores que no querian
complicarse la vida desarrollando con C++ y la API Win
32.
 Orientado a la arquitectura Cliente-Servidor
 Introdujo el concepto de objetos de una forma muy
primitiva.
 Orientado a eventos.
Visual Basic
 Permite la conexión directa a base de datos y
permite la programacion declarativa del acceso a
base de datos.
 Se realizaron muchos desarrollos en Visual Basic.
 Sin embargo la aparición de la arquitectura Web ha
hecho se deje de lado el Visual Basic script.
 Aparición del nuevo Visual Basic .NET
Visual Basic .NET

ATENCION
Visual Basic script no funciona con .NET, el
nuevo y totalmente diferente Visual Basic .NET es
utilizado en su lugar, NO hay migración
Power Builder script
 Permite programar dentro del IDE de programación
Power Builder.
 No es un lenguaje en si mismo. Es un script de
programación.
 Permite el desarrollo para arquitectura Cliente-
Servidor.
Power Builder script
 Introduce el objeto de conexión de base de datos
llamado DataWindows, que permite programar de
forma visual y declarativa el acceso a la base de
datos.
 Con la aparicion de Internet, Power Builder trato de
migrar la web sin embargo no fue muy bien recibido
por los programadores.
Delphi
 Creado por Borland.
 Basado en el lenguaje de programación Pascal.
 Completamente Orientado a Objetos.
 Su IDE permite la programacion visual y declarativa.
 Orientado a la arquitectura Cliente-Servidor.
PL/SQL
 Permite el desarrollo de Store Procedures, Triggers y
Functions en la Base de Datos.
 Utilizado por Forms Developer de Oracle para la
programación.
 Lenguaje simple, basado principalmente en
instrucciones SQL y instrucciones de Control.
 Lenguaje propietario de Oracle

También podría gustarte