jueves, 26 de abril de 2012

reutilización


REUTILIZACIÓN

CONCEPTO

No es copiar ni pegar el código, sino construir a partir de lo que se tiene, una nueva clase de código, esto se conoce como composición.

Ya que la nueva clase está compuesta de objetos de clases existentes.



CUANDO SE PUEDE USAR

Se utiliza cuando hay ayuda visual para el usuario.

La reutilización de códigos programados es una técnica común que intenta ahorrar tiempo y energía, reduciendo el trabajo redundante.

El software más fácilmente reutilizable tiene ciertas características: modularidad, bajo acoplamiento, alta cohesión, ocultación de información, etc.

EJEMPLO

Las bibliotecas o librerías de software son un buen ejemplo. Al utilizarlas se está reutilizando código.

Por ejemplo los menús del algún programa, se reutilizan para nuevos programas, con nuevas características.

Podemos hacer una de dos cosas:

1) modificar la clase Pedido que ya tenemos, corriendo el riesgo de introducir nuevos errores y “romper” el código de otros programadores que ya están usando nuestra clase.

2) dejar la clase Pedido como está y crear una nueva clase, llamada PedidoConDescuento, que extienda la funcionalidad de Pedido.



CONCLUSIONES

-La reutilización es ahorrar tiempo en la programación.

-También procesos del desarrollo se pueden acortar.

-También se llama herencia de código

-En orientación a objetos la herencia es, después de la agregación o composición, el mecanismo más utilizado para alcanzar algunos de los objetivos más preciados en el desarrollo de software como lo son la reutilización y la extensibilidad.

Videos de como podríamos manejar y proteger estos códigos para reutilización.














http://www.youtube.com/watch?v=B6bP7dFB79o

martes, 17 de abril de 2012

sistemas de numeración


Conversiones de un Sistema a Otro

Las conversiones entre números de bases diferentes se efectúan por medio de operaciones aritméticas simples. Dentro de las conversiones más utilizadas se encuentran:

Conversión de Decimal a Binario
Para la conversión de decimal a binario se emplean dos métodos. El primero es divisiones sucesivas y el segundo es suma de potencias de 2.
Por divisiones sucesivas
Se va dividiendo la cantidad decimal por 2, apuntando los residuos, hasta obtener un cociente cero. El último residuo obtenido es el bit más significativo (MSB) y el primero es el bit menos significativo (LSB).
Ejemplo
Convertir el número 15310 a binario.
Figura 1.2.1.Ejemplo de conversión de decimal a binario
El resultado en binario de 15310 es 10011001
Por sumas de potencias de 2
Este método consiste en determinar el conjunto de pesos binarios cuya suma equivalga al número decimal.
Ejemplo
Convertir el número 15310 a binario.
15310 = 27 + 24 + 23 + 20 = 128 + 16 +8 +1
15310= 100110012
Como se aprecia, si se cuenta con alguna familiaridad con las potencias de 2 este último método es más rápido.

Conversión de Fracciones Decimales a Binario
Para la conversión de fracciones decimales a binario se emplean el siguiente método.
Por suma de potencias de 2
Emplea la misma metodología de la suma de potencias de 2 pero se trabaja con potencias negativas.
Ejemplo
Convertir el número 0,87510 a binario.
0,87510 = (2-1) + (2-2) + (2-3) = 0,5 + 0,25 + 0,125 = 0,1112
Por multiplicaciones sucesivas
La conversión de números decimales fraccionarios a binario se realiza con multiplicaciones sucesivas por 2. El número decimal se multiplica por 2, de éste se extrae su parte entera, el cual va a ser el MSB y su parte fraccional se emplea para la siguiente multiplicación y seguimos sucesivamente hasta que la parte fraccional se vuelva cero o maneje un error moderado. El último residuo o parte entera va a constituir el LSB.
    Ejemplo
    Convertir el número 0,87510 a binario.
    Número N N X 2 Parte entera Peso
    0,875 1,75 1 MSB
    0,75 1,5 1
    0,5 1,00 1 LSB
    Tabla 1.2.1. Ejemplo de Conversión de Decimal a Binario.
    El resultado en binario de 0,87510 es 0,1112.

    Conversión de Decimal a Hexadecimal
    En la conversión de una magnitud decimal a hexadecimal se realizan divisiones sucesivas por 16 hasta obtener un cociente de cero. Los residuos forman el número hexadecimal equivalente, siendo el último residuo el dígito más significativo y el primero el menos significativo.
    Ejemplo
    Convertir el número 186910 a hexadecimal.
    Figura 1.2.2. Ejemplo de Conversión de decimal a hexadecimal
    El resultado en hexadecimal de 186910 es 74D16.

    Conversión de Decimal a Octal
    En la conversión de una magnitud decimal a octal se realizan divisiones sucesivas por 8 hasta obtener la parte entera del cociente igual a cero. Los residuos forman el número octal equivalente, siendo el último residuo el dígito más significativo y el primero el menos significativo.
    Ejemplo
    Convertir el número 46510 a octal.
    Número N N ÷ 8 Parte decimal Parte decimal x 8 Peso
    465 58,125 0,125 1 LSB
    58 7,25 0,25 2
    0,5 0,875 0,875 7 MSB
    Tabla 1.2.2. Ejemplo de Conversión de Decimal a Hexadecimal.
    El resultado en octal de 46510 es 721.

    Conversión de Binario a Decimal
    Un número binario se convierte a decimal formando la suma de las potencias de base 2 de los coeficientes cuyo valor sea 1 (ver lección 1).
    Ejemplo
    Convertir el número 11002 a decimal.
    11002 = 1x23 + 1x22 = 1210

    Conversión de Binario a Hexadecimal
    El método consiste en conformar grupos de 4 bits hacia la izquierda y hacia la derecha del punto que indica las fracciones, hasta cubrir la totalidad del número binario. Enseguida se convierte cada grupo de número binario de 4 bits a su equivalente hexadecimal.
    Ejemplo
    Convertir el número 10011101010 a hexadecimal.

    Conversión de Binario a Octal
     El método consiste en hacer grupos de 3 bits hacia la izquierda y hacia la derecha del punto que indica las fracciones, hasta cubrir la totalidad del número binario. Enseguida se convierte cada grupo de número binario de 3 bits a su equivalente octal.
    Ejemplo
    Convertir el número 010101012 a octal.

    Conversión de Hexadecimal a Decimal
    En el sistema hexadecimal, cada dígito tiene asociado un peso equivalente a una potencia de 16, entonces se multiplica el valor decimal del dígito correspondiente por el respectivo peso y realizar la suma de los productos.
    Ejemplo
    Convertir el número 31F16 a decimal.

    31F16 = 3x162 + 1x16 + 15 x 160 = 3x256 + 16 + 15 = 768 + 31 = 79910

    Conversión de Hexadecimal a Binario
    La conversión de hexadecimal a binario se facilita porque cada dígito hexadecimal se convierte directamente en 4 dígitos binarios equivalentes.
    Ejemplo
    Convertir el número 1F0C16 a binario.
    1F0C16 = 11111000011002

    Conversión de Octal a Decimal
    La conversión de un número octal a decimal se obtiene multiplicando cada dígito por su peso y sumando los productos:
    Ejemplo
    Convertir 47808 a decimal.
    4780 = (4 x 83)+(3x82)+(8x81)+(0x80) = 2048+192+64+0= 2304

    Conversión de Octal a Binario
    La conversión de octal a binario se facilita porque cada dígito octal se convierte directamente en 3 dígitos binarios equivalentes.
    Ejemplo
    Convertir el número 7158 a binario.
    7158 = (111001101)2

    plantilla de conversión de unidades de almacenamiento y velocidad


    plantilla

    http://dl.dropbox.com/u/68924396/plantilla%20de%20conversiones.xlsx

    domingo, 5 de febrero de 2012

    HISTORIA DEL DESARROLLO DE SOFTWARE

          EL PRIMER PROGRAMA DE LA HISTORIA - 1842

    Ada Byron, alias Lady Lovelace. Ada fue, ni más ni menos, que la primer programadora de la historia, allá por el siglo 19. Ada, se vería obligada a realizar una serie de algoritmos que la ayudarían a obtener un método ?automático? para resolver números de Bernoulli. Estas notas, que realizó explicando el procedimiento, son consideradas como el primer programa computacional de la historia. De hecho se ha probado que si se transcribe la lógica a un lenguaje de programación moderno este es perfectamente funcional. El primer programa de la historia fue Open Source.


    PRIMERA ERA


    Existían pocos métodos sistemáticos.  El desarrollo del software se realizaba virtualmente sin ninguna planificación, hasta que los planes comenzaron a descalabrarse y los costos a correr.  Los programadores trataban de hacer las cosas bien, y con un esfuerzo heroico, a menudo salían con éxito. Los problemas a ser resueltos eran principalmente de una naturaleza técnica, el énfasis estaba en expresar algoritmos conocidos eficazmente en algún lenguaje de programación.

    En estos primeros años lo normal era que el hardware fuera de propósito general.  Por otra parte, el software se diseña a medida para cada aplicación y tenía una distribución relativamente pequeña. El software como producto estaba en su infancia.  La mayoría del software se desarrollaba y era utilizado por la misma persona u organización.  La misma persona lo escribía, lo ejecutaba y, si fallaba, lo depuraba.  Debido a que la movilidad en el trabajo era baja, los ejecutivos estaban seguros de que esa persona estará allí cuando se encontrara algún error. Debido a este entorno personalizado del software, el diseño era un proceso implícito, realizado en la mente de alguien, y la documentación normalmente no existía.

    SEGUNDA ERA


    La multiprogramación y los sistemas multiusuario introdujeron nuevos conceptos de interacción hombre - máquina.  Las técnicas interactivas abrieron  un nuevo mundo de aplicaciones y nuevos niveles de sofisticación del hardware y del software.  Los sistemas de tiempo real podían recoger, analizar y transformar datos de múltiples fuentes, controlando así los procesos y produciendo salidas en milisegundos en lugar de en minutos.  Los avances en los dispositivos de almacenamiento en línea condujeron a la primera generación de sistemas de gestión de bases de datos.

    Los programas se distribuían para computadoras grandes y para minicomputadoras, a cientos e incluso a miles de usuarios.  Los patronos de la industria, del gobierno y de la universidad se aprestaban a “desarrollar el mejor paquete de software” y ganar así mucho dinero.

    Conforme crecía el número de sistemas informáticos, comenzaron a extenderse las bibliotecas de software de computadora.  Las casas desarrollaban proyectos en los que se producían programas de decenas de miles de sentencias fuente.  Los productos de software comprados al exterior incorporaban cientos de  miles de nuevas sentencias.  Una nube negra apareció en el horizonte.  Todos esos programas, todas esas sentencias fuente tenían que ser corregidos cuando se detectaban fallos, modificados cuando cambiaban los requisitos de los usuarios o adaptados a nuevos dispositivos hardware que se hubieran adquirido.  Esta actividades se llamaron colectivamente mantenimiento del software.  El esfuerzo gastado en el mantenimiento del software comenzó a absorber recursos en una medida alarmante.

    Aún peor, la naturaleza personalizada de muchos programas los hacía virtualmente imposibles de mantener.  Había comenzado una crisis del “software”

    TERCERA ERA


    La tercera era en la evolución de los sistemas de computadora comenzó a mediados de los años 70 y continuó más allá de una década.  El sistema distribuido, múltiples computadoras, cada una ejecutando funciones concurrentemente y comunicándose con alguna otra, incrementó notablemente la complejidad de los sistemas informáticos.  Las redes de área local y de área global, las comunicaciones digitales de alto ancho de banda y creciente demanda de acceso “instantáneo” a los datos, supusieron una fuente presión sobre los desarrolladores del software.  Aún más, los sistemas y el software que lo permitían continuaron residiendo dentro de la industria y de la academia.  El uso personal era extraño.

    La conclusión de la tercera era se caracterizó por la llegada y amplio uso de los microprocesadores.  El microprocesador ha producido un extenso grupo de productos inteligentes, desde productos inteligentes, desde automóviles hasta hornos microondas, desde robots industriales a equipos de diagnóstico de suero sanguíneo, pero ninguno ha sido más importante que la computadora personal.  En menos de una década, las computadoras llegarán a ser fácilmente accesibles al público.

    CUARTA ERA

    Potentes máquinas personales controladas por sistemas operativos sofisticados, en redes globales y locales, acompañadas por aplicaciones de software avanzadas se han convertido en la norma. Las arquitecturas informáticas están cambiando  de entornos centralizados de grandes computadoras a entornos descentralizados cliente/servidor. Las redes de información en todo el mundo proporcionan una infraestructura que iguala a expertos y políticos en pensar sobre una “superautopista de información” y una “conexión del ciberespacio”.  De hecho internet se puede observar como un “software” al que pueden acceder usuarios individuales.

    La industria del software ya es la cuna de la economía del mundo.  Las decisiones tomadas por gigantes de la industria tales como Microsoft arriesgan billones de dólares. A medida que la cuarta generación progresa, han comenzado a surgir nuevas tecnologías.  Las tecnologías orientadas a objetos  están desplazando rápidamente los enfoques de desarrollo de software más convencionales en muchas áreas de aplicaciones.  Aunque las predicciones de las computadoras de “quinta generación”” continúan eludiéndonos, “las técnicas de cuarta generación” para el desarrollo del software están cambiando en forma en que la comunidad del software construye programas informáticos.  Los sistemas expertos y el software de inteligencia artificial han salido del laboratorio para entrar en aplicaciones prácticas de una gran variedad de problemas del mundo real.  El software de redes neuronales artificiales junto con la aplicación de lógica difusa ha abierto posibilidades excitantes para el reconocimiento de patrones y habilidades de procesamiento de información de carácter humano.  La programación de realidad virtual y los sistemas multimedia ofrecen formas radicalmente diferentes de comunicar información al usuario final.  “Los algoritmos genéricos” ofrecen el potencial para el software que reside dentro de las computadoras biológicas masivamente en paralelo.


    ERA
    AÑOS
    CARACTERÍSTICAS
    1950 – 1965
    • Se trabajaba con la idea de “Codificar y Corregir”.
    • No existía un planteamiento previo.
    • No existía documentación de ningún tipo.
    • Existencia de pocos métodos formales y pocos creyentes en ellos.
    • Desarrollo a base de prueba y error.
    1965 – 1972
    • Se busca simplificar código.
    • Aparición de Multiprogramación y Sistemas Multiusuarios.
    • Sistemas de Tiempo Real apoyan la toma de decisiones.
    • Aparición de Software como producto. (Casas de Software).
    • INICIO DE LA CRISIS DEL SOFTWARE.
    • Se buscan procedimientos para el desarrollo del Software.
    1972 – 1989
    • Nuevo Concepto: Sistemas Distribuidos.
    • Complejidad en los Sistemas de Información.
    • Aparecen: Redes de área local y global, y Comunicadores Digitales.
    • Amplio Uso de Microprocesadores.
    1989 - ¿?
    • Impacto Colectivo de Software.
    • Aparecen: Redes de Información, Tecnologías Orientadas a Objetos.
    • Aparecen: Redes Neuronales, Sistemas Expertos y SW de Inteligencia Artificial.
    • La información como valor preponderante dentro de las Organizaciones.


    ERA
    LENGUAJES
    CARACTERÍSTICAS
    • Fortran





    • Basic


    • Logo


    • Cobol
    • Fue el primer y principal lenguaje Científico.
    • Diseñado por IBM.
    • Utilizado también para aplicaciones comerciales.


    • Desarrollado como lenguaje de tiempo compartido.


    • Traza elementos gráficos estableciendo la geometría de lápiz.


    • Ampliamente usado en programación en minicomputadores.

    • Pascal




    • Prolog


    • Mumps



    • Lisp
    • Lenguaje Académico.
    • Sus características son copiadas por otros lenguajes.
    • Éxito comercial a través de Borland.


    • Desarrollado en Francia, 1973.
    • Aplicaciones en Inteligencia Artificial (IA).


    • Sistema de Multiprogramación.
    • Incluye su propia base de datos.
    • Utilizado en aplicaciones médicas.


    • Sintaxis muy diferente de los demás lenguajes.
    • Programa aplicaciones en IA.

    • C, C++




    • Modula-2


    • dBase
    • Desarrollado en los ochentas.
    • Se utiliza en aplicaciones comerciales.
    • C++, se utiliza para la tecnología orientada a objetos.


    • Versión mejorada de Pascal.
    • Desarrollada en 1979.


    • Lenguaje estándar para aplicaciones comerciales.
    • Ramas colaterales: Clipper, FoxBase.
    • Visual C++



    • Visual Basic
    • Desarrollado por Microsoft.
    • Principalmente orientado a la tecnología de objetos.
    • Se utiliza para aplicaciones comerciales.

    • Principalmente para aplicaciones comerciales.
    • Versión cotizada, ya que permite interactuar con tablas de manejadores de bases de datos y lenguaje SQL.




    • Charles Bachman.  Inventó la tecnología del banco de datos en los inicios de los sesentas.        
            John Backus. FORTRAN desarrollado para IBM (1954)
    • Bob Bemer.      Uno de los diseñadores de COBOL y el ASCII normal para IBM (años sesenta); inventor de la sucesión del Escape, el mecanismo universal para toda la computadora.
    • Larry Constantine.  Inventa los datos que fluyen en los diagramas, presentan primero en papel, los conceptos de un plan estructurado en 1968.
    • Peter Cunningham. Funda una de las primeras  empresas de investigación de mercado para enfocar el software y comienza a comercializar los productos del software en 1974.
    • Tom DeMarco. El pionero en utilizar una metodología de caso, el autor, y consultor en los años setenta.
    • Wilfred J. Dixon. Empezó distribuyendo el software estadístico en 1962.
    • Frank Dodge. Co - fundó McCormack & el Regate qué vendió el primer software de contabilidad en 1969.
    • Larry Ellison.  Dejó camino abierto para los DBMS.
    • Dave Ferguson. Logró vender el primer producto de software con éxito contra un programa de IBM.
    • Ken Orr. Crea la metodología de caso desarrollada en los años setenta.


    Ingeniería de Software
    Roger S. Pressman
    McGraw-Hill.
    Diccionario de Computación
    Freedman Alan
    McGraw-Hill.
    Análisis y Diseño de Sistemas
    Kendall & Kendall
    Pearson Educación
    PC Magazine En Español.
    http://fresqui.com/tecnologia/software/el-primer-programa-de-la-historia-1842/-1914









    domingo, 29 de enero de 2012

    DESARROLLO DE SOFTWARE

    Es construir o elaborar con un conjunto de herramientas, una solución a un problema específico.
     "un problema real". que tiene determinada empresa o individuo.
    con un método: especificación de requerimientos, análisis,diseño, implementación, verificación y prueba.
    en el cual debemos darle un enfoque individual a cada cliente. no solo crear la solución, también acompañarlo en el proceso, es apoyarlo en el mejoramiento continuo de su empresa, pues más adelante requerirá nuevas soluciones. al poder innovar y ser más productivo. al darle soluciones de alto rendimiento y funcionalidad. por el máximo resultado esperado.

    un cliente satisfecho nos traerá nuevos clientes, y nosotros como desarrolladores tendremos una "solución especifica": reconocimiento, calidad, y confianza a nuestra profesión.




    fases del desarrollo del software

    En la ingeniería del software el término fases de desarrollo expresa cómo ha progresado el desarrollo de un software y cuánto desarrollo puede requerir. Cada versión importante de un producto pasa general mente a través de una etapa en la que se agregan las nuevas características (etapa alfa), después una etapa donde se eliminan errores activamente (etapa beta), y finalmente una etapa en donde se han quitado todos los bugs importantes (etapa estable).

    Alpha / Alfa

    Es la primera versión del programa, la cual es enviada a los verificadores para probarla.
    fase donde un producto todavía es inestable, aguarda todavía a que se eliminen los errores o a la puesta en práctica completa de toda su funcionalidad, pero satisface la mayoría de los requisitos.

    Beta

    Una versión beta o lanzamiento beta representa general mente la primera versión completa del programa informático o de otro producto, que es posible que sea inestable pero útil para que las demostraciones internas y las inspecciones previas seleccionen a clientes. inspección previa Observa que Gmail, igual que las noticias de Google, por ejemplo, estuvieron en beta por un período de tiempo muy largo (5 años). Esta técnica puede también permitir a un desarrollador retrasar el ofrecimiento de apoyo total o la responsabilidad de ediciones restantes. Los receptores de betas altamente propietarias pueden tener que firmar un acuerdo de no revelación.

    Versión candidata a definitiva (RC)

    comprende un producto final, preparado para publicarse como versión definitiva a menos que aparezcan errores que lo impidan. En esta fase el producto implementa todas las funciones del diseño y se encuentra libre de cualquier error que suponga un punto muerto en el desarrollo.

    Versión de disponibilidad general (RTM)

    La versión de disponibilidad general (también llamada "dorada") de un producto es su versión final. Normalmente es casi idéntica a la versión candidata final, con sólo correcciones de último momento. Esta versión es considerada muy estable y relativa mente libre de errores con una calidad adecuada para una distribución amplia y usada por usuarios finales.

    Estable/inestable

    En la programación de código abierto los números de las versiones, o los términos estable e inestable, normalmente distinguen las fases del desarrollo. En el pasado, el núcleo Linux usaba el número de versión para denotar si una versión era estable o inestable. En efecto, las versiones estaban formada por cuatro números, separados por un punto. Una cifra impar en el segundo número de la versión indicaba una versión inestable. Hoy en día ya no se usa esta convención, y todas las versiones son estables independientemente del número de versión. En la práctica el uso de números pares e impares para indicar la estabilidad de un producto ha sido usado por otros muchos proyectos de software libre.