Principio 1: Rigor y formalidad
En cualquier proceso creativo existe la tendencia a seguir
la inspiración del momento de forma no estructurada, sin ser precisos; el
desarrollo de software es de por sí una actividad creativa. Por otro lado, el
rigor es un complemento necesario de la creatividad en todas las actividades de
la ingeniería; únicamente a través de un enfoque riguroso podrán producirse
productos más confiables, controlando sus costos e incrementando el grado de
confianza en los mismos. El rigor no tiene por qué restringir la creatividad,
por el contrario, puede potenciar la creatividad aumentando la confianza del
ingeniero en los resultados de la misma, una vez que estos son analizados a la
luz de evaluaciones rigurosas. Paradójicamente el rigor es una cualidad
intuitiva que no puede ser definida en forma rigurosa, pero sí pueden
alcanzarse varios niveles de rigurosidad siendo el más alto la formalidad.
Un ingeniero debe saber cómo y cuándo ser formal si es
requerido, entendiendo el nivel de rigor y formalidad que debe ser alcanzado
dependiendo de la dificultad conceptual de la tarea y su criticidad, lo que
puede variar para diferentes partes del mismo sistema.
Principio 2: Separación de intereses
Este principio permite enfrentarse a los distintos aspectos
individuales de un problema de forma de concentrarse en cada uno por separado.
La complejidad global puede resolverse mucho mejor concentrándose en los
distintos aspectos por separado.
La primer forma en la que se pueden separar los distintos
intereses es según el tiempo, lo que permite planificar las distintas
actividades y eliminar el trabajo extra que implica cambiar de una a otra en
forma no restringida. Esta separación según el tiempo es la motivación que hay
tras el ciclo de vida del software; un modelo racional de la secuencia de
actividades que deberían seguirse en la producción de software.
Otra forma de separación de intereses es en términos de las
cualidades que deberían tratarse por separado, por ejemplo podrían enfrentarse
separadamente la eficiencia y correctitud de un programa, primero diseñándolo
cuidadosa y estructuradamente para garantizar su correctitud a priori y luego
reestructurarlo para mejorar su eficiencia.
Otro tipo importante de separación de intereses permite que
distintas visiones del software sean analizadas en forma separada, por ejemplo
al analizar los requerimientos de una aplicación podría ser de ayuda
concentrarse por un lado en los datos que fluyen de una actividad a otra y por
otro lado en el flujo de control que gobierna la sincronización de dichas
actividades. Ambas ayudan a entender el sistema y ninguna de las dos provee una
visión completa del mismo.
Otra forma más de aplicación de este principio es enfrentar
partes del mismo sistema en forma separada, esto es en términos de tamaño. Este
es un concepto fundamental que debe dominarse para enfrentar la complejidad de
la producción de software, y es tan importante que se trata como un punto
aparte bajo el principio de modularidad.
Principio 3: Modularidad
Un sistema complejo puede dividirse en piezas más simples
llamadas módulos, un sistema compuesto de módulos es llamado modular
El principio de modularidad tiene tres objetivos
principales: capacidad de descomponer un sistema complejo, capacidad de
componerlo a partir de módulos existentes y comprensión del sistema en piezas
(o pedazos).
Principio 4: Abstracción
La abstracción es un proceso mediante el cual se identifican
los aspectos relevantes de un problema ignorando los detalles; es un caso
especial del principio de separación de intereses en el cual se separan los
aspectos importantes de los detalles de menor importancia. Lo que se abstrae y
lo que se considera dependerá del propósito de la abstracción, por lo que
podrán hacerse distintas abstracciones de la misma realidad cada una de las
cuales proveerá una visión de la realidad que sirve para un propósito específico.
Principio 5: Anticipación al cambio
El software sufre cambios constantemente. Estos cambios
pueden surgir por la necesidad de eliminar errores que no fueron detectados
antes de liberar la aplicación, o por la necesidad de apoyar la evolución de la
aplicación debido a nuevos requerimientos o cambios en los requerimientos
existentes.
La anticipación al cambio es posiblemente el principio que
más distingue al software de otros tipos de producción industrial. Muchas veces
una aplicación de software es desarrollada mientras sus requerimientos aún no
están completamente comprendidos, al ser liberado y obtener retroalimentación
del usuario debe evolucionar con nuevos requerimientos o cambios a los
requerimientos ya existentes los cuales pueden tener distintos orígenes, por
ejemplo debido a cambios en el ambiente de la organización
Principio 6: Generalidad
El principio de generalidad establece que al tener que
resolver un problema se debe buscar un problema más general que posiblemente
esté oculto tras el problema original, puesto que puede suceder que el problema
general no sea mucho más complejo (a veces puede ser incluso más simple) que el
original y posiblemente la solución al problema general tenga potencial de
reuso, o exista en el mercado como paquete o se diseñe un módulo que puede ser
invocado por más de un punto en la aplicación en lugar de tener varias
soluciones especializadas.
La generalidad es un principio fundamental si se tiene como
objetivo el desarrollo de herramientas generales o paquetes para el mercado, ya
que para ser exitosas deberán cubrir las necesidades de distintas personas
Principio 7: Incrementalidad
La incrementalidad caracteriza un proceso que se desarrolla
en forma de pasos, en incrementos, alcanzando el objetivo deseado mediante
aproximaciones sucesivas al mismo, donde cada aproximación es alcanzada a
través de un incremento de la previa.
Cuando se construye una aplicación en forma incremental, los
pasos intermedios pueden ser prototipos del producto final, esto es solamente
una aproximación al mismo.
de:
de:
Jorge Salim Blog
http://jorgesalim.blogspot.mx/2010/02/principios-de-la-ingenieria-de-software.html
0 comentarios:
Publicar un comentario