jueves, 18 de junio de 2020

Los programadores hacen programas
Los ingenieros hacen artefactos de software
Que es un programa y para que invertir en hacerlos? ...
Coleccion de conceptos clasicos imprescindibles

➽Para que hacer programas?. Es la pregunta clasica de un ingeniero
 Un programa se crea para  ser la solución o  parte de la solución de un problema que requiere datos y transformaciones.

➽Un programa representa un plan , desde la entrada a la salida , para la solución automática de un problema , es un medio para conseguir un fin; es un proceso a ser realizado sobre datos
una secuencia de acciones sobre  datos,  generando cambios de estados en ellos, para un fin bien definido


➽J.D. warnier
Un programa debe ser facil de modificar y confiable. Pero ante todo, debe ser util para el ususario final. Por esta razon , los datos de salida deben ser definidos por los usuarios finales y no por el espeialista en procesamiento de datos. Cuado los requerimientos del usuario final estan definidos , pude diseñarse el conjunto logico de datos para el sistema poniendo atencion en la estructura de datos  y la mejor organizacion de los archivos fisicos y de la base de datos.

➽Albert C. Gardner
que es un programa? ... es un medio para conseguir un fin
Objetivo del diseño de programas:
excluyente: producir un programa "correcto", por ejemplo, uno que , dada cualquier combinacion de datos de  entrada aceptable , siempre llegue al final del proceso y produzca los resultados previstos.
Subsidiariamente:
1-el programa debe ser fácil de mantener , es decir fácil de corregir por cualquier razón
2- que el programa pueda desarrollarse rápidamente
3- que le programa sea eficiente en el empleo de los recursos de maquina


➽fácil de mantener , significa fácil de cambiar.
Cambiar porque el programa es erroneo (en ciertas circunstancias no produce la salida correcta)
cambiar porque han variado los requerimientos
1- cuantos menos lugares o puntos del programa sea necesario cambiar , con mas rapidez se localizaran y sera menor el riesgo de errores.
2-cuanto mayor sea la correspondencia : puntos a alterar con circunstancias especificadas ( o sea que los bloques del programa a cambiar sean pertinentes únicamente al cambio requerido)
La facilidad  de mantenimiento se obtiene por lo tanto;
1- conservando la menor cantidad de subdivisiones en el programa
2- conservando bloques distintos  de instrucciones en el programa para cada clase diferente de datos
Eficiencia

Las instrucciones a aplicarse a un elemento o parte de datos son de dos tipo
1-las que determinan que conjunto de acciones se requieren para cada elemento
2-las  que realizan las acciones

las de tipo (1) son las que deben analizarse
una idea de eficiencia podrá tenerse contando la cantidad de secuencias y cantidad de evaluaciones que necesita cada una de ellas

➽Langefors
La informacion se necesta para iniciar y controlar los acontecimientos operativos.
Hemos encontrado los flujos minimos (operaciones) que debn ser mantenidos operativamente y notamos que en a practica los flujos son realente una serie de acontecimientos operativos.
Ahora es facil comprender que cada acontecimiento de estos flujos deben ser activado y guiado por mensajes apropiados, a los que llamamos informacion operativa o informacion de rutina.

si se usan relaciones (de precedencia) estructuras de datos y algoritmos comprendemos que los datos tienen un significado

➽Un programa representa un plan , desde la entrada a la salida , para la solucion automatica de un problema que incluye la transcripcion de los datos, codificacion , absorcion del resultado o rutinas alternativas
➽Un programa es la especificación de un proceso a ser realizado con los datos

el resultado del análisis de información para un problema o un sistema es la documentacion de las clases de información requeridas. estas están relacionadas entre si mediante relaciones de precedencia. Por lo tanto , un análisis de la informacion define el agrupamiento de precedentes de cada informacion que debe ser producida
las entradas y salidas del programa surgen del agrupamiento de precedentes. mas aun debe especificarse cuales de los precedentes activan el proceso
➽Se desea poder decir que debe ser hecho por el proceso y dejar a la decisión del diseñador del programa la decisión de los pasos de los procesos individuales que deben ser realizados por el computador

La sola existencia de los precedentes no necesariamente inicia su proceso , hay que describir la informacion de control requerida para su ejecucion
relaciones de precedencia + estructura de datos + algoritmos= sistemas

➽Niklaus wirth
la esencia del poder y de la amplia aplicación de la computadora reside en su capacidad de ejecutar secuencias extremadamente largas de instrucciones que contienen una combinación casi infinita de acciones elementales. La acción de integrar secuencias de instrucciones en "recetas" que representan ciertas clases de procesos de  calculo se llama programación

La noción mas importante es la de acción en este contexto suponemos que una acción es de duración finita , y que persigue algún efecto bien definido. Toda acción requiere la existencia de algun objeto sobre el cual se ejecuta y podemos reconocer el efecto de a acción a través de los cambios de estado que sobre el se operen.
Cada acción debe poder describirse en términos de algún lenguaje o sistema de formulas; su descripción se llamara enunciado.
Si la acción puede descomponerse en partes la llamaremos proceso o calculo. El proceso sera secuencial si estas partes se siguen estrictamente unas a otras en el tiempo, y nunca se ejecutan dos simultáneamente. De la misma forma un enunciado que describe un proceso puede subdividirse en partes; en ese caso se lo llama programa.
Un programa , entonces , consta de un conjunto de enunciados cuyo orden textual no suele ser en gral identico al ordenamiento en el tiempo de las acciones correspondientes
Todo programa describe una sucesion de transformaciones sobre el conjunto de sus variables.
Si el mismo programa se ejecuta dos veces con valores iniciales (x,y) diferentes , seria un error afirmar que los dos procesos son iguales. sin embargo ambos exhiben el mismo comportamiento.
Ls descripción de ese comportamiento sin hacer referencia a un procesador en particular se llama usualmente algoritmo.
Algoritmo + Estructua de datos=Programas