requisitos de Calidadeditar

cualquiera que sea el enfoque de desarrollo, el programa final debe satisfacer algunas propiedades fundamentales. Las siguientes propiedades se encuentran entre las más importantes:

  • fiabilidad: con qué frecuencia los resultados de un programa son correctos. Esto depende de la corrección conceptual de los algoritmos y la minimización de errores de programación, como errores en la administración de recursos (por ejemplo, desbordamientos de búfer y Condiciones de carrera) y errores lógicos (como errores de división por cero o desactivados por uno).,
  • robustez: qué tan bien un programa anticipa problemas debido a errores (no bugs). Esto incluye situaciones como datos incorrectos, inapropiados o corruptos, falta de disponibilidad de los recursos necesarios, como memoria, servicios del sistema operativo y conexiones de red, error del usuario y cortes de energía inesperados.
  • usabilidad: la ergonomía de un programa: la facilidad con la que una persona puede utilizar el programa para su propósito previsto o, en algunos casos, incluso para fines imprevistos. Tales problemas pueden hacer o romper su éxito, incluso independientemente de otros problemas., Esto implica una amplia gama de elementos textuales, gráficos y, a veces, de hardware que mejoran la claridad, la intuición, la cohesión y la integridad de la interfaz de usuario de un programa.
  • portabilidad: la gama de plataformas de hardware y sistemas operativos en los que se puede compilar/interpretar y ejecutar el código fuente de un programa., Esto depende de las diferencias en las instalaciones de programación proporcionadas por las diferentes plataformas, incluidos los recursos de hardware y del sistema operativo, el comportamiento esperado del hardware y el sistema operativo, y la disponibilidad de compiladores específicos de la plataforma (y, a veces, bibliotecas) para el lenguaje del código fuente.
  • mantenibilidad: la facilidad con la que un programa puede ser modificado por sus desarrolladores actuales o futuros con el fin de realizar mejoras o personalizaciones, corregir errores y agujeros de seguridad, o adaptarlo a nuevos entornos., Las buenas prácticas durante el desarrollo inicial marcan la diferencia en este sentido. Esta calidad puede no ser directamente evidente para el usuario final, pero puede afectar significativamente el destino de un programa a largo plazo.
  • eficiencia / rendimiento: medida de los recursos del sistema que consume un programa (Tiempo de procesador, espacio de memoria, dispositivos lentos como discos, ancho de banda de red y, en cierta medida, incluso la interacción del usuario): cuanto menos, mejor. Esto también incluye una gestión cuidadosa de los recursos, por ejemplo, la limpieza de archivos temporales y la eliminación de fugas de memoria., Esto se discute a menudo bajo la sombra de un lenguaje de programación elegido. Aunque el lenguaje ciertamente afecta el rendimiento, incluso los lenguajes más lentos, como Python, pueden ejecutar programas instantáneamente desde una perspectiva humana. La velocidad, el uso de recursos y el rendimiento son importantes para los programas que bloquean el sistema, pero el uso eficiente del tiempo del programador también es importante y está relacionado con el costo: más hardware puede ser más barato.,

legibilidad del código fuenteeditar

en la programación de computadoras, la legibilidad se refiere a la facilidad con la que un lector humano puede comprender el propósito, el flujo de control y el funcionamiento del código fuente. Afecta a los aspectos de calidad anteriores, incluida la portabilidad, la usabilidad y, lo más importante, la capacidad de mantenimiento.

La legibilidad es importante porque los programadores pasan la mayor parte de su tiempo leyendo, tratando de entender y modificando el código fuente existente, en lugar de escribir código fuente Nuevo. El código ilegible a menudo conduce a errores, ineficiencias y código duplicado., Un estudio encontró que unas pocas transformaciones simples de legibilidad hicieron que el código fuera más corto y redujeron drásticamente el tiempo para entenderlo.

seguir un estilo de programación consistente a menudo ayuda a la legibilidad. Sin embargo, la legibilidad es más que solo el estilo de programación. Muchos factores, que tienen poco o nada que ver con la capacidad de la computadora para compilar y ejecutar el código de manera eficiente, contribuyen a la legibilidad. Algunos de estos factores incluyen:

  • Diferentes estilos de sangría (espacios en blanco)
  • descomposición
  • Convenciones de nomenclatura para objetos (como variables, clases, Procedimientos, etc.,)

los aspectos de presentación de esto (como sangrías, saltos de línea, resaltado de color, etc.) a menudo son manejados por el editor de código fuente, pero los aspectos de contenido reflejan el talento y las habilidades del programador.

también se han desarrollado varios lenguajes de programación visual con la intención de resolver problemas de legibilidad mediante la adopción de enfoques no tradicionales para la estructura y visualización del código. Los entornos de desarrollo integrado (IDE) tienen como objetivo integrar toda esa ayuda. Técnicas como la refactorización de Código pueden mejorar la legibilidad.,

complexidad Algorítmicaeditar

el campo académico y la práctica de ingeniería de la programación informática se ocupan en gran medida de descubrir e implementar los algoritmos más eficientes para una clase dada de problema. Para este propósito, los algoritmos se clasifican en órdenes utilizando la llamada Notación Big O, que expresa el uso de recursos, como el tiempo de ejecución o el consumo de memoria, en términos del tamaño de una entrada., Los programadores expertos están familiarizados con una variedad de algoritmos bien establecidos y sus respectivas complejidades y utilizan este conocimiento para elegir algoritmos que se adapten mejor a las circunstancias.

Chess algorithms as an exampleEdit

«Programming a Computer for Playing Chess» was a 1950 paper that evaluated a «minimax» algorithm that is part of the history of algorithmic complexity; a course on Ibm’s Deep Blue (chess computer) is part of the computer science curriculum at Stanford University.,

Metodologíaseditar

el primer paso en la mayoría de los procesos formales de desarrollo de software es el análisis de requisitos, seguido de pruebas para determinar el modelado de valor, la implementación y la eliminación de fallas (depuración). Existen muchos enfoques diferentes para cada una de esas tareas. Un enfoque popular para el análisis de requisitos es el análisis de casos de uso. Muchos programadores utilizan formas de desarrollo de software ágil donde las diversas etapas del desarrollo de software formal están más integradas en ciclos cortos que toman unas pocas semanas en lugar de años., Hay muchos enfoques para el proceso de desarrollo de Software.

Las técnicas de modelado populares incluyen el análisis y diseño orientado a objetos (OOAD) y la arquitectura basada en modelos (MDA). El Unified Modeling Language (UML) es una notación utilizada tanto para el OOAD como para el MDA.

una técnica similar utilizada para el diseño de bases de datos es el modelado Entidad-Relación (modelado ER).

Las técnicas de implementación incluyen lenguajes imperativos (orientados a objetos o procedimentales), lenguajes funcionales y lenguajes lógicos.,

midiendo el uso del idiomaeditar

Artículo principal: midiendo la popularidad del lenguaje de programación

es muy difícil determinar cuáles son los lenguajes de programación modernos más populares., Los métodos para medir la popularidad del lenguaje de programación incluyen: contar el número de anuncios de trabajo que mencionan el idioma, el número de libros vendidos y cursos que enseñan el idioma (esto sobrestima la importancia de los idiomas más nuevos), y estimaciones del número de líneas de código existentes escritas en el idioma (esto subestima el número de usuarios de idiomas comerciales como COBOL).

algunos idiomas son muy populares para tipos particulares de aplicaciones, mientras que algunos idiomas se utilizan regularmente para escribir muchos tipos diferentes de aplicaciones., Por ejemplo, COBOL sigue siendo fuerte en los centros de datos corporativos a menudo en grandes computadoras mainframe, Fortran en aplicaciones de ingeniería, lenguajes de scripting en Desarrollo Web y C En software embebido. Muchas aplicaciones utilizan una mezcla de varios idiomas en su construcción y uso. Los nuevos lenguajes generalmente se diseñan alrededor de la sintaxis de un lenguaje anterior con nuevas funcionalidades añadidas, (por ejemplo, C++ agrega orientación a objetos A C, y Java agrega administración de memoria y bytecode A C++, pero como resultado, pierde eficiencia y la capacidad de manipulación de bajo nivel).,

DebuggingEdit

el primer error real conocido que causó un problema en una computadora fue una polilla, atrapada dentro de un mainframe de Harvard, registrada en una entrada del libro de registro fechada el 9 de septiembre de 1947. «Bug» ya era un término común para un defecto de software cuando se encontró este bug.

Artículo principal: depuración

La depuración es una tarea muy importante en el proceso de desarrollo de software ya que tener defectos en un programa puede tener consecuencias significativas para sus usuarios., Algunos lenguajes son más propensos a algunos tipos de fallas porque su especificación no requiere que los compiladores realicen tantas comprobaciones como otros lenguajes. El uso de una herramienta de análisis de código estático puede ayudar a detectar algunos posibles problemas. Normalmente, el primer paso en la depuración es intentar reproducir el problema. Esto puede ser una tarea no trivial, por ejemplo, como con procesos paralelos o algunos errores de software inusuales. Además, el entorno de usuario específico y el historial de uso pueden dificultar la reproducción del problema.,

después de que se reproduzca el error, es posible que deba simplificarse la entrada del programa para que sea más fácil depurar. Por ejemplo, cuando un error en un compilador puede hacer que se bloquee al analizar un archivo fuente grande, una simplificación del caso de prueba que resulta en solo unas pocas líneas del archivo fuente original puede ser suficiente para reproducir el mismo bloqueo. Prueba y error / dividir y conquistar es necesario: el programador tratará de eliminar algunas partes del caso de prueba original y comprobar si el problema todavía existe., Al depurar el problema en una GUI, el programador puede intentar omitir alguna interacción del usuario de la descripción original del problema y comprobar si las acciones restantes son suficientes para que aparezcan errores. Scripting y breakpointing también es parte de este proceso.

La depuración se realiza a menudo con IDE como Eclipse, Visual Studio, Xcode, KDevelop, NetBeans y Code::Blocks. También se utilizan depuradores independientes como GDB, y estos a menudo proporcionan menos de un entorno visual, por lo general utilizando una línea de comandos. Algunos editores de texto como Emacs permiten que GDB sea invocado a través de ellos, para proporcionar un entorno visual.,

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *