La Ingeniería de Software es una disciplina o área de la informática o ciencias de la computación que ofrece métodos y técnicas para desarrollar y mantener software de calidad que resuelven problemas de todo tipo. Hoy en día es cada vez más frecuente la consideración de la ingeniería de software como una nueva era de la Ingeniería, y el Ingeniero de Software comienza a ser un profesional inmerso en el mundo laboral internacional, con derechos, deberes y responsabilidades que cumplir, junto a una ya reconocida consideración social en el mundo empresarial y para esas personas con un brillante futuro.
La Ingeniería de Software trata con áreas muy diversas de la informática y de las ciencias de la computación, tales como construcción de compiladores, sistemas operativos o desarrollos en Intranet/Internet, abordando todas las fases del ciclo de vida del desarrollo de cualquier tipo de sistemas de información y aplicables a una infinidad de áreas tales como: negocios, investigación científica, medicina, producción, logística, banca, control de tráfico, meteorología, el mundo del derecho, la red de redes Internet, redes Intranet y Extranet, etc.
Podríamos decir entonces, que Ingeniería de Software es (según la define la IEEE): “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 en el área del software”
La ingeniería de software es un campo más amplio que solamente desarrollar software, pues desarrollar software sin conocer de técnicas de ingeniería no es una garantía de que se obtendrán las soluciones más apropiadas y con el desempeño deseado.
El presente manual ha sido diseñado para constituirse en una guía que permita la utilización de técnicas relacionadas con la formación por competencias para lograr que el estudiante experimente la veracidad de la teoría expuesta en cada tema de la ingeniería de software.
El desarrollo del módulo está dividido en dos grandes temas que son:
- Uso de técnicas de ingeniería de software para el análisis de sistemas
- Aplicación de la ingeniería del software orientada a objetos para realizar el diseño y pruebas de un sistema.
En estos dos apartados del conocimiento de ingeniería de software, aprenderemos la parte medular de cada uno partiendo de su aplicabilidad a nuestro mercado de desarrollo de software y las bases que, como futuros ingenieros de software, debemos poseer en forma competitiva.
- Conocer las técnicas para el diseño de interfaces y componentes del software
- Dominar el concepto y principios del análisis de sistemas
- Aplicar el modelado en la fase del análisis del sistema
- Dominar el concepto y principios del diseño de sistemas
- Conocer las técnicas de ingeniería asistida por computadora
- Dominar la técnica para crear la arquitectura del software
- Aplicar diferentes modelos de análisis para el proceso de desarrollo de software
- Dominar las técnicas y estrategias para las pruebas del software
- Aplicar las métricas técnicas del software orientado a objetos
- Conocer el ciclo de desarrollo de sistemas orientados a objetos
La ingeniería de software es una disciplina diferente a las demás, pues busca integrar principios de matemáticas y ciencias de la computación con principios de la ingeniería que permiten desarrollar el software de una manera más completa pues hay toma de decisiones, análisis de costos y beneficios, análisis y diseño apropiado de un problema, basado en experiencia y validaciones propias que requiere esta disciplina.
Una de las principales diferencias de la ingeniería de sistemas respecto a otras disciplinas de ingeniería tradicionales, consiste en que la ingeniería de sistemas no construye productos tangibles. Mientras que los ingenieros civiles podrían diseñar edificios o puentes, los ingenieros electrónicos podrían diseñar circuitos, los ingenieros de sistemas tratan con sistemas abstractos con ayuda de las metodologías de la ciencia de sistemas, y confían además en otras disciplinas para diseñar y entregar los productos tangibles que son la realización de esos sistemas.
En la ingeniería de software, los ingenieros realizan muchas tareas como la investigación, desarrollo, diseño, pruebas, administración, consultoría, capacitación, uso de herramientas para aplicar los procesos de manera sistemática diseño de artefactos y reutilización de código.
GENIERÍA DE SISTEMAS, PRODUCTOS Y REQUISITOS
La Ingeniería de Sistemas es la actividad de especificar, diseñar, implementar, validar, utilizar y mantener los sistemas socio-técnicos (sistemas que incluyen hardware, software y personas).[1]
La ingeniería de sistemas consta de las siguientes fases:
La Ingeniería de Sistemas es una actividad interdisciplinaria que conjunta equipos de personas con diferentes bases de conocimiento.
Roger Pressman la define enfatizando aspectos concretos de calidad: "establecimiento y uso de principios de ingeniería robustos, orientados a obtener software económico que sea fiable y funcione de manera eficiente sobre máquinas reales"
Entre sus características se incluye su estructura de arriba-abajo que ve el sistema como un todo; una orientación del ciclo de vida que considera todas las fases desde el diseño conceptual hasta la retirada del sistema; un enfoque interdisciplinar «en equipo» que incluya todas las disciplinas adecuadas de diseño de forma oportuna y concurrente; y la necesaria integración para asegurar que todos los objetivos de diseño se han cumplido de forma efectiva y eficaz. Está orientada al «proceso» e incluye las provisiones esenciales de realimentación y control.[2]
La ingeniería de software surge como consecuencia de la ingeniería de sistemas. En vez de centrarse únicamente en el software, la Ingeniería de Sistemas se centra en diversos elementos, analizando, diseñando y organizando esos elementos en un sistema que puede ser un producto, un servicio o una tecnología para la transformación de información o control de información.
La Ingeniería de Software es la disciplina tecnológica y administrativa dedicada a la producción sistemática de productos de programación, que son desarrollados y modificados a tiempo y dentro de un presupuesto definido.
Es una de las disciplinas de la Informática que ofrece métodos y técnicas para desarrollar y mantener software de calidad que resuelven problemas de todo tipo. De esta forma se abren varios campos de estudio entre ellos Ingeniería del software orientada a objetos y temas avanzados varios como son la reutilización de software, reingeniería, ingeniería multicanal, etc.
EL PRODUCTO.[3]
El proceso de ingeniería de sistemas es denominado ingeniería de procesos de negocio cuando el contexto del trabajo de ingeniería se enfoca a una empresa. Cuando hay que construir un producto, el proceso se denomina ingeniería de producto.
Hoy en día, el software tiene un doble papel. Es un producto y, al mismo tiempo, es el vehículo para entregarlo.
Como producto, hace entrega de la potencia informática que incorpora el hardware informático o, más ampliamente, una red de computadoras que es accesible por hardware local.
Como vehículo utilizado para hacer entrega del producto, el software actúa como la base de control de la computadora (sistemas operativos), la comunicación de información (redes) y la creación de control de otros programas (herramientas de software y entornos).
La meta de la ingeniería de producto es traducir el deseo de un cliente, de un conjunto de capacidades definidas, a un producto operativo. Para conseguir esta meta, la ingeniería de producto (como la ingeniería de proceso de negocio) debe crear una arquitectura y una infraestructura. La arquitectura comprende cuatro componentes de sistema distintos:
- Software,
- Hardware,
- Datos (bases de datos) y
- Personas.
La ingeniería de productos es un enfoque de la ingeniería de sistemas que empieza con el análisis del sistema. El ingeniero de sistemas identifica las necesidades del cliente, determina la viabilidad económica y técnica, y asigna funciones y rendimientos al software, hardware, personas y bases de datos; los componentes claves de la ingeniería.
INGENIERÍA DE REQUISITOS.
Un requisito según la IEEE es definido como una especificación de qué se debería implementar. Una condición o capacidad que debe cumplir o poseer un sistema o componente de un sistema para satisfacer un contrato, estándar, especificación u otro documento formalmente impuesto.CARACTERÍSTICAS DE LAS BUENAS DESCRIPCIONES DE REQUISITOS
La ingeniería de requisitos es la parte de la ingeniería del software que aborda el problema de la definición de los servicios que el sistema ha de proporcionar y de establecer las restricciones operativas del mismo. Los casos de uso se han convertido en una de las técnicas de modelado más utilizadas para la determinación y documentación de los requisitos funcionales de un sistema software.[4]
La ingeniería de requisitos facilita el mecanismo apropiado para comprender lo que quiere el cliente, analizando necesidades, confirmando su viabilidad, negociando una solución razonable, especificando la solución sin ambigüedad, validando la especificación y gestionando los requisitos para que se transformen en un sistema operacional. La correcta obtención de los requisitos es uno de los aspectos más críticos de un proyecto software, independientemente del tipo de proyecto que se trate, dado que una mala captura de los mismos es la causa de la mayor parte de los problemas que surgen a lo largo del ciclo de vida.
El propsito de la ingeniería de requisitos es hacer que los mismos alcancen un estado óptimo antes de alcanzar la fase de diseño en el proyecto. Los buenos requisitos deben ser medibles, comprobables, sin ambigüedades o contradicciones, etc.
DEFECTOS
Los Defectos comunes en los requisitos y sus consecuencias:
Desde un punto de vista conceptual, las actividades son 5:
Para otros, el proceso de ingeniería de requisitos puede ser descrito en 6 pasos distintos:
Para otros, el proceso de ingeniería de requisitos puede ser descrito en 6 pasos distintos:
Desarrollo de Requisitos:
Proceso de extraer, analizar, especificar y verificar los requisitos.- El proceso de desarrollo de requisitos varía radicalmente de una organización a otra dependiendo de su madurez, cultura de la organización, dominio de aplicación, implicación, etc.
BUENAS PRÁCTICAS
CAPTURA | ANÁLISIS | ESPECIFICACIÓN | VALIDACIÓN |
|
|
|
|
GESTIÓN DE REQUISITOS
- Definir un proceso de control de cambios
- Establecer un grupo (o comité) de control de cambios
- Realizar análisis de impacto sobre los cambios
- Crear líneas base y controlar las versiones de los requisitos
- Mantener la historia de los cambios
- Seguir el estado de los requisitos
- Medir la volatilidad de los requisitos
- Usar herramientas de gestión de requisitos
- Crear matrices de trazabilidad de los requisitos
MANEJO DE LOS REQUISITOS FUNCIONALES
De uso común.
Técnicas principales
La ingeniería de requisitos puede ser un proceso largo y arduo para el que se requiere de habilidades psicológicas. Los nuevos sistemas cambian el entorno y las relaciones entre la gente, así que es importante identificar a todas las personas implicadas, considerar sus necesidades y asegurar que entienden las implicaciones de los nuevos sistemas. Los analistas pueden emplear varias técnicas para obtener los requisitos del cliente. Históricamente, esto ha incluido técnicas tales como las entrevistas, o talleres con grupos para crear listas de requisitos. Técnicas más modernas incluyen los prototipos, y utilizan casos de uso. Cuando sea necesario, el analista empleará una combinación de estos métodos para establecer los requisitos exactos de las personas implicadas, para producir un sistema que resuelva las necesidades del negocio.Entrevistas
Las entrevistas son un método común. Por lo general no se entrevista a toda la gente que se relacionará con el sistema, sino a una selección de personas que represente a todos los sectores críticos de la organización, con el énfasis puesto en los sectores más afectados o que harán un uso más frecuente del nuevo sistema. Los requisitos que surgen de las entrevistas a menudo se contradicen unos a otros o se formulan desde la ignorancia de los detalles del funcionamiento del sistema, sus potencialidades, interdependencias o limitaciones; por lo que se debe trabajar con los mismos para corregir sus fallas. Las entrevistas pueden ser personales o grupales.Talleres
Los requisitos tienen a menudo implicaciones cruzadas desconocidas para las personas implicadas individuales y que a menudo no se descubren en las entrevistas o quedan incompletamente definidas durante la misma. Estas implicaciones cruzadas pueden descubrirse realizando en un ambiente controlado, talleres facilitados por un analista del negocio, en donde las personas implicadas participan en discusiones para descubrir requisitos, analizan sus detalles y las implicaciones cruzadas. A menudo es útil la selección de un secretario dedicado a la documentación de la discusión, liberando al analista del negocio para centrarse en el proceso de la definición de los requisitos y para dirigir la discusión.Prototipos
Un prototipo es una pequeña muestra, de funcionalidad limitada, de cómo sería el producto final una vez terminado. Ayudan a conocer la opinión de los usuarios y rectificar algunos aspectos antes de llegar al producto terminado.Casos de uso
Un caso de uso es una técnica para documentar posibles requisitos, graficando la relación del sistema con los usuarios u otros sistemas. Dado que el propio sistema aparece como una caja negra, y sólo se representa su interacción con entidades externas, permite omitir dichos aspectos y determinar los que realmente corresponden a las entidades externas. El objetivo de esta práctica es mejorar la comunicación entre los usuarios y los desarrolladores, mediante la prueba temprana de prototipos para minimizar cambios hacia el final del proyecto y reducir los costes finales
[1]Tomado de Ingeniería del Software. Ian Sommerville.7ª edición.
[2]Tomado de Ingeniería de sistemas de software. Gonzalo León Serrano.
[3]Tomado de Ingeniería del Software. Roger Pressman. 5ª Edición.
[4] Tomado de http://ocw.usal.es/enseñanzas-tecnicas/ingenieria-del-software/materiales-de-clase
[2]Tomado de Ingeniería de sistemas de software. Gonzalo León Serrano.
[3]Tomado de Ingeniería del Software. Roger Pressman. 5ª Edición.
[4] Tomado de http://ocw.usal.es/enseñanzas-tecnicas/ingenieria-del-software/materiales-de-clase
MODELADO DEL SISTEMA
MODELADO DEL SISTEMA [1]
La ingeniería de sistemas de computadora es un proceso de modelado. Tanto si el punto de mira está en la visión global o en la visión detallada, el ingeniero crea modelos que:
- Definan los procesos que satisfagan las necesidades de la visión en consideración;
- Representen el comportamiento de los procesos y los supuestos en los que se basa el comportamiento;
- Definan explícitamente las entradas exógenas y endógenas de información al modelo;
- Representen todos las uniones (incluyendo las salidas) que permitan al ingeniero entender mejor la visión.
Para desarrollar el modelo del sistema, se emplea un esquema del modelado del sistema. El ingeniero de sistemas asigna elementos a cada una de las cinco regiones de tratamiento del esquema: (1) interfaz de usuario, (2) entrada, (3) tratamiento y control del sistema, (4) salida y (5) mantenimiento y auto comprobación.
El esquema del modelado del sistema permite al analista crear una jerarquía en detalle, donde en el nivel más alto de dicha jerarquía se encuentra el diagrama de contexto del sistema. Este diagrama establece el límite de información entre el sistema que se está implementando y el entorno en que va a operar. En otras palabras, define todos los suministradores externos de información que emplea el sistema, toda los consumidores externos de información creados por el sistema y todas las entidades que se comunican a través de la interfaz o realizan mantenimiento y autocomprobación.
[1]Tomado de Ingeniería de Software. Roger Pressman. 5ª Edición. Pág. 167,176.
TERMINOLOGÍA APLICADA
- Ingeniería de Requerimientos: es el proceso de desarrollar una especificación de software. Las especificaciones pretender comunicar las necesidades del sistema del cliente a los desarrolladores del sistema”. (Sommerville, 2005: 82)
- Prototipos: son simulaciones del posible producto, que luego son utilizados por el usuario final, permitiéndonos conseguir una importante retroalimentación en cuanto a si el sistema diseñado con base a los requerimientos recolectados le permite al usuario realizar su trabajo de manera eficiente y efectiva.
- Requerimientos: son las descripciones que hace el usuario de los deseos o necesidades que tiene frente a un producto a los ingenieros o desarrolladores del software, estos requerimientos originan unos requisitos que se deben cumplir para poder llegar a cumplir los requerimientos.
BIBLIOGRAFÍA
- Ingeniería del Software. IanSommerville. 7ª Edición. Editorial Pearson. México.
- Ingeniería del Software. Un enfoque práctico. Roger Pressman. 7ª Edición. Editorial McGraw Hill. México.
- Ingeniería del Software. Un enfoque práctico. Roger Pressman. 6ª Edición. Editorial McGraw Hill. México.
- Ingeniería de sistemas de software. Gonzalo León Serrano. Documento pdf.
Requisitos de Software. Juan Bernardo Quintero. Documento pdf
SITIOS DE INTERNET
- Ingeniería de requisitos. DISPONIBLE EN: http://ocw.usal.es/ensenanzas-tecnicas/ingenieria-del-software/materiales-de-clase/
No hay comentarios.:
Publicar un comentario