Ingenieria de Software
Ingenieria de Software
Ingenieria de Software
INGENIERIA DE SOFTWARE.
El software es: 1) instrucciones (programas de cómputo) que cuando se ejecutan
proporcionan las características, función y desempeño buscados;
2) estructuras de datos que permiten que los programas manipulen en forma adecuada la
información, y
3) información descriptiva tanto en papel como en formas virtuales que describen la
operación y uso de los programas.
Información General.
La Ingeniería de Software es la rama de la ingeniería que crea y mantiene las aplicaciones
de software, utilizando métodos, técnicas y herramientas de las ciencias computacionales
para desarrollar software de calidad.
La Ingeniería de Software forma profesionales para la creación de aplicativos informáticos
que den solución a problemas de información y automatización, mediante la gestión,
desarrollo, operación, mantenimiento, adquisición, utilización-reutilización de servicios y
productos de software en general.
Para la creación de software, el ingeniero genera modelos sistémicos aplicando métodos,
herramientas y procesos computacionales que le permiten construir paquetes informáticos
de acuerdo con los requerimientos y necesidades de los clientes en los diferentes contextos
nacional e internacional.
La ingeniería de software es la implementación de un enfoque de desarrollo y
mantenimiento de software.
En la actualidad, el software tiene un papel dual. Es un producto y al mismo tiempo es el
vehículo para entregar un producto. En su forma de producto, brinda el potencial de
cómputo incorporado en el hardware de cómputo o, con más amplitud, en una red de
computadoras a las que se accede por medio de un hardware local. Ya sea que resida en un
teléfono móvil u opere en el interior de una computadora central, el software es un
transformador de información —produce, administra, adquiere, modifica, despliega o
transmite información que puede ser tan simple como un solo bit o tan compleja como una
presentación con multimedios generada a partir de datos obtenidos de decenas de fuentes
independientes—. Como vehículo utilizado para distribuir el producto, el software actúa
como la base para el control de la computadora (sistemas operativos), para la comunicación
de información (redes) y para la creación y control de otros programas (herramientas y
ambientes de software).
El software distribuye el producto más importante de nuestro tiempo: información.
Transforma los datos personales (por ejemplo, las transacciones financieras de un
individuo) de modo que puedan ser más útiles en un contexto local, administra la
información de negocios para mejorar la competitividad, provee una vía para las redes
mundiales de información (la internet) y brinda los medios para obtener información en
todas sus formas. En el último medio siglo, el papel del software de cómputo ha sufrido un
cambio significativo.
Las notables mejoras en el funcionamiento del hardware, los profundos cambios en las
arquitecturas de computadora, el gran incremento en la memoria y capacidad de
almacenamiento, y una amplia variedad de opciones de entradas y salidas exóticas han
propiciado la existencia de sistemas basados en computadora más sofisticados y complejos.
Cuando un sistema tiene éxito, la sofisticación y complejidad producen resultados
deslumbrantes, pero también plantean problemas enormes para aquellos que deben
construir sistemas complejos.
En la actualidad, la enorme industria del software se ha convertido en un factor dominante
en las economías del mundo industrializado. Equipos de especialistas de software, cada uno
centrado en una parte de la tecnología que se requiere para llegar a una aplicación
compleja, han reemplazado al programador solitario de los primeros tiempos.
Ciclo de vida y Detalle de cada fase.
La producción del software es algo más que la programación; hay etapas que la preceden y
otras que le siguen.
El ciclo de vida del software está constituido por un conjunto de etapas. Los método y
técnicas de la ingeniería de software se inscriben dentro del marco delimitado por el ciclo
de vida del software y más concretamente, por las diferentes etapas que se distinguen.
La misma existencia de distintos modelos de ciclo de vida del software hace comprender
que no hay ninguno que se ideal o que no tenga grandes limitaciones.
Modelo de la cascada
Hay veces en las que el requerimiento para cierto problema se comprende bien: cuando el
trabajo desde la comunicación hasta el despliegue fluye en forma razonablemente lineal.
Esta situación se encuentra en ocasiones cuando deben hacerse adaptaciones o mejoras
bien definidas a un sistema ya existente (por ejemplo: una adaptación para software de
contabilidad que es obligatorio hacer debido a cambios en las regulaciones
gubernamentales). También ocurre en cierto número limitado de nuevos esfuerzos de
desarrollo, pero sólo cuando los requerimientos están bien definidos y tienen una
estabilidad razonable.
Comunicación: Los servicios, Restricciones y Metas del Sistema se definen a partir de las
consultas con Los usuarios. Se definen en detalle y sirven como una especificación del
Sistema. Los requerimientos se pueden dividir en funcionales y no funcionales.
Entender los requerimientos de una solución basada en software es una de las tareas más
difíciles del proceso. Como otras actividades esta tarea debe adaptarse a las necesidades
del proceso, proyecto, producto y las personas del equipo de desarrollo.
Durante esta etapa se debe proveer un mecanismo apropiado para entender que quiere el
consumidor, analizar sus necesidades, valorar la factibilidad de construcción, negociar una
solución razonable, especificar de manera no ambigua una solución, validar la
especificación y administrar los requerimientos conforme se transforman.
Planeación: El Diseño del software “Identifica” y “Describe” las abstracciones
fundamentales del sistema software y sus relaciones.
El diseño del software es un proceso mediante el que se traducen los requisitos en una
representación del software, que se acerca mucho al código fuente.
Desde hace tiempo la tendencia es a utilizar lenguajes de más alto nivel, esto ayuda a los
programadores a pensar más cerca de su propio nivel que del de la máquina, y la
productividad suele mejorarse. Como contrapartida este tipo de lenguajes son más difíciles
de aprender. Y además hay que tener en cuenta que los programadores suelen ser
conservadores y reacios a aprender nuevos lenguajes: prefieren usar los que ya conocen.
Una vez que tenemos los módulos codificados, hay que ensamblarlos. Desgraciadamente el
proceso no consiste simplemente en unir piezas. Suelen aparecer problemas con las
interfaces entre los módulos, con la comunicación de datos compartidos, con el
encadenamiento de flujos de ejecución, etc.
Pruebas integrales o pruebas de integración son aquellas que se realizan en el ámbito del
desarrollo de software una vez que se han aprobado las pruebas unitarias. Únicamente se
refieren a la prueba o pruebas de todos los elementos unitarios que componen un proceso,
hecha en conjunto, de una sola vez.
1. Es raro que los proyectos reales sigan el flujo secuencial propuesto por el modelo.
Aunque el modelo lineal acepta repeticiones, lo hace en forma indirecta. Como
resultado, los cambios generan confusión conforme el equipo del proyecto avanza.
2. A menudo, es difícil para el cliente enunciar en forma explícita todos los
requerimientos. El modelo de la cascada necesita que se haga, tiene dificultades
para aceptar la incertidumbre natural que existe al principio de muchos proyectos.
3. El cliente debe tener paciencia. No se dispondrá de una versión funcional del (de los)
programa(s) hasta que un proyecto esté muy avanzado. Un error grande sería
desastroso si se detectara hasta revisar el programa en funcionamiento.
Ventajas.
El usar nuevas tecnologías se ha vuelto en algo muy necesario al punto de considerarse
algo imprescindible.
El impacto que tiene el software al implementar diferentes metodologías de desarrollo,
así como implementar los ciclos dentro del desarrollo de un sistema.
La ingeniería de software son conocimientos científicos que se utilizan en el diseño y
desarrollo de sistemas informáticos o software en general. Mediante procesos de
documentación que permiten mayor control de procesos. Uno de los mayores beneficios
de la ingeniería de software es brindar la posibilidad de desarrollar software de calidad
que cubra las necesidades de los clientes y los usuarios a quienes van dirigidos.
Gracias a la ingeniería de software se da la automatización del proceso, contar con un
software automatiza procesos. Un mal funcionamiento, eso sí, repercute negativamente
no solo en la organización interna de la empresa, sino en su competitividad a nivel de
mercado.
Desde el momento en que hablamos de ingeniería de software pensamos que son
programas que utilizamos ya sea en teléfonos o en computadoras, pero está ahora va más
allá de eso, la ingeniería de software no solo se aplica a eso, talvez no se dan cuenta que
hasta cosas como un microondas en el que se calienta comida ese pequeño tablero y esa
pequeña pantalla están controladas por software, desde un microondas hasta una
cafetera esos dispositivos que normalmente se piensan que no tienen nada que ver con el
software. También otras cosas como los automóviles requieren de desarrollo de software
para manipular la potencia del motor para manipular la pantalla donde se tiene la
información.
Con la ingeniería de software no solo ha favorecido a esta área, sino que también ha
brindado herramientas que han ayudado a progresar otras áreas como la medicina, por
ejemplo, los dispositivos que encontramos en los hospitales que ayudan a medir la
presión, el flujo de oxigeno todos eso dispositivos también tienen software. ahora la
aplicación de la ingeniería de software va mucho más allá que las simples computadoras
que la mayoría conoce.
En definitiva, las nuevas tecnologías y en especial las relacionadas con la mejora de la
gestión operativa de las empresas han adquirido un papel imprescindible para el
desarrollo de las mismas en el mercado. Por eso, es importante tener presente las
ventajas de un software de gestión ERP y las funcionalidades que puede aportar a una
compañía para mejorar su competitividad.
Estándares de desarrollo.
¿Qué Es Calidad?
La calidad del diseño se refiere a las características que los diseñadores especifican para un
producto. El tipo de materiales, tolerancias y especificaciones del desempeño, todo contribuye a la
calidad del diseño. Si se utilizan mejores materiales, tolerancias más estrictas y se especifican
mayores niveles de desempeño, la calidad del diseño de un producto se incrementa si se fabrica
de acuerdo con las especificaciones.
En el desarrollo del software, la calidad del diseño incluye el grado en el que el diseño cumple las
funciones y características especificadas en el modelo de requerimientos. La calidad de la
conformidad se centra en el grado en el que la implementación se apega al diseño y en el que el
sistema resultante cumple sus metas de requerimientos y desempeño.
2. Un producto útil entrega contenido, funciones y características que el usuario final desea; sin
embargo, de igual importancia es que entrega estos activos en forma confiable y libre de errores.
Un producto útil siempre satisface los requerimientos establecidos en forma explícita por los
participantes. Además, satisface el conjunto de requerimientos (por ejemplo, la facilidad de uso)
con los que se espera que cuente el software de alta calidad.
3. Al agregar valor para el productor y para el usuario de un producto, el software de alta calidad
proporciona beneficios a la organización que lo produce y a la comunidad de usuarios finales. La
organización que elabora el software obtiene valor agregado porque el software de alta calidad
requiere un menor esfuerzo de mantenimiento, menos errores que corregir y poca asistencia al
cliente. Esto permite que los ingenieros de software dediquen más tiempo a crear nuevas
aplicaciones y menos a repetir trabajos mal hechos. La comunidad de usuarios obtiene valor
agregado porque la aplicación provee una capacidad útil en forma tal que agiliza algún proceso de
negocios. El resultado final es 1) mayores utilidades por el producto de software, 2) más
rentabilidad cuando una aplicación apoya un proceso de negocios y 3) mejor disponibilidad de
información, que es crucial para el negocio.
• Definir los requerimientos del cliente y los que se le entregan, así como las metas del
proyecto a través de métodos bien definidos de comunicación con el cliente.
• Analizar las métricas de los defectos y determinar las pocas causas vitales.
Si se trata de un proceso de software existente que se requiere mejorar, Seis Sigma sugiere dos
etapas adicionales:
• Controlar el proceso para asegurar que el trabajo futuro no vuelva a introducir las causas
de los defectos.
Estas etapas fundamentales y adicionales en ocasiones son conocidas como método DMAMC
(definir, medir, analizar, mejorar y controlar). Si una organización va a desarrollar un proceso de
software (en vez de mejorar uno existente), a las etapas fundamentales se agregan las siguientes:
• Diseñar el proceso para 1) evitar las causas originales de los defectos y 2) cumplir los
requerimientos del cliente.
• Verificar que el modelo del proceso en realidad evite los defectos y cumpla los
requerimientos del cliente.
Estos sistemas cubren una amplia variedad de actividades, que contemplan todo el ciclo de vida
del producto, incluidos planeación, control, medición, pruebas e informes, así como la mejora de
los niveles de calidad en todo el proceso de desarrollo y manufactura. La norma ISO 9000 describe
en términos generales los elementos de aseguramiento de la calidad que se aplican a cualquier
negocio, sin importar los productos o servicios ofrecidos.
Para registrarse en alguno de los modelos del sistema de aseguramiento de la calidad contenidos
en la ISO 9000, por medio de auditores externos se revisan en detalle el sistema y las operaciones
de calidad de una compañía, respecto del cumplimiento del estándar y de la operación eficaz.
Después de un registro exitoso, el grupo de registro representado por los auditores emite un
certificado para la compañía. Auditorías semestrales de supervisión aseguran el cumplimiento
continuo de la norma.
Los requerimientos esbozados por la norma ISO 9001:2000 se dirigen a temas tales como
responsabilidad de la administración, sistema de calidad, revisión del contrato, control del diseño,
documentación y control de datos, identificación del producto y su seguimiento, control del
proceso, inspección y pruebas, acciones correctivas y preventivas, registros del control de calidad,
auditorías internas de calidad, capacitación, servicio y técnicas estadísticas. A fin de que una
organización de software se registre en la ISO 9001:2000, debe establecer políticas y
procedimientos que cumplan cada uno de los requerimientos mencionados (y otros más), y
después demostrar que sigue dichas políticas y procedimientos. Si el lector desea más información
sobre la norma ISO 9001:2000, consulte [Ant06], [Mut03] o [Dob04].