Metodologías de programación – Introducción
Cuando los programas están diseñados para resolver problemas del mundo real como la administración de inventario, el procesamiento de nóminas, la inscripción de estudiantes, el procesamiento de exámenes, etc., tienden a ser enormes y complejos. El enfoque para analizar problemas tan complejos, planificar el desarrollo de software y controlar el proceso de desarrollo se denomina metodología de programación .
Tipos de metodologías de programación
Hay muchos tipos de metodologías de programación comunes entre los desarrolladores de software:
Programación procedimental
El problema se divide en procedimientos o bloques de código que realizan una tarea cada uno. Todos los procedimientos, tomados en conjunto, componen el programa completo. Adecuado solo para programas pequeños que tienen un bajo nivel de dificultad.
Ejemplo. Para un programa de calculadora que realiza sumas, restas, multiplicaciones, divisiones, raíces cuadradas y comparación, cada una de estas operaciones se puede desarrollar como procedimientos separados. En el programa principal, cada procedimiento se llamará según la elección del usuario.
Programación orientada a objetos
Aquí la solución gira en torno a las entidades u objetos que forman parte del problema. La decisión se ocupa de cómo almacenar los datos asociados con los objetos, cómo se comportan esos objetos y cómo interactúan entre sí para dar una solución coherente.
Ejemplo. Si necesitamos diseñar un sistema de gestión de nómina, tendremos organizaciones como empleados, estructura salarial, reglas de vacaciones, etc., alrededor de las cuales se debe construir la solución.
Programación funcional
Aquí el problema o la solución deseada se desglosa en unidades funcionales. Cada unidad realiza su propia tarea y es autosuficiente. Estas unidades luego se cosen juntas para formar una solución completa.
Un ejemplo . El procesamiento de nómina puede tener unidades funcionales como mantenimiento de datos de empleados, cálculo de salario base, cálculo de salario bruto, procesamiento de vacaciones, procesamiento de reembolso de préstamos, etc.
Programación lógica
Aquí el problema se divide en unidades lógicas, no en unidades funcionales. Ejemplo: En un sistema de gestión escolar, los usuarios tienen roles muy específicos como profesor de clase, profesor de asignatura, ayudante de laboratorio, coordinador de estudios, etc. Así, el software se puede dividir en bloques dependiendo de los roles del usuario. Cada usuario puede tener diferentes interfaces, permisos, etc.
Los desarrolladores de software pueden elegir una o una combinación de más de una de estas metodologías para el desarrollo de software. Tenga en cuenta que en cada una de las metodologías analizadas, el problema debe desglosarse en unidades más pequeñas. Para ello, los desarrolladores utilizan cualquiera de los dos enfoques siguientes:
- Enfoque de arriba hacia abajo
- Un enfoque de abajo hacia arriba
Enfoque de arriba hacia abajo o modular
El problema se divide en unidades más pequeñas, que se pueden dividir en unidades aún más pequeñas. Cada bloque se llama módulo . Cada módulo es una unidad autónoma que contiene todo lo que necesita para completar su tarea.
La siguiente figura muestra un ejemplo de cómo puede utilizar un enfoque modular para crear diferentes módulos al desarrollar un programa de procesamiento de nómina.
Un enfoque de abajo hacia arriba
En un enfoque ascendente, el diseño del sistema comienza en el nivel más bajo de componentes, que luego se combinan para producir componentes de nivel superior. Este proceso continúa hasta que se genera una jerarquía de todos los componentes del sistema. Sin embargo, en un escenario del mundo real, es muy difícil conocer todos los componentes del nivel más bajo desde el principio. Por lo tanto, el enfoque de abajo hacia arriba solo se utiliza para tareas muy simples.
Echemos un vistazo a los componentes del programa de la calculadora.
Entendiendo el problema
Un proceso de desarrollo de software típico consta de los siguientes pasos:
- Recopilación de requisitos
- Definiendo el problema
- Diseño de sistemas
- Implementación
- pruebas
- Documentación
- Capacitación y apoyo
- Mantenimiento
Los dos primeros pasos ayudan al equipo a comprender el problema, el primer paso más importante hacia una solución. La persona responsable de recopilar los requisitos, definir el problema y desarrollar el sistema se denomina analista de sistemas .
Recopilación de requisitos
Normalmente, los clientes o usuarios no pueden definir claramente sus problemas o requisitos. Tienen una vaga idea de lo que quieren. Por lo tanto, los diseñadores del sistema deben recopilar los requisitos de los clientes para comprender el problema que debe resolverse o lo que debe resolverse. Una comprensión detallada del problema solo es posible con una primera comprensión del área comercial para la que se está desarrollando la solución. Algunas preguntas clave que ayudan a comprender el negocio incluyen:
- ¿Lo que se está haciendo?
- ¿Cómo está hecho?
- ¿Cuál es la frecuencia de la asignación?
- ¿Cuál es el volumen de decisiones o transacciones?
- ¿Cuáles son los problemas?
Algunos métodos que ayudan a recopilar esta información:
- Entrevista
- Cuestionario
- Examinar los documentos del sistema existentes
- Análisis de datos comerciales
Los analistas de sistemas deben crear un documento de requisitos claro y conciso pero completo para definir los requisitos SMART: específicos, medibles, coherentes, realistas y basados en el tiempo. No hacerlo da como resultado:
- Definición incompleta del problema
- Metas del programa inapropiadas
- Retrabajo para entregar el resultado deseado al cliente
- Aumento de costos
- Entrega tardía
Debido a la profundidad de la información requerida, la recopilación de reclamos también se conoce como investigación detallada .
Definiendo el problema
Después de recopilar los requisitos y analizarlos, es necesario formular claramente el enunciado del problema. La definición del problema debe indicar claramente qué problema o problemas deben abordarse. Tener una definición clara del problema es fundamental para:
- Determinar el alcance del proyecto
- Mantenga a su equipo enfocado
- Mantenga su proyecto en marcha
- Confirme que se ha logrado el resultado deseado al final del proyecto
Determinando la solución
La codificación a menudo se considera la parte más importante de cualquier proceso de desarrollo de software. Sin embargo, la codificación es solo una parte del proceso y en realidad puede llevar una cantidad mínima de tiempo si el sistema está diseñado correctamente. Antes de que se pueda diseñar un sistema, se debe encontrar una solución para el problema en cuestión.
Lo primero que hay que tener en cuenta al diseñar un sistema es que inicialmente un analista de sistemas puede ofrecer más de una solución. Pero solo puede haber una solución o producto final. El análisis en profundidad de los datos recopilados durante la fase de recopilación de requisitos puede ayudarlo a encontrar una solución única. Definir el problema correctamente también es fundamental para llegar a una solución.
Cuando se enfrentan al problema de múltiples soluciones, los analistas recurren a ayudas visuales como diagramas de flujo, diagramas de flujo de datos, diagramas de relación de objetos y más para obtener una comprensión más profunda de cada solución.
diagramas de bloques
Un diagrama de flujo es el proceso de ilustrar los flujos de trabajo y los flujos de datos en un sistema mediante símbolos y diagramas. Es una herramienta importante para ayudar al analista de sistemas a identificar una solución a un problema. Muestra visualmente los componentes del sistema.
Estos son los beneficios de un diagrama de flujo:
- La representación visual ayuda a comprender la lógica del programa.
- Actúan como planos para la codificación real del programa.
- Los diagramas de flujo son importantes para la documentación del software
- Los diagramas de bloques son una ayuda importante en el mantenimiento del programa.
La representación visual ayuda a comprender la lógica del programa.
Actúan como planos para la codificación real del programa.
Los diagramas de flujo son importantes para la documentación del software
Los diagramas de bloques son una ayuda importante en el mantenimiento del programa.
Estas son las desventajas del diagrama de flujo:
- La lógica compleja no se puede representar mediante diagramas de bloques
- En caso de cambios en la lógica o el flujo de datos / trabajo, el diagrama de bloques debe volver a dibujarse por completo.
La lógica compleja no se puede representar mediante diagramas de bloques
En caso de cambios en la lógica o el flujo de datos / trabajo, el diagrama de bloques debe volver a dibujarse por completo.
Diagrama de flujo de datos
Un diagrama de flujo de datos o DFD es una representación gráfica del flujo de datos a través de un sistema o subsistema. Cada proceso tiene su propio flujo de datos y niveles de diagrama de flujo de datos. El nivel 0 muestra las entradas y salidas de todo el sistema. Luego, el sistema se divide en módulos y el DFD de nivel 1 muestra el flujo de datos para cada módulo por separado. Los módulos se pueden subdividir en submódulos si es necesario y se puede dibujar un DFD de nivel 2.
PSEUDOCODE
Una vez diseñado el sistema, se entrega al director del proyecto para su implementación, es decir, codificación. La codificación real de un programa se realiza en un lenguaje de programación que solo los programadores capacitados en ese lenguaje pueden entender. Sin embargo, antes de que tenga lugar la codificación real, los fundamentos, los flujos de trabajo y los flujos de datos de un programa se escriben utilizando una notación similar al lenguaje de programación utilizado. A esto se le llama pseudocódigo .
Aquí hay un ejemplo de pseudocódigo en C ++. El programador solo necesita traducir cada declaración a la sintaxis de C ++ para obtener el código del programa.
Identificación de operaciones matemáticas
Todas las instrucciones para una computadora se implementan en última instancia en forma de operaciones aritméticas y lógicas a nivel de máquina. Estas operaciones son importantes porque:
- Toma un lugar en la memoria
- Tómate tu tiempo para actuar
- Determinar la efectividad del software
- Afecta el rendimiento general del software
Los analistas de sistemas intentan identificar todas las operaciones matemáticas básicas y, al mismo tiempo, encuentran una solución única al problema.
Aplicar métodos modulares
El verdadero problema es complejo y grande. Si se desarrolla una solución monolítica, plantea estos problemas:
- Difícil de escribir, probar e implementar un gran programa
- Los cambios después de la entrega del producto final son casi imposibles.
- El mantenimiento del programa es muy difícil
- Un error puede detener todo el sistema
Difícil de escribir, probar e implementar un gran programa
Los cambios después de la entrega del producto final son casi imposibles.
El mantenimiento del programa es muy difícil
Un error puede detener todo el sistema
Para superar estos problemas, la solución debe dividirse en partes más pequeñas llamadas módulos . La técnica de dividir una solución grande en módulos más pequeños para facilitar el desarrollo, la implementación, la modificación y el mantenimiento se denomina programación modular o ingeniería de software.
Beneficios de la programación modular
La programación modular ofrece estos beneficios:
- Proporciona un desarrollo más rápido ya que cada módulo se puede desarrollar en paralelo.
- Los módulos se pueden reutilizar
- Dado que cada módulo debe probarse de forma independiente, la prueba es más rápida y confiable
- Depurar y mantener todo el programa es más fácil
- Los módulos son más pequeños y tienen un menor nivel de complejidad, por lo que son fáciles de entender.
Proporciona un desarrollo más rápido ya que cada módulo se puede desarrollar en paralelo.
Los módulos se pueden reutilizar
Dado que cada módulo debe probarse de forma independiente, la prueba es más rápida y confiable
Depurar y mantener todo el programa es más fácil
Los módulos son más pequeños y tienen un menor nivel de complejidad, por lo que son fáciles de entender.
Identificación del módulo
Identificar módulos en el software es una tarea increíble porque no puede haber una única forma correcta de hacerlo. Aquí hay algunos consejos para identificar módulos:
- Si los datos son el elemento más importante del sistema, cree módulos que procesen datos relacionados.
- Si el servicio proporcionado por el sistema es diverso, divida el sistema en módulos funcionales.
- Si todo lo demás falla, particione el sistema en unidades lógicas de acuerdo con su comprensión del sistema durante la fase de recopilación de requisitos.
Si los datos son el elemento más importante del sistema, cree módulos que procesen datos relacionados.
Si el servicio proporcionado por el sistema es diverso, divida el sistema en módulos funcionales.
Si todo lo demás falla, particione el sistema en unidades lógicas de acuerdo con su comprensión del sistema durante la fase de recopilación de requisitos.
Para la codificación, cada módulo debe dividirse nuevamente en módulos más pequeños para facilitar la programación. Esto se puede hacer nuevamente usando los tres consejos anteriores, combinados con reglas de programación específicas. Por ejemplo, para un lenguaje de programación orientado a objetos como C ++ y Java, cada clase con sus propios datos y métodos puede formar un solo módulo.
Solución paso-a-paso
Para implementar los módulos, la secuencia de operaciones de cada módulo debe describirse paso a paso. Se puede desarrollar una solución paso a paso utilizando algoritmos o pseudocódigos . Proporcionar una solución paso a paso ofrece estos beneficios:
- Cualquiera que lea la solución puede comprender tanto el problema como la solución.
- Esto es igualmente comprensible para programadores y no programadores.
- Durante la codificación, cada declaración simplemente debe convertirse en una declaración de programa.
- Puede ser parte de la documentación y ayudar a mantener el programa.
- Los detalles a nivel micro, como nombres de identificadores, operaciones requeridas, etc., se generan automáticamente
Cualquiera que lea la solución puede comprender tanto el problema como la solución.
Esto es igualmente comprensible para programadores y no programadores.
Durante la codificación, cada declaración simplemente debe convertirse en una declaración de programa.
Puede ser parte de la documentación y ayudar a mantener el programa.
Los detalles a nivel micro, como nombres de identificadores, operaciones requeridas, etc., se generan automáticamente
Echemos un vistazo a un ejemplo.
Estructuras de Control
Como puede ver en el ejemplo anterior, no es necesario que la lógica del programa se ejecute secuencialmente . En un lenguaje de programación, las estructuras de control toman decisiones sobre el curso de un programa basándose en parámetros dados. Son elementos muy importantes de cualquier software y deben identificarse antes de iniciar cualquier codificación.
Los algoritmos y pseudocódigos ayudan a los analistas y programadores a determinar dónde se necesitan las estructuras de control.
Las estructuras de control son de tres tipos:
Estructuras de control de decisiones
Los marcos de gestión de decisiones se utilizan cuando el siguiente paso depende de los criterios. Este criterio suele ser una o más expresiones lógicas a evaluar. Una expresión booleana siempre se evalúa como verdadera o falsa. Un conjunto de declaraciones se ejecuta si el criterio es “verdadero” y otro conjunto se ejecuta si el criterio se evalúa como “falso”. Por ejemplo, si la declaración
Estructuras de control de selección
Las estructuras de control de selección se utilizan cuando la secuencia del programa depende de la respuesta a una pregunta específica. Por ejemplo, un programa tiene muchas opciones para el usuario. La siguiente instrucción dependerá de la opción seleccionada. Por ejemplo, un interruptor de operador , operador de un caso .
Estructuras de control de repetición / bucle
El marco de control de repetición se utiliza cuando un conjunto de declaraciones debe repetirse muchas veces. El número de repeticiones puede conocerse antes de que se ejecute o puede depender del valor de la expresión. Por ejemplo, para el operador “operador”, “operador”, “operador” mientras “ , etc.
Como puede ver en la imagen de arriba, las estructuras de elección y decisión se implementan de manera similar en el diagrama de flujo. El control de la elección no es más que una secuencia de declaraciones hechas secuencialmente.
A continuación se muestran algunos ejemplos de programas para mostrar cómo funcionan estas afirmaciones:
Escritura de algoritmos
El conjunto final de pasos que se deben seguir para resolver cualquier problema se llama algoritmo . El algoritmo generalmente se diseña antes de la codificación real. Está escrito en inglés, por lo que es fácil de entender incluso para quienes no son programadores.
A veces, los algoritmos se escriben utilizando pseudocódigo , es decir, un lenguaje similar al lenguaje de programación utilizado. Escribir un algoritmo para resolver un problema ofrece estas ventajas:
- Promueve la comunicación efectiva entre los miembros del equipo.
- Permite el análisis de problemas a mano
- Actúa como un modelo para la codificación
- Ayuda a depurar
- Se convierte en parte de la documentación del software para su uso posterior durante la fase de mantenimiento.
Promueve la comunicación efectiva entre los miembros del equipo.
Permite el análisis de problemas a mano
Actúa como un modelo para la codificación
Ayuda a depurar
Se convierte en parte de la documentación del software para su uso posterior durante la fase de mantenimiento.
Estas son las características de un algoritmo bueno y correcto:
- Tiene un conjunto de entradas
- Los pasos están definidos de forma única
- Tiene un número finito de pasos
- Produce el resultado deseado
Tiene un conjunto de entradas
Los pasos están definidos de forma única
Tiene un número finito de pasos
Produce el resultado deseado
Ejemplo de algoritmo
Tomemos un ejemplo de una situación del mundo real primero para crear un algoritmo. Aquí está el algoritmo de lanzamiento al mercado para comprar un bolígrafo.
El paso 4 de este algoritmo es una tarea completa en sí misma, y se puede escribir un algoritmo separado para él. Creemos ahora un algoritmo para verificar si un número es positivo o negativo.
Elementos del diagrama de bloques
Un diagrama de flujo es una representación esquemática de una secuencia de pasos lógicos en un programa. Los diagramas de flujo utilizan formas geométricas simples para representar procesos y flechas para representar relaciones y procesos / flujo de datos.
Símbolos de diagrama de flujo
A continuación, se muestra un diagrama de algunos de los símbolos comunes que se utilizan para dibujar diagramas de flujo.
Símbolo | Nombre del símbolo | propósito |
---|---|---|
Start / Stop | Se utiliza al principio y al final de un algoritmo para indicar el principio y el final de un programa. | |
Proceso | Indica procesos como operaciones matemáticas. | |
De entrada y salida | Se utiliza para indicar las entradas y salidas del programa. | |
Decisión | Indica declaraciones de decisión en un programa donde la respuesta suele ser sí o no. | |
Flecha | Muestra la relación entre diferentes formas. | |
Conector en la página | Conecta dos o más partes de un diagrama de flujo que están en la misma página. | |
Conector fuera de página | Conecta dos partes de un diagrama de flujo que se distribuyen en distintas páginas. |
Guía de diseño de diagrama de flujo
Aquí hay algunos puntos a considerar al diseñar un diagrama de flujo:
- Un diagrama de bloques solo puede tener un símbolo de inicio y un símbolo de parada.
- Los conectores de página están referenciados por números
- Los enlaces a conectores de terceros se especifican mediante alfabetos.
- Flujo de proceso general de arriba a abajo o de izquierda a derecha
- Las flechas no deben cruzarse
Un diagrama de bloques solo puede tener un símbolo de inicio y un símbolo de parada.
Los conectores de página están referenciados por números
Los enlaces a conectores de terceros se especifican mediante alfabetos.
Flujo de proceso general de arriba a abajo o de izquierda a derecha
Las flechas no deben cruzarse
Ejemplos de diagramas de bloques
Aquí hay un diagrama de flujo para ir al mercado a comprar un bolígrafo.
Aquí hay un diagrama de flujo para calcular el promedio de dos números.
Usando instrucciones claras
Como saben, una computadora no tiene inteligencia propia; simplemente sigue las instrucciones dadas por el usuario. Las instrucciones son los componentes básicos de un programa de computadora y, por lo tanto, el software. Proporcionar instrucciones claras es fundamental para crear un programa exitoso. Como programador o desarrollador de software, debe acostumbrarse a escribir instrucciones claras. Hay dos maneras de hacerlo.
Claridad de Expresiones
Una expresión en un programa es una secuencia de operadores y operandos para cálculos aritméticos o lógicos. A continuación, se muestran algunos ejemplos de expresiones válidas:
- Comparando dos valores
- Definición de una variable, objeto o clase
- Cálculos aritméticos usando una o más variables
- Recuperando datos de la base de datos
- Actualizar valores en la base de datos
Escribir expresiones inequívocas es una habilidad que todo programador debería desarrollar. A continuación, se incluyen algunas cosas que debe tener en cuenta al escribir dichas expresiones:
Resultado inequívoco
La evaluación de la expresión debe dar un resultado inequívoco. Por ejemplo, los operadores unarios deben usarse con precaución.
Evita expresiones complejas
No intente lograr mucho con una sola expresión. Divídalo en dos o más expresiones a la vez cuando las cosas se pongan complicadas.
Sencillez de instrucciones
No es solo para las computadoras que necesita escribir instrucciones claras. Cualquiera que lea el programa más tarde (¡incluso usted mismo!) Debe comprender lo que la instrucción está tratando de lograr. Los programadores a menudo no se familiarizan con sus programas cuando los revisan después de un tiempo. Esto indica que será difícil mantener y modificar dichos programas.
Escribir instrucciones sencillas ayuda a evitar este problema. Aquí hay algunos consejos para escribir instrucciones sencillas:
- Evitar las instrucciones inteligentes – instrucciones inteligentes pueden no parecer tan inteligente después si nadie puede entender correctamente.
- Una instrucción por tarea. Intentar hacer más de una cosa a la vez complica las instrucciones.
- Utilice estándares : cada idioma tiene sus propios estándares, sígalos. Recuerde que no está trabajando solo en un proyecto; siga los estándares de diseño y las pautas de codificación.
Evitar las instrucciones inteligentes – instrucciones inteligentes pueden no parecer tan inteligente después si nadie puede entender correctamente.
Una instrucción por tarea. Intentar hacer más de una cosa a la vez complica las instrucciones.
Utilice estándares : cada idioma tiene sus propios estándares, sígalos. Recuerde que no está trabajando solo en un proyecto; siga los estándares de diseño y las pautas de codificación.
Técnicas de programación correctas
En este capítulo, le mostraremos cómo escribir un buen programa. Pero antes de hacer eso, veamos cuáles son las características de un buen programa:
- Portátil : el programa o software debe funcionar en todas las computadoras del mismo tipo. Por el mismo tipo, queremos decir que el software diseñado para computadoras personales debería funcionar en todas las PC. O el software de escritura para tabletas debería funcionar en todas las tabletas que tengan las especificaciones correctas.
- Efectivo : el software que completa tareas rápidamente se denomina efectivo. Optimizar el código y optimizar la memoria son algunas de las formas de mejorar la eficiencia del programa.
Portátil : el programa o software debe funcionar en todas las computadoras del mismo tipo. Por el mismo tipo, queremos decir que el software diseñado para computadoras personales debería funcionar en todas las PC. O el software de escritura para tabletas debería funcionar en todas las tabletas que tengan las especificaciones correctas.
Efectivo : el software que completa tareas rápidamente se denomina efectivo. Optimizar el código y optimizar la memoria son algunas de las formas de mejorar la eficiencia del programa.
- Efectivo : el software debería ayudar a resolver el problema. Se dice que el software que hace esto es eficiente.
- Confiable : el programa debe producir la misma salida cada vez que se proporcione el mismo conjunto de entradas.
- Fácil de usar : interfaz del programa, enlaces e iconos en los que se puede hacer clic, etc. Debe ser fácil de usar.
- Autodocumentado : cualquier programa o software, nombres de identificadores, nombres de módulos, etc. Puede ser autodescriptivo debido al uso de nombres explícitos.
Efectivo : el software debería ayudar a resolver el problema. Se dice que el software que hace esto es eficiente.
Confiable : el programa debe producir la misma salida cada vez que se proporcione el mismo conjunto de entradas.
Fácil de usar : interfaz del programa, enlaces e iconos en los que se puede hacer clic, etc. Debe ser fácil de usar.
Autodocumentado : cualquier programa o software, nombres de identificadores, nombres de módulos, etc. Puede ser autodescriptivo debido al uso de nombres explícitos.
Aquí hay algunas formas de escribir buenos programas.
Nombres de identificadores correctos
Un nombre que identifica cualquier variable, objeto, función, clase o método se llama identificador . Especificar los nombres de identificadores correctos hace que el programa se documente por sí mismo. Esto significa que el nombre del objeto le dirá qué hace o qué información almacena. Tomemos un ejemplo de esta declaración SQL:
Mire la línea 10. Le dice a todos los que leen el programa que seleccionen una identificación, nombre y número de estudiante. Los nombres de las variables hacen que esto se explique por sí mismo. A continuación se ofrecen algunos consejos para crear nombres de identificadores correctos:
- Usar recomendaciones de idioma
- Siéntase libre de dar nombres largos para mantener las cosas claras
- Usa letras mayúsculas y minúsculas
- No asigne el mismo nombre a dos identificadores, incluso si el idioma lo permite
- No asigne el mismo nombre a más de un identificador, incluso si son mutuamente excluyentes.
Usar recomendaciones de idioma
Siéntase libre de dar nombres largos para mantener las cosas claras
Usa letras mayúsculas y minúsculas
No asigne el mismo nombre a dos identificadores, incluso si el idioma lo permite
No asigne el mismo nombre a más de un identificador, incluso si son mutuamente excluyentes.
Comentarios
En la imagen de arriba, mire la línea 8. Le dice al lector que las siguientes líneas de código obtendrán una lista de estudiantes cuya boleta de calificaciones se generará. Esta línea no es parte del código, pero solo se proporciona para que el programa sea más fácil de usar.
Una expresión que no se compila, pero que se escribe como nota o explicación para el programador, se llama comentario . Mire los comentarios en el siguiente segmento del programa. Los comentarios comienzan con //.
Los comentarios se pueden insertar como –
- Prólogo al programa para explicar su propósito
- Al principio y / o al final de bloques lógicos o funcionales
- Anote escenarios especiales o excepciones
Prólogo al programa para explicar su propósito
Al principio y / o al final de bloques lógicos o funcionales
Anote escenarios especiales o excepciones
Debe evitar agregar comentarios innecesarios, ya que puede ser contraproducente e interrumpir el flujo de código a medida que lee. El compilador puede ignorar los comentarios y las sangrías, pero el lector está ansioso por leer cada uno.
sangría
La distancia del texto desde el margen izquierdo o derecho se llama sangría . En los programas, la sangría se utiliza para separar bloques de código separados lógicamente. A continuación, se muestra un ejemplo de un segmento de programa con sangría:
Como puede ver, el programa con sangría es más claro. El flujo de control del bucle for a si bucle de ida y vuelta es muy clara. La sangría es especialmente útil para las estructuras de control.
Insertar espacios o líneas también es parte de la sangría. Aquí hay algunas situaciones en las que puede y debe usar sangría:
- Líneas en blanco entre bloques de código lógicos o funcionales en un programa
- Espacios alrededor de los operadores
- Pestañas al inicio de nuevas estructuras de gobierno
Líneas en blanco entre bloques de código lógicos o funcionales en un programa
Espacios alrededor de los operadores
Pestañas al inicio de nuevas estructuras de gobierno
Metodologías de programación: depuración
La identificación y eliminación de errores de un programa o software se denomina depuración . La depuración es idealmente parte del proceso de prueba, pero en realidad se realiza en cada etapa de la programación. Los codificadores deben depurar el más pequeño de sus módulos antes de continuar. Esto reduce el número de errores encontrados durante la fase de prueba y reduce significativamente el tiempo y el esfuerzo de prueba. Echemos un vistazo a los tipos de errores que pueden ocurrir en un programa.
Errores de sintaxis
Los errores de sintaxis son errores gramaticales en un programa. Cada idioma tiene su propio conjunto de reglas, como la creación de identificadores, la escritura de expresiones, etc. para programas de escritura. Cuando se violan estas reglas, los errores se denominan errores de sintaxis . Muchos IDE modernos pueden detectar errores de sintaxis al ingresar a un programa. De lo contrario, se mostrará al compilar el programa. Tomemos un ejemplo:
En este programa no se declaró la variable prod, que es generada por el compilador.
Errores semánticos
Los errores semánticos también se denominan errores lógicos . La declaración no tiene errores de sintaxis, por lo que se compilará y se ejecutará correctamente. Sin embargo, esto no dará el resultado deseado ya que la lógica es incorrecta. Pongamos un ejemplo.
Mire la línea 13. Aquí el programador quiere verificar si el divisor es igual a 0 para evitar la división entre 0. Sin embargo, en lugar de usar el operador de comparación ==, se usó el operador de asignación =. Ahora, cada vez que la expresión “si” se evalúa como “verdadero”, y el programa dará como resultado “No se puede dividir por 0”. ¡Definitivamente no es lo que se pretendía!
Ningún programa puede detectar errores lógicos; deben ser definidos por el propio programador cuando no se consigue el resultado deseado.
Errores de tiempo de ejecución
Los errores de tiempo de ejecución son errores que ocurren durante la ejecución de un programa. Esto significa que no hay errores de sintaxis en el programa. Estos son algunos de los errores de tiempo de ejecución más comunes que puede encontrar en su programa:
- Ciclo sin fin
- División por ‘0’
- El usuario ingresó un valor no válido (diga cadena en lugar de entero)
Optimización de su código
Cualquier método mediante el cual se modifica el código para mejorar su calidad y eficiencia se denomina optimización de código. La calidad del código determina la vida útil del código. Si un código se puede utilizar y mantener durante un largo período de tiempo de un producto a otro, su calidad se considera alta y su vida útil es más larga. Por el contrario, si un fragmento de código solo se puede usar y mantener durante períodos cortos de tiempo, digamos hasta que una versión sea válida, se considera que es de mala calidad y tiene una vida útil corta.
La confiabilidad y la velocidad del código determinan la eficiencia del código . La eficiencia del código es un factor importante para garantizar un alto rendimiento del software.
Hay dos enfoques para la optimización del código:
- Optimización basada en la intuición (IBO) : aquí el programador intenta optimizar el programa en función de sus propias habilidades y experiencia. Esto puede funcionar para programas pequeños, pero falla a medida que el programa se vuelve más complejo.
- Optimización basada en evidencia (EBO) : utiliza herramientas automatizadas para identificar cuellos de botella en el rendimiento y luego optimiza las partes relevantes en consecuencia. Cada lenguaje de programación tiene su propio conjunto de herramientas de optimización de código. Por ejemplo, PMD, FindBug y Clover se utilizan para optimizar el código Java.
Optimización basada en la intuición (IBO) : aquí el programador intenta optimizar el programa en función de sus propias habilidades y experiencia. Esto puede funcionar para programas pequeños, pero falla a medida que el programa se vuelve más complejo.
Optimización basada en evidencia (EBO) : utiliza herramientas automatizadas para identificar cuellos de botella en el rendimiento y luego optimiza las partes relevantes en consecuencia. Cada lenguaje de programación tiene su propio conjunto de herramientas de optimización de código. Por ejemplo, PMD, FindBug y Clover se utilizan para optimizar el código Java.
El código está optimizado para el tiempo de ejecución y el consumo de memoria porque el tiempo es corto y la memoria es cara. Debe haber un equilibrio entre los dos. Si la optimización temporal aumenta la carga de la memoria o la optimización de la memoria ralentiza el código, se perderá el objetivo de optimización.
Optimización del tiempo de ejecución
Optimizar su código para el tiempo de ejecución es esencial para proporcionar una experiencia de usuario rápida. Estos son algunos consejos para optimizar el tiempo de ejecución:
- Utilice comandos que tengan optimización de tiempo de ejecución incorporada
- Use un interruptor en lugar de una condición if
- Minimizar las llamadas a funciones dentro de las estructuras de bucle
- Optimizar las estructuras de datos utilizadas en el programa.
Utilice comandos que tengan optimización de tiempo de ejecución incorporada
Use un interruptor en lugar de una condición if
Minimizar las llamadas a funciones dentro de las estructuras de bucle
Optimizar las estructuras de datos utilizadas en el programa.
Optimización de la memoria
Como sabe, los datos y las instrucciones ocupan memoria. Cuando decimos datos, esto también se aplica a los datos intermedios que son el resultado de expresiones. También necesitamos realizar un seguimiento de cuántas instrucciones componen el programa o módulo que estamos tratando de optimizar. Aquí hay algunos consejos para optimizar la memoria :
- Utilice comandos que tengan optimización de memoria incorporada
- Siga usando variables que deben almacenarse en registros al menos
- Evite declarar variables globales dentro de bucles que se ejecutan muchas veces
- Evite el uso de funciones intensivas de CPU como sqrt ()
Utilice comandos que tengan optimización de memoria incorporada
Siga usando variables que deben almacenarse en registros al menos
Evite declarar variables globales dentro de bucles que se ejecutan muchas veces
Evite el uso de funciones intensivas de CPU como sqrt ()
Documentación del programa
Cualquier texto, ilustración o video escrito que describa el software o el programa a sus usuarios se denomina programa o documento de programa . El usuario puede ser cualquier cosa, desde un programador, analista de sistemas y administrador hasta un usuario final. En diferentes etapas de desarrollo, se pueden crear varios documentos para diferentes usuarios. De hecho, la documentación del software es un proceso crítico en el proceso general de desarrollo de software.
En la programación modular, la documentación se vuelve aún más importante porque diferentes equipos desarrollan diferentes módulos de software. Si alguien que no sea el equipo de desarrollo quiere o necesita entender el módulo, una documentación buena y detallada facilitará la tarea.
Aquí hay algunas pautas para crear documentos:
- La documentación debe ser desde el punto de vista del lector.
- El documento debe ser inequívoco
- No debe haber repeticiones
- Deben utilizarse los estándares de la industria
- Los documentos siempre deben estar actualizados
- Cualquier documento obsoleto debe suspenderse después del registro adecuado.
La documentación debe ser desde el punto de vista del lector.
El documento debe ser inequívoco
No debe haber repeticiones
Deben utilizarse los estándares de la industria
Los documentos siempre deben estar actualizados
Cualquier documento obsoleto debe suspenderse después del registro adecuado.
Beneficios de la documentación
Estos son algunos de los beneficios de proporcionar documentación de software:
- Realiza un seguimiento de todas las piezas de software o programas
- El servicio es más fácil
- Los programadores que no sean el desarrollador pueden comprender todos los aspectos del software
- Mejora la calidad general del software
- Ayuda en la educación del usuario
- Descentraliza el conocimiento, reduciendo costos y esfuerzos si las personas abandonan el sistema repentinamente
Realiza un seguimiento de todas las piezas de software o programas
El servicio es más fácil
Los programadores que no sean el desarrollador pueden comprender todos los aspectos del software
Mejora la calidad general del software
Ayuda en la educación del usuario
Descentraliza el conocimiento, reduciendo costos y esfuerzos si las personas abandonan el sistema repentinamente
Documentos de muestra
El software puede tener muchos tipos de documentos asociados. Algunos de los importantes incluyen:
- Guía del usuario : describe instrucciones y procedimientos para que los usuarios finales utilicen varias funciones del software.
- Manual de funcionamiento : enumera y describe todas las operaciones realizadas y sus interdependencias.
- Documento de diseño : proporciona una descripción general del software y detalla los elementos de diseño. Documenta detalles como diagramas de flujo de datos, diagramas de relación entre entidades y más.
- Documento de requisitos : contiene una lista de todos los requisitos del sistema, así como un análisis de la viabilidad de los requisitos. Pueden ser casos personalizados, escenarios de la vida real, etc.
- La documentación técnica es documentación sobre componentes de programación reales como algoritmos, diagramas de bloques, códigos de programa, módulos de función, etc.
- Documento de prueba : registra el plan de prueba, los casos de prueba, el plan de prueba, el plan de prueba, los resultados de la prueba, etc. La prueba es una fase del desarrollo de software que requiere una documentación intensa.
- Lista de errores conocidos : todo software tiene errores o errores que no se pueden eliminar porque se descubrieron demasiado tarde o son inofensivos, o requerirán más esfuerzo y tiempo del necesario para corregirlos. Estos errores se enumeran junto con la documentación del software para que puedan eliminarse más tarde. También ayudan a los usuarios, desarrolladores y técnicos de servicio si se activa el error.
Guía del usuario : describe instrucciones y procedimientos para que los usuarios finales utilicen varias funciones del software.
Manual de funcionamiento : enumera y describe todas las operaciones realizadas y sus interdependencias.
Documento de diseño : proporciona una descripción general del software y detalla los elementos de diseño. Documenta detalles como diagramas de flujo de datos, diagramas de relación entre entidades y más.
Documento de requisitos : contiene una lista de todos los requisitos del sistema, así como un análisis de la viabilidad de los requisitos. Pueden ser casos personalizados, escenarios de la vida real, etc.
La documentación técnica es documentación sobre componentes de programación reales como algoritmos, diagramas de bloques, códigos de programa, módulos de función, etc.
Documento de prueba : registra el plan de prueba, los casos de prueba, el plan de prueba, el plan de prueba, los resultados de la prueba, etc. La prueba es una fase del desarrollo de software que requiere una documentación intensa.
Lista de errores conocidos : todo software tiene errores o errores que no se pueden eliminar porque se descubrieron demasiado tarde o son inofensivos, o requerirán más esfuerzo y tiempo del necesario para corregirlos. Estos errores se enumeran junto con la documentación del software para que puedan eliminarse más tarde. También ayudan a los usuarios, desarrolladores y técnicos de servicio si se activa el error.
Mantenimiento del programa
El mantenimiento del programa es el proceso de cambiar el software o un programa después de la entrega para lograr cualquiera de estos resultados:
- Corregir errores
- Mejorar la productividad
- Agregar funcionalidad
- Eliminar piezas obsoletas
Si bien se cree ampliamente que se requiere mantenimiento para corregir errores posteriores al lanzamiento, en realidad, la mayor parte del mantenimiento implica agregar características menores o mayores a los módulos existentes. Por ejemplo, se agregan algunos datos nuevos a un informe, se agrega un nuevo campo a los formularios de entrada, un código que debe cambiarse para incluir leyes estatales modificadas, etc.
Tipos de servicio
El trabajo de mantenimiento se puede dividir en cuatro categorías:
- Mantenimiento correctivo : aquí hay correcciones de errores después de la implementación en el lugar. Los propios usuarios pueden señalar los errores.
- Mantenimiento preventivo : las modificaciones realizadas para evitar errores futuros se denominan mantenimiento preventivo.
- Servicio adaptativo. Los cambios en el entorno de producción a veces requieren cambios en el software. A esto se le llama servicio adaptativo. Por ejemplo, si la política del gobierno en educación cambia, será necesario realizar los cambios apropiados en el módulo de procesamiento de resultados de los estudiantes del software de gestión escolar.
- Servicio impecable : los cambios en el software existente para adaptarse a los nuevos requisitos del cliente se denominan servicio impecable. El objetivo es mantenerse actualizado con la última tecnología.
Mantenimiento correctivo : aquí hay correcciones de errores después de la implementación en el lugar. Los propios usuarios pueden señalar los errores.
Mantenimiento preventivo : las modificaciones realizadas para evitar errores futuros se denominan mantenimiento preventivo.
Servicio adaptativo. Los cambios en el entorno de producción a veces requieren cambios en el software. A esto se le llama servicio adaptativo. Por ejemplo, si la política del gobierno en educación cambia, será necesario realizar los cambios apropiados en el módulo de procesamiento de resultados de los estudiantes del software de gestión escolar.
Servicio impecable : los cambios en el software existente para adaptarse a los nuevos requisitos del cliente se denominan servicio impecable. El objetivo es mantenerse actualizado con la última tecnología.
Herramientas de servicio
Los desarrolladores y programadores de software utilizan muchas herramientas para ayudarles a mantener su software. Algunos de los más utilizados son:
Rebanador de software : selecciona la parte del programa que se verá afectada por el cambio
Analizador de flujo de datos : monitorea todos los flujos de datos posibles en el software
Analizador dinámico : monitorea la ruta de ejecución del programa
Analizador estático : permite la visualización general y generalización del programa.
Analizador de dependencias : le ayuda a comprender y analizar las interdependencias de las diferentes partes del programa.