El termino ingeniera de software surge a finales de los aos 60 en
una conferencia sobre La crisis del software. Se define como la disciplina tecnolgica relacionada a la produccin sistemtica y mantenimiento a los productos de software. El objetivo de la ingeniera de software es producir productos de software. Existen 2 categoras de los productos de software y son: Productos genricos: desarrollados para un mercado. Productos a medida: encargados por cliente. La ingeniera de software consiste en un conjunto de mtodos, herramientas y procedimientos. Los mtodos: describen como construir tcnicamente el software. Las herramientas: dan el soporte automtico o semiautomtico a los productos. Los procedimientos: relacionan formalmente los mtodos y herramientas. La calidad del software puede ser descrita mediante una serie de factores que pueden ser: Internos: observados por el usuario. Externos: observados por profesionales de la computacin. El ciclo de vida es la sucesin de etapas por las que pasa un producto de software a lo largo de su desarrollo y existencia. Prototipear consiste en construir una versin inicial del producto, en la cual se describe la interaccin humano-maquina sin implementar completamente la funcionalidad del sistema.
Clases de prototipos: Vertical: desarrolla completamente algunas facetas del producto. Horizontal: desarrolla parcialmente todas las facetas del producto. Evolutivo: la versin final del producto ya construido. Desechable: se usa solo para la captacin de requerimientos y funcionalidad. Los principios fundamentales sobre los que se sustenta la ingeniera de software son: Abstraccin Ocultamiento de informacin Modularidad Mecanismos de abstraccin: Procedimientos o funcional: relacionada con los procedimientos o funciones de un lenguaje de programacin. Funcional con excepciones: contienen ms de un estado terminacin y proporcionan un conjunto de funciones. Datos: relacionadas con el tipo abstracto de datos formada por un conjunto de objetos y operaciones.
Principio de ocultamiento de informacin son los mdulos de un sistema que deben disearse de modo que la informacin en ellos sea inaccesible a todos aquellos mdulos que no necesitan tal informacin. Modularidad es un mtodo de diseo de software que se dice que es modular si ayuda a los diseadores a construir sistemas de software formados por elementos autnomos y organizados en arquitecturas sencillas.
Guas de modularidad: Pocas interfaces: es un sistema formado por N mdulos Interfaces estrechas: si dos mdulos se comunican deben de intercambiar un mnimo de informacin posible. Interfaces explicitas: la comunicacin entre dos mdulos debe de poder deducirse a partir del texto de ambos.