Resumen de las fases de la ingeniería de software.
La
metodología para el desarrollo de software es un modo sistemático de realizar,
gestionar y administrar un proyecto para llevarlo a cabo con grandes
posibilidades de éxito. Esta sistematización indica cómo se divide un proyecto
en módulos más pequeños para normalizar su administración.
De
esta manera, una metodología para el desarrollo de software son los procesos a
seguir sistemáticamente para idear, implementar y mantener un producto de
software desde que surge la necesidad del producto hasta que se cumple el
objetivo por el cual fue creado.
De
esta forma, las fases del desarrollo de la ingeniería de software son las
siguientes:
·
Planificación:
Antes
de empezar un proyecto de desarrollo de un sistema de información, es necesario
hacer ciertas tareas que influirán decisivamente en el éxito del mismo. Dichas
tareas son conocidas como el fuzzy front-end del proyecto, puesto que
no están sujetas a plazos.
Algunas
de las tareas de esta fase incluyen actividades como la determinación del
ámbito del proyecto, la realización de un estudio de viabilidad, el análisis de
los riesgos asociados, la estimación del coste del proyecto, su planificación
temporal y la asignación de recursos a las diferentes etapas del proyecto.
·
Análisis:
Extraer
los requisitos de un producto software es la primera etapa para crearlo.
Durante la fase de análisis, el cliente plantea las necesidades que se
presenta e intenta explicar lo que debería hacer el software o producto
final para satisfacer dicha necesidad mientras que el desarrollador actúa como
interrogador, como la persona que resuelve problemas. Con este análisis,
el ingeniero de sistemas puede elegir la función que debe realizar el software
y establecer o indicar cuál es la interfaz más adecuada para el mismo.
La
captura, análisis y especificación de requisitos, es una parte crucial de esta
etapa depende en gran medida el logro de los objetivos finales. Se han ideado
modelos y diversos procesos metódicos de trabajo para estos fines. Aunque aún
no está formalizada.
Finalidades
del análisis de requisitos:
·
Brindar al usuario todo lo necesario para
que pueda trabajar en conjunto con el software desarrollado obteniendo los
mejores resultados posibles.
·
Tener un control más completo en la etapa
creación del software, en cuanto a tiempo de desarrollo y costos.
·
Utilización de métodos más eficientes que
permitan el mejor aprovechamiento del software según sea la finalidad de uso
del mismo.
·
Aumentar la calidad del software
desarrollado al disminuir los riesgos de mal funcionamiento.
·
Obtención de requisitos:
Se
debe identificar sobre qué se está trabajando, es decir, el tema principal
que motiva el inicio del estudio y creación del nuevo software o
modificación de uno ya existente. A su
vez identificar los recursos que se tienen, en esto entra el
conocer los recursos humanos y materiales que participan en el desarrollo de
las actividades.
Se
tiene que tener dominio de la información de un problema, lo cual incluye
los datos fuera del software (usuarios finales, otros sistemas o
dispositivos externos), los datos que salen del sistema (por la
interfaz de usuario, interfaces de red, reportes, gráficas y otros medios) y
los almacenamientos de datos que recaban y organizan objetos persistentes
de datos (por ejemplo, aquellos que se conservan de manera permanente).
·
Limitaciones:
Los
softwares tienen la capacidad de emular inteligencia creando un
modelo de ciertas características de la inteligencia humana pero sólo posee
funciones predefinidas que abarcan un conjunto de soluciones que en algunos
campos llega a ser limitado. Aun cuando tiene la capacidad de imitar ciertos
comportamientos humanos no es capaz de emular el pensamiento humano porque
actúa bajo condiciones.
Otro
aspecto limitante de los softwares proviene del proceso totalmente mecánico que
requiere de un mayor esfuerzo y tiempos elevados de ejecución lo que lleva a
tener que implementar el software en una máquina de mayor capacidad.
·
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.
Entre
las técnicas utilizadas para la especificación de requisitos se encuentran:
o
Caso de uso
o
Historias de usuario
siendo
los primeros más rigurosas y formales, los segundas más ágiles e informales.
·
Diseño y arquitectura:
Se
refiere a determinar cómo funcionará de forma general sin entrar en detalles.
Consiste en incorporar consideraciones de la implementación tecnológica, como
el hardware, la red, etc. Se definen los Casos de Uso para cubrir las funciones
que realizará el sistema, y se transforman las entidades definidas en el
análisis de requisitos en clases de diseño, obteniendo un modelo cercano a la
programación orientada a objetos.
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, por ejemplo:
·
Diagrama de clases
·
Diagrama de base de datos
·
Diagrama de despliegue
·
Diagrama de secuencia
Los
diagramas de clases y de base de datos son los mínimos necesarios para
describir la arquitectura de un proyecto que iniciará a ser codificado.
Dependiendo del alcance del proyecto, complejidad y necesidades, el arquitecto
elegirá cuales de los diagramas se requiere elaborar.
Las
herramientas para el diseño y modelado de software se denominan CASE (Computer
Aided Software Engineering) entre las cuales se encuentran:
·
Enterprise Architect
·
Microsoft Visio for Enterprise Architects
§ 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 es necesariamente la porción más larga. La complejidad y la
duración de esta etapa está íntimamente ligada al o a los lenguajes de
programación utilizados.
§ Desarrollo
de la aplicación:
Para
el desarrollo de la aplicación es necesario considerar cinco fases para tener
una aplicación o programa eficiente, estas son:
v Desarrollo
de la infraestructura:
Esta
fase permite el desarrollo y la organización de los elementos que formaran la
infraestructura de la aplicación, con el propósito de finalizar la aplicación
eficientemente.
v Adaptación
del paquete:
El
objetivo principal de esta fase es entender de una manera detallada el
funcionamiento del paquete, esto tiene como finalidad garantizar que el paquete
pueda ser utilizado en su máximo rendimiento, tanto para negocios o recursos.
Todos los elementos que componen el paquete son inspeccionados de manera
detallada para evitar errores y entender mejor todas las características del paquete.
v Desarrollo
de unidades de diseño de interactivas:
En
esta fase se realizan los procedimientos que se ejecutan por un diálogo
usuario-sistema. Los procedimientos de esta fase tienen como objetivo
principal:
o
Establecer específicamente las acciones que
debe efectuar la unidad de diseño.
o
La creación de componentes para sus
procedimientos.
o
Ejecutar pruebas unitarias y de integración
en la unidad de diseño.
v Desarrollo
de unidades de diseño batch:
En
esta fase se utilizan una serie de combinación de técnicas, como diagrama
de flujo, diagramas de estructuras, tablas de decisiones, etc. Cualquiera a
utilizar será beneficioso para plasmar de manera clara y objetiva las
especificaciones y que así el programador tenga mayor comprensión a la hora de
programar y probar los programas que le corresponden.
v Desarrollo
de unidades de diseño manuales:
En
esta fase el objetivo central es proyectar todos los procedimientos
administrativos que desarrollarán en torno a la utilización de los componentes
computarizados.
§ Pruebas
de software:
Consiste
en comprobar que el software realice correctamente las tareas indicadas en
la especificación del problema. Una técnica es probar por separado cada módulo
del software, y luego probarlo de manera 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.
§ Implementación:
Una
implementación es la realización de una especificación técnica o
algoritmos con un programa, componente software, u otro sistema de cómputo.
Muchas
especificaciones son dadas según a su especificación o un estándar. Las
especificaciones recomendadas según el World Wide Web Consortium, y las
herramientas de desarrollo del software contienen implementaciones de lenguajes
de programación. El modelo de implementación es una colección de componentes y
los subsistemas que contienen. Componentes tales como: ficheros ejecutables,
ficheros de código fuente y todo otro tipo de ficheros que sean necesarios para
la implementación y despliegue del sistema.
La
etapa de implementación del diseño de software es el proceso de convertir
una especificación del sistema en un sistema ejecutable. Siempre implica los
procesos de diseño y programación de software, pero, si se utiliza un enfoque
evolutivo de desarrollo, también puede implicar un refinamiento de la
especificación del software. Esta etapa es una descripción de la estructura del
software que se va a implementar, los datos que son parte del sistema, las
interfaces entre los componentes del sistema, y algunas veces los algoritmos
utilizados.
§ Documentación:
La documentación es todo lo
concerniente al propio desarrollo del software y de la gestión del proyecto,
pasando por modelaciones (UML), diagramas, pruebas, manuales de usuario,
manuales técnicos, etc; todo con el propósito de eventuales correcciones,
usabilidad, mantenimiento futuro y ampliaciones al sistema.
§ 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. De manera
similar, alrededor de 2/3 de toda la ingeniería civil, arquitectura y trabajo
de construcción es dar mantenimiento.
Comentarios
Publicar un comentario