Datos personales

Tuxtla Gutierrez, Chiapas, Mexico

sábado, 8 de diciembre de 2007

4 Introducción a la programación.

4.1 Clasificación del software.

Antes de comenzar con una tediosa clasificación de los tipos de software, es de vital importancia que definamos el concepto de SOFTWARE…

Como nuestro profesor de preparatoria dijera: “Es todo aquel elemento que se puede ver pero no tocar dentro de una computadora”, aunque claro, este concepto no es suficiente para aclarar todo lo que encierra esta palabra.

En realidad, el software es quien determina la tarea a realizar por la computadora, esto se debe a que en él están contenidas las instrucciones para ejecutar las operaciones necesarias, son los que les dicen a los componentes físicos de la maquina que deben hacer.

Bien, ya aclarado el punto anterior prosigo.

El software se divide básicamente en dos grandes categorías, pero dentro de cada una de ellas estan otras especificaciones que delimitan a la infinidad de programas que corren actualmente.Tenemos al software de sistema y al software de aplicación.

4.1.1 Software del sistema.

Este es quizá el más importante de todos, ya que a gracias a él la computadora es capaz de inicializarse, reconocer los dispositivos que posee, verificar errores de inicio, asimismo el sistema operativo se encarga de ejecutarse para posteriormente interactuar con el usuario e indica el modo de uso de los dispositivos como el disco duro, monitor… y es así como una computadora está lista para usarse. Es como el software que le da un soplo de vida virtual.

4.1.2 Software de aplicación.

Es aquí donde se encuentran todos los programas que tienen una utilidad para nosotros, todos aquellos que podemos usar para las necesidades más elementales y aquellas que despierten interés. Así también tiene varias categorías:
  1. Aplicaciones de negocios.
  2. Aplicaciones de utilerías.
  3. Aplicaciones personales.
  4. Aplicaciones de entretenimiento.

Las aplicaciones de negocios son de las más utilizadas, ya que no solo abarca el ámbito de los negocios, sino que también se orienta hacia las escuelas de casi cualquier nivel. Estas aplicaciones son muy útiles ya que agilizan el trabajo, porque los errores no son del todo importantes ya que se pueden corregir fácilmente y no se observan en el resultado final. Para terminar rápido tenemos los procesadores de texto que nos permiten crear todo tipo de documentos de manera muy fácil y rápida, nos proporciona herramientas para darle formato, editar… todo esto para que tengan una presentación respetable. También están las hojas de cálculo que nos permiten generar redundantemente hojas de cálculo, facilitándonos formulas para que el proceso de realizar operaciones no se complique, el único “trabajo duro” sería introducir los datos. Por otro lado las bases de datos son de vital importancia en muchas empresas y escuelas, ya que por medio de estas podemos accesar a los datos que requiramos por muy específicos que sean

Generalizando, todas estas aplicaciones para negocios son las herramientas que se necesitan para entregar trabajos profesionales y para que el trabajo “de oficina” se facilite.


Las aplicaciones de utilería son todas aquellas aplicaciones que muchos no utilizan, pero que son muy importantes para el mantenimiento de las computadoras. Todo lo que tiene que ver con que la computadora no pierda su eficiencia, ya sea depurando errores, borrando archivos ineficientes, desfragmentando disco, escaneando errores de disco, o restaurando a un estado anterior.Es de vital de importancia que estas herramientas sean utilizadas, para que los problemas no se incrementen. La mayoría (si no es que todas) de estas herramientas se encuentran en los accesorios, en la parte de herramientas de sistema del menú inicio.


Las aplicaciones personales no son mas que las aplicaciones que ayudan a mantener un orden en la información que son “PERSONALES”, y que requieren estar a la mano siempre, así como actualizadas. Las más comunes son las que ordenan la agenda de direcciones, control de cheques, anotaciones propias, y el más comercial correo electrónico.


Las aplicaciones de entretenimiento no son más que la que tienen que ver con el ocio, como los videojuegos, los reproductores… son lo que hacen que la ida en la computadora no sea tan aburrida y llena de letras.

4.2 Conceptos de la programación.

4.2.1 Definición de programa.

Un programa es utilizado para resolver problemas, permite que algunas operaciones se agilicen; y para que suceda necesitan de un conjunto de instrucciones que se escriben en algún lenguaje de programación que indicarán a la computadora la manera en que se realizaran esas operaciones

4.2.2 Definición de programación.

La programación es el proceso que involucra un desarrollo de la lógica para la creación de algoritmos que una computadora pueda comprender, y posteriormente escribirlos en un lenguaje de programación. Es necesario precisar un objetivo y el modo en que se ejecutara dicho programa, para esto es útil planear todo el proceso.

4.2.3 Definición de lenguaje de programación.

Para ser llamado propiamente “lenguaje”, requiere tener símbolos establecidos, una sintaxis para ordenarlos, palabras que indiquen acciones específicas… y si cumple con todos esos requerimientos y es aplicado a la programación, es entonces y solo entonces llamado “lenguaje de programación”.Estos lenguajes son los utilizados para crear programas cuya único objetivo será la resolución de problemas. Hoy en día hay varios lenguajes de programación, todos ellos pueden llevar al mismo fin, lo único que los diferencia son los gustos de los usuarios.
Así también estos lenguajes tienen sus respectivas clasificaciones, son 3:

Lenguaje maquina, lenguaje de bajo nivel (ensamblador) y lenguaje de alto nivel.

Lenguaje máquina: Este es quizá el lenguaje más difícil de comprender para las personas, ya que su representación son únicamente numéricas, son cadenas y cadenas de dígitos binarios, es decir que únicamente acepta dos tipos de números, en este caso 0 y 1. Este lenguaje es el que la computadora comprende perfectamente, lo interpreta como instrucciones además que le especifican las posiciones de memoria implicadas en la operación; a estas se les denomina “instrucciones de máquina” o “código binario”. Pero bien, estas instrucciones variarán de máquina a máquina, ya que todo depende del hardware que contenga. De este lenguaje se habla mucho y en muchas ocasiones, los vemos hasta e imágenes, pero en realidad el usuario común no conoce en gran medida de él, pero tampoco le interesa.

Lenguajes de bajo nivel: El lenguaje de bajo nivel no es tan difícil como el lenguaje maquina, puesto que tiene la posibilidad de incluir texto en el código; aunque claro, al igual que el código de maquina dependerán del tipo de hardware que se encuentre dentro de una computadora. El lenguaje más conocido de este tipo es el llamado ensamblador y contiene una serie de instrucciones bien establecidas, a estas se les conoce como “nemotécnicos”.de estos existen una gran variedad, pero se conocen los que son de mayor uso, o los que son fácilmente tomados como referencia de ejemplo; dentro de estos tenemos los que permiten realizar operaciones matemáticas, por ejemplo: ADD, SUB, DIV que en español vendrían siéndola suma, la resta y la división. Esos son solo algunos.Aunque de cualquier manera las operaciones con nemotécnicos resultaría sencilla de comprender, es necesario que cando se trabaje con el lenguaje ensamblador posteriormente se traduzca al lenguaje maquina, ya que se requiere para que la computadora ejecute la instrucción de manera directa. En este proceso de traducción se encuentra el denominado programa fuente (que no es más que el lenguaje ensamblador) y el programa objeto (que el código ya traducido y con el que trabaja la maquina), que como ya había mencionado es de fácil entendimiento para la computadora.

Lenguajes de alto nivel: Son llamados así porque en cierta forma poseen algo de interactividad tanto con las computadoras como con el usuario, ya que son de fácil entendimiento para ambos, además que su escritura y diseño no depende del tipo de hardware que posea, por lo tano se generaliza su uso en cualquier computadora; es por esto que son los más utilizados por los programadores. El uso de este lenguaje puede ser muy accesible, aunque como todos requieren de una buena lógica. El modo de uso para estos no es de gran dificultad, ya que se pueden conseguir fácilmente manuales. En fin son muy eficientes y pueden llevarse a cualquier lugar y ejecutarse en cualquier maquina y el modo en que se opera no varía en gran medida.

4.3 Datos.

4.3.1 Definición de datos.

Los datos pueden ser interpretados de distintas maneras dependiendo del área que se este hablando, pero en programación será la materia prima de donde se deriva la información, asimismo nos da detalles de cómo son los objetos. Los datos nos proporcionan mucha información y son de gran utilidad para que se conozca con lo que se está trabajando.

4.3.2 Tipos de datos.

Como se mencionó anteriormente, un objeto nos proporciona la información necesaria para que se conozca más a detalle un objeto con los que opera una computadora. Aquí se encuentran los datos de entrada que después de un proceso se convertirán en los datos de salida; ninguno es menos importante que el otro, la relación entre ellos es lo que mantiene la estabilidad en los procesos de datos.
Los datos pueden dividirse en categorías, pero todo depende del tipo de lenguaje que se uso o en su defecto del hardware que se utiliza; sea como sea encontramos tres tipos de ellos:
  1. > Numéricos
  2. > Lógicos.
  3. > Cadenas.
Datos Numéricos.
Estos son fáciles de reconocer, puesto que representan cantidades y valores determinados. Además son conocidos en matemáticas como de tipo entero, con fracciones decimales… todos aquellos que puedan representar un valor.
Tenemos a los de tipo entero (integer) que como su nombre lo indica, no posee valores decimales ni mucho menos, aunque si pueden adoptar valores negativos (49, 33, -580…); también tenemos a los del tipo real (real), que como su nombre lo indica son todos aquellos números que en matemáticas se identifican como números reales, de esta forma son fáciles de reconocer por lo que no es necesario explicarlos más a fondo.
Cadenas.
Estos no son más que los datos que se pueden introducir de manera textual, es decir que puede incluir texto, no importa que es lo que se introduzca para realizar operaciones, puesto que no implican el conteo de valores (aún incluyendo números), simplemente sirve para que el proceso de algún programa pueda ser explicado (por ejemplo).
Los datos de tipo cadena tienen también su propia clasificación, en ella existen las cadenas de datos tipo carácter (char) y las de tipo cadena (string). Esta clasificación es la que nos pondrá límites en lo que se puede introducir.
Datos de tipo carácter: son un sinnúmero de caracteres que la computadora puede reconocer, estos se encuentra debidamente ordenados, además que los datos de este tipo, únicamente contienen un solo carácter, que pueden ser de los tipos numéricos alfabético o los especiales (símbolos que indican operaciones).
Datos tipo cadena: estos también son un conjunto de caracteres, pero que estarán delimitados por comillas o bien apóstrofes, y el largo lo determinará la posición de la última comilla. De esta manera específicamente puede trabajar este tipo de datos, porque de lo contrario, si no se pusieran las comillas simplemente la operación que se estará ejecutando no tendría sentido; es muy importante conocer las normas de como introducir datos de cualquier tipo. Para no complicarse, los símbolos del código ASCII son los que se pueden introducir a una cadena sin ningún error.
Datos Lógicos: Es lo que normalmente se utilizan a la hora de tomar decisiones, ya que únicamente permite la entrada de dos valores: VERDADERO Y FALSO, pero que al final de la decisión únicamente se toma uno de ellos para seguir una cadena de ejecuciones. Como es una toma de decisiones, en sí los comandos que se están enviando son SI y NO, a sea para seguir una secuencia de instrucciones o bien dar respuesta a una cuestión.
Los tipos de datos que se mencionaron, se conocen como de “Tipo Simple”, esto se deba que la estructura que los identifica no posee gran complejidad, sino que son ordenas básicas.Pero así como encontramos los simples, de una manera aditiva tenemos los llamados de Tipo Compuesto, que no son más que aquellos datos en los que la estructura ya estará definida, es decir la predeterminación es la que hará convertirse en compuesta.
Los de Tipo compuesto también tienen varios elementos que los definen entre ellos, entre ellos tenemos:
a) SUBRANGO:
Estos son fáciles de visualizar, ya que se refiere a aquellos que traerán definido su intervalo a usar. Ya son específicos, lo que permite un mayor control que si el intervalo no estuviera bien definido; como en el caso de los REALES, así que estos no pueden ser usados para crear enumerativos, por lo mismo de que su intervalo no está definido. Los valores que si pueden ser usados son los enumerativos de tipo entero (0… 100) y los enumerativos de tipo cadena (‘A’…’Z’).
b) ENUMERATIVOS:
Es cuando se introducen los datos de manera individual, que se van definiendo dato por dato, estos se tienen que definir entre paréntesis para que el valor no varíe o cree un error. Como ejemplos tenemos (0, 60, 55, )
.
.
.
.
.
.
.
.
.
.
.
.

4.4 Operadores, operandos y expresiones.

Operadores:
Un operador es el símbolo que determina el tipo de operación o relación que habrá de establecerse entre los operandos para alcanzar un resultado, se clasifican en tres grupos:

Aritméticos, Relacionales y Lógicos.


Operadores Aritméticos:

Son aquéllos que permiten la realización de cálculos aritméticos. Utilizan operandos numéricos y proporcionan resultados numéricos.

+ Suma
- Resta
* Multiplicación
/ División Entera
Div División Entera
Mod Residuo
^ Exponenciación

Todos los operadores aritméticos no existen en todos los lenguajes de programación, por ejemplo, en Fortran no existen Div y Mod
El símbolo / se utiliza para la división real, y el operador Div representa la división entera

Operadores Relacionales: Permiten realizar comparaciones de valores de tipo numérico o carácter, estos operadores sirven para expresar las condiciones en los algoritmos y proporcionan resultados lógicos.
.
.
.
.

4.5 Prioridad de operadores, evaluación de expresiones.

Determina el orden en que habrán de realizarse las operaciones en una expresión determinada. Para obtener la prioridad se deben conocer las siguientes reglas:

Las operaciones que están encerradas entre paréntesis se evalúan primero. Si existen diferentes paréntesis anidados (interiores unos a otros), las expresiones más internas se evalúan primero.
En caso de coincidir varios operadores de igual prioridad en una expresión o subexpresión encerrada entre paréntesis, el orden de prioridad en este caso es de izquierda a derecha.

Cuando se desea realizar una operación con baja prioridad por adelantado, debe agruparse a los operandos involucrados.

Los paréntesis tienen prioridad sobre el resto de las operaciones.
Determina el orden en que habrán de realizarse las operaciones en una expresión determinada.

Para obtener la prioridad se deben conocer las siguientes reglas:

Las operaciones que están encerradas entre paréntesis se evalúan primero. Si existen diferentes paréntesis anidados (interiores unos a otros), las expresiones más internas se evalúan primero.

En caso de coincidir varios operadores de igual prioridad en una expresión o subexpresión encerrada entre paréntesis, el orden de prioridad en este caso es de izquierda a derecha.

Cuando se desea realizar una operación con baja prioridad por adelantado, debe agruparse a los operandos involucrados.

Los paréntesis tienen prioridad sobre el resto de las operaciones.
.
.
.
.


sábado, 17 de noviembre de 2007

2 - Tecnicas Basicas de Modelado de Objetos

Según la Real Lengua Española: Técnica: es Conjunto de procedimientos y recursos de que se sirve una ciencia o un arte. Modelado: es una técnica que ayuda a “visualizar” el sistema a construir. Objeto: Un objeto es una representación detallada, concreta y particular de un “algo”. Tal representación determina su identidad, su estado y su comportamiento particular en un momento dado.
En conclusión es Una serie de procedimientos para visualizar una serie de caracteristicas asignadas a un objeto

2.1- Definicion de Clases Atributos Metodos y Objetos

Es decir, en java las variables de tipo básico son el nombre de una zona de memoria en la cuál podemos almacenar valores, pero que en cambio, las variables de tipo objeto son en realidad referencias (punteros o alias) de objetos.

Una variable de tipo objeto no es un objeto completo, sino tan solo almacena la situación del objeto en la memoria del equipo. Esto es muy similar a lo que ocurre con las casas y las direcciones de dichas casas: la dirección calle Alcalá 950 es una dirección válida, pero no podemos mandar cartas a dicha dirección porque es…un descampado!!!

Lo mismo sucede con los objetos, podemos tener una variable para referirnos a objetos, pero la variable puede que no apunte a ningún objeto y por tanto no la puedo emplear para intentar acceder a un método o a un atributo del objeto referenciado por la variable, sencillamente porque no existe el objeto referenciado.

Una variable que no apunta a un objeto se asume que tiene un valor especial llamado null, e incluso podemos asignar el valor null a la variable:

Thread t = null;

Es por ello que se deben construir objetos y asignárselos a las referencias, usando la palabra clave new. new permite crear un objeto a partir de la descripción de la clase que le pasamos como argumento, por ejempo:

new Persona()

Conseguimos crear un objeto de la clase Persona, los paréntesis permiten especificar qué constructor estamos llamando al crear el objeto (veremos constructores más adelante).

Pero al crear un objeto persona como en el código anterior lo estamos creando como un objeto anónimo, es decir sin asignar el objeto a una variable de tipo referencia, desde la cuál poder referirnos al objeto y poder llamar a sus métodos y atributo, por ello lo más habitual será asignar el objeto a una variable como en: 0359

2.2 - El Modelo como resultado de la Abstraccion

En la especificación del UML podemos comprobar que una de las partes que lo componen es un metamodelo formal. Un metamodelo es un modelo que define el lenguaje para expresar otros modelos. Un modelo en OO es una abstracción cerrada semánticamente de un sistema y un sistema es una colección de unidades conectadas que son organizadas para realizar un propósito específico. Un sistema puede ser descripto por uno o más modelos, posiblemente desde distintos puntos de vista.

Una parte del UML define, entonces, una abstracción con significado de un lenguaje para expresar otros modelos (es decir, otras abstracciones de un sistema, o conjunto de unidades conectadas que se organizan para conseguir un propósito). Lo que en principio puede parecer complicado no lo es tanto si pensamos que uno de los objetivos del UML es llegar a convertirse en una manera de definir modelos, no sólo establecer una forma de modelo, de esta forma simplemente estamos diciendo que UML, además, define un lenguaje con el que podemos abstraer cualquier tipo de modelo.

La forma como vemos el problema tiene una profunda influencia en forma como acometemos el problema y le damos solución al mismo. Si pensamos que el mundo esta compuesto de clases (Abstracciones de la realidad y de la solución del problema) y objetos (instancias de éstas abstracciones) que interactúan entre si para realizar una funcionalidad, así veremos el mundo. Este es precisamente al paradigma a que le apuesta UML: el modelo orientado a objetos. Si vemos la realidad como compuesta de procesos donde cada uno a su vez se puede descomponer en subprocesos entonces estamos concibiendo la realidad según el modelo estructurado y la arquitectura del sistema en desarrollo estará conformada de programas y subprogramas.
  1. Para modelar un sistema complejo no es suficiente un único modelo se requieren múltiples modelos donde cada uno representa una vista (aspecto) del sistema; estos modelos se complementan entre si. Esta es la razón de la existencia de varios diagramas en UML que modelan diferentes aspectos del sistema, desde las vistas lógicas y físicas del sistema hasta los aspectos dinámicos, estáticos y funcionales del mismo.
  2. Cualquier modelo puede ser representado con diferentes grados de precisión. La precisión se puede ver desde dos ópticas: La primera es el grado de detalle con que se representa un modelo; por ejemplo, si lo que se desea es razonar acerca de los requerimientos del sistema con un cliente o usuario final, se puede elaborar un diagrama de clases que muestra las clases, sus atributos y operaciones así como varios adornos(multiplicidad) en las relaciones; por otro lado, si lo que se desea es transmitir el diagrama de clases para que sea implementado en un DBMS (Data Base Management System, Sistema Administrador de Bases de Datos) por un programador, el diagrama con toda seguridad contendrá la visibilidad de las características (atributos y operaciones) de las clases, los tipos de datos de los atributos y las signaturas de las métodos de las clases. La segunda forma de ver la precisión de un modelo se refiere al nivel de abstracción, ese decir, a los detalles y la vista (porción del sistema o realidad) que presenta un modelo al lector; por ejemplo, en un sistema Bancario que maneja los retiros que hacen los clientes ya sea en un cajero automático o humano, el diagrama de clases contiene decenas de éstas; sin embargo las personas encargadas de desarrollar la interfaz de un cajero electrónico estarían interesadas en las clases necesarias para realizar el comportamiento del cajero y omiten el resto de clases del sistema.
  3. Los mejores Modelos están ligados a la realidad. El símbolo de un actor en un diagrama de casos de uso representa, de hecho, un actor en el sistema real; así como un componente en un diagrama de componentes representa un componente físico del software. Cada elemento de UML como una clase, objeto, estado, componente o nodo tiene su correspondencia con algún elemento conceptual o físico del mundo real.

2.3 - El Uml como una Herramienta de Modelado de Objetos

El Lenguaje de Modelamiento Unificado (UML - Unified Modeling Language) es un lenguaje gráfico para visualizar, especificar y documentar cada una de las partes que comprende el desarrollo de software. UML entrega una forma de modelar cosas conceptuales como lo son procesos de negocio y funciones de sistema, además de cosas concretas como lo son escribir clases en un lenguaje determinado, esquemas de base de datos y componentes de software reusables.
Casos de Uso (Use Case) El diagrama de casos de uso representa la forma en como un Cliente (Actor) opera con el sistema en desarrollo, además de la forma, tipo y orden en como los elementos interactuan (operaciones o casos de uso).

Un diagrama de casos de uso consta de los siguientes elementos:

Actor. Casos de Uso. Relaciones de Uso, Herencia y Comunicación.
Elementos
Actor:
Una definición previa, es que un Actor es un rol que un usuario juega con respecto al sistema. Es importante destacar el uso de la palabra rol, pues con esto se especifica que un Actor no necesariamente representa a una persona en particular, sino más bien la labor que realiza frente al sistema.

Como ejemplo a la definición anterior, tenemos el caso de un sistema de ventas en que el rol de Vendedor con respecto al sistema puede ser realizado por un Vendedor o bien por el Jefe de Local.
Caso de Uso:
Es una operación/tarea específica que se realiza tras una orden de algún agente externo, sea desde una petición de un actor o bien desde la invocación desde otro caso de uso.
Relaciones:
  1. Asociación
  2. Es el tipo de relación más básica que indica la invocación desde un actor o caso de uso a otra operación (caso de uso). Dicha relación se denota con una flecha simple.
  3. Dependencia o Instanciación
  4. Es una forma muy particular de relación entre clases, en la cual una clase depende de otra, es decir, se instancia (se crea). Dicha relación se denota con una flecha punteada.
  5. Generalización
  6. Este tipo de relación es uno de los más utilizados, cumple una doble función dependiendo de su estereotipo, que puede ser de Uso («uses») o de Herencia («extends»).
  7. Este tipo de relación esta orientado exclusivamente para casos de uso (y no para actores).
  8. extends: Se recomienda utilizar cuando un caso de uso es similar a otro (características).
  9. uses: Se recomienda utilizar cuando se tiene un conjunto de características que son similares en más de un caso de uso y no se desea mantener copiada la descripción de la característica.
  10. De lo anterior cabe mencionar que tiene el mismo paradigma en diseño y modelamiento de clases, en donde esta la duda clásica de usar o heredar.

lunes, 12 de noviembre de 2007

2.4 - Planteamiento del problema.


Aquí es en donde se basa toda la parte fundamental de la estructuración del proyecto a realizar, porque es aquí donde se define y tienen en cuentan todos los aspectos y puntos que el programa debe de cubrir para satisfacción del cliente y su implementación del software.

Por eso a continuación de los pasos 2.4.1 y 2.4.2 se definen y se trata de adaptar la problemática que nosotros decidimos tomar para poder desempeñar nuestros conocimientos como desarrolladores e interpretación de la problemática del cliente al estado del software.
Como forma general el planteamiento de un problema es cuando nos dan el problema en concreto, sin indagar mucho a fondo y sin tener punto de apoyo o sencilla explicaciones del cliente para poder complente aun mejor la problematica, en nuestro caso se nos dice que quieren implementar un software para el control de inventario y cobranza de la boutique.

2.4.1. - Analizar El Enunciado Del Problema

El análisis comienza con la definición de un problema generada por clientes y, posiblemente, por los desarrolladores. El análisis hace que sea más precisa y expone las ambigüedades e incongruencias y no debería tomarse como inmutable, sino que tiene que servir como base para refinar los requisitos reales. El analista debe ser para los requisitos verdaderos de las decisiones del diseño y de implementación disfrazada de requisitos y atacar a estos pseudorequisitos, porque restringen la flexibilidad. El propósito del análisis subsiguiente es comprender en su totalidad el problema y sus implicaciones.
Problematica del equipo.
La problemaitca que se trabaja aqui es que no se lleva un control muy eficaz, de las piezas vendidas, las piezas apartadas, y las que son vendidas a pagos. Además se tiene un problema de llevar un registro de los accesorios y regalos que se venden por separado. Cabe mencionar que en estos cortes de caja se debe descontar el sueldo del empleado y no se hace de manera rápida.

Por lo cual el cliente nos dice que necesita un programa capaz de registrar un inventario total de la boutique, llevar apartados, crédito y ventas en efectivo. Todo esto mas, la extensión de un comprobante de pagos, ya fuese a contado o crédito.

2.4.2 - Identificar Funciones Del Sistema


Consiste en describir por escrito a nivel técnico los procedimientos relacionados con el programa y su modo de uso. También se debe documentar el programa para que sea más entendible.

¿Para quiénes son la documentación?

- Usuarios (Digitadores)
- Operadores
-Programadores
- Analistas de sistemas

Documentos que se elaboran: Manual de Usuario y Manual del Analista. A los usuarios se les elabora un manual de referencia para que aprendan a utilizar el programa. Esto se hace a través de capacitaciones y revisión de la documentación del manual de usuario. El manual del usuario no está escrito a nivel técnico sino al de los distintos usuarios previstos y explica en detalle cómo usar el programa: descripción de las tareas que realiza el programa, instrucciones necesarias para su instalación puesta en marcha y funcionamiento, recomendaciones de uso, menús de opciones, método de entrada y salida de datos, mensajes de error, recuperación de errores, etc.
Por no tener desarrollado el software no podemos escribir o llevar acabo este procedimiento, o en su caso hacerlo posible para nuestra problematica.

domingo, 21 de octubre de 2007

2.5 - Analisis.

Conforme a la problemática que se nos presenta con esta boutique, es que se necesita de entrada una forma mas compleja de manejar el control de dinero, tanto como de entrada y salida del mismo, además del control de producto que en nuestro caso (ropa y accesorios). Dentro de la misma problemática que tratamos debemos manejar distintos puntos como la forma de cobro, abonos o aparatos, en fin el contemplar los tipos de movimientos que el inventario físico sufrirá.

En esta problemática tenemos los puntos mas contemplados como en cualquier problemática de cualquier empresa que quiere dar un estupendo servicio de calidad y rapidez, por el ejemplo de tener una base de datos almacenados de los clientes que les consumen, el control de sus deudas, compras en fin en balance para poder tener en cuenta o consideración de sus movimientos así la empresa, todo depende de la problemática que se nos presente como en el caso nuestro solo tenemos que llevar el control uniforme del inventario y del costo de ventas y cobranza que se maneja a diarios para pode facilitar el proceso de inventario, mas frecuentemente.

2.5.1- Descubrir Objetos en el dominio del Problema.

  1. Codigo de barras
  2. Nombre ropa
  3. Descripción ropa
  4. Existencia ropa
  5. Precio ropa
  6. Clave
  7. Nombre accesorio
  8. Descripción accesorio
  9. Existencia accesorio
  10. Precio accesorio
  11. Nombre cliente
  12. Direccion
  13. Procedencia
  14. RFC
  15. Telefono(s)
  16. Fecha
  17. Folio
  18. Producto(s)
  19. Cantidad
  20. Precio unitario
  21. Precio total
  22. Importe
  23. Subtotal
  24. IVA
  25. Tipo de pago
  26. Total
  27. Inventario

2.5.2- Identificar atributos de los Objetos.

Código de barras

Códigos de identificación

Nombre ropa

Blusa
Pantalón
Vestido
Falda
Jeans
Descripción ropa

Material
Tela
Talla
Color
Temporada

Existencia
Cantidad en inventario

Precio ropa
Pecio distribuidor
Precio publico

Clave
Clave producto

Nombre accesorio
Dona
Diadema
Pulsera
Aretes
Collar

Descripción accesorio
Oro
Plata
Fantasía
Bañado en oro
Bañado en plata

Existencia accesorio
Cantidad en el inventario

Precio accesorios
Precio distribuidor
Precio publico

Nombre cliente
Apellido paterno
Apellido materno
Nombre(s)

Dirección
Calle o av. ntre
Numero
Colonia

Ciudad donde radica
Municipio
RFC
RFC


Telefono(s)
Casa
Celular
Alternativo

Fecha
Dia
Mes
Año
Hora

Folio
Numero de folio

Productos
Ropa
Accesorios

Cantidad
Ropa
Accesorios

Precio unitario
Precio ropa
Precio accesorio

Precio total
Precio unitario * cantidad

Importe
Importe

Subtotal
Subtotal

IVA
Precio total * 0.15

Tipo de pago
Contado
Crédito

Precio total
Precio total

Inventario
Existencia ropa
Existencia accesorios

2.5.3- Identificar métodos en los objetos.

Seleccionar marca de ropa y accesorios.

Ropa
Vendida.
Apartada.
Dar de alta.
Dar de baja.
Accesorios.
Vendida.
Dar de alta.
Dar de baja.


Comunicaciones para las ventas.

Internet.
Contado.
Sistema de apartado.
Créditos.

Teléfono.
Contado.
Sistema de apartado.
Créditos.

Personal.
Contado.
Sistema de apartado.
Créditos.

Cliente.

Tipo de pago.
Bancario.
Efectivo.
Cheques.

2.6- Introducción al diseño de solución.

Las soluciones que planteamos son dos que tiene que ver mucho, pues no se debe dejar pasar, como lo es mayor personal y sistematizar las entradas y ventas de las mercancías.

La primera solución la colocamos pues un personal mas, no caería nada mal. Pues el empleado tiene conocimientos técnicos y administrativos así uno podría encargarse de administrar las entradas y salidas de mercancías y el otro podría hacer inventarios del almacén.

La segunda pues ya seria obvio que deberíamos sistematizar las ventas, artículos, clientes y otros más, pues teniendo aun empleado con capacidades para manipular una computadora y saber lo básico. El ambiente seria agradable puesto el dueño solo vería lo que hay en caja y hacer el corte. Ya aprobado todas las factibilidades y viendo que cada una de las factibilidades se cumple se dispondrá a sistematizar la boutique.

Al sistematizar todo este problema y la boutique ampliaría sus mercado ya que retrasaría el tiempo de entrega, no perdería dinero, llevaría un control exacto de las entradas y salidas de mercancías y la información de cliente, entre otros. También podría ampliar su publicidad ya que al sistematizarlo y llevar su boutique al internet podría hacer vínculos para hacer publicidad, y hacer paginas destinadas ala venta de sus mercancías.

2.6.1- Representación Gráfica de una clase.

Un diagrama es la representación gráfica de un conjunto de elementos, normalmente mostrado como un grafo conexo de nodos (elementos) y arcos (relaciones).

Un diagrama es sólo una proyección gráfica de los elementos que configuran un sistema.
Por ejemplo, se podrían tener cientos de clases en el diseño de un sistema de recursos humanos de una empresa, y nunca se podrá ver la estructura o el comportamiento de ese sistema mirando un gran diagrama con todas esas clases y relaciones. En cambio, sería preferible realizar varios diagramas, cada uno centrado en una vista. Así, podría crearse un diagrama de clases que incluyese clases como: Persona, Departamento y Oficina, agrupadas para formar el esquema de una base de datos. Probablemente, algunas de las clases mencionadas formarán parte de un diagrama de interacción que reasigne un objeto de la clase Persona a un objeto de la clase Departamento.

Como muestra este ejemplo, un mismo elemento de un sistema (como la clase Persona) puede aparecer muchas veces en el mismo diagrama o incluso en diagramas diferentes. Cada diagrama ofrece una vista diferente de los elementos que configuran el sistema.

Diagramas estructuralesLos diagramas estructurales representan la parte estática de un sistema y se denominan:

1. Diagramas de clases.


2. Diagramas de objetos.
3. Diagramas de componentes.
4. Diagramas de despliegue.

Diagramas de comportamientoLos diagramas de comportamiento representan la parte dinámica de un sistema y se denominan:

1. Diagramas de casos de uso.

2. Diagramas de secuencia.
3. Diagramas de colaboración.
4. Diagramas de estados.
5. Diagramas de actividades.







miércoles, 19 de septiembre de 2007

Objetivo de Fundamentos de Programación

El estudiante analiza problemas, representara su solución mediante el modulo orientado a objetos, diseñara los algoritmos para las funciones, miembros y aplicaciones que interactúan con el objeto, así como implementarlos en algún lenguaje de programación.

Concepto de Objeto

Llegar a un propio concepto de objeto tomando en cuenta de que hablamos en fundamentos de programación. Puede ser algo tedioso y aburrido, pero es muy importante ya que sin un buen conocimiento o entendimiento de los conceptos, estos pueden convertirse en un gran problema posteriormente. El equipo a decidido tomar como concepto de objeto: <El objeto es aquello que posee atributos y caracteristicas, de las cuales podemos sacar probecho al realizar un software, estos pueden ser fisicos o no fisicos (aire) por ejemplo, en si los objetos son todos aquellas cosas que nos rodean y que interaptuan con nosotros.>.

1.1 Reconocimiento de objetos y clases en el mundo real y la interacción entre ellos.

La mayoría de los objetos en el mundo real tienen atributos (características que los describen). -Nombre-Edad-Sexo-etc.
El comportamiento de un objeto: Es el conjunto de cosas que pueden hacer un objeto.
Ejemplos de objetos:

1.-[Calculadora]
Atributos: color, teclas, pantalla, volumen, sistema electrónico.
Comportamientos: suma, resta, multiplicación, división, entre otras operaciones matemáticas.

2.-[Cañón]
Atributos: color, plásticos, luz, cristales, ventiladores, circuitos.
Comportamientos: proyectar imágenes.

3.-[Helicóptero]
Atributos: hélices, metal, cristales, motor.
Comportamientos: volar, avanzar a gran velocidad, dar vueltas, bajar y subir, suspenderse en el aire.

4.-[Impresora]
Atributos: Carcasa, tintas, circuitos, motores electrónicos, hojas.
Comportamientos: Imprimir fotos, acetatos, hojas blancas.

5.-[Clima]
Atributos: Cobertura metálica, circuitos electrónicos, tubos, gas, rendijas, sistemas electrónicos.
Comportamientos: enfriar el ambiente.

1.2 La abstracción y el encapsulamiento como un proceso natural.

La abstracción es un proceso con el cual podemos manejar de un amanera mas sencilla y eficaz la complejidad de los objetos. Esto es que podemos detallar los componentes que forman al objeto que y poder conocer y fijarnos en los elementos primordiales que a nosotros nos interesan. Para poder desarrollar un trabajo en base a dicho objeto. Es un proceso natural porque debe ser puesta a la práctica la capacidad de la persona para poder desarrollar lo diferentes niveles de abstracción, que manejamos, porque son estos como podemos tener el mayor control de la complejidad de los objetos, y sacar beneficios y provechos de nuestro abstracción, recordemos que para desarrollar un software debemos tener la mayor cantidad de datos posibles de los objetos.

En parte por el encapsulamiento es simplemente aquello que recubre el exterior del objeto para que los procesos y ejecuciones sean ocultos y no visibles ante las personas.

1.3 La POO y la complejidad del software

En este apartado hablaremos de las cosas que forman o debemos tomar en cuenta en programación orientada a objetos ya que son la unión de varios elementos inseparables que la conforman. Describimos a continuación.

La complejidad del dominio del problema: es en donde llevamos acabo la interacción entre desarrollador y usuario (cliente) en donde se tratan los términos y procesos que el usuario desea que el software ejecute o realice, pero en momentos el usuario puede tener poca o nula noción que saber explicarse y hacerse comprender por el desarrollador de software.

La dificultad de gestionar el proceso de desarrollo:
Aquí es en donde llevamos acabo el desarrollo de un software, es aquí donde surgen los problemas. El elaborar un sistema de software nuevo, es una gran cantidad de escritura, además de un grupo de desarrolladores, que se trate de hacer lo mas pequeño posible porque es aquí donde existen varios elementos que se exponen por diferentes desarrolladores. Si el grupo de desarrollo se manejan a distancia, es más el problema porque siempre existen comunicación complejas, ósea que existen comunicación compuestas por varios puntos de vistas diferentes. Que no pueden ser tratados muy específicamente por la distancia o dispersión de los desarrolladores.

La flexibilidad a través del software:
Esta es donde el desarrollador tiene todo una amplia gama de expresar todo lo que quiera que el programa ejecute. O tipos de abstracciones.

1.4 Conceptos del ciclo de vida del software

El proceso de elaboración de un software comienza con el análisis y diseño del mismo, cuando el personal en general se percata de que se haya en la necesidad de implementar un sistema que proporcione un mejor acondicionamiento del establecimiento y un mejor rendimiento.

[Ciclo de vida del software – Modelo de Cascada]


1.4.1 Especificaciones de requerimientos

El comienzo de la elaboración de un software comienza con la petición de una persona e ahí donde comienza la investigación preliminar, que consta de tres partes: aclaración de la solicitud, Estudio de factibilidad, Aprobación de la solicitud.

*Aclaración de de la solicitud: es el proceso donde se definen bien los términos de que es lo que el usuario desea en el programa.

* Estudio de factibilidad: Se debe determinar que el sistema solicitado sea factible de desarrollar; existen 3 aspectos relacionados con el estudio de factibilidad:
a) Factibilidad Técnica: esto es ver, cuales son las condiciones en que esta la empresa el equipo y el personal si los dos están alta mente calificados o si se debe invertir.
b) Factibilidad económica: esta parte es en donde comprobamos si la empresa tiene dinero como para invertir en la tecnología que se requiere y otros implementos, y saber si el beneficio de implementación de nueva tecnología será recuperada a corto o a largo plazo.
c) Factibilidad Operacional: esto es si el personal será capaz de manejar y administrar tanto la nueva tecnología según sea el caso o el software, o si existirá una resistencia por parte de alguna persona que se oponga al cambio evolutivo.

*Aprobación de la solicitud: al realizar el estudio de factibilidad en sus tres aspectos, y determinar que si pasan la calidad, se aprueba el proyecto y se comienza a la pronta realización del software.

Los analistas al trabajar con los empleados y administradores, deben estudiar los procesos de una empresa para dar respuesta a las siguientes preguntas clave:

¿Qué es lo que hace?
¿cómo se hace?
¿con qué frecuencia se presenta?
¿Qué tan grande es el volumen de transacciones o de decisiones?
¿Cuál es el grado de eficiencia con el que se efectúan las tareas?
¿Existe algún problema?
si existe un problema, ¿qué tan serio es?
si existe un problema, ¿cuál es la causa que lo origina?

1.4.2 Análisis Orientado a Objetos.

¿Qué hace? Esta pregunta es la que debemos de cuestionarnos para poder tener un buen análisis orientado a objeto ya así deducir los tipos de objetos del mundo real que están implicados y obtener los atributos de estos objetos determinando su comportamiento e interacciones.

1.4.3 Diseño Orientado a Objetos.

¿Cómo lo hace? Se piensa en objetos del mundo real que pueden ser representados como objetos del mundo informático. Se deben especificar los objetos con mayor precisión especificando en detalle lo que los objetos conocen y lo que pueden hacer, y describe son prudencia, sus interacciones. Se entra en un proceso detallado de los objetos para poder capturar la información más posible que podamos utilizar para la estructuración del software.

1.4.4 Programación Orientada a Objetos, conceptos y características

Este es una en la que no es necesarios por cada vez que necesitemos crear un programa no necesitamos crear todas las líneas de códigos si no que podemos estructurar uno nuevo en base uno anterior esto es porque podemos reutilizar los códigos fuentes por decir así. Para ahorrar tiempo y tener ventajas.

Los principios en que se apoyan las tecnologías orientadas a objetos son:

Objetos como instancias de una clase
Métodos
Mensajes

Y las características que ayudan a definir un objeto son:

Encapsulamiento
Modularidad
Abstracción
Polimorfismo

1.5 Elementos primordiales en el modelo de objetos.

1.5.1 Abstracción

Abstracción. Consiste en aislar un elemento de su contexto o del resto de los elementos que lo acompañan. Entonces entendemos que abstracción es analizar a fondo y desmembrar parte por parte hasta llegar al centro que compone un objeto que estemos analizando. Como lo es en abstracción orientada a objetos, es analizar los atributos, de los objetos para poder ir conociendo a fondo que es lo que conforman o las partes que forman dicho objeto. Y así sacar provecho de los atributos porque recordemos que entre más características del objeto mas base o fundamento de trabajo podemos tener.

1.5.2 Encapsulamiento

Encapsulamiento. Consiste en ocultar los atributos de un objeto, a la vez que se provee una interfaz pública por medio de sus métodos permitidos. También se define como la propiedad de los objetos de permitir acceso a su estado solamente a través de su interfaz o de relaciones preestablecidas con otros objetos. Dicho de otra manera el encapsulamiento es la manera de aislar la información del diseño y ejecución, como lo es los programas, únicamente miramos ante nos ojos una fachada bonita del programa mas sin embargo no miramos a simple vista el proceso de ejecución de cada orden que le damos al programa eso seria el encapsulamiento.

1.5.3 Modularidad

Propiedad que permite subdividir un programa en módulos para poder ser utilizados mas fácilmente, un modulo puede o se hace los mas independiente de otros lo mas que se pueda. Pero ante esto se pueden tener por separado los módulos pero tienen relación entre ellos.

1.5.4 Jerarquía y herencia

Jerarquía es una propiedad que permite una ordenación de las abstracciones, es decir permite ordenar en una estructura los objetos de más rango a los menores.

Herencia es aquello que define una relación entre clases, en donde una clase comparte la estructura o comportamiento definido en una o más clases, en otras palabras es un compartimiento de atributos de un objeto de mayor jerarquía a uno de menor jerarquía.

1.5.5 Polimorfismo.

Esta característica permite implementar múltiples formas de un mismo método, dependiendo cada una de ellas de la clase sobre la que se realice la implementación. Un ejemplo muy comprendedor de polimorfismo seria una gelatina colocada en varios moldes aun que los mondes son diferentes formas el contenido sigue siendo gelatina. Esto es que aunque pusimos varios moldes se estaría empleando diferentes formas pero siempre llegaremos a que es gelatina.

1.6 Historia de los paradigmas en el desarrollo del software.

Paradigmas: Representan un enfoque particular o filosofía para la construcción del software. No es mejor uno que otro sino que cada uno tiene ventajas y desventajas.
También hay situaciones donde un paradigma resulta más apropiado que otro.
Los más comunes son el desarrollo en cascada, el desarrollo en espira’‘, el desarrollo por prototipos, el desarrollo incremental, el desarrollo en V y el desarrollo orientado a objetos. También existen modelo híbridos, los cuales combinan elementos de diferentes modelos según las necesidades existentes.
En Ingeniería de software el desarrollo en cascada es el enfoque metodológico que ordena rigurosamente las etapas del ciclo de vida del software, de forma tal que el inicio de cada etapa debe esperar a la finalización de la inmediatamente anterior. Un ejemplo de una metodología de desarrollo en cascada es:  Análisis de requisitos  Diseño  Programación  Prueba  Implantación  Mantenimiento De esta forma, cualquier error de diseño detectado en la etapa de prueba conduce necesariamente al rediseño y nueva programación del código afectado, aumentando los costes del desarrollo. La palabra cascada sugiere, mediante la metáfora de la fuerza de la gravedad, el esfuerzo necesario para introducir un cambio en las fases más avanzadas de un proyecto. Si bien ha sido ampliamente criticado desde el ámbito académico y la industria, sigue siendo el paradigma más seguido al día de hoy Para cada actividad habrá cuatro tareas. Imagen:Modelo Espiral.JPG Determinar o fijar objetivos Fijar también los productos definidos a obtener: requerimientos, especificacion, manual de usuario. Fijar las restricciones. Identificación de riesgos del proyecto y estrategias alternativas para evitarlos. Hay una cosa que solo se hace una vez: planificacion inicial o previa.
Análisis del riesgo Se estudian todos los riesgos potenciales y se seleccionan una o varias alternativas propuestas para reducir o eliminar los riesgos. Desarrollar, verificar y validar (probar) Tareas de la actividad propia y se prueba. Planificar Revisamos todo lo hecho, evaluándolo, y con ello decidimos si continuamos con las fases siguientes y planificamos la proxima actividad. Ventajas El analisis del riesgo se hace de forma explícita y clara. Une los mejores elementos de los restantes modelos. Inconvenientes Genera mucho trabajo adicional. Exige una cierta habilidad en los analistas

1.7 Beneficios del modelo de objetos y de la POO sobre otros paradigmas

En resumen, la programación orientada a objetos beneficia a los desarrolladores debido a que: Los programas son fáciles de diseñar debido a que los objetos reflejan elementos del mundo real.


  1. Las aplicaciones son más sencillas para los usuarios debido a que los datos innecesarios están ocultos.
  2. Los objetos son unidades autocontenidas.
  3. La productividad se incrementa debido a que puede reutilizar el código.
  4. Los sistemas son fáciles de mantener y se adaptan a las cambiantes necesidades de negocios.
  5. Es más fácil crear nuevos tipos de objetos a partir de los ya existentes.
    Simplifica los datos complejos.
  6. Reduce la complejidad de la transacción.
  7. Confiabilidad.
  8. Robustez.
  9. Capacidad de ampliación.