Sie sind auf Seite 1von 36

Proceso Unificado UML (RUP)

Visin General del Proceso Unificado


Introduccin
El Proceso Unificado es un proceso de desarrollo de software: conjunto de
actividades necesarias para transformar los requisitos del usuario en un
sistema software.
RUP es un marco genrico que puede especializarse para una variedad de
tipos de sistemas, diferentes reas de aplicacin, tipos de organizaciones,
niveles de aptitud y diferentes tamaos de proyectos.
RUP est basado en componentes. El sw est formado por componentes
software interconectados a travs de interfaces.
RUP est dirigido por casos de uso, centrado en la arquitectura, y es
iterativo e incremental.

Dirigido por Casos de Uso


Un caso de uso es un fragmento de funcionalidad del sistema que proporciona
un resultado de valor a un usuario. Los casos de uso modelan los
requerimientos funcionales del sistema.
Todos los casos de uso juntos constituyen el modelo de casos de uso.
Los casos de uso tambin guan el proceso de desarrollo (diseo,
implementacin, y prueba). Basndose en los casos de uso los desarrolladores
crean una serie de modelos de diseo e implementacin que llevan a cabo los
casos de uso. De este modo los casos de uso no solo inician el proceso de
desarrollo sino que le proporcionan un hilo conductor, avanza a travs de una
serie de flujos de trabajo que parten de los casos de uso.
Centrado en la Arquitectura
La arquitectura de un sistema software se describe mediante diferentes vistas del
sistema en construccin.
El concepto de arquitectura software incluye los aspectos estticos y dinmicos ms
significativos del sistema.
La arquitectura es una vista del diseo completo con las caractersticas ms
importantes resaltadas, dejando los detalles de lado.
Arquitectura: Conjunto de decisiones significativas acerca de la organizacin de un
sistema software, la seleccin de los elementos estructurales a partir de los cuales se
compone el sistema, las interfaces entre ellos, su comportamiento, sus
colaboraciones, y su composicin.

Los casos de uso y la arquitectura estn profundamente relacionados. Los casos de


uso deben encajar en la arquitectura, y a su vez la arquitectura debe permitir el
desarrollo de todos los casos de uso requeridos, actualmente y a futuro.
El arquitecto desarrolla la forma o arquitectura a partir de la comprensin de un
conjunto reducido de casos de uso fundamentales o crticos (usualmente no mas del
10 % del total). En forma resumida, podemos decir que el arquitecto:
-

Crea un esquema en borrador de la arquitectura comenzando por la


parte no especfica de los casos de uso (por ejemplo la plataforma)
pero con una comprensin general de los casos de uso fundamentales.
A continuacin, trabaja con un conjunto de casos de usos claves o
fundamentales. Cada caso de uso es especificado en detalle y
realizado en trminos de subsistemas, clases, y componentes.
A medida que los casos de uso se especifican y maduran, se descubre
ms de la arquitectura, y esto a su vez lleva a la maduracin de ms
casos de uso.

Este proceso contina hasta que se considere que la arquitectura es estable.

Iterativo e Incremental
Es prctico dividir el esfuerzo de desarrollo de un proyecto de software en partes ms
pequeas o mini proyectos.
Cada mini proyecto es una iteracin que resulta en un incremento.
Las iteraciones hacen referencia a pasos en el flujo de trabajo, y los incrementos a
crecimientos en el producto.
Las iteraciones deben estar controladas. Esto significa que deben seleccionarse y
ejecutarse de una forma planificada.
Los desarrolladores basan la seleccin de lo que implementarn en cada iteracin en
dos cosas: el conjunto de casos de uso que amplan la funcionalidad, y en los riesgos
ms importantes que deben mitigarse.
En cada iteracin los desarrolladores identifican y especifican los casos de uso
relevantes, crean un diseo utilizando la arquitectura seleccionada como gua, para
implementar dichos casos de uso. Si la iteracin cumple sus objetivos, se contina
con la prxima. Sino deben revisarse las decisiones previas y probar un nuevo
enfoque.

Beneficios del enfoque iterativo


-La iteracin controlada reduce el riesgo a los costes de un solo incremento.
-Reduce el riesgo de retrasos en el calendario atacando los riesgos mas importantes
primero.
-Acelera el desarrollo. Los trabajadores trabajan de manera ms eficiente al obtener
resultados a corto plazo.
-Tiene un enfoque ms realista al reconocer que los requisitos no pueden definirse
completamente al principio.

El Ciclo de Vida del Proceso Unificado


El Proceso Unificado se repite a lo largo de una serie de ciclos que constituyen la vida
de un sistema. Cada ciclo constituye una versin del sistema.
Fases
Cada ciclo constas de cuatro fases: inicio, elaboracin, construccin, y transicin.

Cada fase se subdivide en iteraciones. En cada iteracin se desarrolla en secuencia


un conjunto de disciplinas o flujos de trabajos.

Disciplinas
Cada disciplina es un conjunto de actividades relacionadas (flujos de trabajo)
vinculadas a un rea especfica dentro del proyecto total. Las ms importantes son:
Requerimientos, Anlisis, Diseo, Codificacin, y Prueba.
El agrupamiento de actividades en disciplinas es principalmente una ayuda para
comprender el proyecto desde la visin tradicional en cascada.

Cada disciplina est asociada con un conjunto de modelos que se desarrollan. Estos
modelos estn compuestos por artefactos. Los artefactos ms importantes son los
modelos que cada disciplina realiza: modelo de casos de uso, modelo de diseo,
modelo de implementacin, y modelo de prueba.

El Proceso Unificado consiste en una serie de disciplinas o flujos de trabajo que van
desde los requisitos hasta las pruebas. Los flujos de trabajo desarrollan modelos
desde el modelo de casos de uso hasta el modelo de pruebas.
Disciplina
Requisitos
Anlisis
Diseo
Implementacin
Prueba

Modelos
Modelo de Casos de Uso
Modelo de Anlisis
Modelo de Diseo - Modelo de Despliegue
Modelo de Implementacin
Modelo de Prueba

Hitos
Cada fase finaliza con un hito. Cada hito se determina por la disponibilidad de un
conjunto de artefactos, es decir un conjunto de modelos o documentos que han sido
desarrollados hasta alcanzar un estado predefinido.
Los hitos tienen muchos objetivos. El ms crtico es que los directores deben tomar
ciertas decisiones antes de que el trabajo contine con la siguiente fase.
Los hitos tambin permiten controlar la direccin y progreso del trabajo.
Al final se obtiene un conjunto de datos a partir del seguimiento del tiempo y esfuerzo
consumidos en cada fase. Estos datos son tiles para las estimaciones en futuros
proyectos.

Fase de Inicio
Durante la fase de inicio se desarrolla una descripcin del producto final, y se
presenta el anlisis del negocio. Esta fase responde las siguientes preguntas:

Cules son las principales funciones del sistema para los usuarios ms
importantes?
Cmo podra ser la mejor arquitectura del sistema?
Cul es el plan del proyecto y cunto costar desarrollar el producto? En esta
fase se identifican y priorizan los riesgos ms importantes.

El objetivo de esta fase es ayudar al equipo de proyecto a decidir cules son los
verdaderos objetivos del proyecto. Las iteraciones exploran diferentes soluciones
posibles, y diferentes arquitecturas posibles.
Puede que todo el trabajo fsico realizado en esta fase sea descartado. Lo nico que
normalmente sobrevive a la fase de inicio es el incremento del conocimiento en el
equipo.
Los artefactos que tpicamente sobreviven a esta fase son:
-Un enunciado de los mayores requerimientos planteados generalmente como casos
de uso.
-Un boceto inicial de la arquitectura.
-Una descripcin de los objetivos del proyecto.
-Una versin muy preliminar del plan del proyecto.
-Un modelo del negocio.
La fase de inicio finaliza con el Hito de Objetivos del Ciclo de Vida.
Este hito es alcanzado cuando el equipo de proyectos y los stakeholders llegan a un
acuerdo sobre:
-Cul es el conjunto de necesidades del negocio, y que conjunto de funciones
satisfacen estas necesidades.
-Una planificacin preliminar de iteraciones.
-Una arquitectura preliminar.
Debe poder responderse las siguientes cuestiones:
-Se ha determinado con claridad el mbito del sistema? Se ha determinado lo que
va a estar dentro del sistema y fuera del sistema?
-Se ha llegado a un acuerdo con todas las personas involucradas (stakeholders)
sobre los requisitos funcionales del sistema?
-Se vislumbra una arquitectura que pueda soportar estas caractersticas?
-Se identifican los riesgos crticos? Se prev forma de mitigarlos?
-El uso del producto justifica la relacin costo-beneficio?
-Es factible para su organizacin llevar adelante el proyecto? - Estn los inversores
de acuerdo con los objetivos?

Fase de Elaboracin
Durante la fase de elaboracin se especifican en detalle la mayora de los casos de
uso del producto y se disea la arquitectura.
Las iteraciones en la fase de elaboracin:
-Establecen una firme comprensin del problema a solucionar.
-Establece la fundacin arquitectural para el software.
-Establece un plan detallado para las siguientes iteraciones.
-Elimina los mayores riesgos.
El resultado de esta fase es la lnea base de la arquitectura.
En esta fase se construyen tpicamente los siguientes artefactos:
-El cuerpo bsico del sw en la forma de un prototipo arquitectural.
-Casos de prueba
-La mayora de los casos de uso (80%) que describen la funcionalidad del sistema. Un plan detallado para las siguientes iteraciones.
La fase de elaboracin finaliza con el hito de la Arquitectura del Ciclo de Vida. Este
hito se alcanza cuando el equipo de desarrollo y los stakeholders llegan a un acuerdo
sobre:
-Los casos de uso que describen la funcionalidad del sistema.
-La lnea base de la arquitectura
-Los mayores riesgos han sido mitigados
-El plan del proyecto
Al alcanzar este hito debe poder responderse a preguntas como:
-Se ha creado una lnea base de la arquitectura? Es adaptable y robusta? Puede
evolucionar?
-Se han identificado y mitigado los riesgos ms graves?
-Se ha desarrollado un plan del proyecto hasta el nivel necesario para respaldar una
agenda, costes, y calidad realistas?
-Proporciona el proyecto, una adecuada recuperacin de la inversin? - Se ha
obtenido la aprobacin de los inversores?

Fase de Construccin
Durante la fase de construccin se crea el producto. La lnea base de la arquitectura
crece hasta convertirse en el sistema completo.
Al final de esta fase, el producto contiene todos los casos de uso implementados, sin
embargo puede que no este libre de defectos.

Los artefactos producidos durante esta fase son:


-El sistema software
-Los casos de prueba
-Los manuales de usuario
La fase de construccin finaliza con el hito de Capacidad Operativa Inicial. Este hito
se alcanza cuando el equipo de desarrollo y los stakeholders llegan a un acuerdo
sobre:
-El producto es estable para ser usado
-El producto provee alguna funcionalidad de valor
-Todas las partes estn listas para comenzar la transicin

Fase de Transicin
La fase de transicin cubre el perodo durante el cual el producto se convierte en la
versin beta.
Las iteraciones en esta fase continan agregando caractersticas al sw. Sin embargo
las caractersticas se agregan a un sistema que el usuario se encuentra utilizando
activamente.
Los artefactos construidos en esta fase son los mismos que en la fase de
construccin. El equipo se encuentra ocupado fundamentalmente en corregir y
extender la funcionalidad del sistema desarrollado en la fase anterior.
La fase de transicin finaliza con el hito de Lanzamiento del Producto,.
Este hito se alcanza cuando el equipo de desarrollo y los stakeholders llegan a un
acuerdo sobre:
- Se han alcanzado los objetivos fijados en la fase de Inicio. El usuario est satisfecho.

Visual Studio
Historia
Desde sus inicios, Windows expone funcionalidades a los desarrolladores a travs de
interfaces de programacin (en ingls API, de Application Programming Interface) que les
permiten crear aplicaciones. Con la complejidad que ha adquirido Windows a lo largo de
los aos, distintas API han ido apareciendo y evolucionando:

API Windows (Win16 & Win32): estas API forman el ncleo de Windows y las utiliza
directamente el sistema. Estn destinadas a utilizarse al ms bajo nivel, con el lenguaje
C. Win 16 apareci con Windows 3.1, mientras que Win32 se utiliza desde Windows 95.

MFC (Microsoft Foundation Classes) existe desde 1992 y encapsula las API
Win16 y Win32 en una estructura orientada a objetos en C+ +.

COM (Component Object Model) aparece poco despus de las MFC para responder a
una problemtica de comunicaciones entre procesos. A continuacin, la librera ATL
(Active Template Library) encapsul las API COM para simplificar su uso.

La plataforma .NET apareci a principios de los aos 2000 para dar respuesta al
problema de la complejidad de estas API. Las unifica y las moderniza, permitiendo su uso
con cualquier lenguaje que posea una implementacin compatible.

La unificacin de las API y de los modelos de desarrollo tambin ha tocado al mundo de


la Web. En efecto, desde mediados de los aos 90, Microsoft facilita del lado del servidor
el motor de script ASP (Active Server Page), que se dej de usar en beneficio de un
componente integrado en el framework .NET: ASP.NET. Este ha permitido mejorar el
rendimiento de las aplicaciones web introduciendo cdigo compilado y no interpretado.
Tambin ha mejorado su mantenibilidad remplazando la programacin procedural tpica
de los lengua- jes de script con un modelo de programacin de eventos y orientado a
objetos.

Desde su aparicin, la plataforma .NET ha conocido diez versiones diferentes, de las


cuales siete aportan modificaciones o funcionalidades mayores. A continuacin se resume
su evolucin (de manera no exhaustiva).

Versin 1.0
Fecha de aparicin: Febrero de 2002
IDE asociado: Visual Studio .NET 2002
Funcionalidades asociadas:
Desarrollo para Windows con los WinForms
Desarrollo web con ASP.NET

Versin 1.1
Fecha de aparicin: Abril de 2003
IDE asociado: Visual Studio .NET 2003
Funcionalidades asociadas:
Numerosos cambios en la API
Se incluyen proveedores de datos Oracle y ODBC en el componente ADO.NET (antes
disponible como un add-on)
Se incluyen controles visuales para el desarrollo en ASP. NET (antes disponible como
un add-on)
Soporte del protoclo IPv6
Primera Versin de .NET Compact Framework destinado a dispositivos mviles

Versin 2.0
Fecha de aparicin: Enero de 2006

IDE asociado: Visual Studio 2005


Funcionalidades asociadas:
Soporte de sistemas operativos de 64 bits
Soporte de clases parciales que permiten separar entre el cdigo generado y el cdigo
escrito por el desarrollador
Soporte de mtodos annimos
Introduccin de los tipos genricos que permiten escribir cdigo capaz de adaptarse a
distintos tipos de datos

Versin 3.0
Fecha de aparicin: Noviembre de 2006
IDE asociado: Visual Studio 2005
Se integran cuatro nuevos bloques principales al framework .NET:
WPF (Windows Presentation Foundation) para la definicin de interfaces grficas
WCF (Windows Communication Foundation) para la comunicacin e interoperabilidad
entre aplicaciones
WWF (Windows Workf70w Foundation), que permite definir flujos de trabajo
automatizados
Windows CardSpace, la gestin de la identidad por autenticacin nica (actualmente
obsoleto)

Versin 4.5.1
Fecha de aparicin: Octubre de 2013
IDE asociado: Visual Studio 2013
Funcionalidades asociadas:

Soporte de aplicaciones para Windows 8.1

Versin 4.5.2
Fecha de aparicin: Mayo de 2014
IDE asociado: Visual Studio 2013
Funcionalidades asociadas:
- Nuevas API para ASP.NET

Versin 4.6
Fecha de aparicin: verano de 2015
IDE asociado: Visual Studio 2015
Funcionalidades asociadas:
Unificacin de las API Web en el framework MVC 6
.NET Core
Compilacin de las aplicaciones Windows Store en cdigo nativo con .NET Native

Evolucin de la plataforma

A lo largo de las distintas versiones, el entorno .NET se ha enriquecido con numerosas


funcionalidades, entre ellas algunas eran/son realmente innovadoras. Las aplicaciones
basadas en la plataforma pueden ejecutarse en equipos de escritorio, tabletas,
navegadores web, smartphones o incluso en sistemas electrnicos embebidos. El nmero
de desarrolladores que utilizan los lenguajes basados en el CLR tambin ha aumentado
mucho hasta alcanzar varios millones.

En este punto de madurez se plantean nuevas problemticas, tanto en el seno de los


equipos de desarrollo de Microsoft como en la comunidad de desarrolladores que utilizan
esta tecnologa. Encontramos, en particular, entre estas preocupaciones la portabilidad
del cdigo o la necesidad de modernizar los compiladores VB.NET y C#.

Como respuesta a estos problemas, los equipos de desarrollo del framework .NET han
definido e implementado el bloque .NET Core. Tambin se han puesto manos a la obra y
han escrito un compilador completamente nuevo para VB.NET y Roslyn.

Compilacin

El Kit de desarrollo de software para el framework . NET (o SDK . NET) incluye una serie
de herramientas que permiten, entre otras tareas, compilar las aplicaciones escritas con
VB.NET. El compilador correspondiente al framework .NET 4.6 es un ejecutable llamado
vbc.exe
que
se
encuentra
en
la
carpeta
C:
\Windows\Microsoft.Net\Framework\v4.0.30319. La ejecucin directa de esteprograma por
lnea de comandos de Windows no se recomienda, pues es necesario tener precargadas
ciertas variables de entorno que pueden no estar definidas, IO cual producir un
comportamiento no deseado, 0 incluso errores.

La instalacin de Visual Studio crea con xito un acceso directo muy til en el men de
Inicio de Windows (o en la pantalla de inicio si utiliza Windows 8.1), llamado Smbolo del
sistema para desarrolladores de VS2015 X86.
Apunta a un archivo .bat que ejecuta las instrucciones necesarias para configurar las
variables de entorno indispensables para el correcto funcionamiento el compilador y, a
continuacin, abre una ventana de lnea de comandos.

DevExpress
DevExpress es una de las ms completas suites de componentes de UI para el desarrollo
en todas las plataformas de .NET como Windows Forms, ASP.NET, MVC, Silverlight y
Windows 8 XAML.

Ventajas del uso de DevExpress

Si bien en la actualidad existe un sin nmero de suites de componentes muy buenas,


DevExpress se encuentra sobre ellas por varias razones, como son:

Cuenta con controles para todas las plataformas de Microsoft Windows.


Posee ms de 70 controles mediante los cuales se pueden disear aplicaciones
de alta complejidad.
La creacin de los componentes es semi automtica, DevExpress se encarga de
realizar todo el cdigo necesario para la visualizacin y llenado de los
componentes segn la plataforma utilizada.
Permite llenar de manera sencilla cada uno de los componentes con informacin
trada de una conexin de base de datos.
Mejora el rendimiento de las aplicaciones al optimizar el cdigo de llenado de las
vistas.
Funciona en cualquier explorador. (Aplicaciones Web)
El tiempo de desarrollo se reduce considerablemente al no tener que teclear todo
el cdigo.
Incluye plantillas predefinidas para varios tipos de aplicaciones.
Incluye la herramienta Theme Builder, la cual permite editar el estilo de los
controles y genera automticamente la hoja de estilos de la aplicacin siguiendo el
patrn elegido.
La documentacin que incluye tanto en Visual Studio (descripciones de mtodos y
parmetros) como externa (documentacin de clases y ejemplos) es realmente
extensa y til.
Incluye video tutoriales y demostraciones sencillas de comprender.
Es altamente personalizable.
Cuenta con soporte rpido y eficaz para los problemas que se puedan presentar.

Desventajas de DevExpress
Las principales desventajas son:

Solo funciona para plataformas de Microsoft.

Existen algunas limitantes al incluir los componentes, ya que estos ya tienen


caractersticas y comportamientos definidos.
Requiere licencia.

WPF
Windows Presentation Foundation (WPF) es una tecnologa de Microsoft, presentada
como parte de Windows Vista. Permite el desarrollo de interfaces de interaccin en
Windows tomando caractersticas de aplicaciones Windows y de aplicaciones web.
WPF ofrece una amplia infraestructura y potencia grfica con la que es posible desarrollar
aplicaciones visualmente atractivas, con facilidades de interaccin que
incluyen animacin, vdeo, audio, documentos, navegacin o grficos 3D. Separa, con el
lenguaje declarativo XAML y los lenguajes de programacin de .NET, la interfaz de
interaccin de la lgica del negocio, propiciando una arquitectura Modelo Vista
Controlador para el desarrollo de las aplicaciones.
Microsoft Silverlight es un subconjunto de WPF que permite crear aplicaciones similares
a Flash para web y mviles, con el mismo modelo de programacin que las
aplicaciones .NET. No admite funciones 3D, pero soporta XPS y planos basados en
vectores.

Caractersticas principales de WPF


Interfaz grfica declarativa
WPF permite crear interfaces de usuario utilizando un lenguaje de marcado llamado
XAML. Si has trabajado alguna vez con HTML, te resultar muy familiar los conceptos de
este lenguaje. XAML es un lenguaje ms potente que el propio HTML.
Visual Studio, as como los miembros de la familia de entornos de desarrollo de Microsoft
como Blend, estn preparados para generar cdigo XAML de forma nativa.
En Visual Studio tenemos la vista diseo al estilo de las aplicaciones Windows Forms. La
diferencia es que hay un editor donde puedes escribir el cdigo XAML directamente.
Una de las caractersticas ms importantes que aporta este lenguaje de programacin es
que, XAML proporciona un medio para que los diseadores puedan colaborar
estrechamente en la creacin de aplicaciones de este tipo.

Diseo dinmico
La organizacin de los diferentes componentes de una aplicacin, puede ser muy
complicado. Si ha esto le aadimos las diferentes resoluciones y caractersticas de una
pantalla de un usuario, la cosa se complica ms.
WPF aporta inteligencia cuando se producen cambios de tamao de pantalla y ajustes
de los componentes. Todo depender de cmo se haya definido el diseo.
Grficos basados en vectores
Los grficos en WPF estn basados en vectores. Al contrario que los grficos basados en
imgenes rasterizadas, los grficos basados en vectores pueden ser escalados sin
deformaciones.
Otra ventaja es que este tipo de grficos ocupan menos espacio al ser almacenados,
optimizando as el espacio. Esto no quiere decir que WPF no utilice imgenes
rasterizadas, tienes la posibilidad de trabajar de las dos formas.
Para la interfaz grfica, utilizar imgenes vectoriales te dar ciertas ventajas. Las
aplicaciones creadas con WPF que utilicen grficos vectoriales podrn ser escaladas sin
perder calidad.
Plantillas
En WPF podemos crear elementos reutilizables para la interfaz grfica. Existen dos tipos
de plantillas en WPF: plantillas de control y plantillas de datos.
Las plantillas de control (control templates en ingls) permiten redefinir el aspecto visual
de un control. Un ejemplo sera poder cambiar desde un nico sitio, la apariencia de todos
los botones de la aplicacin. Esto da tambin mucha ventaja a los diseadores ya que se
separa en todo momento la parte grfica de la parte de programacin.
Las plantillas de datos (data templates en ingls) son similares. Estas plantillas definen la
manera en que los datos son mostrados. Podemos asociar una plantilla a una entidad o
clase de nuestra aplicacin. Siempre que se muestre ese tipo de dato en la aplicacin,
utilizar la misma plantilla.
Binding
Quizs una de las facetas o funcionalidades ms interesantes que nos aporta WPF sea el
binding. No es una novedad que incorpore WPF, con Windows Forms ya podamos utilizar
el databinding, pero s que es una tecnologa que lo engloba todo en la misma API. No
depende de terceros para su implementacin.

Gracias a la integracin que nos ofrece WPF con el binding, es muy sencillo utilizar el
patrn de diseo MVC (Modelo Vista Controlador). Ms concreto se utiliza una variante
que se llama MVVM (ModelView-ViewModel) tambin utilizado por el ms que conocido
framework de JavaScriptAngularJS.
Estilos
Donde realmente vemos grandes diferencias es cuando intentamos hacer una aplicacin
enfocada en el diseo. Los estilos en WPF son muy parecidos a las hojas de estilos en
cascada, CSS, para HTML.
En este caso los estilos son ms potentes que el CSS. Podemos manejar cualquier
caracterstica grfica que te imagines, mrgenes, espacios, colores, dimensiones y
muchos ms.
Esto nos permitir reutilizar los estilos en los diferentes controles y plantillas de la
aplicacin. La mayor ventaja ser el tiempo que nos ahorramos a la hora de cambiar el
aspecto visual.

Lenguaje C#
C# (ledo en ingls C Sharp y en espaol C Almohadilla) es el nuevo lenguaje de
propsito general diseado por Microsoft para su plataforma .NET. Sus principales
creadores son Scott Wiltamuth y Anders Hejlsberg, ste ltimo tambin conocido por
haber sido el diseador del lenguaje Turbo Pascal y la herramienta RAD Delphi.
Aunque es posible escribir cdigo para la plataforma .NET en muchos otros lenguajes, C#
es el nico que ha sido diseado especficamente para ser utilizado en ella, por lo que
programarla usando C# es mucho ms sencillo e intuitivo que hacerlo con cualquiera de
los otros lenguajes ya que C# carece de elementos heredados innecesarios en .NET. Por
esta razn, se suele decir que C# es el lenguaje nativo de .NET
La sintaxis y estructuracin de C# es muy similar a la C++, ya que la intencin de
Microsoft con C# es facilitar la migracin de cdigos escritos en estos lenguajes a C# y
facilitar su aprendizaje a los desarrolladores habituados a ellos. Sin embargo, su sencillez
y el alto nivel de productividad son equiparables a los de Visual Basic.

Un lenguaje que hubiese sido ideal utilizar para estos menesteres es Java, pero debido a
problemas con la empresa creadora del mismo -Sun-, Microsoft ha tenido que desarrollar
un nuevo lenguaje que aadiese a las ya probadas virtudes de Java las modificaciones
que Microsoft tena pensado aadirle para mejorarlo an ms y hacerlo un lenguaje
orientado al desarrollo de componentes.
En resumen, C# es un lenguaje de programacin que toma las mejores caractersticas de
lenguajes preexistentes como Visual Basic, Java o C++ y las combina en uno solo. El
hecho de ser relativamente reciente no implica que sea inmaduro, pues Microsoft ha
escrito la mayor parte de la BCL usndolo, por lo que su compilador es el ms depurado y
optimizado de los incluidos en el .NET Framework SDK.
Caractersticas de C#
Con la idea de que los programadores ms experimentados puedan obtener una visin
general del lenguaje, a continuacin se recoge de manera resumida las principales
caractersticas de C# Alguna de las caractersticas aqu sealadas no son exactamente
propias del lenguaje sino de la plataforma .NET en general. Sin embargo, tambin se
comentan aqu tambin en tanto que tienen repercusin directa en el lenguaje, aunque se
indicar explcitamente cules son este tipo de caractersticas cada vez que se toquen:

Sencillez: C# elimina muchos elementos que otros lenguajes incluyen y que son
innecesarios en .NET. Por ejemplo:

o El cdigo escrito en C# es autocontenido, lo que significa que no necesita de ficheros


adicionales al propio fuente tales como ficheros de cabecera o ficheros IDL

o El tamao de los tipos de datos bsicos es fijo e independiente del compilador, sistema
operativo o mquina para quienes se compile (no
portabilidad del cdigo.

como en C++), lo que facilita la

o No se incluyen elementos poco tiles de lenguajes como C++ tales como macros,
herencia mltiple o la necesidad de un operador diferente del punto (.) acceder a
miembros de espacios de nombres (::)

Modernidad: C# incorpora en el propio lenguaje elementos que a lo largo de los aos ha


ido demostrndose son muy tiles para el desarrollo de aplicaciones y que en otros
lenguajes como Java o C++ hay que simular, como un tipo bsico decimal que permita
realizar operaciones de alta precisin con reales de 128 bits (muy til en el mundo
financiero), la inclusin de una instruccin foreach que permita recorrer colecciones con
facilidad y es ampliable a tipos definidos por el usuario, la inclusin de un tipo bsico

string para representar cadenas o la distincin de un tipo bool especfico para


representar valores lgicos.

Orientacin a objetos: Como todo lenguaje de programacin de propsito general


actual, C# es un lenguaje orientado a objetos, aunque eso es ms bien una caracterstica
del CTS que de C#. Una diferencia de este enfoque orientado a objetos respecto al de
otros lenguajes como C++ es que el de C# es ms puro en tanto que no admiten ni
funciones ni variables globales sino que todo el cdigo y datos han de definirse dentro de
definiciones de tipos de datos, lo que reduce problemas por conflictos de nombres y
facilita la legibilidad del cdigo.
C# soporta todas las caractersticas propias del paradigma de programacin orientada a
objetos: encapsulacin, herencia y polimorfismo.
En lo referente a la encapsulacin es importante sealar que aparte de los tpicos
modificadores public, private y protected, C# aade un cuarto modificador llamado
internal, que puede combinarse con protected e indica que al elemento a cuya definicin
precede slo puede accederse desde su mismo ensamblado.
Respecto a la herencia -a diferencia de C++ y al igual que Java- C# slo admite herencia
simple de clases ya que la mltiple provoca ms quebraderos de cabeza que facilidades y
en la mayora de los casos su utilidad puede ser simulada con facilidad mediante herencia
mltiple de interfaces. De todos modos, esto vuelve a ser ms bien una caracterstica
propia del CTS que de C#.
Por otro lado y a diferencia de Java, en C# se ha optado por hacer que todos los mtodos
sean por defecto sellados y que los redefinibles hayan de marcarse con el modificador
virtual (como en C++), lo que permite evitar errores derivados de redefiniciones
accidentales. Adems, un efecto secundario de esto es que las llamadas a los mtodos
sern ms eficientes por defecto al no tenerse que buscar en la tabla de funciones
virtuales la implementacin de los mismos a la que se ha de llamar. Otro efecto
secundario es que permite que las llamadas a los mtodos virtuales se puedan hacer ms
eficientemente al contribuir a que el tamao de dicha tabla se reduzca.

Orientacin a componentes: La propia sintaxis de C# incluye elementos propios del


diseo de componentes que otros lenguajes tienen que simular mediante construcciones
ms o menos complejas. Es decir, la sintaxis de C# permite definir cmodamente
propiedades (similares a campos de acceso controlado), eventos (asociacin controlada
de funciones de respuesta a notificaciones) o atributos (informacin sobre un tipo o sus
miembros)

Gestin automtica de memoria: Como ya se coment, todo lenguaje de .NET tiene a


su disposicin el recolector de basura del CLR. Esto tiene el efecto en el lenguaje de que
no es necesario incluir instrucciones de destruccin de objetos. Sin embargo, dado que la
destruccin de los objetos a travs del recolector de basura es indeterminista y slo se
realiza cuando ste se active ya sea por falta de memoria, finalizacin de la aplicacin o
solicitud explcita en el fuente-, C# tambin proporciona un mecanismo de liberacin de
recursos determinista a travs de la instruccin using.

Seguridad de tipos: C# incluye mecanismos que permiten asegurar que los accesos a
tipos de datos siempre se realicen correctamente, lo que permite evita que se produzcan
errores difciles de detectar por acceso a memoria no perteneciente a ningn objeto y es
especialmente necesario en un entorno gestionado por un recolector de basura. Para ello
se toman medidas del tipo:

o Slo se admiten conversiones entre tipos compatibles. Esto es, entre un tipo y
antecesores suyos, entre tipos para los que explcitamente se haya definido un operador
de conversin, y entre un tipo y un tipo hijo suyo del que un objeto del primero
almacenase una referencia del segundo (downcasting) Obviamente, lo ltimo slo puede
comprobarlo en tiempo de ejecucin el CLR y no el compilador, por lo que en realidad el
CLR y el compilador colaboran para asegurar la correccin de las conversiones.

o No se pueden usar variables no inicializadas. El compilador da a los campos un valor


por defecto consistente en ponerlos a cero y controla mediante anlisis del flujo de control
del fuente que no se lea ninguna variable local sin que se le haya asignado previamente
algn valor.

o Se comprueba que todo acceso a los elementos de una tabla se realice con ndices que
se encuentren dentro del rango de la misma.

o Se puede controlar la produccin de desbordamientos en operaciones aritmticas,


informndose de ello con una excepcin cuando ocurra. Sin embargo, para conseguirse
un mayor rendimiento en la aritmtica estas comprobaciones no se hacen por defecto al
operar con variables sino slo con constantes (se pueden detectar en tiempo de
compilacin)

o A diferencia de Java, C# incluye delegados, que son similares a los punteros a funciones
de C++ pero siguen un enfoque orientado a objetos, pueden almacenar referencias a
varios mtodos simultneamente, y se comprueba que los mtodos a los que apunten
tengan parmetros y valor de retorno del tipo indicado al definirlos.

o Pueden definirse mtodos que admitan un nmero indefinido de parmetros de un cierto


tipo, y a diferencia lenguajes como C/C++, en C# siempre se comprueba que los valores
que se les pasen en cada llamada sean de los tipos apropiados.

Instrucciones seguras: Para evitar errores muy comunes, en C# se han impuesto una
serie de restricciones en el uso de las instrucciones de control ms comunes. Por
ejemplo, la guarda de toda condicin ha de ser una expresin condicional y no aritmtica,
con lo que se evitan errores por confusin del operador de igualdad (==) con el de
asignacin (=); y todo caso de un switch ha de terminar en un break o goto que indique
cul es la siguiente accin a realizar, lo que evita la ejecucin accidental de casos y
facilita su reordenacin.

Sistema de tipos unificado: A diferencia de C++, en C# todos los tipos de datos que se
definan siempre derivarn, aunque sea de manera implcita, de una clase base comn
llamada System.Object, por lo que dispondrn de todos los miembros definidos en sta
clase (es decir, sern objetos)
A diferencia de Java, en C# esto tambin es aplicable a los tipos de datos bsicos
Adems, para conseguir que ello no tenga una repercusin negativa en su nivel de
rendimiento, se ha incluido un mecanismo transparente de boxing y unboxing
con el que se consigue que slo sean tratados como objetos cuando la situacin lo
requiera, y mientras tanto puede aplicrseles optimizaciones especficas.
El hecho de que todos los tipos del lenguaje deriven de una clase comn facilita
enormemente el diseo de colecciones genricas que puedan almacenar objetos
de cualquier tipo.

Extensibilidad de tipos bsicos: C# permite definir, a travs de estructuras, tipos de


datos para los que se apliquen las mismas optimizaciones que para los tipos de datos
bsicos. Es decir, que se puedan almacenar directamente en pila (luego su creacin,
destruccin y acceso sern ms rpidos) y se asignen por valor y no por referencia. Para
conseguir que lo ltimo no tenga efectos negativos al pasar estructuras como parmetros
de mtodos, se da la posibilidad de pasar referencias a pila a travs del modificador de
parmetro ref.

Extensibilidad de operadores: Para facilitar la legibilidad del cdigo y conseguir que los
nuevos tipos de datos bsicos que se definan a travs de las estructuras estn al mismo
nivel que los bsicos predefinidos en el lenguaje, al igual que C++ y a diferencia de Java,
C# permite redefinir el significado de la mayora de los operadores -incluidos los de
conversin, tanto para conversiones implcitas como explcitas- cuando se apliquen a
diferentes tipos de objetos.
Las redefiniciones de operadores se hacen de manera inteligente, de modo que a
partir de una nica definicin de los operadores ++ y -- el compilador puede
deducir automticamente como ejecutarlos de manera prefijas y postifja; y
definiendo operadores simples (como +), el compilador deduce cmo aplicar su
versin de asignacin compuesta (+=) Adems, para asegurar la consistencia, el

compilador vigila que los operadores con opuesto siempre se redefinan por
parejas (por ejemplo, si se redefine ==, tambin hay que redefinir !=)
Tambin se da la posibilidad, a travs del concepto de indizador, de redefinir el
significado del operador [] para los tipos de dato definidos por el usuario, con lo
que se consigue que se pueda acceder al mismo como si fuese una tabla. Esto es
muy til para trabajar con tipos que acten como colecciones de objetos.

Extensibilidad de modificadores: C# ofrece, a travs del concepto de atributos, la


posibilidad de aadir a los metadatos del mdulo resultante de la compilacin de cualquier
fuente informacin adicional a la generada por el compilador que luego podr ser
consultada en tiempo ejecucin a travs de la librera de reflexin de .NET . Esto, que
ms bien es una caracterstica propia de la plataforma .NET y no de C#, puede usarse
como un mecanismo para definir nuevos modificadores.

Versionable: C# incluye una poltica de versionado que permite crear nuevas versiones
de tipos sin temor a que la introduccin de nuevos miembros provoquen errores difciles
de detectar en tipos hijos previamente desarrollados y ya extendidos con miembros de
igual nombre a los recin introducidos.
Si una clase introduce un nuevo mtodo cuyas redefiniciones deban seguir la
regla de llamar a la versin de su padre en algn punto de su cdigo, difcilmente
seguiran esta regla miembros de su misma signatura definidos en clases hijas
previamente a la definicin del mismo en la clase padre; o si introduce un nuevo
campo con el mismo nombre que algn mtodo de una clase hija, la clase hija
dejar de funcionar. Para evitar que esto ocurra, en C# se toman dos medidas:

o Se obliga a que toda redefinicin deba incluir el modificador override, con lo que la
versin de la clase hija nunca sera considerada como una redefinicin de la versin de
miembro en la clase padre ya que no incluira override. Para evitar que por accidente un
programador incluya este modificador, slo se permite incluirlo en miembros que tengan la
misma signatura que miembros marcados como redefinibles mediante el modificador
virtual. As adems se evita el error tan frecuente en Java de creerse haber redefinido un
miembro, pues si el miembro con override no existe en la clase padre se producir un
error de compilacin.

o Si no se considera redefinicin, entonces se considera que lo que se desea es ocultar el


mtodo de la clase padre, de modo que para la clase hija sea como si nunca hubiese
existido. El compilador avisar de esta decisin a travs de un mensaje de aviso que
puede suprimirse incluyendo el modificador new en la definicin del miembro en la clase
hija para as indicarle explcitamente la intencin de ocultacin.

Eficiente: En principio, en C# todo el cdigo incluye numerosas restricciones para


asegurar su seguridad y no permite el uso de punteros. Sin embargo, y a diferencia de
Java, en C# es posible saltarse dichas restricciones manipulando objetos a travs de
punteros. Para ello basta marcar regiones de cdigo como inseguras (modificador
unsafe) y podrn usarse en ellas punteros de forma similar a cmo se hace en C++, lo
que puede resultar vital para situaciones donde se necesite una eficiencia y velocidad
procesamiento muy grandes.

Compatible: Para facilitar la migracin de programadores, C# no slo mantiene una


sintaxis muy similar a C, C++ o Java que permite incluir directamente en cdigo escrito
en C# fragmentos de cdigo escrito en estos lenguajes, sino que el CLR tambin ofrece, a
travs de los llamados Platform Invocation Services (PInvoke), la posibilidad de
acceder a cdigo nativo escrito como funciones sueltas no orientadas a objetos tales
como las DLLs de la API Win32. Ntese que la capacidad de usar punteros en cdigo
inseguro permite que se pueda acceder con facilidad a este tipo de funciones, ya que
stas muchas veces esperan recibir o devuelven punteros.
Tambin es posible acceder desde cdigo escrito en C# a objetos COM. Para
facilitar esto, el .NET Framework SDK incluye una herramientas llamadas tlbimp y
regasm mediante las que es posible generar automticamente clases proxy que
permitan, respectivamente, usar objetos COM desde .NET como si de objetos
.NET se tratase y registrar objetos .NET para su uso desde COM.
Finalmente, tambin se da la posibilidad de usar controles ActiveX desde cdigo
.NET y viceversa. Para lo primero se utiliza la utilidad aximp, mientras que para lo
segundo se usa la ya mencionada regasm.

Lenguaje SQL
En el 2006, la International Organization for Standardization (ISO) y el American National
Standards Institute (ANSI) publicaron revisiones a su estndar SQL, al cual llamar
SQL:2006. Como ver despus, el estndar est dividido en partes, y cada parte es
aprobada y publicada en su propia lnea de tiempo; por lo tanto, diferentes partes tienen
distintos aos de publicacin. Es comn usar el ltimo ao como nombre colectivo para el
conjunto de todas las partes publicadas durante ese ao. El estndar SQL 2006, como
sus predecesores SQL:2003, SQL:1999 (tambin conocido como SQL3) y SQL-92, se
basa en el modelo de datos relacional, el cual define cmo los datos pueden ser
almacenados y manipulados dentro de una base de datos relacional. Los sistemas de
gestin de base de datos relacional (RDBMS) como Oracle, Sybase, DB2, MySQL y
Microsoft SQL Server (o slo SQL Server) usan el estndar SQL como base de su
tecnologa, proporcionando entornos de base de datos que apoyan tanto a SQL como al

modelo de datos relacional. Hay ms informacin sobre el estndar SQL ms adelante en


este captulo.

El lenguaje estructurado de consultas (SQL, Structured Query Language) apoya la


creacin y mantenimiento de la base de datos relacional y la gestin de los datos dentro
de la base de datos. Sin embargo, antes de entrar en discusin acerca de las bases de
datos relacionales, quiero explicar el significado del trmino base de datos. El trmino ha
sido utilizado para referirse a cualquier cosa, desde una coleccin de nombres y
direcciones hasta un complejo sistema de recuperacin y almacenamiento de datos que
se basa en interfaces de usuarios y una red de computadoras y servidores. Hay tantas
definiciones para la palabra base de datos como libros sobre stas. Por otra parte, los
distintos proveedores de DBMS han desarrollado diferentes arquitecturas, por lo que no
todas las bases de datos estn diseadas de la misma manera. A pesar de la falta de una
definicin absoluta, la mayora de las fuentes coinciden en que una base de datos, por lo
menos, es una coleccin de datos organizada en un formato estructurado que es definido
como metadatos que describe esa estructura. Puede pensar en los metadatos como
informacin sobre los datos almacenados, que define cmo se almacenan stos en una
base de datos.

A lo largo de los aos se ha implementado una serie de modelos de base de datos para
almacenar y administrar la informacin. Varios de los modelos ms comunes incluyen los
siguientes:

Jerrquico Este modelo tiene una estructura primario y secundario que es similar a
un rbol invertido, que es lo que constituye la jerarqua. Los datos estn
organizados en nodos, el equivalente lgico de tablas en una base de datos
relacional. Un nodo principal puede tener muchos nodos secundarios, pero un
nodo secundario slo puede tener un nodo principal. Aunque el modelo ha sido
muy utilizado, a menudo se considera inadecuado para muchas aplicaciones
debido a su estructura inflexible y la falta de apoyo de relaciones complejas. Aun
algunas implementaciones como IMS de IBM han introducido caractersticas que
trabajan en torno a estas limitaciones.

Red Este modelo aborda algunas de las limitaciones del modelo jerrquico. Los
datos estn organizados en tipos de registro, el equivalente lgico de tablas en
una base de datos relacional. Al igual que el modelo jerrquico, el modelo de red
usa la estructura de un rbol invertido, pero los tipos de registro se organizan en
una estructura que relaciona pares de tipos de registro en propietarios y miembros.
Cualquier tipo de registro puede participar en cualquier conjunto con otros tipos de
registro en la base de datos, que apoya a las consultas y relaciones ms
complejas de lo que es posible en el modelo jerrquico. Hasta el modelo de red
tiene sus limitaciones, y la ms seria es la complejidad. Al acceder a la base de
datos, el usuario debe estar familiarizado con la estructura y mantener un

seguimiento cuidadoso de dnde est y cmo lleg ah. Tambin es difcil cambiar
la estructura sin afectar las aplicaciones que interactan con la base de datos.

Relacional Este modelo aborda algunas de las limitaciones de los modelos


jerrquicos y de red. En una base de datos de modelo jerrquico o de red, la
aplicacin se basa en una implementacin determinada de esa base de datos, que
luego es codificada en la aplicacin. Si agrega un nuevo atributo (elemento de
datos) a la base de datos, debe modificar la aplicacin, aun cuando no se use ese
atributo. Sin embargo, una base de datos relacional es independiente de la
aplicacin; puede hacer modificaciones no destructivas a la estructura sin afectar
la aplicacin. Adems, la estructura de la base de datos relacional se basa en la
relacin, o tabla, junto con la habilidad de definir relaciones complejas entre ellas.
Se puede acceder directamente a cada relacin sin la lentitud de las limitaciones
de los modelos jerrquicos o propietario/ miembro que requiere de una navegacin
a travs de una estructura compleja de datos. En la siguiente seccin, El modelo
relacional, se ver con mayor detalle este modelo.

Aunque an se usan en muchas organizaciones, las bases de datos de modelo jerrquico


y de red ahora se consideran como soluciones heredadas. El modelo relacional es el ms
ampliamente aplicado en los sistemas de negocios modernos, y es el modelo relacional el
que proporciona la base para SQL.

Normalizacin de datos
La parte central de los principios del modelo relacional es el concepto de normalizacin,
una tcnica para producir un conjunto de relaciones que poseen un conjunto de ciertas
propiedades que minimizan los datos redundantes y preservan la integridad de los datos
almacenados tal como se mantienen (aadidos, actualizados y eliminados). El proceso
fue desarrollado por E. F. Codd en 1972, y el nombre es un chiste poltico debido a que el
presidente Nixon estaba normalizando relaciones con China en ese momento. Codd
imagin que si las relaciones con un pas pueden normalizarse, entonces seguramente
podra normalizar las relaciones de la base de datos. La normalizacin se define por un
conjunto de normas, que se conocen como formas normales, que proporcionan una
directriz especfica de cmo los datos son organizados para evitar anomalas que den
lugar a inconsistencias y prdida de los datos tal como se mantienen almacenados en la
base de datos.
Cuando Codd present por primera vez la normalizacin, inclua tres formas normales. A
pesar de que formas normales adicionales se han agregado desde entonces, las tres
primeras cubren la mayora de las situaciones que se encontrarn en las dos bases de
datos personales y empresariales, y ya que la intencin principal es presentar el proceso
de normalizacin, slo se analizarn esas tres formas.

Eleccin de un identificador nico. Un identificador nico es un atributo o conjunto de


atributos que nicamente identifican cada fila de datos en una relacin. El identificador
nico eventualmente se convertir en la clave principal de la tabla creada en la base de
datos fsica desde la relacin de normalizacin, pero muchos usan los trminos
identificador nico y clave principal de manera intercambiable. A cada identificador
potencial nico se le denomina candidato clave, y cuando hay varios candidatos, el
diseador elegir el mejor, el cual es el menos probable de cambiar valores o el ms
simple y/o el ms corto. En muchos casos, un solo atributo se identifica nicamente en los
datos en cada tupla de la relacin. Sin embargo, cuando ningn atributo que es nico se
encuentra, el diseador busca varios atributos que puedan ser unidos (puestos juntos)
para formar un identificador nico. En los pocos casos donde ningn candidato clave
razonable es encontrado, el diseador debe inventar un identificador nico denominado
sustituto clave, frecuentemente con valores asignados al azar o secuencialmente cuando
las tuplas sean agregadas a la relacin.
Mientras no sea absolutamente necesario hasta la segunda forma normal, es habitual
seleccionar un identificador nico como primer paso en la normalizacin. Es ms fcil de
esa manera.

Primera forma normal. La primera forma normal, que proporciona la fundacin para la
segunda y tercera forma normal, incluye las siguientes directrices:

Cada atributo de una tupla contiene slo un valor.


Cada tupla en una relacin contiene el mismo nmero de atributos.
Cada tupla es diferente, lo que significa que la combinacin de los valores de
todos los atributos de una tupla dada no puede ser como ninguna otra tupla en la
misma relacin.

Segunda forma normal. Para comprender la segunda forma normal, primero debe
entender el concepto de dependencia funcional. Para esta definicin se usarn dos
atributos arbitrarios, hbilmente llamados A y B. El atributo B es funcionalmente
dependiente (dependiente para abreviar) del atributo A si en cualquier momento no hay
ms que un valor del atributo B asociado con el valor dado al atributo A. Para que no te
preguntes de qu planeta vengo, tratemos de hacer la definicin ms entendible. Si se
dice que el atributo B es funcionalmente dependiente del atributo A, tambin estaremos
diciendo que el atributo A determina al atributo B, o que A es un factor determinante
(identificador nico) del atributo B.

Tercera forma normal. La tercera forma normal, como la segunda forma normal,
depende de la relacin del identificador nico. Para adherir a las directrices de la tercera
forma normal, una relacin debe estar en la segunda forma normal y sin un atributo clave
(atributos que no sean parte de algn candidato clave) deben ser independiente el uno del
otro y depender del identificador nico.

La evolucin de SQL
A principios de la dcada de 1970, despus que se public el artculo de E. F. Codd, IBM
comenz a desarrollar un lenguaje y un sistema de base de datos que podra usarse para
la aplicacin de ese modelo. Cuando se defini por primera vez, el lenguaje fue
denominado Lenguaje de consulta estructurado (en ingls, SEQUEL, Structured English
Query Language). Cuando se descubri que SEQUEL era propiedad de una marca
comercial de Hawker-Siddeley Aircraft Company en el Reino Unido, el nombre se cambi
a SQL. Cuando se pas la voz de que IBM estaba desarrollando un sistema de base de
datos relacional basado en SQL, otras compaas comenzaron a desarrollar sus propios
productos basados en SQL. De hecho, Relational Software, Inc., ahora Oracle
Corporation, lanz el sistema de base de datos antes de que IBM lanzara el suyo al
mercado. Conforme ms proveedores lanzaron sus productos, SQL comenz a surgir
como el lenguaje estndar de base de datos relacional.
En 1986, el American National Standards Institute (ANSI) dio a conocer el primer estndar
publicado para el lenguaje (SQL-86), el cual fue adoptado por la International Organization
for Standardization (ISO) en 1987. El estndar se actualiz en 1989, 1992, 2003, 2006, y
el trabajo contina. Ha crecido con el tiempo (el estndar original estaba muy por debajo
de 1 000 pginas, mientras que la versin de SQL:2006 tiene ms de 3 700 pginas). El
estndar se escribi en partes para permitir la publicacin programada de revisiones y
facilitar el trabajo paralelo por diferentes comits. La siguiente proporciona una
descripcin general de las partes y el estado actual de cada una.

Parte
s
1

Tema

Estado

SQL/Framework

SQL/Foundation

SQL/CLI

SQL/PSM

SQL/Bindings

6
7

SQL/Transaction
SQL/Temporal

Completado en 1999; revisado en el 2003,


correcciones publicadas en el 2007
Completado en 1986, revisado en 1999 y 2003,
correcciones publicadas en el 2007
Completado en 1995, revisado en 1999 y en el 2003,
correcciones publicadas en el 2005
Completado en 1996, revisado en 1999 y en el 2003,
correcciones publicadas en el 2007
Establecido como una parte separada en 1999,
fusionado de nuevo en la parte 2 en el 2003;
actualmente no existe la parte 5
Proyecto cancelado; actualmente no existe la parte 6
Retirado; actualmente no existe la parte 7

SQL/Objects and
Extended
Objects
SQL/MED

10

SQL/OLB

11

SQL/Schemata

12

SQL/Replication

13

SQL/JRT

14

SQL/XML

Fusionado en la parte 2; no existe la parte 8

Comenzado despus de 1999, completado en el 2003,


correcciones publicadas en el 2005
Completado como el estndar ANSI en 1998, versin
ISO completada en 1999, revisin en el 2003,
correcciones publicadas en el 2007
Extrado de una parte separada en el 2003,
correcciones publicadas en el 2007
Proyecto empezado en el 2000, pero posteriormente
abandonado; actualmente no existe la parte 12
Completado como el estndar ANSI en 1999, revisin
completada en el 2003, correcciones publicadas en el
2005
Completado en el 2003, expandido en el 2006,
correcciones publicadas en el 2007

Los proveedores RDBMS lanzaron productos al mercado antes que hubiera un estndar,
y muchas de las caractersticas de esos productos se aplicaron bastante diferentes, as
que el estndar no pudo acomodarlos a todos cuando se desarrollaron. A menudo se
llaman proveedores por extensin. Esto explica por qu no hay un estndar para una
base de datos. Y cuando cada versin estndar de SQL se lanza, los proveedores
RDBMS tienen que trabajar para incorporar el nuevo estndar en sus productos. Por
ejemplo, los procedimientos almacenados y activadores son nuevos en el estndar
SQL:1999, pero fueron implementados en RDBMS por muchos aos. SQL:1999
simplemente estandariz el lenguaje utilizado para implementar funciones que ya existan.

Tipos de instrucciones de SQL


Aunque SQL se considera un sublenguaje debido a su naturaleza de no procesamiento,
aun as es un lenguaje completo que le permite crear y mantener objetos en una base de
datos, asegurar esos objetos y manipular la informacin dentro de los objetos. Un mtodo
comn usado para categorizar las instrucciones SQL es dividirlas de acuerdo con las
funciones que realizan. Basado en este mtodo, SQL se separa en tres tipos de
instrucciones:

Lenguaje de definicin de datos (DDL, Data Definition Language) Las


instrucciones DDL se usan para crear, modificar o borrar objetos en una base de
datos como tablas, vistas, esquemas, dominios, activadores, y almacenar
procedimientos. Las palabras clave en SQL ms frecuentemente asociadas con
las instrucciones DDL son CREATE, ALTER y DROP. Por ejemplo, se usa la
instruccin CREATE TABLE para crear una tabla, la instruccin ALTER TABLE

para modificar las caractersticas de una tabla, y la instruccin DROP TABLE para
borrar la definicin de la tabla de la base de datos.

Lenguaje de control de datos (DCL, Data Control Language) Las instrucciones


DCL permiten controlar quin o qu (un usuario en una base de datos puede ser
una persona o un programa de aplicacin) tiene acceso a objetos especficos en la
base de datos. Con DCL, puede otorgar o restringir el acceso usando las
instrucciones GRANT o REVOKE, los dos comandos principales en DCL. Las
instrucciones DCL tambin permiten controlar el tipo de acceso que cada usuario
tiene a los objetos de una base de datos. Por ejemplo, puede determinar cules
usuarios pueden ver un conjunto de datos especfico y cules usuarios pueden
manipular esos datos.

Lenguaje de manipulacin de datos (DML, Data Manipulation Language) Las


instrucciones DML se usan para recuperar, agregar, modificar o borrar datos
almacenados en los objetos de una base de datos. Las palabras clave asociadas
con las instrucciones DML son SELECT, INSERT, UPDATE y DELETE, las cuales
representan los tipos de instrucciones que probablemente son ms usadas. Por
ejemplo, puede usar la instruccin SELECT para recuperar datos de una tabla y la
instruccin INSERT para agregar datos a una tabla.

Tipos de ejecucin

Adems de definir cmo se usa el lenguaje, el estndar SQL proporciona detalles de


cmo las instrucciones SQL son ejecutadas. Este mtodo de ejecucin, conocido como
estilos de unin, no slo afecta la naturaleza de la ejecucin, sino tambin determina
cules instrucciones, como m- nimo, deben ser soportadas por un estilo de unin
particular. El estndar define cuatro mtodos de ejecucin:

Invocacin directa Mediante el uso de este mtodo, puede comunicarse


directamente desde una aplicacin de usuario, como iSQL*Plus en Oracle o
Management Studio en Microsoft SQL Server, en la base de datos. (La aplicacin
de usuario y la base de datos pueden estar en la misma computadora, pero a
menudo no lo estn.) Simplemente introduzca su consulta en la ventana de la
aplicacin y ejecute la instruccin SQL. Los resultados de su consulta se le
devolvern tan rpido como el poder del procesador y las limitaciones de la base
de datos lo permitan. sta es una forma rpida de comprobar datos, verificar
conexiones y ver los objetos en una base de datos. Sin embargo, las directrices
del estndar SQL sobre la invocacin directa son bastante mnimas; por lo tanto,

los mtodos utilizados y los estndares SQL respaldados pueden variar


ampliamente de un producto a otro.

SQL incrustado En este mtodo, las instrucciones SQL estn codificadas


(incrustadas) directamente en el lenguaje de programacin anfitrin. Por ejemplo,
las instrucciones SQL se pueden incrustar en el cdigo C de la aplicacin. Antes
que el cdigo se compile, un preprocesador analiza las instrucciones SQL y las
desglosa desde el cdigo C. El cdigo SQL se convierte en una forma que RDBMS
puede entender, y el cdigo C restante se compila como lo hara normalmente.

Unin de mdulo Este mtodo permite crear bloques de instrucciones SQL


(mdulos) que estn separados del lenguaje de programacin anfitrin. Una vez
que el mdulo es creado, es una combinacin entre una aplicacin y un vinculador.
Un mdulo contiene, entre otras cosas, procedimientos, y son los procedimientos
los que contienen las instrucciones SQL reales.

Interfaz convocatoria a nivel (CLI, Call-level interface) Una CLI permite invocar
instrucciones SQL a travs de una interfaz mediante la aprobacin de
instrucciones SQL como valores argumentativos para las subrutinas. Las
instrucciones no estn precompiladas como en el SQL incrustado y la Unin de
mdulo. En lugar de eso, son ejecutadas directamente por los RDBMS.

Microsoft SQL Server


SQL nace de un lenguaje de cmputo llamado SEQUEL creado por IBM, que fue
diseado especficamente para consulta de base de datos.
SQL Server es el producto emblema de motor de base de datos de Microsoft que est
generando una enorme cantidad de inters en el mercado. Microsoft se ha comprometido
a invertir grandes cantidades de dinero en apoyo a la comercializacin del producto y
cuenta con que SQL Server se convierta en el principal motor de base de datos en la
industria de cmputo para la plataforma Windows XP aunque tambin puede operar en
Windows 95, Windows 98, Vistaetc.
Microsoft SQL Server 2005 es el penltimo lanzamiento de los productos de base de
datos de Microsoft que aprovecha la slida base establecida por SQL Server 6.5, 7.0 y

2000. Actualmente contamos en el mercado con la nueva versin de SQL Server 2008
R2.

Caractersticas
Portabilidad: Las bases de datos pueden desarrollarse fcilmente ya sea en un equipo
mainframe o una mini computadora, sin importar su sistema operativo. Cuenta con
soporte de SUN, lo que permite una mayor comunicacin entre servidores.
Compatibilidad: Los DBMS o SGBD (DataBase Management System, Sistema de Gestin
de Bases de Datos) se pueden ejecutar ya sea en computadoras personales,
microcomputadoras, mainframes y computadoras con procesamiento paralelo masivo as
como en distintas arquitecturas de hardware y software sin tener la necesidad de cambiar
una sola lnea de cdigo. El optimizador de consultas soporta paralelismo entre consultas
lo que implica la capacidad de procesar una sola consulta en mltiples CPU. Primera base
de datos que ofrece una compatibilidad de cdigo del 100%. Primera base de datos con
los servicios de transformacin de datos integrados (DTS: Data Transformation Service).
Con DTS se pueden importar y exportar datos entre varias fuentes de datos heterogneas
y destinos de datos, es decir, transferir y transformar los datos automticamente.
Conectividad: Los SGBD pueden trabajar con informacin almacenada con otros sistemas
de bases de datos as como tambin almacenar los datos y acceder a ellos desde otros
paquetes de software. Es la primera base de datos que ofrece la administracin
multiservidor para un gran nmero de servidores. Esto se conoce como acceso universal
a los datos (Universal Data Access), la estrategia de Microsoft para permitir el acceso de
alto rendimiento a una gran cantidad de fuentes de informacin.
Seguridad: Permite verificaciones de usuarios, mantener clientes diferentes en una misma
base de datos y a sealar que a ciertos datos solo podrn acceder determinados usuarios
as como la codificacin de informacin privada. El Administrador puede programar
permisos por tabla, columna o fila. Por medio del sistema operativo se permite la
restriccin de los movimientos que pudieran hacerse con los archivos, as como controlar
los accesos con cuentas, a esto se le conoce como autenticacin. La seguridad
comprende en proteccin y codificacin de tablas de datos, columnas y filas, as como las
transferencias de datos entre un cliente y un servidor como auditorias que identifican
violaciones a la seguridad.
Administracin: Aporta funcionalidades de administracin y tunning de la memoria, del
CPU y de disco, de manera que se reduce el tiempo para la administracin. Primera base
de datos que soporta la configuracin automtica y la auto-optimizacin por medio del
servicio Agente SQL Server.
Rendimiento: Permiten una alta disponibilidad de aplicaciones sin necesidad de una
reconfiguracin de datos.

Herramientas de Desarrollo
Funcionan con un amplio conjunto de herramientas de desarrollo, herramientas de
consulta para el usuario final, aplicaciones comerciales y herramientas de gestin de la
informacin del mbito corporativo. La estrategia Microsoft consiste en reducir el costo y
la complejidad de almacenamiento de datos al tiempo que pone la tecnologa al alcance
de un mayor nmero de personas.
Innovaciones que se incluyen:

Generacin de informes y anlisis corporativos hasta el modelado de datos y el


soporte de la toma de decisiones.

Generacin de Microsoft Repository (Depsito de Microsoft), una infraestructura


comn para compartir la informacin.

Windows Forms
Windows Forms es la plataforma de desarrollo para crear Aplicaciones en Microsoft
Windows. Es una parte del .NET Framework que tiene un conjunto de clases orientadas a
objetos que se usan para desarrollar complejas y robustas aplicaciones Windows.
Este conjunto de clases del .NET Framework se encuentra fsicamente dentro de la
librera System.Windows.Forms.dll ubicada en el directorio donde est instalada la versin
del .NET Framework.
Lgicamente, Windows Forms tiene la siguiente jerarqua en el Modelo de objetos del
.NET Framework, tal como se muestra en la imagen.

Observacin: Como se visualiza en la imagen, las clases pertenecientes al Namespace


System.Windows.Forms heredan indirectamente de Object que es la clase base de la cual
heredan todas las clases del .NET Framework.
Clasificacin
Las clases del Namespace System.Windows.Forms se pueden clasificar en 2 grupos:
objetos visuales y no visuales.
Los objetos visuales de Windows Forms se dividen en 4 categoras:

Control, UserControl y Form: La clase Control es la clase base que tiene la


funcionalidad de todos los controles que se usan en un formulario (clase Form). Mientras
que la clase User Control sirve para crear controles personalizados que estn compuestos
por otros controles Windows.

Controls: Se refiere a los controles Windows que al arrastrarse a un formulario se


muestran en el diseador de formularios de Visual Studio .NET, tales como controles de
entrada de datos: TextBox y ComboBox, de salida de datos: Label y ListView, de
comandos: Button y ToolBar, etc.

Componentes: Los componentes son clases similares a los controles pero que no
heredan del Control y que al arrastrarse a un formulario no se ven en el diseador de
formularios sino en el diseador de componentes de visual studio .NET, tales como
componentes de informacin al usuario: ToolTip y ErrorProvider, componentes de
mens: MainMenu y ContextMenu, componentes de ayuda: Help y HelpProvider.

Common Dialog Boxes: Los cuadros de dilogos comunes son objetos que al
arrastrarse al formulario tambin se ubican en el Diseador de Componentes de Visual
Studio .NET, tales como dilogos de archivos: OpenFileDialog y SaveFIleDialog,
dilogos de color: ColorDialog, dilogos de Fuentes: FontDialog y los dilogos de
impresin: PrintDialog, PageSetupDialog y PrintPreviewDialog.

Existen 2 categoras de objetos no visuales en Windows Forms:

Objetos: Aplication, Clipboard, CurrencyManager, Cursor, Screen, etc.


Argumentos de Eventos: Heredan de System.EventArgs, tales como: KeyEventArgs,
KeyPressEventArgs, MouseEventArgs, etc.

Referencias
Proceso Unificado UML (RUP):
Autor: A.U.S. Gustavo Torossi
Libro: El Proceso Unificado de Desarrollo de Software
http://dsc.itmorelia.edu.mx/~jcolivares/courses/pm10a/rup.pdf

Visual Studio:
https://books.google.com.mx/books?
id=CWljHdTl5U0C&pg=PA40&dq=visual+studio&hl=es-

419&sa=X&ved=0ahUKEwjNsIPQqNPPAhWBjSwKHZkbCwoQ6AEIJTAC#v=onepage&q&
f=false
Autor: Sbastien Putier
Libro: VB.NET Visual Studio 2015 Los fundamentos del lenguaje.

DevExpress:
http://dawconsblog.blogspot.com/2014/04/devexpress-el-mejor-aliado-en-el.html
Autor: Karla Olivia Samaniego Garca
Articulo

WPF:
https://es.wikipedia.org/wiki/Windows_Presentation_Foundation
https://msdn.microsoft.com/es-es/library/ms754130.aspx
https://blogs.msdn.microsoft.com/expressate/2008/07/03/qu-es-wpf/

SQL:
http://pedrobeltrancanessabiblioteca.weebly.com/uploads/1/2/4/0/12405072/fundamentos_de_sql_3edi_oppel.pdf
Autor: Robert Cheldon
Libro: Fundamentos de SQL Tercera Edicin

Microsoft SQL Server:


http://www.v-espino.com/~chema/daw1/tutoriales/SQLServer.pdf
Libro: Administracin de base de datos con SQL Server 2008
Autor: Vctor Jos Vergel Rodrguez

Lenguaje C#:
http://dis.um.es/~bmoros/privado/bibliografia/LibroCsharp.pdf
Autor: Jos Antonio Gonzlez Seco
Libro: El lenguaje de programacin C#

Windows Form:
http://www.ingenieriasystems.com/2012/10/programacion-plataforma-desktop-vb-net.html
Autor: Guillermo Benitez
Artculo de internet