INGENIERÍA DEL
SOFTWARE
Es la disciplina o área de la informática que ofrece métodos y técnicas para desarrollar y mantener software de calidad.
Esta
ingeniería trata con áreas muy diversas de la informática y de las ciencias
de la computación, tales como:
- Construcción de compiladores,
- Construcción de sistemas operativos,
- Desarrollos Intranet/Internet,
Abordando
todas las fases del ciclo de vida del desarrollo de cualquier tipo de sistemas
de información y aplicables a infinidad de áreas: negocios, investigación
científica, medicina, producción, logística, banca, control de tráfico,
meteorología, derecho, Internet, Intranet, etc.
Una
definición precisa aún no ha sido contemplada, sin embargo se pueden citar las
enunciadas por algunos de los más prestigiosos autores en la disciplina:
- Ingeniería de Software es el estudio de los principios y metodologías para el desarrollo y mantenimiento de sistemas software (Zelkovitz, 1978).
- Ingeniería de Software es la aplicación práctica del conocimiento científico al diseño y construcción de programas de computadora y a la documentación asociada requerida para desarrollar, operar y mantenerlos. Se conoce también como Desarrollo de Software o Producción de Software (Bohem, 1976).
- Ingeniería de Software trata del establecimiento de los principios y métodos de la ingeniería a fin de obtener software de modo rentable, que sea fiable y trabaje en máquinas reales (Bauer, 1972).
Es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento del software: es decir la aplicación de la ingeniería al software.
Implicaciones Socioeconómicas.
La ingeniería de software afecta a la economía y las
sociedades de variadas formas.
Económicamente
Ejemplo:
En
los EEUU, el software contribuyó a 1/8 de todo el incremento del PIB (Producto
Bruto Interno) durante los 90's (alrededor de 90.000 millones de dólares por
año), y 1/9 de todo el crecimiento de productividad durante los últimos años de
la década (alrededor de 33.000 millones de dólares por año). La ingeniería de
software contribuyó a $1 billón de crecimiento económico y productividad en esa
década.
Alrededor del globo, el software
contribuye al crecimiento económico en formas similares, aunque es difícil de
encontrar estadísticas precisas del fenómeno, pues solo en algunos países se
realizan estudios fiables del mismo.
Además, la ingeniería de software,
con la industria del lenguaje está
hallando cada vez más campos de aplicación a escala global.
Socialmente
La ingeniería de software cambia
la cultura del mundo debido al extendido uso de la computadora. El correo electrónico (E-mail), la WWW y la mensajería instantánea permiten a la gente interactuar en nuevas
formas. El software baja el costo y mejora la calidad de los servicios de
salud, los departamentos de bomberos, las dependencias gubernamentales y otros
servicios sociales. Los proyectos exitosos donde se han usado métodos de
ingeniería de software incluyen a:
- El proyecto GNU/Linux.
- El software del transbordador espacial.
- Los cajeros automáticos y muchos otros.
La IS se puede considerar como la
ingeniería aplicada al software, esto es, por medios sistematizados y con
herramientas preestablecidas, la aplicación de ellos de la forma más eficiente
para la obtención de resultados óptimos; objetivos que siempre busca la
ingeniería. No es sólo de la resolución de problemas, sino más bien teniendo en
cuenta las diferentes soluciones, elegir la más apropiada.
Metodología
Un objetivo de décadas ha sido el
encontrar procesos y metodologías, que sean sistemáticas,
predecibles y repetibles, a fin de mejorar la productividad en el desarrollo y
la calidad del producto software.
Etapas del proceso
La ingeniería de software requiere
llevar a cabo numerosas tareas, dentro de etapas como las siguientes:
1. Análisis de requisitos
Extraer los requisitos de un
producto de software es
la primera etapa para crearlo. Mientras que los clientes piensan que ellos
saben lo que el software tiene que hacer, se requiere de habilidad y
experiencia en la ingeniería de software para reconocer requisitos incompletos,
ambiguos o contradictorios. El resultado del análisis de requisitos con el
cliente se plasma en el documento ERS, Especificación
de Requerimientos del Sistema. Asimismo, se define un DER Diagrama
de Entidad/Relación,
en el que se plasman las principales entidades que participarán en el desarrollo del software.
La captura, análisis y
especificación de requisitos (incluso pruebas de ellos), es una parte crucial;
de esta etapa depende en gran medida el logro de los objetivos finales.
2. Especificación
La Especificación de Requisitos describe
el comportamiento esperado en el software una vez desarrollado. Gran parte
del éxito de un proyecto de software radicará en la identificación de las
necesidades del negocio (definidas por la alta dirección), así como la
interacción con los usuarios funcionales para la recolección, clasificación,
identificación, priorización y especificación de los requisitos del software.
3. Arquitectura
La integración de infraestructura, desarrollo
de aplicaciones, bases de datos y herramientas gerenciales, requieren de capacidad y
liderazgo para poder ser conceptualizados y proyectados a futuro, solucionando
los problemas de hoy. El rol en el cual se delegan todas estas actividades es
el del Arquitecto. El Arquitecto de Software es la persona que añade valor a
los procesos de negocios gracias a su valioso aporte de soluciones
tecnológicas. La Arquitectura de Sistemas en
general, es una actividad de planeación, ya sea a nivel de infraestructura de
red y hardware, o de Software. La Arquitectura de Software consiste en el
diseño de componentes de una aplicación (entidades del negocio), generalmente
utilizando patrones de arquitectura. El diseño arquitectónico debe permitir
visualizar la interacción entre las entidades del negocio y además poder ser
validado, por ejemplo por medio de diagramas de secuencia. Un diseño
arquitectónico describe en general el cómo se construirá una aplicación de
software. Para ello se documenta utilizando diagramas.
4. Programación
Reducir un diseño a código puede ser la parte más obvia del
trabajo de ingeniería de software, pero no necesariamente es la que
demanda mayor trabajo y ni la más complicada. La complejidad y la duración de
esta etapa está íntimamente relacionada al o a los lenguajes de programación
utilizados, así como al diseño previamente realizado.
5. Prueba
Consiste en comprobar que el software realice
correctamente las tareas indicadas en la especificación del problema (etapa
de especificaciones).
Una técnica de prueba es probar por separado cada módulo del software,
y luego probarlo de forma integral, para así llegar al objetivo.
Se considera una buena práctica el
que las pruebas sean efectuadas por alguien distinto al desarrollador que la
programó, idealmente un área de pruebas; sin perjuicio de lo anterior el
programador debe hacer sus propias pruebas.
En general hay dos grandes formas de organizar un área de
pruebas:
- El primer enfoque es que esté compuesta por personal inexperto y que desconozca el tema de pruebas, de esta forma se evalúa que la documentación entregada sea de calidad, que los procesos descritos son tan claros que cualquiera puede entenderlos y el software hace las cosas tal y como están descritas.
- El segundo enfoque es tener un área de pruebas conformada por programadores con experiencia, personas que saben sin mayores indicaciones en qué condiciones puede fallar una aplicación y que pueden poner atención en detalles que personal inexperto no consideraría.
6. Documentación
Todo lo concerniente a la
documentación del propio desarrollo del software y de la gestión del proyecto,
pasando por modelaciones, diagramas, pruebas, manuales de usuario, manuales
técnicos, etc.; todo con el propósito de eventuales correcciones,
usabilidad, mantenimiento futuro y ampliaciones al sistema.
7. Mantenimiento
Mantener
y mejorar el software para enfrentar errores descubiertos y nuevos requisitos.
Esto puede llevar más tiempo incluso que el desarrollo
inicial del software. Alrededor de 2/3 de toda la ingeniería de software
tiene que ver con dar mantenimiento. Una pequeña parte de este trabajo consiste
en arreglar errores, o bugs. La mayor
parte consiste en extender el sistema para hacer nuevas cosas.
Modelos de desarrollo de Software
La ingeniería de software tiene
varios modelos, paradigmas o filosofías
de desarrollo en los cuales se puede apoyar para la realización de software, de
los cuales podemos destacar a éstos por ser los más utilizados y los más
completos:
- Modelo en cascada o Clásico (modelo tradicional)
- Modelo de prototipos
- Modelo en espiral (modelo evolutivo)
- Desarrollo por etapas
- Desarrollo iterativo y creciente o Iterativo e Incremental
Naturaleza de la Ingeniería del Software
La Ingeniería de Software tiene que ver con varios campos
en diferentes formas:
1. Matemáticas
Los programas tienen muchas
propiedades matemáticas. Por ejemplo la corrección y la complejidad de muchos algoritmos son conceptos matemáticos que
pueden ser rigurosamente probados. El
uso de matemáticas en la IS es llamado métodos
formales.
2. Creación
Los programas son construidos en
una secuencia de pasos. El hecho de definir propiamente y llevar a cabo estos
pasos, como en una línea de ensamblaje, es necesario para mejorar la
productividad de los desarrolladores y la calidad final de los programas. Este
punto de vista inspira los diferentes procesos y metodologías que encontramos
en la IS.
3. Gestión de Proyectos
El software comercial (y mucho no
comercial) requiere gestión de proyectos. Hay presupuestos y establecimiento de
tiempos. Gente para liderar. Recursos (espacio de oficina, computadoras) por
adquirir. Todo esto encaja apropiadamente con la visión de la Gestión de
Proyectos.
4. Arte
Los programas contienen muchos
elementos artísticos. Las interfaces de usuario, la codificación, etc. Incluso
la decisión para un nombre de una variable o una clase. Donald Knuth es famoso porque ha argumentado que la programación es
un arte.
Responsabilidad
La responsabilidad en la
Ingeniería del Software es un concepto complejo, sobre todo porque al estar los
sistemas informáticos fuertemente caracterizados por su complejidad, es difícil
apreciar sus consecuencias.
En la Ingeniería del Software la
responsabilidad será compartida por un grupo grande de personas, que comprende
desde el ingeniero de requisitos, hasta el arquitecto software, y contando con
el diseñador, o el encargado de realizar las pruebas. Por encima de todos ellos
destaca el director del proyecto. El software demanda una clara distribución de
la responsabilidad entre los diferentes roles que se dan en el proceso de
producción.
El ingeniero del Software tiene
una responsabilidad moral y legal limitada a las consecuencias directas, esa
formación se da a través de una educación ética.
Educación Ética
Existen muchas organizaciones con y
sin fines de lucro, gubernamentales y de profesionales que se dedican a la
normalización y estandarización del software.
Organizaciones
- Software Engineering Institute (SEI)
- Association for Computing Machinery (ACM)
- British Computer Society (BCS)
- IEEE Computer Society
- RUSSOFT Association
- Society of Software Engineers
Casinos Near Casinos in South Africa - MapYRO
ResponderEliminarCasinos Near Casinos in South Africa · 과천 출장샵 1. BetMGM Casino: 25% Up To 화성 출장마사지 €100 김제 출장안마 Bonus + 25 FS 안양 출장샵 Bonus · 2. Casiplay Casino: 25% Up To €500 Bonus + 25 FS Bonus · 천안 출장샵 3.