Вы находитесь на странице: 1из 7

TEMA 4 LENGUAJES ACTUALES DE PROGRAMACIN. CARACTARSTICAS TCNICAS. ESPECIALIDAD FUNCIONAL. PRODUCTIVIDAD. ESTANDARIZACIN.

1.- CARACTERSTICAS TCNICAS

1.1 CONCEPTO DE ALGORITMO Algoritmo: conjunto de pasos o instrucciones que se deben seguir para realizar una determinada tarea. Estas instrucciones deben cumplir: Ser un conjunto finito de instrucciones y que se realicen en un tiempo finito Debe tener un nmero finito (0---N) de datos de entrada y nmero finito (0M) de datos de salida Frente a un mnimo conjunto de datos de partida se debe llegar siempre a un mismo conjunto de resultados.

Otra cualidad de un buen algoritmo es que sea ptimo. 1.2 EL CONCEPTO DE PROGRAMA Un programa es un conjunto de instrucciones destinadas a realizar una tarea. Este conjunto de instrucciones toma unos datos de entrada y devuelve unos datos de salida, unos resultados. Un ordenador funciona bajo control de un programa que debe estar almacenado en la unidad de memoria masiva. Este software, o parte de l, es cargado en la memoria electrnica del ordenador para su posterior ejecucin. Dado que el objetivo de un programa es realizar una tarea, esta debe ser hecha en un tiempo finito. Adems, dados unos mismos datos de entrada al programa siempre se deben obtener unos mismos datos de salida, ya que el programa est destinado a realizar una tarea definida. As pues, un programa debe cumplir ser un algoritmo. Es frecuente que en el proceso de creacin de un programa se produzcan errores que lleven a que ste no sea un algoritmo. Errores muy comunes son: Bucles infinitos: Hacen que el programa no pueda ejecutarse en un tiempo finito Efectos laterales: Errores en la forma de pasar datos entre las diferentes partes de un programa que puede llevar a que los mismos datos de entrada no generen los mismos datos de salida.

1.3 LENGUAJES DE PROGRAMACIN Los lenguajes de programacin son herramientas que nos permiten crear programas (software). Un lenguaje de programacin consta de una serie de normas (gramtica y sintaxis) que permite generar instrucciones que un ordenador interprete. A un conjunto de instrucciones que puede interpretar y ejecutar la computadora y que est escrito para resolver un problema concreto, se le llama programa.

Programacin se utiliza para designar la creacin de programas a pequea escala, el desarrollo de sistemas complejos se suele denominar Ingeniera del Software. Programacin e Ingeniera del Software son complementarios entre si. Un objetivo fundamental de la programacin es que sea de cdigos claros y legibles. La programacin pretende que sus programas sean tiles y eficientes. Cuando se habla de lenguajes de programacin, se suele distinguir entre: Lenguajes de BAJO NIVEL Lenguajes de ALTO NIVEL

LENGUAJES DE BAJO NIVEL. Con este trmino se denominan al Lenguaje Mquina y al Lenguaje Ensamblador. El lenguaje mquina es el lenguaje nativo de la CPU, con lo que cada tipo de procesador dispone de un lenguaje distinto. Este lenguaje est en contacto directo con la CPU, es decir, al nivel ms bajo. El lenguaje ensamblador es un lenguaje construido basndose en el cdigo mquina. Utiliza mnemotcnicos y resulta un poco ms entendible para las personas, pero es muy dependiente de la arquitectura de la CPU, por lo que cada tipo de procesador requiere de un lenguaje ensamblador especfico. Cdigo mquina: John Von Neumann desarroll el modelo que lleva su nombre para describir el concepto de programa almacenado. En este modelo, se tiene una abstraccin de la memoria como un conjunto de celdas, que almacenan simplemente nmeros. Estos nmeros pueden representar dos cosas: los datos o el programa en s. Se tena el problema de representar las acciones que iba a realizar la computadora y que la memoria solamente permita almacenar seales o nmeros binarios (unos y ceros). La solucin que se tom fue que a cada accin que sea capaz de realizar nuestra computadora, asociarle un nmero (opcode) expresado en binario. Por eso cada procesador slo reconoce su propio cdigo mquina. Ensamblador: es la primera abstraccin del Lenguaje Mquina, consistente en asociar a los opcodes palabras clave que faciliten su uso por parte del programador. Al depender del hardware, hay un distinto cdigo mquina (y Lenguaje Ensamblador) para cada CPU. Por ejemplo, podemos nombrar tres lenguajes completamente diferentes: o o o Lenguaje Ensamblador de la familia Intel 80x86 Lenguaje Ensamblador de la familia Motorola 68000 Lenguaje Ensamblador del procesador POWER (usado en las IBM RS/6000)

El en samblador no es directamente entendible por el procesador, requiere una pequea y rpida conversin para obtener el cdigo mquina correspondiente.

LENGUAJES DE ALTO NIVEL: Programar en lenguaje de bajo nivel resulta muy complicado y poco eficiente. Pronto se pens en la necesidad de disear lenguajes independientes del tipo de procesador y mayor nivel de abstraccin fcilmente legible y entendible por las personas. Estos son los lenguajes de alto nivel (C, Basic, Cobol, Fortran, Pascal, etc).

Los lenguajes de programacin de alto nivel facilitan la tarea de programacin, ya que disponen de formas adecuadas que permiten ser ledas y escritas por personas y resultan independientes del modelo de ordenador usado. Hay lenguajes de programacin que utilizan un compilador. La ejecucin de un programa con compilador requiere de dos etapas: 1) Traducir el programa simblico a cdigo mquina. 2) Ejecucin y procesamiento de los datos.

Otros utilizan un programa intrprete o traductor, que analiza directamente el programa fuente y realiza las instrucciones dadas. El inconveniente es que la velocidad de ejecucin es ms lenta ya que debe analizar e interpretar las instrucciones contenidas en el programa fuente. Adems, dentro de los lenguajes de alto nivel, podemos distinguir: Lenguajes imperativos o procedurales: Establecen cmo debe ejecutarse una tarea dividindola en partes y especificando las subtareas asociadas. Usan variables para almacenar valores e instrucciones para indicar operaciones. Son de este tipo Fortran, Pascal, Basic, C, etc Declarativos: Se construyen mediante descripciones de funciones. Ejemplo: Prolog Lenguajes orientados a Objetos: Se centran ms en los datos y su estructura. Un programa consiste en descripciones de unidades denominadas objetos que encapsulan a los datos y las operaciones que actan sobre ellos. Ejemplo: C++, Java

Cmo ente ms cercano al lenguaje natural se utiliza el pseudocdigo, una mezcla de lenguaje natural y lenguaje de programacin. Este se puede definir como un lenguaje de especificacin de algoritmos. Es la representacin narrativa de los pasos que debe realizar el algoritmo para solventar el problema que pretende resolver. El pseudocdigo no puede utilizarse directamente como lenguaje de programacin, sino como herramienta de desarrollo y anlisis de algoritmos. 2.- ESPECIALIDAD FUNCIONAL Por especialidad funcional se entiende los diversos paradismas y estrategias de actuacin que se pueden tomar a la hora de afrontar la resolucin de un problema desde el punto de vista de la programacin o la ingeniera del software. Se distinguen: 2.1.- PROGRAMACIN LINEAL La programacin lineal es el conjunto de tcnicas matemticas que intentan resolver una funcin objetivo sujeta a ciertas restricciones, expresadas por inecuaciones lineales. Se utilizan las siglas PPL para indicar problema de programacin lineal. Este tipo de programacin es muy poco utilizada en el mundo real, es ms utilizada por los acadmicos. 2.2.- PROGRAMACIN ESTRUCTURADA Es una teora de programacin que consiste en construir programas de fcil comprensin. Hasta la programacin orientada a objetos, esta programacin ha dominado el mundo de la ingeniera del software.

La programacin estructurada es especialmente til cuando se necesitan realizar correcciones o modificaciones a un programa o aplicacin. Este tipo de programacin se basa en una metodologa llamada refinamiento sucesivo. Se plantea una operacin como un todo y se divide en segmentos ms sencillos. Una vez terminado todos los segmentos se unifican las aplicaciones realizadas por el conjunto de programadores. Si se ha utilizado adecuadamente, esta integracin debe ser sencilla y no presentar problemas y, de presentar alguno, ser rpidamente detectado. Modularizacin: La programacin estructurada hace uso del concepto de modularizacin (divide y vencers). El programa se divide en mdulos, cada uno de los cuales se analiza, codifica y pone a punto por separado de los dems. Cada programa contiene un mdulo denominado programa principal que controla todo lo que suceda, transfiriendo el control a submdulos para que ellos puedan ejecutar sus funciones. Un mdulo puede transferir el control a otro, sin embargo, cada mdulo debe devolver el control al mdulo del cual recibe el control. La comunicacin entre mdulos se realiza mediante parmetros. Lo normal es que se siga una tcnica descendente (top-down) que consiste en disear primero el mdulo principal, luego los mdulos a los que llama el principal e ir descendiendo hasta llegar a los niveles ms bajos. Nivel superior Mdulo principal Primer Subnivel Submdulo 1 Submdulo 2 . Submdulo N Segundo Subnivel .................... Submdulo M Submdulo P

Estructuras bsicas: La programacin estructurada propone segregar los procesos en estructuras simples (estructuras de control bsicas) que son: o o o Secuencia: Conjunto de N instrucciones, que se ejecutan secuencialmente, desde la primera hasta la ensima, donde cada instruccin se ejecuta una y solo una vez. Seleccin (alternativa o decisin): Instruccin que, en funcin de una comparacin, hace que la ejecucin vaya por un camino de entre dos posibles. Repeticin (iteracin): Instruccin que rompe la ejecucin secuencial del programa haciendo que la ejecucin vuelva a una instruccin anterior en el tiempo.

Se define programa propio cuando cumple que: Posee un solo punto de entra y uno de salida o fin. Existen caminos desde la entrada hasta la salida que se pueden seguir y pasan por todas las partes del programa (no hay cdigo muerto) Todas las instrucciones son ejecutables y no hay bucles infinitos.

Cualquier programa propio se desarrolla mediante la utilizacin de estructuras secuenciales, alternativas y repetitivas. Estas estructuras estn disponibles en todos los lenguajes modernos de programacin imperativa en forma de sentencias o instrucciones. Diagrama de estructura: Una de las herramientas para el diseo de programas es el diagrama o carta de estructuras. Este representa una estructura de programa en trminos de jerarqua y secuencia de funcionamiento. Los smbolos bsicos son: SMBOLO MDULO SELECCIN CONEXIN REPETICIN PASO DE INFORMACIN FUNCIN Representa a los mdulos de la programacin modular. Seleccin o decisin. Conexin de un mdulo otro. La flecha indica que existe una repeticin en funcin de alguna condicin La direccin de la flecha indica la direccin del flujo de datos.

Paradigmas de la programacin estructurada: La programacin estructurada significa escribir un programa de acuerdo con las siguientes reglas: El programa tiene un diseo modular Los mdulos son diseados de modo descendente (top-down) Cada mdulo se codifica con las tres estructuras de control bsicas (secuencia, seleccin y repeticin)

Adems, para aquellos lenguajes antiguos, como Basic o Fortran, que contienen las instruccin GOTO, la programacin estructurada incluye la forma de no usar dicha instruccin. 2.3.- PROGRAMACIN ORIENTADA A OBJETOS La programacin orientada a objetos (POO), intenta simular el mundo real a travs del significado de objetos que contiene caractersticas y funciones (atributos y funciones). Al diseo o plano que se sigue para construir un objeto se denomina clase. Los objetos son instancias de las clases. Como ejemplo, los planos que representan como construir un coche serian la clase coche, mientras que los coches construidos siguiendo esos planos, pero que cada uno supone una entidad distinta, seran los objetos. La POO se basa en la idea de un objeto, que es una combinacin de variables locales (atributos), y procedimientos (mtodos), que juntos conforman una entidad de programacin. El trmino encapsulacin describe la combinacin de estructuras de datos y de mtodos que son manipulados por el objeto. La llamada a un objeto se denomina pasar un mensaje a un objeto. Gran

parte del problema de la POO est en conseguir representar con objetos los conceptos o realidades que maneja el programa y saber qu relaciones se establecen entre ellos a travs de los mensajes que pueden enviarse entre un objeto y otro. A esto se le denomina modelizar la realidad. Reunir y controlar el objeto como un todo se conoce como encapsulacin. En la POO la abstraccin es un trmino externo al objeto. La jerarqua consiste en la clasificacin y organizacin de las abstracciones segn su naturaleza. El ms claro ejemplo de jerarqua es la herencia. Se define la herencia como una jerarqua de abstracciones, y la relacin entre clases, donde se comparte la estructura y el compotamiento de una o ms clase considerada como clases superiores o superclase.

3.- PRODUCTIVIDAD Se distinguen 5 factores importantes que inciden en la productividad del software: Factores humanos: El tamao y la experiencia de la organizacin de desarrollo. Factores del problema: La complejidad del problema y el nmero de cambios en la restricciones o los requisitos del diseo. Factores del proceso: Tcnicas de anlisis y diseo qu se utilizan. Factores del producto: Fiabilidad y rendimiento del sistema basado en ordenadores. Factores del recurso: Disponibilidad de herramientas de desarrollo y recursos.

Si uno de los factores de productividad est por encima de la media (altamente favorable) para un proyecto dado, la productividad de desarrollo del software ser significativamente ms alta que el mismo factor por debajo de la media (desfavorable). 3.1. Medida de la calidad El objetivo de la ingeniera del software es producir un sistema de alta calidad. Aunque hay muchas medidas de calidad de software, la correccin, la facilidad de mantenimiento integral y la facilidad de uso proporcionan indicadores tiles para el equipo del proyecto. Correccin: Un programa debe operar correctamente. La correccin es el grado en el que el software lleva a cabo su funcin requerida. La medida ms comn de correccin son los defectos por KLDC, en donde un defecto se define como una falta verificada de conformidad con los requisitos. Mantenimiento: Implica ms esfuerzo que cualquier otra actividad de ingeniera del software. La facilidad de mantenimiento es la facilidad con que se puede corregir un programa si se encuentra un error, se puede adaptar si su entorno cambia o mejorar si se desea un cambio. No hay forma de medir directamente la facilidad de mantenimiento, se deben usar medidas indirectas. Una mtrica orientada al tiempo es el tiempo medio de cambio (TMC), es decir, el tiempo que se tarda en analizar la peticin de cambio, disear una modificacin adecuada, implantar el cambio, probarlo y distribuir el cambio a los usuarios. Una mtrica orientada al costo para la capacidad de mantenimiento trata de cuantificar el coste de corregir defectos encontrados despus de haber distribuido el software a sus usuarios finales. Integridad: En esta poca de intrusos informticos y virus, la integridad del software tiene gran importancia. Este atributo mide la habilidad de un sistema de resistir ataques contra su seguridad. El ataque se puede realizar en programas, datos y documentos. Para medir la integridad, se suele definir dos atributos adicionales: Amenaza, es la probabilidad de que un ataque de un tipo determinado ocurra

en un tiempo determinado. Seguridad, es la probabilidad de que se pueda repeler un ataque de un tipo determinado. Facilidad de uso: El calificativo amigable con el usuario se ha convertido en omnipresente en las discusiones sobre los productos de software. La facilidad de uso es un intento de cuantificar lo amigable que puede ser con el usuario y se puede medir en funcin de cuatro caractersticas: Habilidad intelectual y/o fsica requerida para aprender el sistema. El tiempo requerido para llegar a ser moderadamente eficiente en el uso del sistema. Aumento neto en productividad medida cuando alguien utiliza el sistema modera y eficientemente. Valoracin subjetiva de la disposicin de los usuarios al sistema.

4.- ESTANDARIZACIN En los inicios se programaba de manera artesanal. No existan tcnicas ni metodologas estndar que proporcionasen unas especificaciones claras de la tarea que se pretenda resolver. Un buen estndar, combinado con una buena prctica y disciplina del equipo de desarrollo, puede ser una herramienta muy poderosa para elevar la calidad y productividad del proceso de construccin de software. Los estndares y convenciones ofrecen los siguientes beneficios especficos: Permite dar por hecho ciertos aspectos de la programacin. Al tomar una decisin global en vez de una seria de decisiones locales, los programadores pueden concentrarse en aspectos claves del a codificacin. Permite transferir conocimiento de un proyecto a otro. Permiten al programador aprender fcilmente los aspectos conceptuales de un proyecto en vez de distraerse en descifrar el cdigo de otro programador. Reduce la proliferacin de vicios de programacin. Son una forma de compensar las debilidades del lenguaje de programacin. Nos permite enfatizar relaciones entre los datos y otros elementos del programa.

En conclusin, lo importante es comprender que un estndar, el que sea, siempre es mejor que no tener ninguno.

Вам также может понравиться