Scrum

Un marco de trabajo por el cual las personas pueden acometer problemas complejos adaptativos, a la vez que entregar productos del máximo valor posible productiva y creativamente. Ligero, fácil de entender y extremadamente difícil de llegar a dominar

Empirismo

Asegura que el conocimiento procede de la experiencia y de tomar decisiones basándose en lo que se conoce. Scrum emplea un enfoque iterativo e incremental para optimizar la predictibilidad y el control del riesgo. Tres pilares soportan toda la implementación del control de procesos empírico: transparencia, inspección y adaptación

Sprint

Es un bloque de tiempo (time-box) de un mes o menos durante el cual se crea un incremento de producto “Terminado”, utilizable y potencialmente desplegable.

El Incremento

Es la suma de todos los elementos de la Lista de Producto completados durante un Sprint y el valor de los incrementos de todos los Sprints anteriores.

SOLID

  • S = Single responsibility: la noción de que un objeto solo debería tener una única responsabilidad.
  • O =Open/closed: abiertas para su extensión, pero cerradas para su modificación
  • L = Liskov substitution: objetos de un programa deberían ser reemplazables por instancias de sus subtipos sin alterar el correcto funcionamiento del programa
  • I = Interface segregation: muchas interfaces cliente específicas son mejores que una interfaz de propósito general.
  • D= Dependency inversion: depender de abstracciones, no depender de implementaciones

Cohesión

Abstracción y encapsulación

Cohesión funcional

Es el mejor y más fuerte tipo de cohesión, que ocurre cuando una rutina realiza una y solo una operación.

Cohesión secuencial: La rutina contiene operaciones que deben realizarse en un orden específico, que comparten datos paso a paso.

Cohesión comunicacional: Las operaciones en una rutina utilizan los mismos datos y no están relacionadas de ninguna otra manera.Divide las operaciones en rutinas individuales

Cohesión temporal: Las operaciones se combinan en una rutina porque todas se realizan al mismo tiempo

Algunos programadores consideran que la cohesión temporal es inaceptable.

Cohesión procesal: Las operaciones en una rutina se realizan en un orden específico.

Cohesión lógica: Las operaciones se seleccionan mediante una bandera de control

If-then: True o false, if noseque, then true, else false

Si no sabe con anticipación exactamente cuántas veces desea que se repita el ciclo, use un ciclo while.Un bucle for es una buena opción cuando necesita un bucle que se ejecuta un número

específico de veces.

Un test exitoso es aquel que rompe el software. Dirty test

Inspección formal: Se centra en la detección de errores, NO DE LA CORRECCION DE ERRORES. Beneficios: mejorar trabajo mediante participacion en inspeciones. Moderador-autor-reviewer-escriba

Unit testing: clase, rutina o pequeño programa. Programador individual. Probado de forma aislada del sistema más completo.

Component testing múltiples programadores o equipos de programación, que se prueba de forma aislada del sistema más completo.

Integration testing ejecución combinada de dos o más clases, paquetes, componentes o subsistemas.

Regression testing repetición de casos de prueba ejecutados previamente con el propósito de encontrar defectos en el software que previamente pasó el mismo conjunto de pruebas.

System testing ejecución del software en su configuración final, incluida la integración con otros sistemas de software y hardware.

Black-box testing: se refiere a pruebas en las que el probador no puede ver el funcionamiento interno del elemento que se está probando.

Pueba de caja blanca se refiere a las pruebas en las que el probador conoce el funcionamiento interno del elemento que se está probando. Este es el tipo de prueba que usted como desarrollador utiliza para probar su propio código.

Los testmedio para detectar errores. La depuración es un medio para diagnosticar y corregir las causas raíz de los errores.

Diseño por contrato: se usan precondiciones y postcondiciones
Polimorfismo: Un componente se puede comportar de muchas maneras dependiendo de donde lo ejecutes. duck_typing: Si camina como un pato, y grazna como un pato, es un pato. Todo es un objeto si se comporta como tal. Si un string dice que se puede multiplicar, entonces adelante. Refactorizar: un cambio realizado en la estructura interna del software para que sea más fácil de entender y más barato de modificar sin cambiar su comportamiento observable. Checklist: Comprobaciones de errores comunes en códigos para evitar que pasen más adelante

TDD: Test Drive Development (Su objetivo es mantener tu código bajo control)

3 fases:

  1. Escribir el caso test: El programa estará correcto cuando tu codigo supere el pase test. 
  2. Codifica rapido e intenta pasar el caso test cuanto antes, manteniendo las bases del code quality.
  3. Si has pasado todos los pases test y funciona, hay que refactorizar el código para definirlo mejor, (cambio variables names)
  4. Cuando ya hemos refactorizado y no sabemos como mejorarlo, hacer un incremento añadiendo mas fases de test.

Compilador: Pasa el lenguaje natural humano a binario.

Codigo objeto: Codigo que ya esta compilado, es el codigo ejecutable.

Código fuente

= Fichero que contiene el código que escribes en dicho lenguaje de programación. Lenguajes de alto nivel.

SCOPE: El ámbito de una variable.
LEGB: Local, Entorno, Global, Built-in (Antes de encontrar la variable en entorno, primero busca en local)
Cuando ejectuamos una funcion y se termina, destruye todos los cambios realizados en memoria de esa funcion. Con un metodo no.

Paso por valor: Le pasas el valor, no le pasas el objeto ls objetos que se pasan por valor son los enteros, para cambiar su valor, hay ue destruir ese objeto.

metavariable: no es un codigo funcional, es para saber como funciona (fu, var) LOS STRINGS NO SON MUTABLES.

eval: Pasas un string, pero sabemos que es código python y lo intenta ejecutar.

Linux Torvald dijo, si un programa lo creas para tontos, los usarán los tontos.

Recursividad: Funciones que se llaman a si misma y que agota la memoria del ordenador si no la paras ya que no tiene fin, porque se van ejecutando entre si sin parar. . Ej: Stackoverflow.

Fallo: Infeccion en una parte del codigo que provoca un error que se manifiesta de forma visual viendo un error. Bug/Defecto: Defecto en el codigo puesto por el programador. Infeccion: Variable que toma un valor que no debia haber tomado
API: Expone operaciones sobre estructura de datos
Historias de usuario: Que cosas puede hacer el usuario de la aplicación (requisitios funcionales)

 Grace Hooper: Pionera de la computación, almirante. Famosa por llevar nanosticks. Esribio una de los primeros lenguajes, COBOL