Guia N°3 - Caracteristicas Programa

7
16-3-2015 Guía N° 3 Características deseables de un programa Norman Salvador Aráuz López

description

Guia de estudio

Transcript of Guia N°3 - Caracteristicas Programa

Gua N 3

Caractersticas deseables de un programaLegibilidadEl cdigo es claro si le da un estilo de forma que se lea bien, con facilidad. Esto incluye una agrupacin y un anidamiento apropiados. En general, las instrucciones agregan mucho ruido al cdigo. En algunos casos no es posible evitar las instrucciones condicionales (un pilar de los lenguajes de programacin), pero si se intenta limitar el nmero de instrucciones IF, se consigue controlar el anidamiento y es ms fcil leer el cdigo. Tambin puede usar una estructura IF ELSE en lugar de instrucciones IF anidadas.

ModularidadEs el proceso de crear partes de un todo que se integran perfectamente entre s para que funcionen por un objetivo general, y a las cuales se les pueden agregar ms componentes que se acoplen perfectamente al todo, o extraerle componentes sin afectar su funcionamiento. En el caso que se requiera actualizar un mdulo, no hay necesidad de hacer cambios en otras partes del todo. Un ejemplo clsico es un conjunto de mdulos que, al integrarlos conforman un armario, el cual puede agregarle ms funcionalidad si se le agregan ms mdulos, o al contrario. Tambin se puede cambiar su finalidad si se acomodan esos mdulos para darle otro objetivo: volverlo una mesa.Esto ayuda a la descomposicin de problemas en subproblemas, es decir, a la solucin de problemas por composicin de soluciones a subproblemas.

EficienciaEn Ciencias de la Computacin, el trmino eficiencia algortmica es usado para describir aquellas propiedades de los algoritmos que estn relacionadas con la cantidad de recursos utilizados por el algoritmo. Un algoritmo debe ser analizado para determinar el uso de los recursos que realiza. La eficiencia algortmica puede ser vista como anlogo a la ingeniera de productividad de un proceso repetitivo o continuo.Con el objetivo de lograr una eficiencia mxima se quiere minimizar el uso de recursos.Las optimizaciones se deben hacer en las partes del programa que se ejecutan al maximo, sobre todo los metodos que se llaman en varias ocasiones por diversos lapsos internos que el programa puede tener.

EficaciaSegn el diccionario de la real academia espaola, eficacia se define como la capacidad de lograr el efecto que se desea o espera. Un programa es funcionalmente cuando alcanza el objetivo primordial, el anlisis de resolucin del problema se lo realiza prioritariamente.Consejos: Piense en trminos de patrones de diseo, Utilice los objetos y las funciones const siempre que sea posible. Evitar el uso de punteros

PortabilidadSe define como la caracterstica que posee un software para ejecutarse en diferentes plataformas, el cdigo fuente del software es capaz de reutilizarse en vez de crearse un nuevo cdigo cuando el software pasa de una plataforma a otra. A mayor portabilidad menor es la dependencia del software con respecto a la plataforma. La portabilidad no tiene relacin directa con el cdigo fuente de una aplicacin y, por eso, tampoco tiene relacin directa con la reutilizacin del mismo. En cambio, la portabilidad se refiere exclusivamente a la propiedad que posee un software que le permite ser ejecutado en diferentes plataformas y/o sistemas operativos. De este modo, si un determinado software compilado pudiere ser ejecutado en cualquier sistema operativo, diramos que ese software es 100% portable.

VERIFICAVILIDADEs la facilidad que proporciona un software para detectar y trazar fallos durante las fases de validacin operativa.Un sistema de software es verificable si sus propiedades pueden ser verificadas fcilmente. Por ejemplo, la correctitud de un sistema son propiedades que interesa verificar. El diseo modular, prcticas de codificacin disciplinadas, y la utilizacin de lenguajes de programacin adecuados contribuyen a la verificabilidad de un sistema. La verificabilidad es en general una cualidad interna pero a veces tambin puede ser externa,Por ejemplo, en muchas aplicaciones de seguridad crtica, el cliente requiere la verificacin de ciertas propiedades.

INTEGRIDADEn esta poca de intrusos informticos y de virus, la integridad del software ha llegado a tener mucha importancia. Este atributo mide la habilidad de un sistema para soportar ataques (tanto accidentales como intencionados) contra su seguridad. El ataque se puede ejecutar en cualquiera de los tres componentes del software, ya sea en los programas, datos o documentos.

USABILIDADUn sistema de software es usable si un usuario humano lo encuentra fcil de utilizar. Esta definicin refleja la naturaleza subjetiva de la amigabilidad: una aplicacin utilizada por usuarios no expedientes califica como amigable por varias propiedades distintas a las de una aplicacin utilizada por programadores expertos, por ejemplo, los primeros apreciaran el uso de mens mientras los segundos se sentiran ms cmodos ingresando comandos.

ROBUSTEZUn programa es robusto si se comporta en forma razonable an en circunstancias que No fueron anticipadas en la especificacin de requerimientos; por ejemplo cuando encuentra datos de entrada incorrectos o algn malfuncionamiento del hardware como rotura de disco.La robustez es una cualidad difcil de definir, ya que si se pudiera establecer en forma precisa lo que se debiera hacer para obtener una aplicacin robusta, se podra especificar Completamente el comportamiento razonable con lo cual sera equivalente a la correctitud, o a la confiabilidad

EXTENSIBILIDADUn sistema es extensible si acepta cambios que le permitan satisfacer nuevos requerimientos. En otros productos de ingeniera las modificaciones van precedidas de actividades como estudios de factibilidad, diseo asociado, aprobaciones, evaluaciones y finalmente la introduccin de la modificacin. En el caso del software, en general la implementacin del cambio se comienza sin realizar ningn estudio de factibilidad, dejando nicamente el diseo original y sin documentacin a posteriori, esto es sin actualizar las especificaciones para reflejarlo, lo que hace que cambios futuros sean cada vez ms difciles de aplicar.Por otro lado, los productos de software exitosos tienen larga duracin, su primera liberacin es el comienzo de un tiempo extenso de vida y cada liberacin sucesiva es el prximo paso en la evolucin del sistema. Si el software es diseado cuidadosamente y cada modificacin es realizada con cuidado puede evolucionar en buena forma. La mayora de los sistemas de software comienzan siendo evolucionarles pero luego de aos de evolucin alcanzan un estado en el cual cualquier modificacin importante trae aparejado el riesgo de daar caractersticas existentes. En general la aplicacin de cambios sucesivos tiende a reducir la modularidad del sistema original, que era lo que lo haca extensible.

REUTILIZACIONLa reusabilidad es similar a la extensibilidad: en la segunda se modifica un producto para construir una nueva versin del mismo producto, en la primera se utiliza un producto, posiblemente con modificaciones menores, para construir otro producto. Un ejemplo de un producto reusable es el shell de UNIX que adems de aceptar comandos de usuario y ejecutarlos, puede ser iniciado mediante un archivo que contenga una lista de comandos del shell, lo que permite escribir programas (scripts) en el lenguaje de comandos del shell, por lo que puede verse el programa como un nuevo producto que utiliza el shell como componente.Puede parecer ms apropiado aplicar este trmino a componentes del software que a productos completos, pero es ciertamente posible construir productos que sean reusables. Aunque es una herramienta importante para reducir los costos de produccin del software, los ejemplos de reusabilidad son raros.

COMPATIBILIDADLa compatibilidad se entiende en el mbito de la informtica y la tecnologa como la capacidad que tienen dos sistemas de trabajar uno con otro simultneamente. Y por sistemas entendemos tanto hardware como software, de modo que podemos hallarnos frente a compatibilidad entre dos programas, entre programa y hardware, o directamente entre hardware. El que no haya compatibilidad no significa que los sistemas no funcionen o estn defectuosos, simplemente que no pueden trabajar juntos, que son incompatibles. Muchas veces la compatibilidad se pierde cuando un componente es obsoleto frente a otro.

MANTENIBILIDADEl trmino mantenimiento del software es utilizado generalmente para referirse a las modificaciones que se realizan a un sistema de software luego de su liberacin inicial, siendo visto simplemente como correccin de bugs. Algunos estudios han mostrado sin embargo, que la mayor parte del tiempo utilizado en mantenimiento es para agregarle al producto caractersticas que no estaban en las especificaciones originales o estaban definidas incorrectamente.

Dados los siguientes casos mencione cules criterios se aplican correctamente y explique cules hacen falta para tener un software de calidad. Justifique las respuestas.1. Se desarroll un software para el control de viajes en una lnea de transportes, este se empez a implementar bajo plataforma Linux, durante el transcurso de un mes, el equipo de desarrollo se vi en la necesidad de migrar el software a plataforma Windows, lo cual retras las operaciones de la empresa. Entre las caractersticas del software destacaban la velocidad de respuestas, era seguro frente a ataques procedentes de hackers, y en el uso de recursos era impecable puesto que estaba ensamblado y compilado en Linux lo cual le daba 100% de compatibilidad con esta plataforma.

2. Una empresa de manufactura de ropa decide construir un software para el manejo de maquinaria de transporte, la curva de aprendizaje del software era alta, puesto que para poder utilizarlo se necesitaban tres meses de capacitacin adems de tener un certificado en alguna escuela, de operador de computadoras. Se esperaba que durante los prximos dos aos el sistema adems de manejar maquinaria tambin manejara otras reas, entre ellas la contabilidad y finanzas.

3. Un grupo de desarrolladores es contratado por una empresa donde el principal negocio son las ventas en lnea, durante el primer mes de desarrollo, los programadores no podan consolidar un estndar para la creacin de cdigo que fuera comprensible por todos, as que tuvieron que sentarse en la mesa de reuniones y plantearse una solucin puesto que tenan mucho trabajo por delante. Uno de los socios del proyecto decidi que en el siguiente ao de operaciones se agregara un mdulo para realizar las compras y establecer los datos acerca del envo, esto no estaba previsto en el diseo principal as que los programadores tenan tareas adicionales de las cuales se desconoca. Haba otro inconveniente, al no establecer un estndar claro se estaba formando cdigo espagueti (cdigo ilegible) que tendra que ser corregido en el futuro, sin embargo por tratarse de plataforma online, los desarrolladores estaban asegurando muy bien los mdulos correspondientes, aplicando lo ltimo en tecnologa en cuestin de certificados, utilizacin de servidores de alta gama, Reuters y conexiones con el asesoramiento de la empresa lder en tecnologas de redes, CISCO.4. Un consorcio del sector del comercio con sedes en la ciudad de Managua, decide implementar una aplicacin que les permita registrar sus operaciones financieras a partir de las ventas, el software integraba todas las reas de la empresa (Financiera, Comercial, Recursos Humanos, Nmina, Operaciones industrial manufactura y negocios e inteligencia de negocios) es decir, era algo que en el mercado se conoce como ERP (Enterprise Resource Planning Planificador de recursos empresariales). Adems la empresa que desarrollaba el software daba soporte durante el perodo de pruebas de manera gratuita. Sin embargo existan usuarios del sistema que se sentan inconformes puesto que este funcionaba interconectado con las dems sucursales, desde las cuales haban ciertas operaciones que causaban lag (retraso en la respuesta a las solicitudes) en el sistema. Estos lag tardaban mucho tiempo en resolverse hasta el punto de dejar incomunicados a los usuarios por varios minutos, lo cual retrasaba las operaciones de la empresa.Otro inconveniente es que los formularios para el ingreso de la informacin eran confusos de utilizar y repeta alguna informacin, que dicho sea de paso era innecesaria, requera de cierto cuidado para realizar los cambios y a veces duplicaba registros lo cual causaba severas confusiones en los estados financieros.5. Un grupo de ingenieros se reuni para desarrollar un juego RTS (Real Time Strategy Estrategia en tiempo real) el cual deba tener la capacidad gestionar partidas en lnea, de hasta 8 jugadores en simultneo, durante el desarrollo se presentaron desafos tanto de diseo de las interfaces como de la usabilidad de stas. El desarrollo del proyecto fue todo un xito alcanzando niveles en las ventas de 3 millones durante el primer mes.Una de las cosas que los ingenieros no pensaron fue que haban algunos jugadores en el mercado que no solamente usaban Windows, tambin usaban Linux, por lo cual el mercado se vea reducido los usuarios de Windows, adems de eso, algunos mdulos del programa estaban diseados en un motor de grficos propios de la empresa de desarrollo y otros en un motor diferente. Adems el gestor de partidas en lnea estaba diseado de tal manera que el lag causado por los usuarios simultneos y la cantidad de unidades en el campo fuera la ms mnima posible; adems de poseer uno de los mejores sistemas de seguridad anti ataques hacker de cualquier ndole.6. En la alcalda municipal de Managua se comenz a desarrollar un software para el registro financiero de recaudacin de impuestos, para los usuarios las primeras versiones del software fueron un poco incmodas puesto que en algunos formularios de ingreso no seguan la secuencia lgica de que normalmente se lograba con el software anterior, durante la etapa de programacin se presentaron inconvenientes como el sistema operativo que gestionaba la informacin de los servidores, esta implementaba Windows NT server, que careca de soporte puesto que haban nuevas versiones eran lanzadas al mercado y pareca estar en la obsolescencia. Las versiones de NT utilizadas en este sistema carecan de certificados de autenticacin, hacindolo vulnerable a cyber ataques. El sistema de recaudacin estaba programado en Visual FoxPro que proveera el gestor de base de datos, con la limitante que en 5 aos la cantidad de registros manejados por el sistema sera demasiadas para que software las administrara.

7. Una empresa de desarrollo de software con sedes en Colombia, iniciaba su vida en el desarrollo y soporte de aplicaciones, para las adems empresas en Colombia esto marcaba un hito, puesto que la empresa de desarrollo haca uso de nuevas tecnologas en plataformas web. Adems los dueos de la empresa se iniciaban en el negocio de la educacin online, as que deban desarrollar una plataforma virtual de enseanza aprendizaje, que fuera compatible desde los navegadores de cualquier sistema operativo. Sin embargo uno de los problemas presentados durante la implementacin fue que las salas de chat se desconectaban continuamente, uno de los mdulos de seguridad estaba implementado en Python, lenguaje de programacin orientado al rendimiento, sin embargo los mdulos de acceso a datos estaban programados en PHP, lo cual dificultaba un poco su mantenibilidad. Era primordial que la empresa alcanzara un alto nivel de audiencia por lo que se necesitaban dar charlas semanalmente en estreaming (video en transmisin contnua) cosa que el diseo inicial no se contemplaba, por lo cual se deban hacer una serie de cambios que afectaran el rendimiento.Pgina 3