TECNICAS DE ESPECIFICACIÓN DE PROCESOS

Warnier Orr

Es una técnica que utiliza una representación semejante a la de cuadros sinópticos para mostrar el funcionamiento y organización de los elementos que conforman el algoritmo.

Los diagramas Warnier Orr son útiles porque son compatibles con las técnicas de programación estructurada ; y además, son fáciles de

desarrollar. Los diagramas Warnier Orr son fáciles de leer y modificar y no tienen que completarse antes de ser útiles. Se van desarrollando

hacia otras salidas del sistema.

Básicamente, utiliza una notación de llaves para organizar los módulos y se auxilia en la siguiente simbología para indicar operaciones de control.

Símbolo Significado

+

OR (uno, otro o varios)

 XOR (uno u otro, solo uno)

 (x,y) puede hacerse tantas veces desde x hasta y

 Nota : Los diagramas Warnier Orr se leen de izquierda a derecha y de arriba hacia abajo.

 Ejemplo de un diagrama de Warnier Orr, de un control de almacén

(0,n) = De cero veces a n veces

(1,n) = De una vez a n veces

 

 

 Nassi-Schneiderman

El diagrama estructurado N-S también conocido como diagrama de chapin es como un diagrama de flujo en el que se omiten las flechas de unión y las cajas son contiguas.

Un enfoque mas estructurado, pero tal vez menos visual, para el diseño y la documentación en el diagrama Nassi Schneiderman.

Los diagramas NS tienen tres símbolos principales : el primero es un cuadro que sirve para representar cualquier proceso en el programa ; el segundo símbolo es una decisión ; y el tercero es un cuadro dentro de otro cuadro que se utiliza para indicar que se lleva a cabo una interación

Las acciones sucesivas se pueden escribir en cajas sucesivas y como en los diagramas de flujo, se pueden escribir diferentes acciones en una caja. Un algoritmo se represente en la sig. forma:

Inicio

Accion1

Accion2

. . .

Fin

Una estructura condicional en N-S se representa de la siguiente manera :

 Ventajas

Adopta la filosofía de la programación estructurada, que utiliza un enfoque descendente, utiliza un número limitado de símbolos de tal forma que el diagrama de flujo ocupa menos espacio y puede leerse con cierta finalidad.

Desventajas

Deben estar completos y ser muy claros, con el fin de que se entiendan.

 

 HIPO

Conocida originalmente como la técnica HIPO (Hierarchy plus Input-Process-Output), permite producir las especificaciones funcionales de un programa y al mismo tiempo su documentación.

Consiste en una tabla visual de contenido que apunta a los diagramas HIPO del paquete y muestra las funciones y subfunciones que efectúa el programa y las inter-relaciones de las mismas. En cada diagrama HIPO se relaciona la entrada con el proceso y la salida respectiva.

HIPO es una herramienta muy útil en la fase de diseño y se complementa muy bien con la PE .

Add a comment diciembre 10, 2009

Metodología de desarrollo de software en ingeniería de software es un marco de trabajo usado para estructurar, planificar y controlar el proceso de desarrollo en sistemas de información.  

Una metodología de desarrollo de software se refiere a un framework que es usado para estructurar, planear y controlar el proceso de desarrollo en sistemas de información.

A lo largo del tiempo, una gran cantidad de métodos han sido desarrollados diferenciándose por su fortaleza y debilidad.

El framework para metodología de desarrollo de software consisten en:

Estos frameworks son a menudo vinculado a algún tipo de organización, que además desarrolla, apoya el uso y promueve la metodología. La metodología es a menudo documentadas en algún tipo de documentación formal.

MODELO DE  ESPIRAL

Los principios básicos son:

  • La atención se centra en la evaluación y reducción del riesgo del proyecto dividiento el proyecto en segmentos más pequeños y proporcionar más facilidad de cambio durante el proceso de desarrollo, así como ofrecer la oportunidad de evaluar los riesgos y con un peso de la consideración de la continuación del proyecto durante todo el ciclo de vida.
  • Cada viaje alrededor de la espiral atraviesa cuatro cuadrantes básicos: (1) determinar objetivos, alternativas, y desencadenantes de la iteración; (2) Evaluar alternativas; Identificar y resolver los riesgos; (3) desarrollar y verificar los resultados de la iteración, y (4) plan de la próxima iteración.
  • Cada ciclo comienza con la identificación de los interesados y sus condiciones de ganancia, y termina con la revisión y examinación.

 

MODELO POR Prototipado

El prototipado es el framework de actividades dedicada al desarrollo de software prototipo, es decir, versiones incompletas del software a desarrollar.

El desarrollo orientado a prototipos

Si bien algunos autores consideran que esto es parte del ciclo de vida clásico (Boehm, 1988), es también posible verlo como un método independiente.

Una definición de un prototipo en software podría ser:

“…es un modelo del comportamiento del sistema que puede ser usado para entenderlo completamente o ciertos aspectos de él y así clarificar los requerimientos… Un prototipo es una representación de un sistema, aunque no es un sistema completo, posee las características del sistema final o parte de ellas”

Las fases que comprende el método de desarrollo orientado a prototipos serían:

Investigación preliminar. Las metas principales de esta fase son: determinar el problema y su ámbito, la importancia y sus efectos potenciales sobre la organización por una parte y, por otro lado, identificar una idea general de la solución para realizar un estudio de factibilidad que determine la factibilidad de una solución software.

Definición de los requerimientos del sistema. El objetivo de esta etapa es registrar todos los requerimientos y deseos que los usuarios tienen en relación al proyecto bajo desarrollo. Esta etapa es la más importante de todo el ciclo de vida, es aquí donde el desarrollador determina los requisitos mediante la construcción, demostración y retroalimentaciones del prototipo. Por lo mismo esta etapa será revisada con más detalle luego de esta descripción.

Diseño técnico. Durante la construcción del prototipo, el desarrollador ha obviado el diseño detallado. El sistema debe ser entonces rediseñado y documentado según los estándares de la organización y para ayudar a las mantenciones futuras. Esta fase de diseño técnico tiene dos etapas: por un lado, la producción de una documentación de diseño que especifica y describe la estructura del software, el control de flujo, las interfaces de usuario y las funciones y, como segunda etapa, la producción de todo lo requerido para promover cualquier mantención futura del software.

4

Programación y prueba. Es donde los cambios identificados en el diseño técnico son implementados y probados para asegurar la corrección y completitud de los mismos con respecto a los requerimientos.

Operación y mantención. La instalación del sistema en ambiente de explotación, en este caso, resulta de menor complejidad, ya que se supone que los usuarios han trabajado con el sistema al hacer las pruebas de prototipos. Además, la mantención también debería ser una fase menos importante, ya que se supone que el refinamiento del prototipo permitiría una mejor claridad en los requerimientos, por lo cual las mantenciones perfectivas se reducirían. Si eventualmente se requiriese una mantención entonces el proceso de prototipado es repetido y se definirá un nuevo conjunto de requerimientos.

La fase más importante corresponde a la definición de requerimientos, la cual correspondería a un proceso que busca aproximar las visiones del usuario y del desarrollador mediante sucesivas iteraciones. La definición de requerimientos consiste de cinco etapas entre dos de las cuales se establece un ciclo iterativo:

Análisis grueso y especificación. El propósito de esta subfase es desarrollar un diseño básico para el prototipo inicial.

Diseño y construcción. El objetivo de esta subfase es obtener un prototipo inicial. El desarrollador debe concentrarse en construir un sistema con la máxima funcionalidad, poniendo énfasis en la interface del usuario.

Evaluación. Esta etapa tiene dos propósitos: extraer a los usuarios la especificación de los requerimientos adicionales del sistema y verificar que el prototipo desarrollado lo haya sido en concordancia con la definición de requerimientos del sistema. Si los usuarios identifican fallas en el prototipo, entonces el desarrollador simplemente corrige el prototipo antes de la siguiente evaluación. El prototipo es repetidamente modificado y evaluado hasta que todos los requerimientos del sistema han sido satisfechos. El proceso de evaluación puede ser dividido en cuatro pasos separados: preparación, demostración, uso del prototipo y discusión de comentarios. En esta fase se decide si el prototipo es aceptado o modificado.

5

Modificación. Esto ocurre cuando la definición de requerimientos del sistema es alterada en la sub-fase de evaluación. El desarrollador entonces debe modificar el prototipo de acuerdo a los comentarios hechos por los usuarios.

Término. Una vez que se ha desarrollado un prototipo estable y completo, es necesario ponerse de acuerdo en relación a aspectos de calidad y de representación del sistema.

Modelo en cascada

Es un proceso secuencial de desarrollo en el que los pasos de desarrollo son vistos hacia abajo (como en una cascada de agua) a través de las fases de análisis de las necesidades, el diseño, implementación, pruebas (validación), la integración, y mantenimiento. La primera descripción formal del modelo de cascada se cita a menudo a un artículo publicado por Winston Royce W.[2] en 1970, aunque Royce no utiliza el término “cascada” de este artículo.

Los principios básicos del modelo de cascada son los siguientes:

  • El proyecto está dividido en fases secuenciales, con cierta superposición y splashback aceptable entre fases.
  • Se hace hincapié en la planificación, los horarios, fechas, presupuestos y ejecución de todo un sistema de una sola vez.
  • Un estricto control se mantiene durante la vida del proyecto a través de la utilización de una amplia documentación escrita, así como a través de comentarios y aprobación / signoff por el usuario y la tecnología de la información de gestión al final de la mayoría de las fases antes de comenzar la próxima fase.

 

METODOLOGIAS MODERNAS DE DESARROLLO DE SOFTWARE

Entre las metodologías modernas -unas más, otras menos- se puede destacar:

Hay muchas más, pero quizá éstas sean las más populares en el momento de escribir estas líneas. Personalmente recomendaría un cierto conocimiento general de al menos las cuatro últimas (Scrum, XP, RUP y AUP)

Add a comment diciembre 3, 2009

HERRAMIENTAS CASE

Las herramientas CASE (Computer Aided Software Engineering, Ingeniería de Software Asistida por Ordenador) son diversas aplicaciones informáticas destinadas a aumentar la productividad en el desarrollo de software reduciendo el coste de las mismas en términos de tiempo y de dinero. Estas herramientas nos pueden ayudar en todos los aspectos del ciclo de vida de desarrollo del software en tareas como el proceso de realizar un diseño del proyecto, calculo de costes, implementación de parte del código automáticamente con el diseño dado, compilación automática, documentación o detección de errores entre otras.

VENTAJAS

1. Lenguaje de comunicación entre usuarios
y desarrolladores.
2. Comprensión detallada de la funcionalidad
del sistema.
3. Acotación precisa de las habilitaciones de
los usuarios.
4. Gestión de riesgo más eficiente para
gobernar la complejidad.
5. Estimación más exacta para determinar
tiempo, recursos y prioridades en la dosificación
de esfuerzo de desarrollo.
6. Fiel trazabilidad para verificar la traducción
de requerimientos en código ejecutable.
7. Mayor control para mantener las sucesivas
revisiones de los programas.
8. Certificación contractual Cliente-
Desarrollador.
9. Documentación orientada al usuario: Helps
– Manual de Procedimientos – Reglas de Negocio.
10. Documentación orientada al administrador
del sistema: Soporte de Mantenimiento.

Facilidad para la revisión de aplicaciones

Soporte para el desarrollo de prototipos de sistemas

Generación de código

Mejora en la habilidad para satisfacer los requerimientos del usuario

Soporte interactivo para el proceso de desarrollo

DESVENTAJAS

Confiabilidad en los métodos estructurados

Falta de niveles estándar para el soporte de la metodología

Diagramas no utilizadosiagramas no utilizado

Alcance limitado

Ejemplos de Herramientas CASE

8.2.3.1. Herramientas Abiertas

8.2.3.2. Herramientas Comerciales/Cerradas

http://www.monouml.org/docs/formal/spanish/x176.html

Add a comment noviembre 19, 2009

CARACTERISTICAS DE LOS LENGUAJES

C++

Este lenguaje es un lenguaje de programación mixto, se le puede compilar. Una de las ventajas que nos ofrece es que es mucho más sencillo de aprender para los programadores que ya conocen el lenguaje C.

Tiene una enorme compatibilidad con el C principalmente por dos razones: Por la gran cantidad de código C que comparten, y para facilitar el paso de los programadores de C al nuevo lenguaje C++.

Este lenguaje no es un lenguaje orientado a objetos puro, porque nace como una evolución de otro anterior. Concretamente del lenguaje C, y desde su nacimiento fue un lenguaje que crearon programadores para utilizarlo ellos mismos. Por esta razón se saltaron algunos aspectos como el diseño, imagen, etc. de este lenguaje.

JAVA

Java posee una curva de aprendizaje muy rápida. Resulta relativamente sencillo escribir applets interesantes desde el principio. Todos aquellos familiarizados con C++ encontrarán que Java es más sencillo, ya que se han eliminado ciertas características, como los punteros. Debido a su semejanza con C y C++, y dado que la mayoría de la gente los conoce aunque sea de forma elemental, resulta muy fácil aprender Java. Los programadores experimentados en C++ pueden migrar muy rápidamente a Java y ser productivos en poco tiempo.

Orientado a objetos

Java fue diseñado como un lenguaje orientado a objetos desde el principio. Los objetos agrupan en estructuras encapsuladas tanto sus datos como los métodos (o funciones) que manipulan esos datos. La tendencia del futuro, a la que Java se suma, apunta hacia la programación orientada a objetos, especialmente en entornos cada vez más complejos y basados en red.

JAVA SCRIPT

Algunas características del lenguaje son:

Su sintaxis es similar a la usada en Java y C, al ser un lenguaje del lado del cliente este es interpretado por el navegador, no se necesita tener instalado ningún Framework.

 

  • Variables: var = “Hola”, n=103
  • Condiciones: if(i<10){ … }
  • Ciclos: for(i; i<10; i++){ … }
  • Arreglos: var miArreglo = new Array(“12”, “77”, “5”)
  • Funciones: Ppopias del lenguaje y predefinidas por los usuarios
  • Comentarios para una sola línea: // Comentarios
  • Comentarios para varias lineas:
    /*
    Comentarios
    */

     

  • Permite la programación orientada a objetos: document.write("Hola");
  • Las variables pueden ser definidas como: string, integer, flota, bolean simplemente utilizando “var”. Podemos usar “+” para concatenar cadenas y variables.

 

Javascript es muy fácil de aprender para quien ya conoce lenguajes similares como el C++ o Java, pero, dada su simplicidad sintáctica y su manejabilidad, no es tampoco difícil para quien se acerca por primera vez a este lenguaje. Sin embargo, esto puede ser un arme de doble filo porque la simplicidad se basa en una disponibilidad de objetos limitada, por lo que algunos procedimientos, aparentemente muy sencillos, requieren script bastante complejos.

La característica principal de Javascript, de hecho, es la de ser un lenguaje de scripting, pero, sobre todo, la de ser el lenguaje de scripting por excelencia y, sin lugar a dudas, el más usado. Esta particularidad conlleva una notable serie de ventajas y desventajas según el uso que se le deba dar y teniendo en cuenta la relación que se establece entre el mecanismo cliente-servidor. Para explicar con pocas palabras dicha relación, podemos decir que el servidor envía los datos al cliente y estos datos pueden llegar en en dos formatos diversos: en formato texto (o ASCII) o en formato binario (o código máquina: El cliente sabe cómo comprender sólo el formato binario (es decir, la secuencia de 1 y 0), por lo que si los datos llegan en este formato son inmediatamente ejecutables (y, por desgracia, no dejan abierta la posibilidad de efectuar controles), mientras que si el formato es diverso tienen que ser interpretados y traducidos al formato binario y, por tanto, el cliente necesitará un filtro, o mejor dicho, un intérprete que sepa leer estos datos y los pueda traducir al binario. Los datos en formato texto son visibles al usuario como simples combinaciones de caracteres y de palabras y son, por tanto, fáciles de manipular, si bien requieran más tiempo para su interpretación a causa de los distintos pasos y de las transformaciones a las que deben someterse para que el cliente pueda comprenderlos: Los datos en formato binario, sin embargo, son difíciles de comprender por el usuario, pero inmediatamente ejecutables por el cliente ya que no requieren fases intermedias.

C#

Con la idea de que los programadores más experimentados puedan obtener una visión general del lenguaje, a continuación se recoge de manera resumida las principales características de C# Alguna de las características aquí señaladas no son exactamente propias del lenguaje sino de la plataforma .NET en general, y si aquí se comentan es porque tienen una repercusión directa en el lenguaje:

 

  • Sencillez: C# elimina muchos elementos que otros lenguajes incluyen y que son innecesarios en .NET. Por ejemplo:

 

  •  
    • El código escrito en C# es autocontenido, lo que significa que no necesita de ficheros adicionales al propio fuente tales como ficheros de cabecera o ficheros IDL

 

  •  
    • El tamaño de los tipos de datos básicos es fijo e independiente del compilador, sistema operativo o máquina para quienes se compile (no  como en C++), lo que facilita la portabilidad del código.

 

  •  
    • No se incluyen elementos poco útiles de lenguajes como C++ tales como macros, herencia múltiple o la necesidad de un operador diferente del punto (.) acceder a miembros de espacios de nombres (::)

 

  • Modernidad: C# incorpora en el propio lenguaje elementos que a lo largo de los años ha ido demostrándose son muy útiles para el desarrollo de aplicaciones y que en otros lenguajes como Java o C++ hay que simular, como un tipo básico decimal que permita realizar operaciones de alta precisión con reales de 128 bits (muy útil en el mundo financiero), la inclusión de una instrucción foreach que permita recorrer colecciones con facilidad y es ampliable a tipos definidos por el usuario, la inclusión de un tipo básico string para representar cadenas o la distinción de un tipo bool específico para representar valores lógicos.

 

  • Orientación a objetos: Como todo lenguaje de programación de propósito  general  actual, C# es un lenguaje orientado a objetos, aunque eso es más bien una característica del CTS que de C#. Una diferencia de este enfoque orientado a objetos respecto al de otros lenguajes como C++ es que el de C# es más puro en tanto que no admiten ni funciones ni variables globales sino que todo el código y datos han de definirse dentro de definiciones de tipos de datos, lo que reduce problemas por conflictos de nombres y facilita la legibilidad del código.

    C# soporta todas las características propias del paradigma de programación   orientada a objetos: encapsulación, herencia y polimorfismo.

     

    Orientación a componentes: La propia sintaxis de C# incluye elementos propios del diseño de componentes que otros lenguajes tienen que simular mediante construcciones más o menos complejas. Es decir, la sintaxis de C# permite definir cómodamente propiedades (similares a campos de acceso controlado), eventos (asociación controlada de funciones de respuesta a notificaciones) o atributos (información sobre un tipo o sus miembros) 

 

  • Gestión automática de memoria: Como ya se comentó, todo lenguaje de .NET tiene a su disposición el recolector de basura del CLR. Esto tiene el efecto en el lenguaje de que no es necesario incluir instrucciones de destrucción de objetos. Sin embargo, dado que la destrucción de los objetos a través del recolector de basura es indeterminista y sólo se realiza cuando éste se active –ya sea por falta de memoria, finalización de la aplicación o solicitud explícita en el fuente-, C# también proporciona un mecanismo de liberación de recursos determinista a través de la instrucción using.

 

  • Seguridad de tipos: C# incluye mecanismos que permiten asegurar que los accesos a tipos de datos siempre se realicen correctamente, lo que permite evita que se produzcan errores difíciles de detectar por acceso a memoria no perteneciente a ningún objeto y es especialmente necesario en un entorno gestionado por un recolector de basura. Para ello se toman medidas del tipo: 

 

  •  
    • Sólo se admiten conversiones entre tipos compatibles. Esto es, entre un tipo y antecesores suyos, entre tipos para los que explícitamente se haya definido un operador de conversión, y entre un tipo y un tipo hijo suyo del que un objeto del primero almacenase una referencia del segundo (downcasting) Obviamente, lo último sólo puede comprobarlo en tiempo de ejecución el CLR y no el compilador, por lo que en realidad el CLR y el compilador colaboran para asegurar la corrección de las conversiones.

 

  •  
    • No se pueden usar variables no inicializadas. El compilador da a los campos un valor por defecto consistente en ponerlos a cero y controla mediante análisis del flujo de control del fuente que no se lea ninguna variable local sin que se le haya asignado previamente algún valor.

 

  •  
    • Se comprueba que todo acceso a los elementos de una tabla se realice con índices que se encuentren dentro del rango de la misma.

 

  •  
    • Se puede controlar la producción de desbordamientos en operaciones aritméticas, informándose de ello con una excepción cuando ocurra. Sin embargo, para conseguirse un mayor rendimiento en la aritmética estas comprobaciones no se hacen por defecto al operar con variables sino sólo con constantes (se pueden detectar en tiempo de compilación)

 

  •  
    • A diferencia de Java, C# incluye delegados, que son similares a los punteros a funciones de C++ pero siguen un enfoque orientado a objetos,  pueden almacenar referencias a varios métodos simultáneamente, y se comprueba que los métodos a los que apunten tengan parámetros y valor de retorno del tipo indicado al definirlos.

 

  •  
    • Pueden definirse métodos que admitan un número indefinido de parámetros de un cierto tipo, y a diferencia lenguajes como C/C++, en C# siempre se comprueba que los valores que se les pasen en cada llamada sean de los tipos apropiados.

 

  • Instrucciones seguras: Para evitar errores muy comunes, en C# se han impuesto una serie de restricciones en el uso de las instrucciones de control más comunes. Por ejemplo, la guarda de toda condición ha de ser una expresión condicional y no aritmética, con lo que se evitan errores por confusión del operador de igualdad (==) con el de asignación (=); y todo caso de un switch ha de terminar en un break o goto que indique cuál es la siguiente acción a realizar, lo que evita la ejecución accidental de casos y facilita su reordenación.

 

  • Sistema de tipos unificado: A diferencia de C++, en C# todos los tipos de datos que se definan siempre derivarán, aunque sea de manera implícita, de una clase base común llamada System.Object, por lo que dispondrán de todos los miembros definidos en ésta clase (es decir, serán “objetos”) 

 

  • Extensibilidad de tipos básicos: C# permite definir, a través de estructuras, tipos de datos para los que se apliquen las mismas optimizaciones que para los tipos de datos básicos. Es decir, que se puedan almacenar directamente en pila (luego su creación, destrucción y acceso serán más rápidos) y se asignen por valor y no por referencia. Para conseguir que lo último no tenga efectos negativos al pasar estructuras como parámetros de métodos, se da la posibilidad de pasar referencias a pila a través del modificador de parámetro ref.

 

  • Extensibilidad de operadores: Para facilitar la legibilidad del código y conseguir que los nuevos tipos de datos básicos que se definan a través de las estructuras estén al mismo nivel que los básicos predefinidos en el lenguaje, al igual que C++ y a diferencia de Java, C# permite redefinir el significado de la mayoría de los operadores -incluidos los de conversión, tanto para conversiones implícitas como explícitas- cuando se apliquen a diferentes tipos de objetos.

     

    Extensibilidad de modificadores: C# ofrece, a través del concepto de atributos, la posibilidad de añadir a los metadatos del módulo resultante de la compilación de cualquier fuente información adicional a la generada por el  compilador  que luego podrá ser consultada en tiempo ejecución a través de la librería de reflexión de .NET . Esto, que más bien es una característica propia de la plataforma .NET y no de C#, puede usarse como un mecanismo para definir nuevos modificadores.

 

  • Versionable: C# incluye una política de versionado que permite crear nuevas versiones de tipos sin temor a que la introducción de nuevos miembros provoquen errores difíciles de detectar en tipos hijos previamente desarrollados y ya extendidos con miembros de igual nombre a los recién introducidos. 

    Si una clase introduce un nuevo método cuyas redefiniciones deban seguir la regla de llamar a la versión de su padre en algún punto de su código, difícilmente seguirían esta regla miembros de su misma signatura definidos en clases hijas previamente a la definición del mismo en la clase padre;  o si introduce un nuevo campo con el mismo nombre que algún método de una  clase hija, la clase hija dejará de funcionar. Para evitar que esto ocurra, en C# se toman dos medidas:

 

  •  
    • Se obliga a que toda  redefinición deba incluir el modificador override, con lo que la versión de la clase hija nunca sería considerada como una redefinición de la versión de miembro en la clase padre ya que no incluiría override. Para evitar que por accidente un programador incluya este modificador, sólo se permite incluirlo en miembros que tengan la misma  signatura que miembros marcados como redefinibles mediante el modificador virtual. Así además se evita el error tan frecuente en Java de creerse haber redefinido un miembro, pues si el miembro con override no existe en la clase padre se producirá un error de compilación.

 

  •  
    • Si no se considera redefinición, entonces se considera que lo que se desea es ocultar el método de la clase padre, de modo que para la clase hija sea como si nunca hubiese existido. El compilador avisará de esta decisión a través de un mensaje de aviso que puede suprimirse  incluyendo el modificador new en la definición del miembro en la clase hija para así indicarle explícitamente la intención de ocultación.

 

  • Eficiente: En principio, en C# todo el código incluye numerosas restricciones para asegurar su seguridad y no permite el uso de punteros. Sin embargo, y a diferencia de Java, en C# es posible saltarse dichas restricciones manipulando  objetos a través de punteros. Para ello basta marcar regiones de código como inseguras (modificador unsafe) y podrán usarse en ellas punteros de forma similar a cómo se hace en C++, lo que puede resultar vital para situaciones donde se necesite una eficiencia y velocidad procesamiento muy grandes. 

 

  • Compatible: Para facilitar la migración de programadores, C# no sólo mantiene una sintaxis muy similar a C, C++  o Java que permite incluir directamente en código escrito en C# fragmentos de código escrito en estos lenguajes, sino que el CLR también ofrece, a través de los llamados Platform Invocation Services (PInvoke), la posibilidad de acceder a código nativo escrito como funciones sueltas no orientadas a  objetos tales como las DLLs de la API Win32. Nótese que la capacidad de usar punteros en código inseguro permite que se  pueda acceder con facilidad a este tipo de funciones, ya que éstas muchas veces esperan recibir o devuelven punteros.

 

PHP

Al ser un lenguaje libre dispone de una gran cantidad de características que lo convierten en la herramienta ideal para la creación de páginas web dinámicas:

  • Soporte para una gran cantidad de bases de datos: MysSQL, PostgreSQL, Oracle, MS SQL Server, Sybase mSQL, Informix, entre otras.
  • Integración con varias bibliotecas externas, permite generar documentos en PDF (documentos de Acrobat Reader) hasta analizar código XML.
  • Ofrece una solución simple y universal para las paginaciones dinámicas del Web de fácil programación.
  • Perceptiblemente más fácil de mantener y poner al día que el código desarrollado en otros lenguajes.
  • Soportado por una gran comunidad de desarrolladores, como producto de código abierto, PHP goza de la ayuda de un gran grupo de programadores, permitiendo que los fallos de funcionamiento se encuentren y reparen rápidamente.
  • El código se pone al día continuamente con mejoras y extensiones de lenguaje para ampliar las capacidades de PHP.
  • Con PHP se puede hacer cualquier cosa que podemos realizar con un script CGI, como el procesamiento de información en formularios, foros de discusión, manipulación de cookies y páginas dinámicas.

Un sitio con páginas webs dinámicas es aquel que permite interactuar con el visitante, de modo que cada usuario que visita la página vea la información modificada para propósitos particulares.

 

ACTIONSCRIPT

Para facilitar la comprensión vamos a dividir las características de action script en
diferentes apartados y a su vez intentaremos relacionarlo con el pseudo-lenguaje.
Acciones:
En las acciones debemos diferenciar varios tipos:
Control Película: Éstas son las acciones que tienen referencia a las acciones
sobre la película, hacen referencia a:
Un Fotograma: Cuando queremos hacer referencia a un fotograma,
adjuntamos el código al fotograma, y este código se ejecutará cuando la
película se reproduzca sobre ese fotograma,
Por ejemplo:
gotoAndPlay(1);
esta acción hará que cuando la película pase por el
fotograma que contiene ese código, se valla directamente
al fotograma numero 1.
Un Clip de película: Cuando queremos que la acción haga referencia a
un clip, adjuntamos el código a ese clip:
Por ejemplo:
_x=_x+20;
esta acción hará que cuando ese clip sea cargado, su
posición en el eje x sea esa posición más 20.
*En los clips de películas debemos diferenciar un tipo de clip especial,
que es el tipo botón, pues este viene adaptado a las acciones de pasar el
ratón por encima, pulsar y otras.
Navegador: Estas son las acciones que nos permiten comunicarnos con el
navegador, podemos cargar una pagina en el navegador, activar la pantalla
completa del navegador, cargar una película nueva dentro de la que se esta
ejecutando, y tal vez la mas importante sea la de cargar y enviar variables desde
la película, esto amplia mucho los horizontes de Action Script, pues las
limitaciones que este pudiera tener se complementan con otros lenguajes. De
este modo, si por ejemplo queremos comunicarnos con una base de datos (mysql
por ejemplo)Action Script no nos lo permite, pero si PHP(un lenguaje servidor
orientado a las paginas Web)al que podemos pasarles y recibir de el las variables
que queramos, entablando de este modo una comunicación indirecta con la base
de datos.

NATURAL

Tiene la sentencia de control de flujo “ESCAPE TOP”, la cual es similar a “continue” en C, o “Continue For” en “Visual Basic.NET 2005″, excepto que también funciona dentro de una subrutina para retornar desde la misma y continuar con la siguiente iteración del bucle de proceso.

Como “continue”, evita gran número de indentaciones cuando se usan bloques anidados de instrucciones dentro de cualquier sentencia de tipo bucle.

Ejemplo con ESCAPE TOP:

DEFINE DATA LOCAL
1 I (N3)                                   /* 3 dígitos, sin decimales
END-DEFINE
FOR I = 2 TO 100
  IF (I / 2 * 2) = I AND I > 2
    WRITE 'Número' I 'es divisible entre 2'
    ESCAPE TOP
  END-IF
  IF (I / 3 * 3) = I AND I > 3
    WRITE 'Número' I 'es divisible entre 3'
    ESCAPE TOP
  END-IF
  IF (I / 5 * 5) = I AND I > 5
    WRITE 'Número' I 'es divisible entre 5'
    ESCAPE TOP
  END-IF
  IF (I / 7 * 7) = I AND I > 7
    WRITE 'Número' I 'es divisible entre 7'
    ESCAPE TOP
  END-IF
  IF (I / 11 * 11) = I AND I > 11
    WRITE 'Número' I 'es divisible entre 11'
    ESCAPE TOP
  END-IF
  WRITE 'Número' I 'es primo'
END-FOR
END

Los niveles de indentación pueden ser ajustados automáticamente con el comando STRUCT dentro del Editor de NATURAL.

El mismo ejemplo, sin ESCAPE TOP:

DEFINE DATA LOCAL
1 I (N3)                               /* 3 dígitos, sin decimales
END-DEFINE
FOR I = 2 TO 100
  IF (I / 2 * 2) = I AND I > 2
    WRITE 'Número' I 'es divisible entre 2'
  ELSE
    IF (I / 3 * 3) = I AND I > 3
      WRITE 'Número' I 'es divisible entre 3'
    ELSE
      IF (I / 5 * 5) = I AND I > 5
        WRITE 'Número' I 'es divisible entre 5'
      ELSE
        IF (I / 7 * 7) = I AND I > 7
          WRITE 'Número' I 'es divisible entre 7'
        ELSE
          IF (I / 11 * 11) = I AND I > 11
            WRITE 'Número' I 'es divisible entre 11'
          ELSE
            WRITE 'Número' I 'es primo'
          END-IF
        END-IF
      END-IF
    END-IF
  END-IF
END-FOR
END

 

 

Add a comment noviembre 12, 2009

Metodogias de Programación

 

Programación modular

La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible y manejable. Se presenta históricamente como una evolución de la programación estructurada para solucionar problemas de programación más grandes y complejos de lo que ésta puede resolver. Al aplicar la programación modular, un problema complejo debe ser dividido en varios subproblemas más simples, y estos a su vez en otros subproblemas más simples. Esto debe hacerse hasta obtener subproblemas lo suficientemente simples como para poder ser resueltos fácilmente con algún lenguaje de programación. Ésta técnica se llama refinamiento sucesivo, divide y vencerás ó análisis descendente (Top-Down). Un módulo es cada una de las partes de un programa que resuelve uno de los subproblemas en que se divide el problema complejo original. Cada uno de estos módulos tiene una tarea bien definida y algunos necesitan de otros para poder operar. En caso de que un módulo necesite de otro, puede comunicarse con éste mediante una interfaz de comunicación que también debe estar bien definida. Si bien un modulo puede entenderse como una parte de un programa en cualquiera de sus formas y variados contextos, en la práctica es común representarlos con procedimientos y funciones. Adicionalmente, también pueden considerarse módulos las librerías que pueden incluirse en un programa o, en programación orientada a objetos, la implementación de un tipo de dato abstracto.

 

Programación estructurada

La programación estructurada es un método (un paradigma de programación) de programacion basado sobre el concepto de la unidad y del alcance (la gama de la visión de los datos de una declaración ejecutable del código). Un programa estructurado se compone de unas o más unidades o módulos — escrito por el usuario, o sacado de una libreria; cada módulo se compone de uns o más procedimientos, también llamado una función, una rutina, un subprograma, o un método, dependiendo del lenguaje de programación. Es posible que un programa estructural tenga niveles múltiples o alcances, con los procedimientos definidos dentro de otros procedimientos. Cada alcance puede contener las variables que no se pueden considerar en alcances externos.

El término no se debe confundir con la programación tipo imperative. Una lenguaje estructurado (no imperativa) es LOGO, que especifica secuencias de pasos para realizarse pero no tiene un estado interno.

La programación estructurada ofrece muchas ventajas sobre la programación secuencial: El código de programación estructurada es más fácil de leer y más conservable; El código procesal es más flexible; La programación estructurada permite la práctica más fácil del buen diseño del programa.

Programación estructurada

El creciente empleo de los computadores ha conducido a buscar un abaratamiento del desarrollo de software, paralelo a la reducción del costo del hardware obtenido gracias a los avances tecnológicos. Los altos costos del mantenimiento de las aplicaciones en producción normal también han urgido la necesidad de mejorar la productividad del personal de programación.

DEFINICIONES

La programación estructurada (en adelante simplemente PE ), es un estilo de programación con el cual el programador elabora programas, cuya estructura es la más clara posible, mediante el uso de tres estructuras básicas de control lógico, a saber :

SECUENCIA.

SELECCIÓN.

ITERACIÓN.

Un programa estructurado se compone de funciones,segmentos, módulos y/o subrutinas, cada una con una sola entrada y una sola salida. Cada uno de estos módulos (aún en el mismo programa completo), se denomina programa apropiado cuando, además de estar compuesto sólamente por las tres estructuras básicas, tiene sólo una entrada y una salida y en ejecución no tiene partes por las cuales nunca pasa ni tiene ciclos infinitos.

La PE tiene un teorema estructural o teorema fundamental, el cual afirma que cualquier programa, no importa el tipo de trabajo que ejecute, puede ser elaborado utilizando únicamente las tres estructuras básicas ( secuencia, selección, iteración ).

DEFINICIÓN DE LAS ESTRUCTURAS BÁSICAS DE CONTROL LÓGICO

1.- SECUENCIA

Indica que las instrucciones de un programa se ejecutan una después de la otra, en el mismo orden en el cual aparecen en el programa. Se representa gráficamente como una caja después de otra, ambas con una sola entrada y una única salida.

Las cajas A y B pueden ser definidas para ejecutar desde una simple instrucción hasta un módulo o programa completo, siempre y cuando que estos también sean programas apropiados.

2.- SELECCIÓN

También conocida como la estructura SI-CIERTO-FALSO, plantea la selección entre dos alternativas con base en el resultado de la evaluación de una condición o predicado; equivale a la instrucción IF de todos los lenguajes de programación y se representa gráficamente de la siguiente manera :

En el diagrama de flujo anterior, C es una condición que se evalúa; A es la acción que se ejecuta cuando la evaluación de este predicado resulta verdadera y B es la acción ejecutada cuando indica falso. La estructura también tiene una sola entrada y una sola salida; y las funciones A y B también pueden ser cualquier estructura básica o conjunto de estructuras.

3.- ITERACIÓN

También llamada la estructura HACER-MIENTRAS-QUE, corresponde a la ejecución repetida de una instrucción mientras que se cumple una determinada condición. El diagrama de flujo para esta estructura es el siguiente :

Aquí el bloque A se ejecuta repetidamente mientras que la condición C se cumpla o sea cierta. También tiene una sola entrada y una sola salida; igualmente A puede ser cualquier estructura básica o conjunto de estructuras.

VENTAJAS DE LA PROGRAMACIÓN ESTRUCTURADA

Con la PE, elaborar programas de computador sigue siendo una labor que demanda esfuerzo, creatividad, habilidad y cuidado. Sin embargo, con este nuevo estilo podemos obtener las siguientes ventajas :

Los programas son más fáciles de entender. Un programa estructurado puede ser leído en secuencia, de arriba hacia abajo, sin necesidad de estar saltando de un sitio a otro en la lógica, lo cual es típico de otros estilos de programación. La estructura del programa es más clara puesto que las instrucciones están más ligadas o relacionadas entre si, por lo que es más fácil comprender lo que hace cada función. Reducción del esfuerzo en las pruebas. El programa se puede tener listo para producción normal en un tiempo menor del tradicional; por otro lado, el seguimiento de las fallas o depuración (debugging) se facilita debido a la lógica más visible, de tal forma que los errores se pueden detectar y corregir más fácilmente.

Reducción de los costos de mantenimiento.

Programas más sencillos y más rápidos.

Aumento en la productividad del programador.

Se facilita la utilización de las otras técnicas para el mejoramiento de la productividad en programación.

Los programas quedan mejor documentados internamente.

 

Programación orientada a objetos

La programación Orientada a objetos (POO) es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación.

Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros programas en términos de objetos, propiedades, métodos y otras cosas que veremos rápidamente para aclarar conceptos y dar una pequeña base que permita soltarnos un poco con este tipo de programación.

La Programación Orientada a Objetos (POO u OOP según sus siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones para diseñar aplicaciones y programas de computadora. Está basado en varias técnicas, incluyendo herencia, modularidad, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de 1990. Actualmente son muchos los lenguajes de programación que soportan la orientación a objetos.

 

Programación orientada a Eventos

Definición de Programación orientada a eventos

Paradigma de programación en el que la estructura y ejecución del programa dependen de los sucesos (eventos) que ocurran en el sistema o que ellos mismos provoquen.

El programador debe definir los eventos a los cuales el programa reaccionará y las acciones que seguirá al presentarse cada uno, esto se conoce como manejador de eventos.

Existen múltiples eventos y dependen del sistema operativo y del lenguaje de programación utilizado.

Al ejecutarse un programa así programado, se iniciará con el código correspondiente a su ejecución y luego el programa esperará a que ocurra un evento. Al ocurrir este, se ejecutará el código correspondiente al evento que se realizó.

Visual Basic es un buen ejemplo de programación orientada a eventos.

 

Programación extrema

La programación extrema o eXtreme Programming (XP) es un enfoque de la ingeniería de software formulado por Kent Beck, autor del primer libro sobre la materia, Extreme Programming Explained: Embrace Change (1999). Es el más destacado de los procesos ágiles de desarrollo de software. Al igual que éstos, la programación extrema se diferencia de las metodologías tradicionales principalmente en que pone más énfasis en la adaptabilidad que en la previsibilidad. Los defensores de XP consideran que los cambios de requisitos sobre la marcha son un aspecto natural, inevitable e incluso deseable del desarrollo de proyectos. Creen que ser capaz de adaptarse a los cambios de requisitos en cualquier punto de la vida del proyecto es una aproximación mejor y más realista que intentar definir todos los requisitos al comienzo del proyecto e invertir esfuerzos después en controlar los cambios en los requisitos.

Se puede considerar la programación extrema como la adopción de las mejores metodologías de desarrollo de acuerdo a lo que se pretende llevar a cabo con el proyecto, y aplicarlo de manera dinámica durante el ciclo de vida del software.


Add a comment octubre 29, 2009

SIMBOLOGÍA DE DIAGRAMAS DE FLUJO

Para poder ver la simbologia en un tamaño mas grande, de preferencia guarda la imagen y abrela como documento de tu equipo en tamaño grande.

Add a comment octubre 8, 2009

SIMBOLOGÍA DE DIAGRAMAS DE FLUJO

simboologia

Add a comment octubre 8, 2009

Linux

Linux

Add a comment octubre 3, 2009

Linux

GNU/Linux es uno de los términos empleados para referirse al sistema operativo libre similar a Unix que utiliza el núcleo Linux y herramientas de sistema GNU. Su desarrollo es uno de los ejemplos más prominentes de software libre; todo el código fuente puede ser utilizado, modificado y redistribuido libremente por cualquiera bajo los términos de la GPL (Licencia Pública General de GNU) y otras licencias libres.[1]

A pesar de que Linux sólo es el núcleo de este sistema operativo una parte significativa de la comunidad, así como muchos medios generales y especializados, prefieren utilizar dicho término. Para más información consulte la sección “Denominación GNU/Linux” o el artículo “Controversia por la denominación GNU/Linux”.

Las variantes de este sistema se denominan distribuciones y su objetivo es ofrecer una edición que cumpla con las necesidades de determinado grupo de usuarios.

Algunas distribuciones son especialmente conocidas por su uso en servidores y supercomputadoras.[2] No obstante, es posible instalar GNU/Linux en una amplia variedad de hardware como computadoras de escritorio y portátiles.

Hardware requeridoLinux no requiere de un equipo de última generación para su configuración mínima. Sólo requiere de:

un procesador 386SX o superior
4 MB de RAM (se recomienda tener 8 MB)
un controlador de disco duro y un disco duro con 20 MB de espacio libre (se recomienda tener 100 MB)
(en la práctica, Linux se puede ejecutar desde un simple disquete)
una unidad de CD-ROM
Con respecto a dispositivos periféricos anexos, es mucho más probable que Linux admita los componentes de hardware comúnmente disponibles en el mercado. Requisitos previosLinux se puede instalar junto con el sistema operativo ya instalado en su equipo.
Antes de iniciar la instalación, asegúrese de que el sistema de archivos no tenga ningún error. Para esto, utilice un programa como scandisk o chkdsk para verificar la integridad del disco, ya que Linux utiliza un disco mucho más fuerte que el DOS, por ejemplo.

¿Qué son las “distribuciones” de GNU/Linux?

Una distribución es un modo de facilitar la instalación, la configuración y el mantenimiento de un sistema GNU/Linux. Al principio, las distribuciones se limitaban a recopilar software libre, empaquetarlo en disquetes o CD-ROM y redistribuirlo o venderlo.

Ahora las grandes distribuciones -RedHat, SuSE, Caldera, Mandrake, Corel Linux, TurboLinux…- son potentes empresas que compiten entre sí por incluir el último software, a veces también software propietario, con instalaciones gráficas capaces de autodetectar el hardware y que instalan un sistema entero en unos cuantos minutos sin apenas preguntas.

Entre las distribuciones de GNU/Linux, destaca el proyecto Debian/GNU. Debian nace como una iniciativa no comercial de la FSF, aunque luego se independiza de ésta y va más allá del propio sistema GNU/Linux. Es la única de las grandes distribuciones que no tiene intereses comerciales ni empresariales. Son sus propios usuarios, muy activos, quienes mantienen la distribución de modo comunitario, incluidas todas sus estructuras de decisión y funcionamiento. Su objetivo es recopilar, difundir y promover el uso del software libre. Reúne el mayor catálogo de software libre, todos ellos probados, mantenidos y documentados por algún desarrollador voluntario.

En una distribución hay todo el software necesario para instalar en un ordenador personal; servidor, correo, ofimática, fax, navegación de red, seguridad, etc.

Add a comment octubre 3, 2009

delphi

delphi

Add a comment octubre 3, 2009

Páginas

Categorías

Enlaces

Meta

Calendario

diciembre 2016
L M X J V S D
« Dic    
 1234
567891011
12131415161718
19202122232425
262728293031  

Most Recent Posts