Principios de la IS
Los principios en la IS son aquellos que actúan como puntos de referencia para el desarrollo de software exitoso. Por una parte se encuentra el proceso de desarrollo y por la otra se hace referencia al producto, haciendo notar que ambos se encuentran relacionados y tienen la misma importancia.
Los principios son planteados de manera general con la finalidad de que puedan ser empleados, pero no al grado de guiar el desarrollo de software. Para que sean aplicados es necesario apoyarse de métodos y técnicas que permitan adoptar los principios al proceso o al producto.
Los principios son la base sobre la cual se posicionan las técnicas, herramientas, metodologías y métodos. La selección de principios y técnicas se encuentra determinada por las metas de calidad. Los principios que se presentan a continuación no son los únicos y se aplican principalmente al proceso de desarrollo de software.
Rigor y formalidad. El rigor es lo que permite que se puedan construir productos confiables, controlar costos y aumentar la confianza en su confiabilidad. Pese a lo que se propone el rigor es un aspecto intuitivo que no puede ser definido de forma rigurosa. Dentro de los grados que existen en rigor, el más alto es la formalidad, este requiere que sea dirigido y evaluado por leyes matemáticas. La formalidad implica rigor, pero no necesariamente a la inversa. La formalidad es la base de la mecanización del proceso.
Separación de intereses. Posibilita la interacción con diferentes aspectos individuales de un problema, logrando la atención de cada una por separado. Algunas de las decisiones relacionadas a un proyecto de software deberán de tomarse por separado evitando relacionarlas una con otra.
Modularidad. Un sistema complejo de software que puede ser dividido en piezas o módulos permite separar los diferentes intereses cuando se abordan cuestiones que tienen que ver con los detalles de cada; además, se pueden estudiar todos los módulos en relación para conformar un sistema. La cohesión permite que exista una fuerte relación en cada uno de los módulos y la integración se encarga de la relación entre módulos.
Abstracción. Es el proceso en el que se identifican los aspectos importantes de un fenómeno. En cada abstracción se eliminan los detalles y se genera una vista del mundo enfocada a un propósito específico. Un ejemplo de abstracción es cuando se busca representar el funcionamiento de algunos fenómenos a través de modelos.
Anticipación al cambio. El software cambia constantemente por diferentes circunstancias, la habilidad del software de anticiparse a los cambios tiene que ver con el cómo y cuándo se realizarán los cambios y una vez que son identificados se deberá proceder de manera que los cambios sean realizados fácilmente. La anticipación a los cambios requiere de un control sobre todos los elementos del desarrollo.
Generalidad. 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.
Estos productos de propósito general, off-the-shelf, por ejemplo los procesadores de texto, representan una tendencia general en el software; para cada área específica de aplicación existen paquetes generales que proveen soluciones estándares a problemas comunes que evitan de esta forma una solución especializada.
Acrecentamiento. Caracteriza un proceso en el que se procede de manera gradual o incremental. Las metas se alcanzan mediante aproximaciones sucesivas en el que cada aproximación es un incremento de la anterior. Una manera de aplicar este principio es identificando elementos útiles de una aplicación para desarrollarlos y entregarlos al cliente para obtener una retroalimentación más rápida.
Este principio se fundamenta diciendo que en la práctica es poco probable que se cuenten con todos los requerimientos antes de que se inicie el desarrollo de la aplicación y que estos van surgiendo conforme se van presentando los avances de la aplicación, por esto entre más se vayan presentando partes de la aplicación y al obtener la retroalimentación del cliente será más fácil incorporar los cambios al proyecto.
Fuente: Apuntes de Ingeniería del Software de la FCA de la UNAM