Descargar como pptx, pdf o txt
Descargar como pptx, pdf o txt
Está en la página 1de 32

FUNDAMENTOS DE INGENIERIA

DE SOFTWARE
FASES DE LA ING. DE SOFTWARE
M. MA. DEL ROCIO TEYSSIER FUENTES DE MARÍA
FASES DE LA ING. DE SOFTWARE
• Etapas del proceso

• La ingeniería de software requiere llevar a cabo numerosas tareas


agrupadas en etapas, al conjunto de estas etapas se le denomina ciclo
de vida.
• Las etapas comunes a casi todos los modelos de ciclo de vida son las
siguientes:
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)
• También hay que ver los puntos críticos, lo que significa tener de una
manera clara los aspectos que entorpecen y limitan el buen
funcionamiento de los procedimientos actuales, los problemas más
comunes y relevantes que se presentan, los motivos que crean
insatisfacción y aquellos que deben ser cubiertos a plenitud.
• Por ejemplo: ¿El contenido de los reportes generados, satisface
realmente las necesidades del usuario? ¿Los tiempos de respuesta
ofrecidos, son oportunos?, etc.
• Hay que definir las funciones que realizará el software ya que estas
ayudan al usuario final y al funcionamiento del mismo programa.
• Se tiene que tener en cuenta cómo será el comportamiento del
software ante situaciones inesperadas como lo son por ejemplo una
gran cantidad de usuarios usando el software o una gran cantidad de
datos entre otros.
Análisis de los requisitos:
• 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.
• El análisis de requisitos puede parecer una tarea sencilla, pero no lo
es debido a que muchas veces los clientes piensan que saben todo lo
que el software necesita para su buen funcionamiento, sin embargo,
se requiere la habilidad y experiencia de algún especialista para
reconocer requisitos incompletos, ambiguos o contradictorios.
• Estos requisitos se determinan tomando en cuenta las necesidades
del usuario final, introduciendo técnicas que nos permitan mejorar la
calidad de los sistemas sobre los que se trabaja.
• El resultado del análisis de requisitos con el cliente se plasma en el
documento ERS (especificación de requisitos del sistema), cuya
estructura puede venir definida por varios estándares, tales como
CMMI.
• Asimismo, se define un 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.
• Se han ideado modelos y diversos procesos metódicos de trabajo
para estos fines. Aunque aún no está formalizada, ya se habla de la
ingeniería de requisitos.
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
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:
• Caso de uso
• 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)
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:
• 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.
• 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.
• 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:
• Establecer específicamente las acciones que debe efectuar la unidad
de diseño.
• La creación de componentes para sus procedimientos.
• Ejecutar pruebas unitarias y de integración en la unidad de diseño
• 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.
• 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:
• Es todo lo concerniente a la documentación del 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.
Bibliografia:
• Braude, E. (2003) Ingeniería de Software, una perspectiva orientada a
objetos. México; Alfaomega
• Roger S. Preesman (2012) Ingeniería del Software. Un enfoque
práctico. México; Mc Graw Hill.

También podría gustarte