1. REPRESENTACIÓN GRÁFICA DE LOS ALGORITMOS
1.1. DIAGRAMAS DE FLUJO
1.1.1. Es muy antigua, pero una de las más utilizadas.
1.1.2. Se auxilia de cajas para formar el diagrama donde cada una tiene una instrucción específica.
1.2. DIAGRAMA N-S (NASSI-SHNEIDERMAN)
1.2.1. Se omiten las flechas de unión y las cajas son contiguas.
1.3. PSEUDOCÓDIGO
1.4. LENGUAJE ESPAÑOL, INGLÉS...
1.5. FÓRMULAS
2. EL CICLO DE VIDA DEL SOFTWARE
2.1. ANÁLISIS
2.1.1. Qué se supone que ha de hacer el sistema.
2.1.2. Análisis y definición del problema
2.1.2.1. Definir cuál es el problema y lo que se necesita para resolverlo.
2.1.2.2. Se debe tener comunicación con el usuario.
2.1.3. Especificación de requisitos
2.1.3.1. Se trata de la escritura de un prototipo o modelo sencillo del sistema final que simule el comportamiento de las partes del producto software deseado.
2.2. DISEÑO
2.2.1. Indica como ha de hacerse el programa.
2.2.2. Se debe dividir en módulos indicando su interacción.
2.3. IMPLEMENTACIÓN
2.3.1. Traduce los algoritmos del diseño en un programa escrito en un lenguaje de programación.
2.4. PRUEBAS E INTEGRACIÓN
2.4.1. Se eliminan tantos errores tantos errores lógicos como se pueda.
2.5. VERIFICACIÓN
2.5.1. Construcción de pruebas matemáticas que ayudan a determinar si los programas hacen lo que se supone que deben de hacer.
2.6. MANTENIMIENTO
2.6.1. Un sistema de software producirá errores que serán detectados, casi con seguridad, por los usuarios del sistema y que no se descubrieron durante la fase de prueba.
2.7. LA OBSOLESCENCIA: PROGRAMAS OBSOLETOS
2.7.1. Fase en la que el software se queda anticuado y es preciso actualizar o escribir un nuevo programa sustitutorio al antiguo.
3. FASES EN LA RESOLUCIÓN DE PROBLEMAS
3.1. Descomponer una acción compleja en términos de un número de acciones más simples capaces de ejecutarlas o que constituyan instrucciones de computadoras disponibles.
3.2. 1. ANÁLISIS DEL PROBLEMA
3.2.1. En esta fase se especifica lo que debe resolver el programa y a donde se quiere llegar, por lo que, se especifica la entrada y la salida.
3.3. 2. DISEÑO DE ALGORITMO
3.3.1. Se determina qué hace el programa y cómo hace el programa la tarea solicitada.
3.3.2. CARACTERÍSTICAS
3.3.2.1. Preciso
3.3.2.1.1. Indicar el orden de realización en cada paso.
3.3.2.2. Definido
3.3.2.2.1. Si se sigue dos veces, obtiene el mismo resultado a la ves.
3.3.2.3. Finito
3.3.2.3.1. Tiene fin; un número determinado de pasos.
3.4. 3. CODIFICACIÓN DE UN PROGRAMA
3.4.1. Es la representación del algoritmo escrito en un lenguaje de programación.
3.5. 4. COMPILACIÓN Y EJECUCIÓN DE UN PROGRAMA
3.5.1. El algoritmo será convertido en un programa fuente, el cual, debe ser traducido al lenguaje máquina; ésto es realizado por el compilador.
3.5.2. En esta operación, el programa puede presentar errores o no, si está libre de errores, se debe instruir al sistema operativo para que realice el montaje o enlace, después de esto el programa podrá ser ejecutado .
3.6. 5. VERIFICACIÓN Y DEPURACIÓN DE UN PROGRAMA
3.6.1. VERIFICACIÓN
3.6.1.1. La verificación o compilación de un programa es el proceso de ejecución del programa con una amplia variedad de datos de entrada, llamados datos de test o prueba, que determinarán si el programa tiene errores (bugs).
3.6.2. DEPURACIÓN
3.6.2.1. Es el proceso de encontrar los errores del programa y corregir o eliminar dichos errores.
3.6.2.1.1. Errores de Compilación
3.6.2.1.2. Errores de Ejecución
3.6.2.1.3. Errores Lógicos
3.7. 6. DOCUMENTACIÓN Y MANTENIMIENTO
3.7.1. En la documentación se hace una descripción del proceso y sus pasos para llegar a la resolución del problema.
3.7.1.1. INTERNA
3.7.1.1.1. Puede ser interna cuando está en línea de comentarios .
3.7.1.2. EXTERNA
3.7.1.2.1. cuando se hace un análisis de diagramas de flujo, pseudocódigos, manuales de usuario y para interpretar resultados.
3.7.2. También, se le debe de dar un mantenimiento para corregir errores y actualizar la documentación.
4. PROGRAMACIÓN MODULAR
4.1. Uno de los diseños más flexible y potente para mejorar la productividad de un programa.
4.1.1. MÓDULOS
4.1.1.1. Cada uno de estos módulos ejecuta una única actividad o tarea y se codifican independientemente de otros módulos.
4.2. Cada programa contiene un módulo denominado programa principal que controla todo lo que sucede; se transfiere el control a submódulos (posteriormente se denominarán subprogramas), de modo que ellos puedan ejecutar sus funciones;
4.2.1. CONJUNTO DE TÉCNICAS QUE INCORPORAN:
4.2.1.1. Recursos abstractos.
4.2.1.2. Diseño descendente (top-down)
4.2.1.2.1. Proceso mediante el cual un problema se descompone en una serie de niveles o pasos sucesivos de refinamiento (stepwise)
4.2.1.3. Estructuras básicas.
4.2.1.3.1. Métodos de especificar el orden en que las instrucciones de un algoritmo se ejecutarán.
5. PROGRAMACIÓN ESTRUCTURADA
5.1. CARACTERÍSTICAS
5.1.1. El programa tiene un diseño modular.
5.1.2. Los módulos son diseñados de modo descendente.
5.1.3. Cada módulo se codifica utilizando las tres estructuras de control básicas: secuencia, selección y repetición.
6. HERRAMIENTAS DE PROGRAMACIÓN
6.1. 1. DIAGRAMAS DE FLUJO
6.1.1. Es una representación gráfica de un algoritmo.
6.2. 2. PSEUDOCÓDIGO
6.2.1. Las instrucciones se escriben en palabras similares al inglés o español, que facilitan la escritura y lectura de programas.
7. FACTORES EN LA CALIDAD DEL SOFTWARE
7.1. EFICIENCIA
7.1.1. Capacidad de hacer un buen uso de los recursos que usa.
7.2. TRANSPORTABILIDAD (PORTABILIDAD)
7.2.1. Facilidad en la que un software puede ser transportado sobre diferentes sistemas físicos o lógicos.
7.3. INTEGRIDAD
7.3.1. Capacidad de un software a proteger sus propios componentes contra los procesos que no tenga el derecho de acceder .
7.4. FÁCIL DE UTILIZAR
7.4.1. Un software es fácil de utilizar si se puede comunicar consigo de manera cómoda.
7.5. CORRECCIÓN
7.5.1. Capacidad de los productos software de realizar exactamente las tareas definidas por su especificación.
7.6. ROBUSTEZ
7.6.1. Capacidad de los productos software de funcionar incluso en situaciones anormales.
7.7. EXTENSIBILIDAD
7.7.1. Capacidad de los productos de adaptarse a cambios en su especificación.
7.7.1.1. Diseño simple.
7.7.1.2. Descentralización.
7.8. REUTILIZACIÓN
7.8.1. Capacidad de los productos de ser reutilizados, en su totalidad o en parte, en nuevas aplicaciones.
7.9. COMPATIBILIDAD
7.9.1. Facilidad para ser combinados con otros.
8. MÉTODOS DE VERIFICACIÓN DE PROGRAMAS
8.1. ASERCIONES
8.1.1. Sentencias lógicas acerca del programa que se declaran verdaderas.
8.2. PRECONDICIONES Y POSTCONDICIONES
8.2.1. Precondición
8.2.1.1. Predicado lógico que debe cumplirse al comenzar la ejecución de una operación.
8.2.2. Postcondición
8.2.2.1. Predicado lógico que debe de cumplirse al acabar la ejecución de una operación.
8.3. INVARIANTES DE BUCLES
8.3.1. Condición que es verdadera antes y después de la ejecución de un bucle.