Chuleta de Entornos de Desarrollo
Git, Maven, pruebas, refactorización, documentación y UML: lo que se pregunta en el examen y se usa a diario.
Git básico
| git init · git clone URL | Crear repositorio · copiar uno remoto |
|---|---|
| git status · git diff | Qué ha cambiado (sin preparar) |
| git add archivo · git add -p | Preparar cambios (por trozos con -p) |
| git commit -m "mensaje" | Guardar una versión |
| git log --oneline --graph | Historial compacto con ramas |
| git switch -c rama | Crear rama y cambiar a ella |
| git merge rama · git rebase main | Integrar cambios |
| git push -u origin rama · git pull | Subir · traer y fusionar |
| git restore archivo | Descartar cambios locales |
| git revert HASH | Deshacer un commit con otro commit |
Maven
<dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter</artifactId> <version>5.11.0</version> <scope>test</scope></dependency>Ciclo: validate → compile → test → package → verify → install → deploy. mvn clean package genera el .jar en target/.
Tema: Optimización y DocumentaciónTécnicas de prueba
| Caja negra | Se prueba la especificación sin mirar el código |
|---|---|
| Clases de equivalencia | Un valor representativo de cada grupo válido e inválido |
| Valores límite | Probar justo en, antes y después de cada frontera |
| Caja blanca | Se diseñan casos a partir del código |
| Complejidad ciclomática | V(G) = aristas − nodos + 2 = decisiones + 1 |
| Cobertura de ramas | Cada condición toma verdadero y falso al menos una vez |
| Unitaria · integración · sistema · aceptación | De la pieza aislada al usuario final |
| Regresión | Repetir las pruebas tras cada cambio |
JUnit 5
class CalculadoraTest { private Calculadora calc; @BeforeEach void setUp() { calc = new Calculadora(); } @Test void sumaDosPositivos() { assertEquals(5, calc.suma(2, 3)); } @Test void dividirEntreCeroLanza() { assertThrows(ArithmeticException.class, () -> calc.divide(1, 0)); } @ParameterizedTest @CsvSource({"1,1,2", "-1,1,0", "0,0,0"}) void sumaVarios(int a, int b, int esperado) { assertEquals(esperado, calc.suma(a, b)); }}Otras: assertTrue, assertNull, assertAll, assertEquals(0.3, x, 1e-9) para decimales, @DisplayName, @Disabled.
Tema: Pruebas con JUnit y MockitoMockito
@ExtendWith(MockitoExtension.class)class PedidoServiceTest { @Mock PedidoRepository repo; @InjectMocks PedidoService service; @Test void guardaElPedido() { when(repo.existe(7)).thenReturn(false); service.crear(7); verify(repo).guardar(any(Pedido.class)); }}Tema: Pruebas con JUnit y Mockito Refactorización
| Extraer método | Un trozo con nombre propio pasa a ser un método |
|---|---|
| Renombrar | Nombres que expliquen la intención |
| Introducir variable explicativa | Dar nombre a una expresión compleja |
| Sustituir número mágico | Constante con nombre en vez de 0.21 |
| Encapsular atributo | private + getter/setter |
| Malos olores | Método largo, clase grande, código duplicado, lista larga de parámetros |
Refactorizar no cambia el comportamiento: las pruebas deben seguir en verde.
Tema: Optimización y DocumentaciónJavadoc
/** * Calcula el precio final aplicando el IVA. * * @param base importe sin impuestos, mayor o igual que 0 * @param iva porcentaje, por ejemplo 21 * @return precio con impuestos redondeado a dos decimales * @throws IllegalArgumentException si base es negativa */public double precioFinal(double base, int iva) { … }Generar: mvn javadoc:javadoc o javadoc -d doc src/*.java.
Tema: Optimización y DocumentaciónDiagrama de clases
| + − # ~ | public, private, protected, paquete |
|---|---|
| Atributo subrayado | static |
| Cursiva o «abstract» | Clase o método abstracto |
| ——▷ (triángulo hueco) | Herencia (generalización) |
| - - -▷ | Realización de una interfaz |
| —— con flecha | Asociación navegable |
| ◇—— (rombo hueco) | Agregación: la parte puede existir sola |
| ◆—— (rombo relleno) | Composición: la parte muere con el todo |
| - - -> | Dependencia (usa temporalmente) |
| 1, 0..1, *, 1..* | Multiplicidad |
Otros diagramas UML
| Casos de uso | Actores, casos y relaciones «include» (siempre) y «extend» (opcional) |
|---|---|
| Secuencia | Líneas de vida, mensajes en orden, fragmentos alt, opt y loop |
| Actividad | Flujo con decisiones, bifurcaciones y calles |
| Estados | Estados de un objeto y transiciones evento [guarda] / acción |
apuntesdam.com/subject/entornos/chuleta
Chuletas de otras asignaturas
ProgramaciónLenguajes de MarcasBases de DatosSistemas InformáticosAcceso a DatosDesarrollo de InterfacesProgramación Multimedia y Dispositivos MóvilesProgramación de Servicios y ProcesosSistemas de Gestión EmpresarialDesarrollo Web en Entorno ClienteDesarrollo Web en Entorno ServidorDespliegue de Aplicaciones WebDiseño de Interfaces Web