¿Qué es la Ingeniería del Software?
La Ingeniería del 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 día es cada vez más frecuente la
consideración de la Ingeniería del Software como una nueva área de la
Ingeniería, y el Ingeniero del Software comienza a ser una profesión implantada
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, por suerte, para esas personas con brillante futuro.
La ingeniería del 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 de 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.
Definición del termino Ingeniería del Software
El termino Ingeniería se
define en el Diccionario de la Real Academia Española de la Lengua como:
"1. Conjunto de conocimientos y técnicas que permiten aplicar el saber
científico a la utilización de la materia y de las fuentes de energía. 2.
Profesión y ejercicio del Ingeniero" y el termino Ingeniero se define
como: persona que profesa o ejerce la Ingeniería. De igual modo la Real
Academia de Ciencias Exactas, Físicas y Naturales de España define el termino
Ingeniería como: " Un conjunto de conocimientos y técnicas cuya aplicación
permite la utilización racional de los materiales y de los recursos naturales,
mediante invenciones, construcciones u otras realizaciones provechosas para el
hombre".
Evidentemente, si la
Ingeniería del Software es una nueva Ingeniería, parece lógico que reúna las
propiedades citadas en las definiciones anteriores. Sin embargo ni el
DRAE(Diccionario de la Real Academia Española de la Lengua), ni la Real
Academia Española de Ciencias han incluido todavía el termino en sus últimas ediciones;
en consecuencia vamos a recurrir para su definición más precisa a algunos de
los autores más acreditados que comenzaron en su momento a utilizar el término
o bien en las definiciones dadas por organismos internacionales profesionales
de prestigio tales como IEEE o ACM, de los cuales se han seleccionado las
siguientes definiciones de Ingeniería del Software.
LAS TRES NOTACIONES SON UML-BPMN Y DFD
UML:
Lenguaje Unificado de Modelado
(LUM o UML) es el lenguaje de modelado de sistemas de software más reconocido y
usado en la actualidad; está respaldado por el OMG (Object Management Group).
Es un lenguaje gráfico para especificar,
visualizar, construir y documentar un sistema. UML ofrece un estándar
para describir un "plano" del sistema, incluyendo aspectos
conceptuales tales como procesos de negocio y funciones del sistema, y aspectos
concretos como expresiones de lenguajes de programación, esquemas de bases de
datos y componentes reutilizables.
Es importante decir que UML es
un "lenguaje de modelado" para describir o para especificar métodos o
procesos. Se utiliza para definir un sistema, para detallar los artefactos en
el sistema y para documentar y construir; es decir en el lenguaje en el que
está descrito el modelo.
Se puede aplicar en el
desarrollo de software entregando gran variedad de formas para dar soporte a
una metodología de desarrollo de software (tal como el Proceso Unificado
Racional o RUP), pero no especifica en sí mismo qué metodología o proceso
utilizar.
UML no puede compararse con la
programación estructurada, pues UML significa Lenguaje Unificado de Modelado,
no es programación, solo se diagrama la realidad de una utilización en un
requerimiento. Mientras que, programación estructurada, es una forma de
programar como lo es la orientación a objetos, sin embargo, la programación
orientada a objetos viene siendo un complemento perfecto de UML, pero no por
eso se toma UML sólo para lenguajes orientados a objetos.
Una de las metas principales
de UML es avanzar en el estado de la integración institucional proporcionando
herramientas de interoperabilidad para el modelado visual de objetos. Sin
embargo para lograr un intercambio exitoso de modelos de información entre
herramientas, se requirió definir a UML una semántica y una notación.
La notación es la parte gráfica que se ve en los
modelos y representa la sintaxis del lenguaje de modelado. Por ejemplo, la
notación del diagrama de clases define como se representan los elementos y
conceptos como son: una clase, una asociación y una multiplicidad. ¿Y qué
significa exactamente una asociación o multiplicidad en una clase? Un
metamodelo es la manera de definir esto (un diagrama, usualmente de clases, que
define la notación).
BPMN:
El Business Modeling Notation
o BPMN (Notación para el Modelado de Procesos de Negocios) es un método de
negocios que ilustra los procesos en forma similar a un diagrama de flujo. El
BPMN fue desarrollado en un principio por el Business Process Management
Initiative (BPMNI). Actualmente es sostenido por el Grupo de Gestión de Objetos
(OMG).
El BPMN proporciona una manera
fácil de definir y analizar los procesos de negocios públicos y privados.
Además, brinda una notación estándar que sea comprensible para la gestión del
personal, analistas y desarrolladores. La intención original del BPMN era
ayudar a establecer puentes de comunicación que a menudo existen dentro de una
organización o empresa. Esta notación puede ayudar a asegurarse de que el XML
(documentos diseñados para la ejecución de diversos procesos de negocios),
puedan ser visualizados con una notación común.
Un diagrama de BPMN es
ensamblado a partir de un conjunto de elementos básicos. Los elementos se
clasifican en tres grupos:
- Objetos de flujo: figuras
geométricas como círculos, rectangulos o rombos de control de flujo que indican
los eventos Y actividades.
- Objetos de conexión: trazos
o líneas de puntos que pueden incluir flechas para indicar la dirección del
proceso.
- Swimlanes (carriles de
piscina): llamada así por su semejanza
geométrica con las líneas de carril del fondo de una piscina
olímpica. Rectas sólidas a lo largo y dentro de un cuadrado denominado
fondo. El Swinglanes organiza el flujo de objetos en categorías con
funcionalidad similar.
DFD:
Un diagrama de flujo de datos
(DFD por sus siglas en español e inglés) es una representación gráfica del
"flujo" de datos a través de un sistema de información. Un diagrama
de flujo de datos también se puede utilizar para la visualización de
procesamiento de datos (diseño estructurado). Es una práctica común para un
diseñador dibujar un contexto a nivel de DFD que primero muestra la interacción
entre el sistema y las entidades externas. Este contexto a nivel de DFD se
"explotó" para mostrar más detalles del sistema que se está modelando.
Los diagramas de flujo de
datos fueron inventados por Larry Constantine, el desarrollador original del
diseño estructurado, basado en el modelo de computación de Martin y Estrin:
"flujo gráfico de datos”. Los diagramas de flujo de datos (DFD) son una de
las tres perspectivas esenciales de Análisis de Sistemas Estructurados y Diseño
por Método SSADM. El patrocinador de un proyecto y los usuarios finales tendrán
que ser informados y consultados en todas las etapas de una evolución del
sistema.
Con un diagrama de flujo de
datos, los usuarios van a poder visualizar la forma en que el sistema funcione,
lo que el sistema va a lograr, y cómo el sistema se pondrá en práctica. El
antiguo sistema de diagramas de flujo de datos puede ser elaborado y se comparó
con el nuevo sistema de diagramas de flujo para establecer diferencias y
mejoras a aplicar para desarrollar un sistema más eficiente. Los diagramas de
flujo de datos pueden ser usados para proporcionar al usuario final una idea
física de cómo resultarán los datos a última instancia, y cómo tienen un efecto
sobre la estructura de todo el sistema. La manera en que cualquier sistema es
desarrollado puede determinarse a través de un diagrama de flujo de datos. El
desarrollo de un DFD ayuda en la identificación de los datos de la transacción
en el modelo de datos.
Se puede definir a las
Herramientas CASE como un conjunto de programas y
ayudas que dan asistencia a los analistas, ingenieros de software y
desarrolladores, durante todos los pasos del Ciclo de Vida de
desarrollo de un Software.
Otras definiciones:
·
Las Herramientas CASE son un conjunto de métodos,
utilidades y técnicas que
facilitan la automatización del
ciclo de vida del desarrollo de sistemas de
información, completamente o en alguna de sus fases.
·
La sigla genérica para una serie de programas y
una filosofía de
desarrollo de software que ayuda a automatizar el ciclo de vida de desarrollo
de los sistemas.
·
Una innovación en la
organización, un concepto avanzado
en la evolución de tecnología con
un potencial efecto profundo en la organización.
Se puede ver al CASE como la unión de las herramientas automáticas de software
y las metodologías de desarrollo de software formales.
El empleo de
herramientas Case permiten integrar el proceso de ciclo de vida:
·
Tipos de Herramientas CASE
No existe una única clasificación
de herramientas CASE, es difícil incluirlas en una clase determinada.
Podrían clasificarse atendiendo a:
·
Las plataformas que soportan.
·
Las fases del ciclo de vida del desarrollo de
sistemas que abarca.
·
Su funcionalidad.
Las herramientas CASE, en función de
las fases del ciclo de vida abarcadas, se pueden agrupar de la forma siguiente:
Herramientas integradas,
I-CASE (Integrated CASE, CASE integrado): abarcan todas las fases del
ciclo de vida del desarrollo de sistemas. Son llamadas también CASE workbench.
Las herramientas I-CASE se
basan en una metodología.
Tienen un repositorio y aportan técnicas estructuradas para todas las fases del
ciclo de vida. Estas son las características que les confieren su mayor
ventaja: una mejora de la calidad de los desarrollos. Sin embargo, no todas
ellas son modernas en el sentido de aprovechar la potencia de
las estaciones de trabajo o la utilización de lenguajes de alto nivel o
técnicas de prototipo.
Herramientas de alto nivel,
U-CASE (Upper CASE - CASE superior) o front-end, orientadas a la
automatización y soporte de las actividades desarrolladas durante las primeras
fases del desarrollo: análisis y diseño.
Una estrategia posible
es utilizar una U-CASE para análisis y diseño, combinada con otras herramientas
más modernas para las fases de construcción y pruebas.
En este caso, habría que vigilar cuidadosamente la integración entre
las distintas herramientas.
Herramientas de bajo nivel,
L-CASE (Lower CASE - CASE inferior) o back-end, dirigidas a las
últimas fases del desarrollo: construcción e
implantación.
Juegos de herramientas o
toolkits, son el tipo más simple de herramientas CASE. Automatizan una fase
dentro del ciclo de vida.
Dentro de este grupo se
encontrarían las herramientas de reingeniería,
orientadas a la fase de mantenimiento.
Otra posible clasificación,
utilizando la funcionalidad como criterio principal, es la siguiente:
·
Herramientas de desarrollo de interfaz de
usuarios
·
Herramientas de Reingeniería
EJEMPLOS DE HERRAMIENTAS CASE:
·
Racional Rose
·
JDeveloper
·
MagicDraw
·
Visual Paradigm
·
Microsoft Visio
·
Enterprise Architect
ETAPAS DE LA INGENIERIA DEL SOFTWARE
El proceso requiere una metodología con 5 etapas:
1.
Análisis de requerimientos:
Se extraen los requisitos del producto de software. En esta etapa la habilidad
y experiencia en la ingeniería del software es crítica para reconocer
requisitos incompletos, ambiguos o contradictorios. Usualmente el
cliente/usuario tiene una visión incompleta/inexacta de lo que necesita y es
necesario ayudarle para obtener la visión completa de los requerimientos.
El contenido de comunicación en esta etapa es muy intenso ya que el objetivo es
eliminar la ambigüedad en la medida de lo posible.
2.
Especificación: Es la tarea de
describir detalladamente el software a ser escrito, de una forma rigurosa. Se
describe el comportamiento esperado del software y su interacción con los
usuarios y/o otros sistemas.
3.
Diseño y arquitectura: Determinar cómo
funcionará de forma general sin entrar en detalles incorporando consideraciones
de la implementación tecnológica, como el hardware, la red, etc. Consiste
en el diseño de los componentes del sistema que dan respuesta a las
funcionalidades descritas en la segunda etapa también conocidas como las entidades
de negocio. Generalmente se realiza en base a diagramas que permitan
describir las interacciones entre las entidades y su secuenciado.
4.
Programación: Se traduce el diseño
a código. Es la parte más obvia del trabajo de ingeniería de software y la
primera en que se obtienen resultados “tangibles”. No necesariamente es la
etapa más larga ni la más compleja aunque una especificación o diseño
incompletos/ambiguos pueden exigir que, tareas propias de las etapas anteriores
se tengan que realizarse en esta.
5.
Prueba: Consiste en comprobar que
el software responda/realice correctamente las tareas indicadas en la
especificación. Es una buena praxis realizar pruebas a distintos niveles (por
ejemplo primero a nivel unitario y después de forma integrada de cada
componente) y por equipos diferenciados del de desarrollo (pruebas cruzadas
entre los programadores o realizadas por un área de test independiente).
6.
Documentación: Realización del
manual de usuario, y posiblemente un manual técnico con el propósito de
mantenimiento futuro y ampliaciones al sistema. Las tareas de esta etapa se
inician ya en el primera fase pero sólo finalizan una vez terminadas las
pruebas.
7.
Mantenimiento: En esta etapa se
realizan un mantenimiento correctivo (resolver errores) y un mantenimiento
evolutivo (mejorar la funcionalidades y/o dar respuesta a nuevos requisitos).
RESUMEN
INGENIERÍA DE SOFTWARE
¿Qué es la Ingeniería del Software?
La Ingeniería del 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.
LAS TRES NOTACIONES SON UML-BPMN Y DFD
UML:
Lenguaje Unificado de Modelado (LUM o UML) es el lenguaje de
modelado de sistemas de software más reconocido y usado en la actualidad; está
respaldado por el OMG (Object Management Group). Es un lenguaje gráfico para
especificar, visualizar, construir y
documentar un sistema.
BPMN:
El Business Modeling Notation
o BPMN (Notación para el Modelado de Procesos de Negocios) es un método de
negocios que ilustra los procesos en forma similar a un diagrama de flujo. El
BPMN fue desarrollado en un principio por el Business Process Management
Initiative (BPMNI). Actualmente es sostenido por el Grupo de Gestión de Objetos
(OMG).
DFD:
Un diagrama de flujo de datos
(DFD por sus siglas en español e inglés) es una representación gráfica del
"flujo" de datos a través de un sistema de información. Un diagrama
de flujo de datos también se puede utilizar para la visualización de
procesamiento de datos (diseño estructurado).
Se puede definir a las
Herramientas CASE como un conjunto de programas y
ayudas que dan asistencia a los analistas, ingenieros de software y
desarrolladores, durante todos los pasos del Ciclo de Vida de
desarrollo de un Software.
Herramientas integradas,
I-CASE (Integrated CASE, CASE integrado): abarcan todas las fases del
ciclo de vida del desarrollo de sistemas. Son llamadas también CASE workbench.
Herramientas de alto nivel,
U-CASE (Upper CASE - CASE superior) o front-end, orientadas a la
automatización y soporte de las actividades desarrolladas durante las primeras
fases del desarrollo: análisis y diseño.
Herramientas de bajo nivel,
L-CASE (Lower CASE - CASE inferior) o back-end, dirigidas a las
últimas fases del desarrollo: construcción e
implantación.
Juegos de herramientas o
toolkits, son el tipo más simple de herramientas CASE. Automatizan una fase
dentro del ciclo de vida.
Dentro de este grupo se
encontrarían las herramientas de reingeniería,
orientadas a la fase de mantenimiento.
ETAPAS DE LA INGENIERIA DEL SOFTWARE
El proceso requiere una metodología con 5 etapas:
Análisis de
requerimientos: Se extraen los requisitos del producto de software. En
esta etapa la habilidad y experiencia en la ingeniería del software es crítica
para reconocer requisitos incompletos, ambiguos o contradictorios.
Especificación:
Es la tarea de describir detalladamente el software a ser escrito, de una forma
rigurosa. Se describe el comportamiento esperado del software y su interacción
con los usuarios y/o otros sistemas.
Diseño y arquitectura:
Determinar cómo funcionará de forma general sin entrar en detalles incorporando
consideraciones de la implementación tecnológica, como el hardware, la red,
etc.
Programación: Se
traduce el diseño a código. Es la parte más obvia del trabajo de ingeniería de
software y la primera en que se obtienen resultados “tangibles”.
Prueba: Consiste en
comprobar que el software responda/realice correctamente las tareas indicadas
en la especificación.
Documentación:
Realización del manual de usuario, y posiblemente un manual técnico con el
propósito de mantenimiento futuro y ampliaciones al sistema.
Mantenimiento:
En esta etapa se realizan un mantenimiento correctivo (resolver errores) y un
mantenimiento evolutivo (mejorar la funcionalidades y/o dar respuesta a nuevos
requisitos).
SUMARY
SOFTWARE ENGINEERING
What is Software Engineering?
Software Engineering is a discipline or area of
Information Technology or Computer Science, which offers methods and
techniques to develop and maintain quality software that solve problems of all
kinds.
THREE-UML notations are BPMN and DFD
UML:
Unified Modeling Language (LUM or UML) modeling
language is the most recognized systems and software currently used; It is
supported by the OMG (Object Management Group). It is a graphical language to
specify, visualize, construct and document a system.
BPMN:
The Business Modeling Notation or BPMN
(Notation for Business Process Modeling) is a business method illustrating
processes similar to a flowchart. BPMN was developed initially by the Business
Process Management Initiative (BPMNI). He is currently held by the Object
Management Group (OMG).
DFD:
A data flow diagram (DFD for its acronym in
Spanish and English) is a graphical representation of the "flow" of
data through an information system. A data flow diagram may also be used for
visualization of data processing (structured design).
CASE tools
You can define CASE tools as a set of programs
and grants that assist analysts, software engineers and developers during all
steps of the life cycle of a software development.
integrated tools, I-CASE (Integrated CASE, CASE
integrated): cover all phases of the life cycle of systems development. They
are also called CASE workbench.
High-level tools, U-CASE (Upper CASE - CASE
higher) or front-end, oriented automation and support activities during the
early stages of development: analysis and design.
Low-level tools, L-CASE (Lower CASE - CASE
bottom) or back-end, aimed at the final stages of development: construction and
implementation.
Toolkits or toolkits are the simplest type of
CASE tools. Automate a phase in the life cycle. Within this group reengineering
tools aimed at the maintenance phase would be found.
STAGES OF SOFTWARE ENGINEERING
The process requires a methodology with 5
stages:
Requirements analysis: the requirements of the
software product are removed. At this stage the skill and experience in
software engineering is critical to recognize incomplete, ambiguous or
conflicting requirements.
Specification: It is the task of describing in
detail the software to be written, in a rigorous way. the expected behavior of
the software and its interaction with users and / or other systems described.
Design and architecture: Determine how work
generally without elaborating incorporating technology implementation
considerations, such as hardware, network, etc.
Programming: the design is translated code. It
is the most obvious part of the software engineering work and the first in
which "tangible" results.
Test: it consists of checking that the software
responds / successfully perform the tasks outlined in the specification.
Documentation: Making user manual, and possibly
a technical manual for the purpose of future maintenance and upgrades to the
system.
Maintenance: At this stage corrective
maintenance (resolver errors) and evolutionary maintenance are performed
(improve functionality and / or respond to new
RECOMENDACIONES
1. Se recomienda ampliamente la continuidad
del proyecto generación de software de ingeniería, puesto que puede
proporcionar herramientas muy útiles a
los estudiantes. Específicamente, la realización de programas en tareas
específicas, puede ahorrar una gran cantidad de tiempo en cálculos repetitivos,
para pasar entonces a una etapa de análisis que puede resultar mucho más
retribuyente.
2. Se recomienda
del mismo modo el uso de Excel y VBA por encima de cualquier otro software de
programación para la realización de esta
tarea, puesto que esta disponible
prácticamente en cualquier PC, y por que es hasta el momento la herramienta más versátil.
3. En la
realización de programas se recomienda conocer con profundidad la tarea a realizar, así como llevar a cabo
una planeación adecuada que permita tener flexibilidad en la realización de
cambios al mismo. Por otra parte esta planeación debe pensar en el acoplamiento
de estos programas con otros para su complementación dinámica.
4. Es de suma
importancia conocer bien el lenguaje y herramientas que tiene VBA, sin embargo, la experiencia enseña
que el aprendizaje es continuo, por lo tanto se debe de pensar en una mejora
también continua de cada programa que se realice, puesto que se encontrarán
herramientas muy útiles sobre en el camino de realización de los programas.
Los cambios radicales en hardware a partir
de la última mitad del siglo anterior causaron una forzada evolución del
software, lo cual ha generado el establecimiento de modelos, estándares y
redefinición de conceptos que ratifican un establecimiento cada vez más fuerte
de la Ingeniería del Software a nivel mundial.
La gestión de
proyectos de desarrollo de software es motor esencial para el éxito de
cualquier proyecto de este tipo. La gestión debe fraccionarse en las etapas
definidas claramente, manteniendo en cuenta los 4 requisitos indispensables:
las personas, el producto, el proceso y el proyecto.
La
programación orientada a objetos es una extensión actual de la tecnología que
si bien ha evolucionado desde mediados del siglo pasado, presenta hoy día un
enfoque nuevo y distinto al tradicional.
El diseño de la arquitectura es parte
fundamental de los principios de la Ingeniería del Software y es único en el
sentido de que se organiza en función de los objetos y clases que se definirán.
De
hecho, probablemente la parte más difícil del desarrollo de software orientado
a objetos es la identificación de clases necesarias y la forma como interactúan
entre sí.
Teniendo en
cuenta los principios de Ingeniería del Software resumidos en este ensayo,
profundizando en cada uno de ellos y llevando un trabajo juicioso y
concienzudo, garantizará el éxito en cualquier proyecto de construcción de
software y, porque no? en proyectos de otro tipo.
APRECIACIÓN DEL EQUIPO
1. Diseñar soluciones apropiadas a diversos dominios de aplicación,
utilizando los principios y métodos propios de la ingeniería, que integren los
aspectos éticos, sociales, legales y económicos, ajustadas a las necesidades de
las organizaciones.
2. Demostrar la comprensión y capacidad de aplicación de las teorías,
modelos y técnicas actuales para la identificación de problemas, el análisis,
el diseño del software, el desarrollo, la implementación, la verificación y la
documentación.
3. Demostrar la comprensión y apreciación de la importancia de la
negociación, hábitos de trabajo efectivos, liderazgo y buena comunicación con
las partes interesadas en un entorno típico de desarrollo de software.
4.
Estimar los costes de un proyecto y
determinar los tiempos de desarrollo, efectuando el seguimiento de costes y
plazos y dirigir y asesorar a los equipos de trabajo.
GLOSARIO DE TÉRMINOS
Es la
cantidad de relaciones que se establecen entre los módulos de un programa.
Es un módulo
de software ejecutable que tiene identidad y una interface bien definida.
Es aquella
que trata el estado de las propiedades deseadas del sistema en forma puramente
declarativa.
IMPLEMENTACIÓN
Es la definición
de cómo está construido o compuesto algo. Por ejemplo: una clase es una
implementación de un tipo, un método es una implementación de una operación.
PROTOCOLO
Es el
conjunto de mensajes a los cuales responde un objeto.
LINKOGRAFÍA
http://infoblog-ingsoftware.blogspot.pe/2010/11/las-tres-notaciones-son-y-uml-lenguaje.html
http://www.monografias.com/trabajos5/inso/inso.shtml
http://www.monografias.com/trabajos73/herramientas-case-proceso-desarrollosoftware/herramientas-case-proceso-desarrollo-software.shtml
http://proyectosguerrilla.com/blog/2013/02/las-cinco-etapas-en-la-ingenieria-del-software/
http://www.monografias.com/trabajos102/ingenieria-del-software/ingenieria-del-software.shtml#conclusina
LINK DE LA DIAPOSITIVA
VIDEO DE REFERENCIA