jueves, 8 de mayo de 2014

C Sharp y características

C#, es un lenguaje de programación orientado a objetos desarrollado y estandarizado por Microsoft siendo parte de su plataforma .NET, aprobado como un estándar por la ECMA (ECMA-334) e ISO (ISO/IEC 23270). Su sintaxis básica se deriva de C/C++ y usa el modelo de objetos de la plataforma .NET, es similar al de Java, también incluye mejoras derivadas de otros lenguajes.

• Tipos de datos y declaración de Variables
En C#, se manejan datos de tipo Carácter y cadena, Numéricos, Lógicos (booleanos).
Variables más usadas en C#:
Existen muchas variables en C#, pero las más usadas son:
- string: para cadena de texto, va entre comillas dobles, un ejemplo de cómo se declara o se usa:
string = "Esta es una cadena de texto en C#"
- Char: solo un carácter, ejemplo: 'c', 'k', etc.
- int: números enteros, excluye números decimales y se declara así:
int = 5
- double: números con decimales que pueden ser largos, ejemplo 585.956485 y se declara así:
double = 585.956485
- Float: similar al double, pero no puede tener muchos decimales, lleva siempre una f al final, ejemplo: 6.35f, 8.2f.
La declaración es sensible a mayúsculas y minúsculas, no puede empezar por un número, simbolo, ni contener más de 511 caracteres.
- bool: de tipo verdadero o falso, ejemplo:
bool = false;
bool = true;
Variables menos usadas en C#:


Operaciones en C#
En C# se realizan operaciones aritméticas como suma, restas, multiplicación, división, residuo, etc. ejemplo:
2 + 3 8 – 4 5 *4 9 / 3 9 % 2 (para obtener el residuo, aquí el resultado es 1)
Otros son:
- Concatenación +
- Incremento, decremento ++ --
- Desplazamiento << >>
- Asignación = ^= <<= >>=
- Conversión ( )


• Condicionales
Instrucciones de control, estas son:
Las instrucciones son básicamente, iguales que en C, C++ y Java, estas son: if-else, for, while, do-while, switch, return, break, continue.
- Condicional (if): Son para definir cosas como: Si(if) el carro vale 20 millones o menos lo compro, Sino(else) no lo compro, en pseudocódigo se declara de la siguiente forma:
if( carro <=20000000)
{ compro el carro
}
else
{ no compro el carro, debo seguir buscando
}

En el lenguaje C#, el dinero es un entero, y tenemos 20000000 de pesos, y el carro también puede ser un entero que puede tener un valor variable, entonces se declara de la siguiente manera:

int dinero = 20000000;
int preciocarro = 19000000;
if (preciocarro <= 20000000)
{
MessageBox.Show("Lo compro!!!");
}
else
{
MessageBox.Show("No alcanza y hay que seguir buscando");
}
El MessageBox muestra en pantalla el mensaje que se quiera poner independiente del tipo de operación, por ejemplo en vez de "No alcanza y hay que seguir buscando", se puede poner:
MessageBox.Show("Venga, hágame una rebajita…");

Switch
Permite ejecutar varias operaciones para el caso de que una variable tenga un valor entero dado. La ejecución pasa por todos los case hasta encontrar uno con el valor de la variable, y ejecuta desde allí hasta el final del caso, ejemplo:
switch (expresión_entera) {
case (valor1): instrucciones_1;
[break;]
case (valor2): instrucciones_2;
[break;]
…..
case (valorN): instrucciones_N;
[break;]
default: instrucciones_por_defecto;
}
Veamos el caso de un sorteo, números del 1 al 5. Para que el programa indique el ganador automáticamente sería algo así:
switch (número que salió)
{
si es 1: Gana José
si es 2: Gana Luis
si es 3: Gana Ana
si es 4: Gana María
si es 5: Gana Pedro
}

En C#, sería así: Suponiendo que gano el 3,
int numero = 3;
switch (ganador)
{
case 1: MessageBox.Show("Gana José");
case 2: MessageBox.Show("Gana Luis");
case 3: MessageBox.Show("Gana Ana");
case 4: MessageBox.Show("Gana María");
case 5: MessageBox.Show("Gana Pedro");
}
En ciertos casos es más útil usar condicional o switch dependiendo del caso.
Otros son:
- For:
for (int i = 0; i < 10; i++) {
// ...
}
- while
while (i < 10) {
// ...
}
do-while:
do {
// ...
} while (true);
- foreach
foreach (char c in charList) {
// ...
}


1.3 Operadores en C#

Los operadores básicos de C#, son:
< : Menor que
> : Mayor que
<= Menor o igual
>= Mayor o igual
== Exactamente igual
&& Para declarar que se necesita el cumplimiento de dos o más condicionales
|| Para declarar que puede ser con el cumplimiento de una condicional de varias.

Ejemplo de operadores:

if (dinero >= 20000000 && preciocarro <=20000000)
{
MessageBox.Show("Puedo comprar carrito!!!!");

• Manejo de cadena y conversión de tipos:
La palabra clave string es un alias de la clase System.String de la plataforma .NET, las cadenas en C# son objetos, no matrices de caracteres; sin embargo, se puede obtener un carácter arbitrario de una cadena por medio del índice (pero no modificarlo). Las cadenas son inmutables, una vez creadas no se pueden modificar, únicamente se pueden copiar total o parcialmente.
El operador == indica si dos referencias se refieren al mismo objeto, pero si se usa este operador en dos variables tipo string no se prueba su referencia sino la igualdad del contenido entre las cadenas.
Las cadenas, se pueden concatenar mediante el operador +, por ejemplo
bool palabra = "universidad" == "universidad";

• Vectores: Las variables de tipo arreglo (array), si permiten almacenar y procesar conjuntos de datos del mismo tipo a la vez, aquí cada dato dentro del arreglo se llama: elemento del arreglo, se simboliza y procesa usando el nombre del arreglo respectivo y el subíndice indicando la posición relativa del elemento con respecto a los otros elementos del array, teniendo en cuenta que en C# la primera posición, elemento o renglón es el 0 (cero), ej.
NOMBRES

José →nombres(0)
Pedro → nombres(1)
Ana → nombres(2)
Juan → nombres(3)

Metodos: son aquellos bloques de código que se ocupan de manejar los datos de la clase., ejemplo:
acceso tipo NombreMetodo(TipoArg1 arguento1, TipoArg2 arguento2 ...)
{
// Aquí se codifica lo que tiene que hacer el método
}

• Clases: Una clase es una plantilla de la que luego se pueden crear múltiples objetos con características similares, que define atributos (variables) y métodos (funciones), comunes a los objetos de ese tipo, donde cada objeto tendrá sus propios valores pero compartirán las mismas funciones. Se debe crear una clase antes de poder crear objetos (instancias) de esa clase; el objeto es una instancia de una clase, por ejemplo:
class [nombre de la clase] {
[atributos o variables de la clase]
[métodos o funciones de la clase]
[main]
}

• Herencia: es otro tipo de relaciones entre clases, significa que se pueden crear nuevas clases partiendo de clases existentes, estas tendrán los atributos, propiedades y métodos de la 'superclase' o 'clase padre' y se le podrán añadir otros atributos, propiedades y métodos propios.

Eventos: Es lo que sucede o hace el programa para que realice un determinado botón, función, formulario, caja de texto, etc.

• Enumeraciones (enum): son tipos que agrupan un conjunto de constantes, permiten definir un conjunto de constantes integrales con nombre que pueden asignarse a una variable, así, para definir una variable la cual su valor representará un mes del año, como son doce valores que almacenará dicha variable, entonces se puede usar un tipo de enumeración, declarado con la palabra clave enum, ejemplo:
enum Months : byte { Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec };

Palabras reservadas del lenguaje C#:
abstract
event
new
struct
as
explicit
null
switch
base
extern
object
this
bool
false
operator
throw
break
finally
out
true
byte
fixed
override
try
case
float
params
typeof
catch
for
private
uint
char
foreach
protected
ulong
checked
goto
public
unchecked
class
if
readonly
unsafe
const
implicit
ref
ushort
continue
in
return
using
decimal
int
sbyte
virtual
default
interface
sealed
volatile
delegate
internal
short
void
do
is
sizeof
while
double
lock
stackalloc
else
long
static
enum
namespace
string

jueves, 20 de marzo de 2014

Análisis y Diseño en UML de un Sistema de Información


Análisis y Diseño en UML de un Sistema de Información

Sección de Diseño en UML


Presentación:
Los proyectos de desarrollo de software de calidad, se caracterizan por un ciclo de vida bien dirigido y un buen análisis de requerimientos. Para el análisis y diseño orientado a objetos se debe identificar, especificar y analizar (modelos de análisis) de los requisitos para así llevar a una correspondiente diagramación a través del Lenguaje Unificado del Modelado UML, para lo cual existen software que permiten realizar éstos diseños.

Diagrama de caso de uso general del sistema que se propone (ParkSoft).
Diagrama de clases identificado a partir del análisis con sus respectivos objetos y herencia
 
Tome alguno de los requerimientos realizados, identifique un objeto que pase por 3 tipos de estados (ejemplo si es una nomina el empleado podría tener los siguientes estados: 1.acitvo 2.En Licencia, 3. Vacaciones 4.Retirado) y realice el diagrama de estados correspondiente.


Escoja una actividad realizada en el sistema de información propuesto y realice un diagrama de actividades calles.
 
Realice el diagrama de secuencia donde muestre la colaboración entre los elementos de requerimientos funcionales del sistema propuesto.
 
Realice el diagrama de componentes del sistema de información de acuerdo a como quedará después de terminado.  
 

Tecnología Orientada a Objetos


Tecnología orientada a objetos

Conocida como TOO, esta se basa en el proceso de construcción y uso de conocimientos, objetos y clases, y su interacción. Apoyado en varias técnicas como: herencia, modularidad, polimorfismo, y encapsulamiento.

Es una forma de programar que se acerca más a como expresaríamos las cosas en la vida real a diferencia de otros tipos de programación.

La TOO pretende simular el mundo real a través del significado de objetos que contienen características, atributos y funciones. Por esto los lenguajes orientados a objetos se clasifican como Lenguajes de 5a generación.
Los 4 conceptos básicos del modelo orientado a objetos son:
- Objetos: Los objetos son conceptos o modelos del mundo real, los cuales tienen límites e identidad pueden ser reales o abstractos, simples o complejos y están compuestos de datos, características y operaciones, ejemplo:
Casa, carro, empleado, paciente, cliente, etc.
- Clases: Es la implementación en software de cualquier tipo de objeto. Describe la estructura de datos y los métodos operativos permisibles y aplicables a cada objeto, sus propiedades y comportamientos.
El método es parte de la clase, pero no parte del objeto; podría no ser parte de la clase pero ser parte de la clase de mayor nivel de jerarquía de clases.
Los métodos, son los comportamientos u operaciones, que se representan mediante pequeños programas (procedimientos o rutinas).
Por ejemplo: Empleado, puede datos como (Cédula, cargo, salario, teléfono, estado civil, etc.) Además de esto, la clase define un conjunto de operaciones que permiten el acceso y modificación de los datos de dicho objeto (modificar, eliminar, agregar, etc.).
- Herencia: es la reutilización o capacidad de reutilizar código sin alterarlo, programando cosas adicionales o diferentes, así permite la reutilización de parte de las subclases, ejemplo:
El objeto Vehículo, puede tener subtipos (Público y particular) y estos pueden tener subtipos así: Público (Taxi, colectivo, bus, etc.) y particular (automóvil, camioneta, campero, etc.)
- Envío de mensajes: Son las Solicitudes que realizamos para que un objeto haga algo y produzca una operación que origina un resultado, invocando o llamando una operación específica.
Este mensaje o solicitud debe contener el nombre del objeto, el nombre de una operación y también puede tener otros parámetros.
Ejemplo: Una calculadora, se puede enviar una solicitud al programa por medio de un comando (teclado) para que este mediante determinada acción realice una operación y muestre un resultado en pantalla.
Herramientas
Independientemente de la metodología de desarrollo de software que se use, es necesaria una herramienta para crear los diagramas UML, y para esto hay varias que son de uso libre (gratuitas). Tal como los planos de los arquitectos,  cuando se desarrolla software se requieren ciertos modelos para entender las funcionalidades del sistema a desarrollar y documentar las características, se usa el software de modelado UML.
Así nacieron las herramientas CASE (Computer Aided Software Engineering) o sea Ingeniería de Software Asistida por Computador. La mayoría de herramientas de modelado UML son costosas, pero hay dos alternativas gratuitas open source (código abierto), entre muchas otras, muy buenas que son:
•StarUML
•ArgoUML
Estas se pueden descargar de:
En mi caso descargué el staruml  para poder implementar los diagramas solicitados está en ingles pero es muy completo.
Diagrama de clases donde identifique 3 objetos de la clase DISPOSITIVOS MOVILES, donde identifique: Atributos y Métodos de cada objeto. Recuerde que estos objetos tienen herencia de la Superclase.
Diagrama de Caso de Uso del proceso para inscribir materias en una universidad.
 

 

Análisis y Diseño en UML de un Sistema de Información


Análisis y Diseño en UML de un Sistema de Información

Sección de Análisis y Requerimientos

Con base en que todas las metodologías de desarrollo de software consideran que el desarrollo de software se divide en cuatro 4 fases que son:
            - Análisis
            - Diseño
            - Implementación
            - Mantenimiento
1. Identificar una necesidad del mundo real en donde se pueda aplicar lo visto en este módulo para realizar el modelo correspondiente a la creación de un sistema de información.

-- Para mi caso, voy a tomar el caso de un parqueadero, en donde se requiere que se sistematice el ejercicio diario, con todas sus tareas a saber: control y registro del ingreso de vehículos (placa, marca color, hora de entrada y de salida), control de tarifas y de ingresos totales diarios, control de usuario-cajero (turno de mañana, tarde y fin de semana), número de cupos disponibles, cupos con mensualidad (tarifa y base de datos de los usuarios de mensualidad), un control de acceso para el administrador quien realiza el cierre, etc.

La idea de implementar el Sistema de Gestión de Parqueaderos, nace de la necesidad de tener un mayor control, manejo, tanto de la parte económica y lucrativa, llevar estadísticas de la parte de uso y clientes, tener una base de datos de los clientes frecuentes, un histórico de archivo que permita comparaciones y conclusiones del funcionamiento del establecimiento y herramientas que exploten al máximo de los recursos y las instalaciones para sacar el mejor provecho de ellos, tener ideas que permitan mejorar los servicios prestados y proponer soluciones a los que no están implementados, entonces en la fase de análisis debemos:

2. Realizar un estudio preliminar, que contenga lo siguiente:

2.1. Definición del problema o necesidad:
 El control diario de clientes se realiza de manera manual llenando un recibo, donde se anotan los datos del propietario, datos del vehículo, horas de salida y entrada, el valor a cancelar. Esto genera demoras al momento de realizar el registro, se generan pérdidas de información y al generar el valor del servicio puede resultar erróneo.

Entonces, se tiene la necesidad de crear una aplicación que permita realizar estas labores más ágilmente, donde los datos se ingresen rápidamente, se guarde la información con más confiabilidad evitando extraviar información y que generé un cálculo eficiente del costo del servicio.

En este caso se desea implementar un software que supla las expectativas de control y manejo para un parqueadero, facilitando las formas de prestar el servicio, la conservación de la infraestructura y los recursos de la organización, en donde se integren la visión, los procesos y la cultura organizacional basados en la sistematización, donde se espera:

-           Modernizar los procesos mediante la implementación de una herramienta informática.

-           Facilitar el acceso a la información y archivos, por ejemplo implementando bases de datos.

-           Facilitar la comunicación de su gestión y de su historia.

-           Adoptar medidas técnicas necesarias para la protección y preservación de los recursos y del servicio.

El proyecto de diseño del software a crear debe cubrir:

          Los sistemas anteriores (si hay alguno implementado), todas sus comunicaciones y redes.

          Ofrecer la viabilidad de conexión, interfaz y funcionamiento con futuros programas y/o aplicaciones.

          Cumplir con las normas que estén vigentes con respecto a las funciones, características o servicios que presta la organización.

          Cumplir con las políticas, principios y reglamentos de información, bases de datos, archivos y memoria, con respecto a las funciones.

          Compatibilidad con los sistemas existentes si los hay y un estudio de elementos necesarios para su implementación (computadores, impresora de recibos, una cámara, etc.).

 El diseño de entradas y salidas debe ofrecer tanto al usuario de ingreso y al funcionario control sobre los servicios requeridos para la gestión de los registros y de los archivos como son: espacios o puestos disponibles, tarifas, horarios de acceso y salida, cupos en determinados horarios, tiempos y estadísticas de uso.

 2.2. Realización del levantamiento de información con el fin de reconocer los elementos que hacen parte del programa tal como lo entiende el usuario/cliente

R/ Se realiza entrevista al gerente, dueños y empleados del parqueadero, quienes están interesados en adquirir una aplicación que mejore y agilicé sus trabajos y de allí se genera una serie datos relevantes para aplicar a dicha aplicación:

- Datos del vehículo: Placa, marca, color, tipo de vehículo (carros o motos), modelo, estado, fotos.
 - Datos del propietario: nombre, documento de identidad, cargo y dependencia para el caso de una empresa, apartamento o casa en el caso de un conjunto cerrado, foto, etc.
 - Datos de la planta física o infraestructura del parqueadero: cupos asignados y disponibles, cupos especiales para incapacitados, para visitantes si los hay, horarios de uso permitido, etc.
 - Datos tarifarios: valor del minuto, por horas, días, semanas, mensualidades, quienes se encuentran al día o en mora en los pagos, etc.

 - Permitirá tener datos estadísticos: Horarios de mayor flujo vehicular, horas donde hay más cupos disponibles, tipos de vehículos que mas frecuentan el parqueadero, record de entradas y salidas de determinados vehículos o cupos usados y disponibles, etc.

Se debe tener en cuenta luego de la implementación, una capacitación, acompañamiento y seguimiento en estos procesos, a personas que llevan años realizándolos de forma manual o rutinaria.

 2.3. Realizar un estudio de factibilidad técnica, económica y operativa
* Factibilidad técnica:
-           3 Equipos de computo (Gama media) marca DELL con procesador Intel Core i3 2.8 GHz,  4 GB  de memoria RAM (DDR 3), Disco duro de 500 GB, tarjeta de video, sonido y red integrados, Grabador de DVD, monitor LCD de 19”.
-           4 cables UTP Cat 5e, LAN Cable (CAT5E) para conexión entre pc´s –      switch, router – switch.
-           1 Switche D-link  8 Ptos 10/100
-           Red Lan Canaleta para cableado (interconexión de los PC).
-           Router Dlink Dir 610.
-           1 PC será usado como servidor web y de archivos.
-           2 PCs para el desarrollo del aplicativo web.
* Factibilidad económica:
Recursos
Proveedor
Valor Unidad
Total Costos
Hardware
3 PC DELL
DELL
$1.300.000
$3.900.000
1 Impresora De Tiquetes
 
$300.000
$300.000
1 Router D-link DIR 610
 
$80.000
$80.000
Software
PARKING Software Manager + MySQL Standard Edition
Oracle
$3.000.000
$3.000.000
Humano
 
1 Ingeniero de Sistemas.
 
$2.000.000
$2.000.000
2 Tecnólogos en Sistematización de Datos.
 
$700.000
$1.400.000
Otros
Teléfono e Internet
ETB
$90.000
$90.000
Capacitación Adicional
Nosotros
$100.000
$100.000
Insumos de oficina
Homecenter
$400.000
$400.000
TOTAL DE COSTOS
$ 11.270.000


Factibilidad operativa:

El sistema es factible operativamente por que surge de la necesidad de mejorar el sistema de registro y control manejado dentro de la empresa, por lo cual este nuevo sistema se enfoca en resolver el problema, generar más orden en los datos de clientes, datos de automóviles, y controlar la información de los mismos.

 2.4. De acuerdo a los Fundamentos de Análisis de requerimientos identifique del sistema propuesto: Requerimientos funcionales y no funcionales.

Requerimientos, son las condiciones que debe cumplir un sistema para satisfacer un contrato, norma, especificación, servicios que el sistema debe proporcionar a los usuarios y las restricciones y condiciones de uso.

Funcionales, son los que describen los procesos, cálculos y acciones que debe desarrollar el sistema, lo que el sistema debería hacer, su funcionalidad o servicios que se espera que el sistema arroje (entradas y salidas, excepciones, etc.)

No funcionales, son los que indican las restricciones de la implementación de los requisitos funcionales, propiedades del sistema o el tiempo de respuesta.

a- Requerimientos funcionales: que debe hacer el sistema y que no (servicios o funciones y restricciones)

           - El sistema debe generar un reporte de salida (PDF, XLS, etc.)
            - El sistema debe registrar la información de los usuarios (BD)
            - Permisos a diferentes tipos o roles de usuario (niveles de usuario y       contraseñas)
            - Plataforma (Java, C#)

 b- Requerimientos no funcionales (): no dejar enviar solicitudes sin datos, adjuntos de un tamaño máximo especifico, solo archivos de tipo PDF, XLS, etc.

            - Amigable de forma específica (definir de forma cuantitativa, no es lo mismo decir que se quiere un sistema rápido a decir tiempo de espera de 5 segundos)
            - Interfaz gráfica de fácil lectura, para garantizar la navegabilidad y velocidad de procesamiento e gráficos
            - Compatibilidad con todos los navegadores
            - Posibilidad de guardar registro fotográficos de los vehículos
            - Generar consultas de los datos de los personales de los clientes y         vehículos ingresados.

 2.2  El levantamiento de requerimientos o de información, es una fase “colaborativa” (Cliente - Proveedor) donde se evalúa: Reconocimiento del problema.

1- identificar los requerimientos: Desarrolladores y usuarios describen los requisitos que debe satisfacer el software que se desarrollara, se deben identificar de forma efectiva. Para esto se debe captar el problema a satisfacer para poder tener alternativas de solución (considerando los recursos de la organización) “NECESIDAD”.

Práctica levantamiento de información, se puede hacer en sesiones, preparación, comunicación y entrevistas (preguntas concretas: qué, cómo, cuando, porqué, donde, etc.)

Así entonces, para nuestro caso se toma como referencia la entrevista con el cliente. Y se desarrolla en tres etapas:

 - 1) Analizar los requerimientos: Se analizan los requisitos detectando y resolviendo errores y concretando las necesidades del software:

El Proceso de preparación para el levantamiento de los requerimientos y ver la dimensión del proyecto, se realiza haciendo una reunión con los involucrados para recolectar la información de las necesidades (Entrevista).

Formas de desarrollar el levantamiento de información:
 - Lluvia de ideas
 - Análisis de documentación
 - Grupos focales
 - Prototipos
 - Encuestas y/o cuestionarios (ojalá ente dos entrevistadores, preparación)

 Ejemplo: incluir a los Usuarios relevantes que están involucrados (desde mandos altos a bajos), Preguntas (abiertas y cerradas),  etc.

 - 2) Especificar los requerimientos: Especificar los requerimientos sin errores para su validación:
- registrar los datos del propietario o conductor del vehículo ingresado al parqueadero (nombre, identificación, vehículo).
- registrar los datos del vehículo ingresado al parqueadero (placa, marca, color, etc.).
- registrar la hora de entrada y salida respectiva de cada vehículo.
- generar el costo por el servicio de estacionamiento a cobrar por el personal del parqueadero.

Guardar todos los datos ingresados por el usuario en una base de datos.

 - 3) Validar los requerimientos: Conclusiones de las entrevistas y estudios de factibilidad.


- ¿Qué usuarios controlarán el sistema? R/
El administrador y 2 empleados encargados en la entrada y salida de los vehículos.

 - ¿Número de usuarios?
R/ 3 

 - ¿Tipos de Roles?
R/ Administrador, usuario (empleado)

A continuación presento los diagramas de los casos de uso correspondientes:
Usuario:

 Casos de uso: Administrador
 
 
DEFINICION DE ACTORES:

Actor
Descripción
Administrador
Puede cambiar su contraseña, usuario y localización, además de actualizar sus datos.
Ingresa información de los clientes.
Ingresa la información de los vehículos.
Consulta el estado de los usuarios.
Consulta el estado de los vehículos.
Inactiva la información de los clientes.
Inactiva la información de los vehículos.
Consulta los parqueaderos disponibles.
Supervisa el recaudo por alquiler.
Usuario
 
Puede cambiar su contraseña, usuario y localización, además de actualizar sus datos.
Ingresa información de los clientes.
Ingresa la información de los vehículos.
Consulta el estado de los usuarios.
Consulta el estado de los vehículos.
Consulta los parqueaderos disponibles.
Registra el recaudo por alquiler.