Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Software: lógica intangible que gestiona el hardware. Es modificable, pero hacer esto correctamente es difícil.
Modelo de análisis: (se basa en el Modelo de casos) se centra en utilizar herramientas y técnicas computacionales para
obtener conocimientos valiosos y tomar decisiones informadas a partir de datos.
Código fuente:
Compilador:
- Es un programa.
- Si el compilador es imperfecto entonces el programa también lo es.
- Un vínculo comercial.
- El cliente te juzga por lo que puede evaluar.
- Prestigio.
- Hay que venderse a uno mismo.
- Para deslumbrar al cliente hay que conocer sobre el área del cliente. (Marketing de uno, y su propio equipo.
Jhon gaal: Systematica: La suma de los problemas es una cupla, No hay forma de disminuir el mismo.
Jessie:
- 14 a 15 cualidades de software.
- Visto como producto.
- El software producto y otro como proeceso.
1. Conjunto de cualidades percibidas.
Cualidades internas, las percibidas
Cualidades externas, por el cliente
Mixta: más importantes que las internas
Definiciones importantes:
Buenas prácticas:
- Código simple
- Objetos pequeños
- Acoples débiles
- Los objetos deben ser independientes entre sí.
- Los objetos deben usar los datos que necesitan, en lugar de depender de otros objetos para proporcionarlos.
- Corrección funcional: debe ser correcto, condición necesaria. En cuanto se especifique una cualidad, pasa a ser
una corrección funcional.
- Confiabilidad: debe ejecutar sus funciones de forma predecible y sin interrupciones inesperadas.
- Robustez: capacidad del software que no fue previamente pensada (no especificada). Se logra con buenas
prácticas, concentrarse mientras se programa (no usar celular, dormir bien, etc.).
Dimensiones de calidad del software: los usuarios juzgan cuando una cualidad no se cumple.
Proceso: pasos que se siguen para crear y desarrollar software de manera organizada y eficiente.
Flujo de proceso secuencial: comunicación -> planeación -> modelado -> construcción -> pruebas -> despliegue ->
mantenimiento
- Comunicación: Comprender las necesidades del software a través de conversaciones con los interesados.
- Planeación: Crear un plan detallado que establece cómo se desarrollará el software, incluyendo recursos y
plazos.
- Modelado: Diseñar una representación visual del software que muestra su estructura y funcionalidad.
- Construcción: Escribir y desarrollar el código del software según el diseño previo.
- Pruebas: Probar exhaustivamente el software para identificar y corregir errores y asegurarse de que funcione
correctamente.
- Despliegue: Hacer que el software esté disponible para su uso, instalándolo en sistemas o servidores.
- Mantenimiento: Realizar correcciones, actualizaciones y mejoras en el software para mantenerlo en buen
estado a lo largo del tiempo.
Modelo de cascada: para comenzar una etapa tiene que haberse completado correctamente la etapa anterior. Puede
llegar a ser útil en algunas organizaciones gubernamentales.
Flujos:
Metodologías:
Métodos agiles: flexibles, permiten ajustes continuos y dividen el trabajo en partes pequeñas. Mejoras
constantes y rápidas. Colaboración activa, para que el producto cumpla las expectativas.
Métodos clásicos: planificación detallada desde el inicio, con requisitos especificados. Dificulta los cambios con
el proyecto en marcha. La entrega se hace al final del ciclo, con una secuencia lineal.
Manifiesto ágil: lista de reglas para hacer software de manera flexible y eficiente. Valores de los métodos agiles
Valores: aquellas cosas percibidas como una cosa buena por un grupo de personas.
Características comunes
Principios ágiles:
1. Satisfacer al cliente con entregas tempranas y continuas de software valioso.
2. Adaptarse a cambios en los requisitos incluso en etapas tardías para beneficio competitivo.
3. Entregar software funcional frecuentemente, preferiblemente cada dos semanas.
4. Colaboración diaria entre dueños del negocio y desarrolladores.
5. Empoderar a individuos motivados y proporcionarles apoyo y confianza.
6. La comunicación cara a cara es la forma más efectiva de transmitir información.
7. El software funcional es la principal medida de progreso.
8. Fomentar un desarrollo sostenible para mantener un ritmo constante indefinidamente.
9. Enfocarse en la excelencia técnica y el buen diseño de manera continua.
10. Maximizar la simplicidad y minimizar el trabajo no realizado es crucial.
11. Las mejores soluciones surgen de equipos autoorganizados.
12. Reflexionar y adaptar en intervalos regulares para mejorar la efectividad del equipo.
XP: es una forma ligera, eficiente, de bajo riesgo, predecible, y divertida de desarrollar software.
- Retrasos y desviaciones en la planificación: Problemas con los plazos y desviaciones del plan original.
- Coste de mantenimiento elevados: Mantener el software es costoso y puede superar el presupuesto.
- Alta tasa de defectos: Errores frecuentes en el software que afectan su funcionamiento.
- Requisitos mal comprendidos: Falta de comprensión adecuada de lo que el cliente necesita.
- Cambios de negocio: Cambios en las necesidades o el enfoque del negocio.
- Falsa riqueza de características: Incluir demasiadas características innecesarias que complican el proyecto.
- Cambios de personal: Rotación de miembros del equipo que afecta la continuidad del proyecto.
Soluciones de XP:
Valores de XP:
Los valores de los métodos agiles son del XP también, tiene 8 valores, 4 de los métodos agiles y 4 del XP
Felicidad.
Comodidad.
Fama.
Prestigio.
Dinero.
Etc.
D = Da + D x ti = Da(1+ti)}x P C n
D = x + x ti = x(1+ti) = Da(1+ti)(1+ti) = Da(1+ti)2 0 997,01 1
D = Da(1+ti)n 0 994,02 2
Da= D/(1+ti)n 0 991,05 3
0 988,09 4
Vn = 10000/(1+ti)4 = 10000/1,11^4 = 6586 0 985,30 5
ti 11% mensual 0 982,18 6
ti = 0,11 979,24 979,24 7
976,32 976,32 8
973,4 973,4 9
D = 509,06
970,48 970,48 10
D = (509,06 + 1000)(1+0,003)^12
967,59 967,59 11
D = 1564,29 964,69 964,69 12
961,8 0 13
Da = 1509,06 958,9 0 14
VA = 1000/1,003^n 956,6 0 15
953,2 0 16
Considerar siempre:
950,3 0 17
Opción de cambiar. 947,5 0 18
Opción de abandonar.
Opción de aplazar.
Opción de crecer.
Al enfrentar proyectos se debe hacer con la mente abierta (considerar todas las opciones).
El costo del cambio en XP: el cambio es costoso, cuanto más metido en el proyecto más costoso todavía.
Riesgos inherentes: día a día del negocio, se toman decisiones frente a estos riesgos. A veces algunos riesgos se ignoran.
Hay que tomar acciones para disminuir los riesgos de alto impacto. (restringir las vulnerabilidades del sistema):
Traspasar responsabilidades/riesgo:
- Hay que determinar si existen indicadores tempranos de que algo podría estar pasando, de que algún evento
podría estar por ocurrir.
1. Daño potencial
2. Probabilidad de ocurrencia.
3. Regla gatillo.
4. Disminución de probabilidad.
5. Calcular el posible riesgo.
El producto es un numero de referencia nada más.
El líder del equipo y el gasto de riesgo.
Puede haber riesgos sin medidas preventivas.
- Nosotros probamos el código para demostrarnos a nosotros mismos que el código funciona bien.
Condiciones de pruebas:
- Las pruebas no debes ser llevadas adelante por los programadores. (Se considera como parte de desarrollo del
Código).
- Probamos para demostrar q el software no hace lo q yo quiero. Intentar encontrar la mayor cantidad de errores
posibles en el menor tiempo posible. Una prueba exitosa es cuando el sistema encuentra un error.
Como encontrar errores:
- Inspección: leer el código para encontrar errores. Una inspección suele durar 3h y se suele hacer una sola vez.
optimizar el proceso de prueba.
- Suponer que una base de datos no tiene problemas es la primer idiotes del desarrollo del software
- No alcanza con probar entradas y salidas, hay q probar tambien puntos intermedios.
Acople: independientemente del paradigma, es la forma en que intercambia información dos componentes del sistema.
Pueden cambiar mucha o nada de información.
Partición de equivalencia (no incremental porque la cantidad de componentes que se están probando simultáneamente
es constante):
- Para cada problema requiere un grado de experticia particular del cual nosotros no somos dueños, necesitamos
un experto en asesoramiento del problema.
- No intercambiar muchos parámetros porque el componente resulta frágil, porque las pruebas son imposibles.
Lotes de prueba: generarlos de forma útil es difícil. Los mismos deben ser valiosos y no desechables.
Partición de pruebas: no incremental porque la cantidad de componentes que se están probando simultáneamente es
constante.
- Ventaja: Permite identificar interacciones entre componentes desde el inicio, lo que puede llevar a la detección
temprana de errores de integración.
- Desventaja: Puede requerir más recursos y tiempo al probar todos los componentes a la vez, lo que podría hacer
que el proceso de prueba sea más extenso y complejo.