Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Qu es? Trmino usado cuando el software que se desarrolla: No satisface los requerimientos ni necesidades del cliente. Excede los presupuestos y horarios de tiempo establecidos.
Sntomas
Baja calidad del producto de software Tiempo y presupuesto inicial excedido. Confiabilidad cuestionable Altos requerimientos de personal para desarrollo y mantenimiento.
Razones Base inestable. Fallas en el manejo del riesgo. La complejidad del software. Soluciones
Reforzar las fases de anlisis y diseo del software. Construir un modelo sencillo, fcil de entender, compatible con
EVOLUCION DE LA PROGRAMACIN:
1 Nivel Se dice que el cdigo binario es de "bajo nivel" o
"primer nivel" (porque al usar pocos signos logra muy difcilmente expresar cosas complicadas), mientras un lenguaje humano es de "muy alto nivel" (con una cantidad mayor de signos y con reglas combinatorias logra expresar con facilidad cosas muy complicadas). Todo el esfuerzo, entonces, para facilitar la comunicacin del hombre con la computadora, ha de centrarse en el desarrollo de lenguajes de mayor nivel.
2 Nivel por el hombre consiste por lo tanto en establecer la equivalencia de bloques binarios con signos de nuestro lenguaje habitual. Para permitir la programacin (secuencia de comandos), se usan pequeos conjuntos de signos ("palabras") de fcil memorizacin, con las cuales se redactan programas, por ejemplo "ADC" significar "sumar con reserva" (en ingls: "ADd with Carry").
"intrpretes" (los dos tipos de programas traductores) ha sido por lo tanto fundamental en el desarrollo de los lenguajes de "3 generacin" cuyas ventajas adems de la facilidad de aprendizaje y lectura/escritura son las facilidades de correccin, transformacin y conversin de un lenguaje a otro. Los ms antiguos son el FORTRAN (para aplicaciones matemticas y cientficas) y el COBOL (para aplicaciones de administracin y contabilidad). Con los micro-computadores naci el BASIC y el PASCAL
FECHA 1953 1954 1957 1959 1960 1960 1962 Mediado de los 60 1965 1966 1968 Finales de los 60 1970 1972 1972 1977 Finales de los 70 Principio de los 80 1985 1986 1987 1990 Principios 90 1993 1994 1995 1999
LENGUAJE FORTRAN FORTRAN FORTRAN LISP ALGOL COBOL APL APL BASIC FORTRAN ALGOL APL PASCAL PROLOG C FORTRAN MODULA-2 C++ CLIPPER CLIPPER CLIPPER FORTRAN JAVA Visual C++ DELPHI JAVA DELPHI
ACONTECIMIENTO Job Backus propone el desarrollo de un nuevo lenguaje Un equipo de IBM comienza a trabajar en el FORTRAN IBM desarrolla la primera versin El profesor John McCarthy y sus alumnos desarrolla el LISP Se renen representantes europeos y de EEUU para la creacin de un nuevo lenguaje Fue creado COBOL Se publica el libro de Kenneth Iverson A Programming Language El APL es implantado por IBM en una versin conocida como APL/360 Aparece BASIC Aparece el FORTRA IV Se implemento una nueva versin multi-proposito Est disponible para el mercado en general Niklaus Wirth disea PASCAL Se desarrolla en la Universidad de Aix-Marsailles en Francia. Dennis Ritchie crea el lenguaje C. Aparece el FORTRAN 77 Niklaus Wirth dirige el desarrollo de MODULA-2 Se desarrolla el lenguaje C++ Se crea CLIPPER Aparece CLIPPER AUTUMN'86 CLIPPER SUMMER'87 Aparece el FORTRAN 90 James Gosling y su equipo comienzan a desarrollar JAVA Se desarrolla el lenguaje Visual C++ Aparece la primera versin Se lanza al mercado JAVA Aparece Delphi 5.0 para windows 98 NT/2000
directamente la computadora. Por esta razn, su estructura est totalmente adaptada a los circuitos de la mquina y muy alejado de la forma de expresin y anlisis de los problemas propia de los humanos. Esto hace que la programacin en este lenguaje resulte tediosa y complicada, requirindose un conocimiento profundo de la arquitectura fsica del ordenador.
ENSAMBLADOR.
El lenguaje ensamblador constituye el primer intento de sustitucin del lenguaje mquina por
uno ms cercano al usado por los humanos. Este acercamiento a las personas se plasma en las siguientes aportaciones:
Uso de una notacin simblica o nemotecnica para
representar los cdigos de operacin direccionamiento simblico Se permite el uso de comentarios entre las lneas de instrucciones, haciendo posible la redaccin de programas ms legibles.
BASIC.
Diseado por JG Kemeny y TE Kertz del colegio
Dartmouth en Estados Unidos. Fue concebido como lenguaje interactivo que podra ser de fcil aprendizaje y enseanza como resultado de su semejanza con el idioma ingles. Estuvo disponible en 1.965. Existen diversas versiones disponibles de BASIC, el dialecto conocido como Microsof BASIC ha sido casi aceptado como un estndar para microordenadores.
aplicaciones de Windows, que se ha vuelto popular. Es similar a QuickBASIC de Microsoft, pero no es 100% compatible con ste. Las interfaces de usuario se desarrollan llevando objetos de la caja de herramientas de Visual Basic hacia el formato de aplicacin.
Java. Java naci para intentar encontrar la solucin a un
problema. Este problema radicaba en las dificultades y costes que supona la actualizacin muy frecuente del software de microprocesadores de reducidas prestaciones que se montan en dispositivos electrnicos de bajo precio, como electrodomsticos, relojes y calculadoras.
PARADIGMA Y METODOLOGIA.
tecnolgica que es adoptada por una comunidad de programadores cuyo ncleo central es incuestionable en cuanto a que unvocamente trata de resolver uno o varios problemas claramente delimitados.
TIPOS DE PARADIGMAS
Imperativo o por procedimientos: es considerado el ms comn y est representado, por ejemplo, por C, BASIC o Pascal Funcional: est representado por Scheme o Haskell. Este es un caso del paradigma declarativo. Lgico: est representado por Prolog. Este es otro caso del paradigma declarativo. Declarativo: por ejemplo la programacin funcional, la programacin lgica, o la combinacin lgico-funcional. Orientado a objetos: est representado por Smalltalk, un lenguaje completamente orientado a objetos. Programacin dinmica: est definida como el proceso de romper problemas en partes pequeas para analizarlos.
METODOLOGIA.
En el presente trabajo de investigacin se darn a
conocer alunas metodologas de programacin utilizadas en la creacin de softwares. Una metodologa es un conjunto de principios generales que un programador ha de seguir para desarrollar un programa.
TIPOS:
PROGRAMACIN ESTRUCTURADA PROGRAMACIN ORIENTADA A OBJETOS MODULARIZACIN PROGRAMACIN ESTRUCTURADA Postula el principio de divisin de un programa en unidades
algortmicas ms pequeas llamadas funciones o procedimientos. Una vez definidos, el programador puede invocar a un procedimiento desde otro. Tpicamente un programa estructurado se realiza diseando primeramente un conjunto de estructuras de datos, y posteriormente un conjunto de algoritmos (procedimientos) que actan sobre esas estructuras de datos.
Programacin Orientada a Objeto (OOP) Con la introduccin de sistemas operativos grficos tales
como Windows, ha surgido un nuevo concepto de programacin. Los programadores ahora disean aplicaciones a base de unir diferentes piezas de cdigo ya escrito y probado con anterioridad, cada una de estas piezas se llama "objeto". Modularizacin Descomponer un programa en un nmero pequeo de abstracciones coherentes que pertenecen al Dominio del problema y enmascaran la complejidad interna. * Existen muchas acepciones del concepto de modularidad. * Van desde una subrutina hasta la asignacin de trabajo para un programador. Todas son correctas.
Caractersticas en POO
Abstraccin: Cada vez que pronunciamos una palabra, realmente lo que hacemos es asociar ese sonido (o ese conjunto de garabatos al escribir) con una serie de cosas. Decimos que un ave es tal cosa, que una silla es tal otra, etc. Cuando vamos a aplicar la POO, lo primero que debemos hacer es cumplir con una vieja mxima de guerra: Divide y Vencers. Es decir, lo que hacemos es seccionar nuestro cdigo en grupos de cdigo ms pequeo que, al unirlos, hacen el trabajo. Un buen ejemplo de abstraccin es el cuerpo humano, aunque el cuerpo es una unidad, est dividido en lo que conocemos por sistemas (el sistema respiratorio, el sistema linftico, cardiovascular, etc., etc.). Estos sistemas, a su vez estn compuestos por otros ms pequeos: los rganos, y as sucesivamente. La abstraccin nos permite dividir nuestro programa en distintos objetos que se agrupan para formar cosas ms complejas.
Encapsulacin: Tambin conocida como ocultamiento. Cuando me acuesto a ver televisin no me preocupo del modo como ste funciona, o lo que hace para cambiar de canal o aumentar el volumen. A menos que seas experto en electrnica o tcnico en televisores, te pasar lo mismo: no lo sabes y no te importa; slo sabes que al presionar un botn ocurre la magia. La encapsulacin se encarga de mantener ocultos los procesos internos que necesita para hacer lo que sea que haga, dndole al programador acceso slo a lo que necesita. Esto da dos ventajas iniciales: Lo que hace el usuario puede ser controlado internamente (incluso sus errores), evitando que todo colapse por una intervencin indeseada (t no quieres que tu mam, que no tiene ni idea de electrnica, abra tu televisor y empiece a jugar con los circuitos para cambiar los canales manualmente verdad?).
Herencia: Uno de los elementos (a mi modo de ver) ms interesantes de la P.O.O. La herencia es la capacidad que tiene una clase de derivar las propiedades y mtodos de otra (suena a chino no? Calma, lo veremos luego con paciencia). Tratemos de explicarlo con un ejemplo: Decimos que una gallina es un ave; esto quiere decir que las gallinas tienen caractersticas comunes con otras aves (pico, plumas, etc.), es decir que la gallina hereda las caractersticas comunes de todas las aves. Pero adems, resulta que un ave es un animal, lo que significa que tambin comparte caractersticas comunes al caballo, el perro, el hombre (seeee, somos animales) y cualquier otra cosa que pueda ser clasificada como animal. La herencia nos permite, entre otras cosas, evitar tener que escribir el mismo cdigo una y otra vez, puesto que al definir que una categora (que en programacin llamaremos clase) pertenece a otra, automticamente estamos atribuyndoles las caractersticas generales de la primera, sin tener que definirlas de nuevo. (7)
Comienza a finales de los 60, comienza a cobrar significado a lo largo de los 70 e increment su popularidad a mediados de los 80, hasta nuestros das.
Aunque el inters comenz por los LPOO, cuando
mensajes
Todo objeto es instancia de una clase (tiene un tipo).
La clase es el repositorio de comportamiento asociado con un objeto Las clases se organizan en jerarquas de herencia
BASADO EN CLASES
CLU (1974)
ORIENTADO A OBJETOS
Smalltalk (1972)
[Wegner87]
Object Pascal 1985 Modula-3 1988 CLOS Smalltalk Eiffel 1988 1972 1985
2000 C# - Microsoft
Plataforma .NET Mquina virtual para conseguir la portabilidad
El futuro de la OO
Entornos de software futuros deben contener tres tecnologas:
Orientacin a objetos redes Bases de datos Tecnologa de objetos distribuida: RMI, CORBA
Sencillez Robustez Seguridad Interpretado Dinamicidad Portabilidad Neutralidad Garbage Colection Excepciones
S S S S S S S S S
No No No No No No No No Algunas
Representacin
Alta
Media
Alta
electrnicos inteligentes y televisin interactiva. Se trataba de desarrollar un entorno de operacin fiable, portable y eficiente. El resultado: Lenguaje Oak (James Gosling) Principio 1994: El equipo se reduce ante el escaso crecimiento del mercado PDA y STB, y tras perder acuerdos con Time Warner y 3DO, se reorienta hacia WWW:
desarrollado por Sun Microsystems Encapsulacin, herencia y polimorfismo Fuertemente tipado Gestin automtica de la memoria (recogida de basura) Soporte para concurrencia (multi-hilo) Gestin de excepciones Constructores independientes de la arquitectura del Procesador acompaado por un conjunto de bibliotecas
(packages, conjuntos de clases) Desarrollo de interfaces grficas de usuario (AWT, Swing) Conectividad (sockets, RMI, IDL, JDBC) Utilidades (Vector, Stack, Hashtable, Date, etc.)
Java e Internet:
Un nuevo paradigma de software Software bajo demanda: El software se carga de la red cuando es necesario lo que es estrictamente necesario sin necesidad de instalacin Se puede controlar el uso del software No hacen falta actualizaciones software individuales Las versiones nuevas reemplazan a las anteriores de forma invisible No hay problemas de configuracin especficos del HW Codifica una vez, ejecuta en varias plataformas
Proteccin
Para portar todo el cdigo Java, portar la MVJ Otras arquitecturas de MV:
E/S y comunicaciones Class InputStream y OutputStream Encadenamiento y herencia de flujos (Stream) Class URL Class Socket Otras utilidades Class String Colecciones: Vector, Stack, HashTable Recogida de basura Comprobacin de rangos
Bibliotecas de clases Java Herramientas bsicas javac -- compilador Java -> bytecodes java -- intrprete Java jdb -- depurador javah -- crea ficheros de cabecera y stubs para conectividad con C javap -- desensamblador bytecodes -> Java javadoc -- genera documentacin de API en formato HTML a partir de cdigo fuente Java appletviewer -- permite ejecutar applets sin un navegador
Herramientas RMI rmic -- genera clases stub y skeleton para objetos Java que implementan la interfaz java.rmi.Remote rmiregistry -- arranca un objeto registrador en un puerto dado serialver -- devuelve el serialVersionUID para una o ms clases Herramientas de internacionalizacin native2ascii -- convierte ficheros no-Unicode Latin-1 a ste Herramienta JAR jar -- combina varios ficheros en un fichero Java Archive (JAR) Herramienta de firma digital javakey -- genera firmas digitales
Java y C++ Java se parece a C++ Sin algunas cosas Punteros, direcciones, estructuras (struct y union), preprocesado, herencia mltiple, sobrecarga de operadores, tipos enumerados (enum), tipos sin signo (unsigned), goto, variables y funciones globales Ms seguro Recogida de basura, interfaces, paquetes, arrays con lmites, soporte para concurrencia y sincronizacin Aspectos recientes de C++ Excepciones uniformes Informacin de tipos en tiempo de ejecucin Tipo boolean Casting seguro
El cdigo Java es ms sencillo recogida de basura Las facilidades en tiempo de ejecucin ms avanzadas Las interfaces simplifican la jerarqua de herencia El cdigo Java es ms robusto Verificacin al cargar y comprobacin en tiempo de ejecucin Arrays seguros Compilador estricto e inteligente Menos oportunidades para los ms audaces Imposible realizar aritmtica de punteros No es posible hacer mejoras especficas para una plataforma No es cierto eso de que las aplicaciones Java tengan que ser ms lentas que las C++