User:Kayalasu

= Requerimientos de software =

Características mas importantes de los requerimientos de software

 * Necesario.
 * Completo.
 * consistente.
 * Correcto.
 * Factible.
 * Modificable.
 * Priorizado.
 * Verificable.
 * Claro.

Procesos de software de requerimientos.
El proceso de desarrollo de requisitos incluye todas las actividades necesarias para crear y mantener la documentación de requisitos del sistema. Para llevar a cabo este proceso, primero se necesita un estudio de factibilidad para determinar si se debe realizar un mayor desarrollo del sistema, además de comprender las necesidades del cliente, para obtener un contexto general para el sistema.

Las actividades identificadas durante el desarrollo de requisitos son las siguientes:


 * Obtención de los requerimientos.
 * Análisis de requerimientos.
 * Especificación de requerimientos.
 * Validación de documento de especificación.
 * Administración de requerimientos.



Captura de requisitos de software
La recopilación de requisitos trata de dónde provienen los requisitos y cómo se obtendrán, este proceso será la primera vez que el desarrollador pueda comprender correctamente el problema a resolver, en esta etapa se aplican todos los elementos mencionados en la lección anterior. Esta es la etapa más temprana del ciclo de vida. Proceso de vida, se refiere a las etapas por las que pasa el proceso de desarrollo de software, similar al ciclo de vida humano. desarrollo de aplicaciones web.

La fase de captura de requisitos tiene como objetivo descubrir y recoger todos y cada uno de los requisitos funcionales y no funcionales de la aplicación a definir de forma clara y concisa.

Técnicas

 * Estudio de documentación existente.
 * Entrevistas con las distintas personas y roles involucrados en el proyecto.
 * Talleres o sesiones de trabajo en grupo.
 * Observación.
 * Prototipado
 * Cuestionarios.
 * Inception sprint.

El análisis de requisitos de software
El análisis de requisitos es una tarea de desarrollo de software que implica brecha entre la definición de software a nivel de sistema y el diseño de software. El análisis de requisitos permite al ingeniero de sistemas determinar características de rendimiento del software (función, datos y rendimiento), indicando interfaz de software con otros componentes y configuraciones del sistema. El análisis de requisitos del software se puede subdividir en cinco áreas de esfuerzo:


 * 1) Reconocimiento del problema.
 * 2) Evaluación y síntesis.
 * 3) Modelado.
 * 4) Especificación.
 * 5) Revisión.

Todos los métodos analíticos están unidos por varios principios operativos


 * Debe representarse y entenderse el dominio de la información de un problema.
 * Deben definirse las funciones que debe realizar el software.
 * Debe representarse el comportamiento del software (como consecuencia de acontecimientos externos)
 * Deben dividirse los modelos que representan información, función y comportamiento de manera que se descubran los detalles por capas (o jerárquicamente)
 * El proceso de análisis debería ir desde la información esencial hasta el detalle de la implementación.

Además de los principios operativos enumerados anteriormente, sugerir un conjunto de pautas de diseño solicitud:


 * Entender el problema antes de empezar a crear el modelo de análisis.
 * Desarrollar prototipos que permitan al usuario entender como será la interacción hombre-máquina.
 * Registrar el orden y la razón de cada requerimiento.
 * Usar múltiples planteamientos de requerimientos.
 * Priorizar los requerimientos.
 * Trabajar para eliminar la ambigüedad.

Especificaciones de requisitos de software (ERS)
ERS es un documento que describe las necesidades especificas de un proyecto o sistema. La especificación de requisitos es importante porque subyace en todo el trabajo futuro del proyecto.

Practicas recomendadas para una buena especificación de requerimientos de software
las características de una buena ERS son definidas por el estándar IEEE 830-1998.


 * Completa: Debe reflejar todos los requisitos y especificar todas las referencias.
 * Consistente: Debe cumplir con los requisitos, así como con otros documentos de especificación.
 * Inequívoca: La redacción debe ser clara para que no se malinterprete.
 * correcta: El software debe cumplir con los requisitos de la especificación.
 * Trazable: Esto se refiere a la capacidad de verificar el historial, la ubicación o el uso de un articulo a través de una identificación almacenada y registrada.
 * priorizable: Los requisitos deben organizarse jerárquicamente según su importancia para el negocio y clasificarse en esenciales, condicionales y opcionales.
 * Modificables: su bien cada requisito esta sujeto a cambios, esto se refiere al hecho de que debe ser fácilmente modificable.
 * Verificable: Tiene que haber un ultimo método gratuito para demostrarlo.
 * Clara: Debe estar sujeto en un lenguaje que sea claro, y comprensible para las personas que practicaran en el.

Existen 4 tipos de requisitos

 * Requisitos de usuario.
 * Requisitos del sistema.
 * Requisitos funcionales.
 * Requisitos no funcionales.

Requisitos funcionales
Un requisito funcional es una declaración sobre cómo debe funcionar el sistema. Define lo que el sistema debe hacer para satisfacer las necesidades o expectativas del usuario.

Tipos de requisitos funcionales

 * Regulaciones comerciales.
 * Requisitos de certificación.
 * Los requisitos de información.
 * Funciones administrativas.
 * Niveles de autorización.
 * Seguimiento de auditoria.
 * Interfaces externas.
 * Administración de datos.
 * Requisitos legales y reglamentarios

Ejemplo:
Un usuario podrá iniciar sesión en el sistema utilizando su nombre de usuario y contraseña. En este ejemplo, la función es "iniciar sesión" y el comportamiento es "El sistema permitirá que un usuario inicie sesión con su nombre de usuario y contraseña"

Requisitos no funcionales
Estos son requisitos que no están directamente relacionados con las funciones específicas proporcionadas por el sistema (características del usuario), sino con las propiedades del sistema: rendimiento, seguridad, disponibilidad. En palabras más sencillas, no hablan de “lo que” hace el sistema, sino de “cómo” lo hace.

Existen diferentes tipos de requisitos y se clasifican según sus indicaciones


 * Requisitos del producto.
 * Requisitos organizativos
 * Necesidades externas

Los requisitos funcionales y no funcionales deben distinguirse en el documento de requisitos, ya sea el SRS, el catálogo de productos o cualquier elemento que esté utilizando. En la práctica, esto puede ser difícil. Si un requisito no funcional se declara separado de los requisitos funcionales, a veces es difícil ver la relación entre los dos. Si el RNF se declara con requisitos funcionales, es difícil separar las condiciones funcionales y no funcionales y determinar los requisitos que se aplican a todo el sistema. Debe encontrar el equilibrio adecuado según el tipo de sistema o aplicación que esté utilizando. Por ejemplo, si está trabajando en un trabajo pendiente, es posible que tenga historias de usuarios específicas de RNF, pero puede agregarles un enlace en el RF que podría verse afectado.

Validación
Antes de comenzar el desarrollo de software, es muy importante asegurarse de que los requisitos sean razonables. Para ello, es necesario comprobar la correspondencia entre las descripciones originales y si el modelo puede responder al planteamiento original. Para ello, es habitual comprobar si por un lado el modelo recibido responde de la misma forma que lo solicitado por el cliente, y por otro lado, si las demás respuestas del modelo son correctas. clientes o no. . En algunos casos, será necesario construir prototipos con una funcionalidad de similitud muy reducida para que el cliente tenga una idea general del resultado.

Los parámetros a validar en los requisitos son:


 * Validez: No basta con preguntar a un usuario, todos los potenciales usuarios pueden tener puntos de vista distintos y necesitar otros requisitos.
 * Consistencia: No debe haber contradicciones entre unos requisitos y otros.
 * Completitud: Deben estar todos los requisitos. Esto es imposible en un desarrollo iterativo, pero, al menos, deben estar disponibles todos los requisitos de la iteración en curso.
 * Realismo: Se pueden implementar con la tecnología actual.
 * Verificabilidad: Tiene que existir alguna forma de comprobar que cada requisito se cumple.

Consideraciones practicas
1.- Definición del requisito. Alcance del proyecto. Esto parece una tontería, al menos debería saber qué necesito programar y para qué se utilizará, pero no lo es, la mayoría de los clientes no saben realmente lo que quieren y mucho menos cómo implementarlo durante el desarrollo. Debe sentarse con los clientes y usuarios finales de su aplicación y determinar adónde quiere ir y cómo. Es muy importante escribir un documento de contenido y todos los participantes del proyecto (desarrolladores, analistas, gerentes de proyecto, clientes de requisitos de desarrollo y usuarios finales que usarán la aplicación) están totalmente de acuerdo con él. Analizar varios requisitos y escribir un documento de alcance evitará problemas durante y al final del proyecto.

2.- Desglosar el desarrollo en hitos o resultados.

Una vez desarrollado el proyecto, es conveniente dividirlo en secciones o fases para que el cliente pueda visualizar los resultados durante el desarrollo. Si un proyecto tiene una duración de 10 meses, no podemos tener un cliente sin ver algo en 10 meses de desarrollo, necesitamos obtener resultados, esto también nos ayudará a hacer algunos ajustes y no completó el proyecto y el cliente nos obligó a hacerlo. cambiar más de la mitad del desarrollo. Dividir el proyecto en fases, sprints o secciones nos permitirá fijar objetivos y mostrar efectos rápidamente.

3.- Elige el IDE que se adapte a tus necesidades.

Dependiendo del lenguaje de programación que vayamos a utilizar, conviene utilizar un entorno de desarrollo integrado (IDE) u otro, ya que cada IDE se dirige a uno o varios lenguajes de programación. Por ejemplo, si vamos a programar en java conviene usar NetBeans o Eclipse IDE, si lo vamos a hacer en python podemos usar Atom o Visual Studio Code, si vamos a programar programar en php o html podemos usar PhpStorm. Por otro lado, si queremos usar un IDE que se pueda usar en diferentes lenguajes de programación, entonces podemos usar un IDE que nos permita importar bibliotecas y funciones desde un lenguaje en particular posible, como sublimetext.

4.- Normalización de las reglas de desarrollo.

Cuando comenzamos a programar, necesitamos definir nuestra forma de hacer las cosas: cómo llamamos y definimos funciones, variables, nombres de archivo, propiedades, etc. En buen código, estos elementos son fáciles de distinguir. El código que no sigue ninguna estandarización es más difícil de mantener.

5.- SECO: No te repitas.

No repita el código, divida su investigación en módulos. Repetir el código durante el desarrollo solo complica el mantenimiento y aumenta el riesgo de errores. Agrupe las operaciones repetitivas en funciones y sepárelas del resto de su código y se reducirá el esfuerzo requerido para mantener su código. Si otros archivos requieren estos fragmentos de código, no los elimine simplemente del proceso nativo, sino que colóquelos en un archivo separado al que puedan acceder todos los elementos del código.

6- No te inventes historias.

Si ha probado y optimizado módulos y bibliotecas, no pierda el tiempo desarrollando. Los IDE actuales tienen bibliotecas para ayudarlo a desarrollar.

7.- Comenta tu código.

Sin embargo, para que sea más fácil de modificar y mantener, recuerde que un buen código es un código que no requiere comentarios. Escribe oraciones simples y trata de encontrar una solución simple y concisa. Cuanto más corto sea, menos errores y más fácil será encontrarlos y corregirlos.

8.- Divide y vencerás.

Desglose los cambios complejos en muchos cambios más simples. Andar buscando una solución que incluya todas las características o funciones le costará mucho tiempo. Descomponer el desarrollo en funciones y programarlas según la función principal e integrarlas con el resto.

9.- Prueba el código.

Hará muchas pruebas durante el desarrollo del software y especialmente en las últimas etapas. Prepara una serie de pruebas que puedes ejecutar en cualquier momento. Muchas veces, la configuración de algunos elementos genera inconsistencias con otros, con su conjunto de pruebas debería poder detectar esto.

10.- Optimización.

No todas las instrucciones y módulos requieren la misma potencia de procesamiento, trate siempre de usar las instrucciones y módulos más simples.

11.- Seguridad.

A la hora de desarrollar nuestro software, debemos tener en cuenta los siguientes puntos:

Acceso a archivos (tanto físicamente como mediante permisos). Posibilidad de modificar el código en la misma ejecución o inyección de sql. Desbordamiento de búfer cuando se usa una matriz de tamaño no controlado. Formato de datos de entrada (en formularios). IDE actualizado y características. Una función en desuso puede causar un agujero de seguridad en nuestro código. Usar contraseña en el código. La contraseña debe estar encriptada y almacenada en la base de datos.

12.- Documentos.

Durante el desarrollo, trate de documentar todo lo que hace para que sea fácil para los desarrolladores y las futuras personas que trabajen en el software comprender el proceso de creación y operación del software.