User:FranIBEROAMERICANA

14 de mayo de 2023

 * 1) Requerimientos de Software ¿Cuales son?
 * 2) ¿Cuales son los procesos?
 * 3) ¿Que es captura?
 * 4) ¿Que es el análisis?
 * 5) ¿Que son las especificaciones?
 * 6) ¿Que son los requisitos funcionales y no funcionales?
 * 7) ¿Que es la validación?
 * 8) Cosas a considerar.

¿Que son los requerimientos de un software?
Los requerimientos de un software son basicamente lo que un cliente o compañía que necesita un software nos pide que pueda hacer. Los requisitos le sirven al desarrollador para entender mas lo que el cliente necesita y así poder desarrollar un software que satisfaga la necesidad del cliente. Por lo general el software se usa para resolver problemas, para ofrecer algun servicio o producto.

Los requisitos tienen tambien sus nombres propios y se resumen en acronimos. Hay un termino que se usa mucho en esta industria y es Ingenieria de requerimientos. Esta se usa para probar de manera mas adecuada un sistema o software y ver si cumple con los requisitos solicitados y para validar el software o sistema en etapa de validación. Otro termino similar es Ingeniero de requerimientos, también conocido como analista de requerimientos y su trabajo es recopilar las ideas que un cliente da para un sistema y colocarlas en algún documento o lugar donde se puedan registrar.
 * CIA: Significa Confidentiality, Integrity, and Availability. Esto se traduce en Confidencialidad, Integridad y disponibilidad.
 * DAG: Significa Directed Acyclic Graph se traduce en Gráfico Acíclico Dirigido.
 * FSM: Significa Functional Size Measurement. Se traduce en Medida de tamaño funcional.
 * INCOSE: Significa International Council on Systems Engineering y se traduce en Consejo Internacional en Sistemas de Ingeniería.
 * UML: Significa Unified Modeling Language que en español se traduce a Lenguaje Unificado de Modelado.
 * SysML: Significa Systems Modeling Language. Lenguaje de Modelado de Sistemas.

Procesos ¿Que son?
A la hora de desarrollar un software los procesos son importantes ya que estos permiten dividir el trabajo en fases para mejorar el diseño, gestión del producto y del proyecto. Esto tambien se conoce como ciclo de vida del desarrollo de software. En algunos casos, los requerimientos de un software generan procesos. Un ejemplo sería la elección de verificación. Otro podría ser el uso de técnicas de análisis particularmente rigurosas (tales como métodos de especificación formal) para reducir fallas que pueden conducir a poca confianza. Los requisitos del proceso también pueden imponerse directamente por la organización de desarrollo, su cliente, o un tercero, como un regulador de seguridad.

Captura ¿De que sirve?
Para saber los requisitos de software se tienen que primero recopilar, para eso existe la fase de captura de requisitos la cual tiene como próposito recoger todos los requisitos, tanto funcionales como no funcionales del software a desarrollar. Para capturar requisitos hay muchos metodos. El primero son las entrevistas, en estas estamos cara a cara con el cliente y es el metodo mas sencillo y común. El segundo serían los prototipos. Estos nos sirven bastante ya que gracias a los prototipos nos podemos hacer una mejor idea de lo que el cliente solicita y ademas podemos hacerle una pequeña demostración al cliente de su futuro software. Las sesiones de desarrollo en conjunto de aplicaciones o JAD son sesiones en grupos en las cuales un grupo de desarrolladores documenta los requerimientos solicitados para el software a desarrollar. Las entrevistas grupales son similares a la entrevista pero en este caso es mas de una la persona entrevistada.

¿Que es el analisis de requerimientos?
El análisis es un proceso automatizado en el que se analiza el comportamiento del software. Existen dos tipos de analaisis:

Analsis estático: Es un tipo de análisis que se realiza sin ejecutar el software. Desde un punto de vista más tecnico basicamente estamos analizando el codigo fuente de nuestro software y en otros casos se hace en el codigo objeto.

Análisis dinámico: A diferencia del estático, el análisis dinámico se hace con el software ejecutandose y mayormente se usa para observar su comportamiento. Para que este analisis sea exitoso se tienen que poner a prueba todos los aspectos y caracteristicas que tenga el software en cuestión.

Especificaciones ¿De que nos sirven?
La especificación de requisitos de software o ERS es un documento de especificación en donde se enumeran los requisitos, las expectativas, diseño y los estándares de un proyecto. Este incluye los requisitos y necesidades de los usuarios finales y la funcionalidad del producto. El ERS basicamente detalla el como debería funcionar el producto en desarrollo. Un ERS Cuenta con cuatro partes, la Introducción, requisitos funcionales y no funcionales, los de la interfaz externa y los requisitos del sistema. En la introducción se habla del alcance del producto, su valor, el público objetivo, el uso previsto y sus definiciones o acronimos.

Requisitos funcionales ¿Que son?
Un requisito funcional es una descripción de cómo debe comportarse el sistema desarrollado. Estos se pueden considerar como las caracteristicas que el usuario detecta a la hora de usar el software. A la hora de desarrollar un ERS los requisitos funcionales vienen despúes de la introducción y en estos se detallan las características y funciones que permiten el funcionamiento adecuado del sistema. Por lo general se usa como resumen general para controlar que los requisitos cumplan con las necesidades basicas del usuario. Dependiendo de cada producto hay diferentes tipos de requisitos. Algunos serían:
 * Funciones “If/then” (si/o).
 * Lógica de manejo de datos.
 * Flujos de trabajo del sistema.
 * Gestión de las transacciones.
 * Funciones administrativas.
 * Deberes regulatorios y de cumplimiento de normas.
 * Requisitos de desempeño.
 * Detalles sobre las operaciones llevadas a cabo en cada pantalla.

Requisitos no funcionales. ¿Que son y en que se diferencian de los funcionales?
Los requisitos no funcionales o NRF se refieren a las restricciones y caracteristicas de un software. A diferencia de los funcionales, estos no determinan una funcionalidad a desarrollar del sistema sino, en que forma el sistema implementará las funciones descritas en los requisitos funcionales. En un ERS estos van en la sección final de los requisitos de software. Abajo encontrará una lista con los requisitos no funcionales mas comunes:
 * La seguridad: Qué se necesita para garantizar que cualquier información sensible de los usuarios que recopile tu software estará protegida.
 * La capacidad: Lo que se necesita para satisfacer la demanda de almacenamiento ahora y lo que se necesitará más adelante. Incluye un plan para determinar cómo se adaptará el sistema a escala a medida que aumente la demanda.
 * La compatibilidad: Los requisitos mínimos de hardware para el software, como la compatibilidad con los sistemas operativos y sus versiones.
 * La fiabilidad y disponibilidad: Con qué frecuencia esperas que los usuarios utilicen el software y cuál es el tiempo de fallo crítico esperado con relación a un uso normal.
 * La escalabilidad: La cantidad máxima de trabajo con la que el sistema se comportará como se ha previsto.
 * La mantenibilidad: Cómo se debería usar la integración continua en tu aplicación para implementar funciones o reparar errores rápidamente.
 * La facilidad de uso: Cuán fácil resulta usar el producto.

Y por ultimo... la validación ¿Que es? ¿Por que es tan importante?
Una vez ya hayamos desarrollado nuestro software hay que someterlo a una revisión o fase de validación. En esta se verifica que el sistema cumpla con todo lo solicitado por el cliente. Esta fase la hace el usuario o cliente para quien el software vaya destinado. Estas benefician en gran medida al desarrollador tambien ya que nos sirven para prevenir errores, reducir costos de desarrollo y optimizar nuestro software. Una cosa clave para la validación de un software es contar con la opinion de la mayor cantidad de usuarios posibles, de esta forma podremos mejorar aún mas nuestro software.

Consideraciones Prácticas.
A la hora de desarrollar un software, es importante considerar ciertas cosas tales como el lenguaje que usaremos, que tipo de pruebas realizaremos, el reciclaje o reutilización de codigo el cual nos puede ayudar y la calidad de nuestro codigo. La primera creo que se explica por si sola, que lenguaje será el utilizado para nuestro software, ya sea Java, Python o C++, es importante tener conocimiento en cada uno de estos lenguajes para no tener inconvenientes a la hora de desarrollar un software. En la etapa de pruebas, es donde tenemos que identificar los errores y repararlos así como tambien optimizar nuestro codigo lo mejor posible así no utiliza tantos recursos. Si las pruebas no se realizan en el momento adecuado o de la forma adecuada esto nos dará costos adicionales los cuales aumentarán a medida que nos vayamos acercando al final del desarrollo de nuestro software. En la etapa de reutilización. Esta etapa es util ya que basicamente estaríamos reciclando nuestro codigo para que si en algún momento se requiera, lo podamos editar sin tener que escribirlo desde cero. En la ultima etapa, calidad de construcción, es donde nos aseguramos que nuestro codigo cumpla con los estándares solicidados por el cliente y la industria.