Ayudan en la aplicación del proceso y en la ejecución
de métodos eficaces de ingeniería de software
Conjunto de principios generales que amplían el
proceso y práctica de la ingeniería de software
Agregar valor para los usuarios finales
Mantenerlo sencillo
Fijar la visión (del producto
y el proyecto)
Reconocer que otros consumen (y
deben entender) lo que usted produce
Abrirse al futuro
Planear la reutilización
¡Pensar!
En el nivel de la práctica, definen un conjunto
de valores y reglas que sirven como guía cuando
Se analiza un problema
Se diseña una solución
Se implementa y prueba
Se entrega el software a la
comunidad de usuarios
Principios que guían el proceso
Los siguientes principios fundamentales se aplican a la
estructura y, por extensión, a todo proceso de software
Ser ágil
Todo aspecto del trabajo se debe poner
el énfasis en la economía de acción
Mantener el enfoque técnico tan
sencillo como sea posible
En cada etapa, centrarse
en la calidad
Estar listo para adaptar
Cuando sea necesario, adapte su enfoque a las
restricciones impuestas por el problema, la
gente y el proyecto en sí
Formar un equipo eficaz
Establecer mecanismos para la
comunicación y coordinación
Es importante coordinan los esfuerzos para
tener un producto final exitoso
Administrar el cambio
Evaluar el riesgo
Es esencial establecer planes
de contingencia
Crear productos del trabajo
que agreguen valor para otros
Generar productos del trabajo que agreguen
valor para otras actividades, acciones o tareas
del proceso
Establecer mecanismos para administrar los cambios que
se solicitan, evalúan, aprueban e implementan
Forme un equipo con organización
propia en el que haya confianza y
respeto mutuos
Centrarse en la calidad
del producto
Principios que guían la practica
Entregar a tiempo software operativo de alta calidad
que contenga funciones y características que
satisfagan las necesidades de todos los participantes
Divide y vencerás
El análisis y el diseño siempre deben
enfatizar la separación de entidades
Entender el uso de la
abstracción
Es una simplificación de algún elemento complejo de un
sistema usado para comunicar un significado en una frase
Buscar la coherencia
Un contexto familiar hace que un software sea más fácil de usar
Centrarse en la transferencia
de información
Administra las transferencias de información
De una base de datos a un usuario, de un sistema
heredado a una waapp, etc
Construir software que tenga
modularidad eficaz
Cualquier sistema complejo puede dividirse
en módulos (componentes)
Los módulos deben centrarse en un aspecto
bien delimitado del sistema
Deben estar interconectados en forma
relativamente sencilla
Buscar patrones
Crear un cúmulo (multitud de elementos) de bibliografías que
ayuden en la resolución del problema
Cuando sea posible, representar el
problema y su solución desde varias
perspectivas diferentes
De esta forma es más probable que se tenga una mayor
visión, detección de errores y omisiones
Tener en mente que alguien dará
mantenimiento al software
Sera corregido a largo plazo cuando se descubran sus defectos, se adapte
a los cambios de su ambiente y se mejore en el momento en el que los
participantes pidan más capacidades
Principios que guían toda
actividad estructural
Tienen relevancia para el éxito de cada actividad estructural genérica, definida como
parte del proceso de software, planteados en un nivel más bajo de abstracción
Principios de comunicación
Comunicación efectiva entre técnicos, clientes y otros
participantes, son las actividades más complicadas a realizar
Escuchar
Centrado en las palabras del hablante en lugar de formular
respuestas apresuradas (si algo no está claro preguntar,
evitando interrupciones constantes)
Antes de comunicarse, prepararse
Tomar tiempo para deducir el problema antes de realizar
reuniones (entender el vocabulario de negocio)
Alguien debe facilitar la actividad
Consta de un líder que
Mantenga una conversación positiva
Sea mediador
Garantice el seguimiento de los principios
Es mejor la comunicación cara a cara
Representar la información de varias
maneras para su entendimiento
Tomar notas y documentar
las decisiones
Contar con un secretario que tome notas de los
temas y decisiones realizadas
Perseguir la colaboración
El conocimiento colectivo de los miembros del equipo
utilizado para describir funciones del producto
Permanecer centrado; hacer
módulos con la discusión
Cambiar de tema solo cuando este ya se ha resuelto
Si algo no está claro,
hacer un dibujo
Los esquemas ayudan a un mejor
enfoque de la información
a) Una vez que se acuerde algo, avanzar, b) Si no es posible ponerse de
acuerdo en algo, avanzar, c) Si una característica o función no está clara o
no puede aclararse en el momento, avanzar
Reconocer los temas más importantes que requieren análisis, avanzar
es a veces la mejor forma de agilitar la comunicación
La negociación no es un concurso o un juego. Funciona
mejor cuando las dos partes ganan
Procurar que ambas partes se beneficien (negociar
características, prioridades fechas de entrega.)
Principios de planeación
Conjunto de prácticas administrativas y
técnicas que definen un mapa mientras
avanza el proyecto (desarrollo de un
proyecto software)
Entender el alcance del proyecto
Definir el alcance da un destino al equipo de software
Involucrar en la actividad de planeación a los
participantes del software
Definir las prioridades y establecen las restricciones del
proyecto (negociar entregas, plazos, mejoras, etc.)
Reconocer que la planeación es iterativa
El plan del proyecto puede cambiar a lo largo del tiempo
Estimar con base en lo que se sabe
Obtener un índice del esfuerzo, costo
y duración de las tareas
Al definir el plan, tomar en cuenta los riesgos
Identificar los riesgos que influirán en gran
proporción al proyecto, mediante la elaboración de
planes de contingencia
Ser realista
No se trabaja al 100%, los ingenieros también se equivocan,
considerar todos calamidades al establecer un proyecto
Ajustar la granularidad
cuando se defina el plan
Es el nivel de detalle que se adopta cuando se desarrolla un plan,
esta va de poca a mucha conforme el tiempo avanza
Definir cómo se trata de
asegurar la calidad
Identificar la forma en la que el equipo software
busca asegurar la calidad
Describir cómo se busca
manejar el cambio
Aun la mejor planeación puede ser anulada por el
cambio si no existe control alguno
Dar seguimiento al plan con frecuencia y
hacer los ajustes que se requieran
Evaluación diaria del avance para identificar problemas que no
estén apegados al avance real, cuando se detectan desviaciones
se debe ajustar el plan en consecuencias
Principios de modelado
Creación de modelos para entender mejor lo que se va a construir.
Representar la información que el software transforma (entender
las funciones que este realiza)
El equipo de software tiene como objetivo principal
elaborar software, no crear modelos
Agilidad representa entregar el software lo antes
posible, evitando modelos que retrasen al producto
Viajar ligero, no crear más
modelos de los necesarios
Crear modelos que aceleren y faciliten la
construcción del producto
Tratar de producir el modelo más sencillo que
describa al problema o al software
Mantener sencillos los modelos,
para que el software resultante
también lo sea, los modelos son
más facilites de entender
Construir modelos susceptibles al cambio
Ser capaz de enunciar un propósito explícito
para cada modelo que se cree
Cada vez que cree un modelo,
pregúntese por qué lo hace
Adaptar los modelos que se desarrollan
al sistema en cuestión
Adaptar una notación del modelo o las reglas
Tratar de construir modelos útiles, pero olvidarse de
elaborar modelos perfectos
No ser dogmático respecto de la sintaxis del
modelo. Si se tiene éxito para comunicar
contenido, la representación es secundaria
Si su instinto dice que un modelo no es el correcto a
pesar de que se vea bien en el papel, hay razones para
estar preocupado
Obtener retroalimentación tan
pronto como sea posible
Todo modelo debe ser revisado por los miembros del
equipo, para corregir errores de modelado
Confíe en su instinto. El trabajo de software enseña muchas
lecciones, algunas en el nivel del inconsciente
Comunicar información que permita la
realización de la siguiente tarea de ingeniería
El modelado debe hacerse con la mirada puesta en las
siguientes etapas de la ingeniería de software
Construcción de modelos cuyas
características puedan variar a lo
largo de su vida
El cuerpo de conocimientos de la ingeniería
de software representa cerca del 75% del
conocimiento necesario para desarrollar un
sistema complejo
Concepto de los principios fundamentales
Ideas elementales que guían a los ingenieros de software en el
trabajo que realizan Dan ahora un fundamento a partir del cual
pueden aplicarse y evaluarse los modelos, métodos y
herramientas de ingeniería