Implementacin del Software
En este captulo, estudiaremos mtodos de programacin, documentacin y retos en la implementacin de Software.
Programacin estructurada
En el proceso de codificacin, las lneas del cdigo se multiplican continuamente, por consiguiente, el tamao del software se incrementa. Se vuelve casi imposible recordar el flujo del programa gradualmente. Si nos olvidamos cmo se construyen el software y sus subyacentes programas, los archivos... resulta muy difcil compartir, modificar y eliminar los fallos del programa. La solucin yace en la programacin estructurada. Motiva al desarrollador a usar subrutinas y estructuras de control (loops) en vez de usar simples saltos en el cdigo, de este modo haciendo el cdigo ms claro y mejorando su eficiencia, la programacin estructurada tambin ayuda al programador a reducir el tiempo de codificacin y a organizar el lenguage de programacin correctamente.
La programacin estructurada define cmo debe ser codificado el programa. La programacin estructurada usa principalmente 3 conceptos:
Anlisis 'Top-down'(de arriba a abajo) - El software se crea principalmente para llevar a cabo un tipo de trabajo racional. Este tipo de trabajo se conoce como problema en la jerga software. Por consiguiente, es muy importante que entendamos cmo resolver el problema. Segn el anlisis top-down, el problema debe romperse en pequeas piezas con un significado concreto. Cada problema se resuelve de manera independiente y los pasos a seguir para resolver el problema en su conjunto son dictados de manera clara.
Programacin modular - Mientras se programa, el cdigo se rompe en pequeos grupos de instrucciones. Estos grupos se denominan mdulos, subprogramas o subrutinas. La programacin modular se basa en el entendimiento del anlisis top-down. Desmotiva los saltos usando rdenes de 'Ir a' en el programa, lo que a menudo hace que el flujo del programa no sea localizable. En programacin modular Los saltos estn prohibidos y se fomenta el formato modular.
Codificacin estructurada - En referencia al anlisis top-down, la codificacin estructurada divide los mdulos en pequeas unidades de cdigo para su satisfactoria ejecucin. La programacin estructurada usa estructuras de control, las cuales controlan el flujo del programa, mientras que la codificacin estructurada usa estructuras de control para organizar sus instrucciones en patrones definibles.
Programacin funcional
La programacin funcional es un estilo de lenguaje de programacin, que usa conceptos de funciones matemticas. En matemticas una funcin siempre debe producir el mismo resultado si recibe el mismo argumento. En un lenguage procedimental, el flujo del programa funciona a travs de procedimientos, esto es, el control del programa se transfiere al procedimiento mencionado. Mientras el flujo de control se transfiere de un procedimiento a otro, el programa cambia su estado.
En programacin procedimental, es posible que un procedimiento produzca resultados diferentes cuando es llamado con el mismo argumento, ya que el programa puede estar en un estado diferente mientras se llama al mismo. Esta es una propiedad as como una desventaja de la programacin procedimental, en que la secuencia o temporalizacn de la ejecucin procedimental se vuelve importante.
La programacin funcional aporta medios de computacin as como funciones matemticas, lo que genera resultados independientemente del estado del programa. Esto posibilita la prediccin del comportamiento del programa.
La programacin funcional usa los siguientes conceptos:
Funciones de primera clase y de orden superior - Estas funciones tienen la capacidad de aceptar otra funcin como argumento o de devolver otras funciones como resultado.
Funciones puras - Estas funciones no incluyen actualizaciones destructivas, es decir, no afectan a ningn Perifrico de Entrada/Salida o a la memoria, y si no se usan pueden ser facilmente eliminadas sin dificultar al resto del programa.
Recursin - La recursin es una tcnica en que la funcin se llama a s misma y repite el cdigo del programa en sta, a menos que alguna condicin definida previamente se corresponda con la misma. La recursin es el camino para crear estructuras de sistema en programacin funcional.
Evaluacin estricta - Es un mtodo para evaluar la expresin que se ha pasado a una funcin como argumento. La programacin funcional tiene dos tipos de mtodos de evaluacin, el estricto (entusiasta) y el no estricto (vago). La evaluacin estricta siempre evalua la expresin antes de aplicar la funcin. La evaluacin no estricta no evalua la expresin a menos que sea necesario.
Clculo lambda (-calculus) - La mayor parte de lenguajes de programacin usan clculo lambda como su sistema de tipos. Las expresiones '' se ejecutan evalundolas tal y como ocurren.
Common Lisp, Scala, Haskell, Erlang y F# son algunos ejemplos de lenguajes de programacin funcional.
Estilo de programacin
El estilo de programacin se configura con reglas de codificacin seguidas por todos los programadores para escribir el cdigo. Cuando ms de un programador trabaja en el mismo proyecto de software, necesitan frecuentemente trabajar con el cdigo del programa que ha escrito otro desarrollador. Esto se vuelve tedioso o a veces imposible, si todos los desarrolladores no siguen un estilo de programacin estndar para codificar el programa.
Un estilo de programacin apropiado incluye el uso de funciones y nombres variables y relevantes para la tarea que se va a llevar a cabo, usando una sangra bien ubicada, comentando el cdigo para la conveniencia del lector y para la presentacin general del cdigo. Esto facilita la inteligibilidad del cdigo, lo que facilita que uno por uno se eliminen y solucionen los errores. Adems, un estilo de codificacin adecuado ayuda a facilitar el proceso de actualizacin y de documentacin.
Directrices de codificacin
Las distintas prcticas de estilo de codificacin varan en cada organizacin, sistema operativo, y en el mismo lenguaje de codificacin.
Los siguientes elementos de codificacin se pueden definir bajo las directrices de una organizacin:
Convencin de nomenclatura - Esta seccin define cmo nombrar funciones, variables, constantes, y variables globales.
Sangra - Este es el espacio que se encuentra al principio de cada lnea, normalmente incluye de 2 a 8 espacios en blanco o un solo tabulador (vase tecla 'tab').
Espacio en blanco - Generalmente se omite al final de cada lnea.
Operadores - Define las reglas para escribir operadores lgicos y tareas matemticas. Por ejemplo, operador de tarea = debe tener un espacio antes y despus de ste, como en x = 2.
Estructuras de Control - Son las reglas para escribir 'SI..ENTONCES..SI NO'(if..then..else), el SEGN (case o switch), declaraciones 'while-until' para afirmaciones de flujo de control nicamente, y en lenguaje ensamblador de moda.
Longitud de lnea y envoltorio - Define el nmero de caracteres que debe haber en una lnea, mayormente una lnea tiene 80 caracteres de longitud. Envolver define cmo se envolver la lnea, si es demasiado larga.
Funciones - Esto define cmo se deben aplicar y manifestar las funciones, con y sin parmetros.
Variables - Esto menciona cmo se deben manifestar y definir las variables de diferentes tipos de datos.
Comentarios - Este es uno de los componentes ms importantes de la codificacin, ya que los comentarios que se incluyen en el cdigo describen describe lo que realmente hace el cdigo y todas las otras descripciones asociadas. Esta seccin tambin ayuda a crear documentacin de ayuda para otros desarrolladores.
Documentacin de Software
La documentacin de Software es una parte importante del proceso de software. Un documento bien escrito es una gran herramienta y es un medio repositorio de informacin necesario para conocer el proceso de software. La documentacin de Software tambin aporta informacin sobre cmo se debe usar el producto.
Una documentacin mantenida correctamente debe incluir los documentos que se citan a continuacin:
-
Documentacin de requisitos - Esta documentacin funciona como herramienta clave para diseadores de software, desarroladores, y el equipo de evaluadores, para llevar a cabo sus respectivas tareas. Este documento contiene la descripcin funcional, no funcional, y conductual del software que se intenta lograr.
El origen de este documento pueden ser datos almacenados previamente, software que ya est funcionando con el consumidor final, entrevistas con clientes, cuestionarios e investigaciones. Generalmente se almacena en forma de hoja de clculo o de documento realizados con procesadores de texto, con el equipo de gestin de software de mayor calidad.
Esta documentacin funciona como base para desarrollar el software y se usa mayormente en las fases de verificacin y de validacin. La mayor pare de casos de prueba se construyen partiendo de la documentacin de requisitos.
-
Documentacin de diseo de Software - Esta documentacin contiene toda la informacin necesaria, que se requiere para construir el software. Incluye: (a) arquitectura de software de alto nivel, (b) Detalls de diseo Software, (c) Diagramas de flujo de datos, (d) Diseo de bases de datos
Estos documents funcionan como repositorio para que los desarrolladores implementen el software. A pesar de que estos documentos no den nign detalle de cmo codificar el programa, dan la informacin necesaria que se requiere para las fases de codificacin e implementacin.
-
Documentacin tcnica - Esta documentacin la mantienen desarrolladores y programadores. Estos documentos, en su conjunto, representan informacin sobre el cdigo. Mientras escriben el cdigo, los programadores tambin suelen mencionar objetivos del cdigo, quin lo escribi, dnde se requerir, qu hace y no hace, qu otros recursos usa el cdigo, etc.
La documentacin tcnica incrementa el entendimiento entre varios programadores que trabajan en el mismo cdigo. Incentiva la capacidad de reutilizacin del cdigo. Facilita el proceso de eliminacin y localizacin de errores.
Hay varias herramientas automatizadas disponibes y algunas ya vienen con su propio lenguaje de programacin. Por ejemplo java viene con la herramienta JavaDoc tool para generar documentacin tcnica del cdigo.
-
Documentacin del usuario - Esta documentacin es diferente en comparacin con las mencionadas con anterioridad. Las que ya se han expuesto se mantienen para la aportacin de informacin sobre el software y su proceso de desarrollo. Por el contrario, la documentacin de usuario explica cmo se debe usar y cmo debe funcionar el producto software, con tal de lograr los resultados que se esperan.
Esta documentacin puede incluir, procedimientos de instalacin del software, guas de instrucciones, guas para el usuario, mtodo de desinstalacin y referencias especiales para obtener ms informacin como actualizacin de licencias, etc.
Retos de la implementacin de Software
Hay algunos retos que el equipo de desarrollo debe afrontar mientras se implementa el software. Algunos de ellos se explicitan a continuacin:
Reutilizacin del cdigo - La interfaces de programacin de los lenguajes actuales son muy sofisticadas y estn equipadas con grandes funciones de librera. An as, y a fin de disminuir el coste del producto final, la gestin organizacional prefiere reutiizar el cdigo, el cual se cre con anterioridad para algn otro software. Hay asuntos de gran magnitud que deben ser confrontados por los programadores para tests de compatibilidad y decidiendo la cantidad de cdigo se reutilizar.
Gestin de versiones - Cada vez que un nuevo software se entrega al consumidor, los desarrolladores deben mantener la documentacin asociada a su configuracin y a su versin. Esta documentacin debe ser muy acurada y disponible a tiempo.
'Target-Host'(target de receptores) - El programa software que se est desarrollando en la organizacin, necesita ser diseado para mquinas receptoras para el consumidor final. Pero a veces, es imposible disear un software que funciones en mquinas receptoras.