¿Por qué deberíamos primero analizar las causas y consecuencias del problema y luego establecer los objetivos del sistema?
Tipos de requisitos
Los requisitos de software incluyen tres niveles diferentes: requisitos comerciales, requisitos del usuario y requisitos funcionales. Además, cada sistema tiene varios requisitos no funcionales.
Los requisitos comerciales representan los objetivos de alto nivel de la organización o del cliente. Las necesidades comerciales suelen provenir de inversores de proyectos, clientes que compran productos, gerentes de usuarios reales, departamentos de marketing o departamentos de planificación de productos. Los requisitos comerciales describen por qué una organización debería desarrollar un sistema, es decir, qué espera lograr la organización. Documente los requisitos comerciales utilizando un documento de visión y alcance, a veces llamado diagrama de proyecto o documento de requisitos del mercado. UserRequirement describe el objetivo del usuario o la tarea que el usuario requiere que el sistema complete. Los casos de uso, las descripciones de escenarios y las tablas de respuesta a eventos son formas efectivas de expresar las necesidades de los usuarios. En otras palabras, los requisitos del usuario describen lo que los usuarios pueden hacer con el sistema.
Los requisitos funcionales especifican las funciones de software que los desarrolladores deben implementar en el producto y que los usuarios utilizan estas funciones para completar tareas y satisfacer las necesidades comerciales. Los requisitos funcionales a veces también se denominan requisitos de comportamiento porque se acostumbra utilizar "debería" para describir: "El sistema debe enviar un correo electrónico para notificar al usuario que su reserva ha sido aceptada". Los requisitos funcionales describen lo que los desarrolladores deben implementar.
Los requisitos no funcionales definen las características que debe tener un producto de software además de los requisitos funcionales para satisfacer las necesidades comerciales del usuario. Incluyendo la integridad del sistema (ayuda en línea, gestión de datos, gestión de usuarios, gestión de lanzamientos de software, actualización en línea, etc.), rendimiento, confiabilidad, mantenibilidad, escalabilidad, adaptabilidad a la tecnología y los negocios, etc.
Tareas de análisis de requisitos
1 Problemas a resolver
1) Conocer de forma completa y precisa todas las funciones, rendimiento y limitaciones del sistema objetivo 2; ) Descubra Encuentre todos los flujos de entrada y salida; 3) Descubra todos los métodos de procesamiento;
4) Genere DFD jerárquico completo, diccionario de datos y descripción de procesamiento;
2 Requisitos integrales
Determinar los requisitos integrales del sistema, los requisitos funcionales del sistema, los requisitos de rendimiento del sistema, los requisitos operativos y los posibles requisitos futuros.
3 Tareas
La Figura 1 es el diagrama de tareas del análisis de requisitos. La tarea final específica que se debe completar en la fase de análisis de requisitos es formar un documento de análisis de requisitos de software (especificación de requisitos, plan de desarrollo del proyecto revisado, manual de usuario preliminar, plan de prueba de confirmación y especificación de requisitos de datos) que sea reconocido o reconocido por desarrolladores y usuarios. . Este documento explica de forma clara y precisa para qué se desarrollará el sistema y especifica los requisitos técnicos detallados, incluidas todas las interfaces del sistema de software orientadas al usuario, a la máquina y otras. Se puede decir que los documentos de requisitos siempre han jugado un papel rector en el proceso de desarrollo.
Para completar mejor la tarea de análisis de requisitos en la primera etapa del desarrollo de software y mejorar la calidad, la gestión de requisitos es esencial.
El propósito de la gestión de requisitos es establecer un entendimiento común de los requisitos entre clientes y desarrolladores, mantener la coherencia de los requisitos y otros resultados del trabajo y controlar los cambios en los requisitos, lo que se refleja principalmente en el seguimiento y control de los requisitos. superior de gestión del cambio. La gestión de requisitos es la garantía para el progreso efectivo del trabajo de desarrollo. Es un comportamiento del sistema de alto nivel que involucra todo el proceso de desarrollo y el producto en sí.
Método de análisis de requisitos
El método de análisis de requisitos consiste en el proceso de análisis del sistema y el método de representación del dominio de información y el dominio funcional de los problemas de software. La mayoría de los métodos de análisis de requisitos están basados en información. El dominio de la información tiene tres atributos: flujo de información, contenido de la información y estructura de la información.
Los métodos de análisis de requisitos más utilizados incluyen: método estructurado orientado al flujo de datos (SA), método Jackson orientado a la estructura de datos (JSD), método de desarrollo de sistemas de datos estructurados orientado a la estructura de datos (DSSD) y estructura de datos. Método de desarrollo de sistemas de datos estructurados orientados (DSSD), método de análisis de objetos (OOA), etc. La elección de este método debe basarse en qué recursos están disponibles para los desarrolladores en qué momento y no debe aplicarse a ciegas. Este artículo estudia principalmente métodos estructurados orientados al flujo de datos.
Método estructurado orientado al flujo de datos
El método estructurado orientado al flujo de datos es un método de análisis de la demanda orientado al flujo de datos y es uno de los métodos más utilizados en el análisis de la demanda. SA es también una actividad de modelaje. Este método utiliza símbolos fáciles de leer, los descompone capa por capa de arriba a abajo según la relación entre la transmisión de datos y la conversión en el software y representa un modelo de software que cumple con los requisitos funcionales. Adecuado para el análisis de requisitos de software de procesamiento de datos. Este método no solo es simple y fácil de dominar, sino que también puede conectarse con el diseño estructurado (SD) en la etapa de diseño para lograr buenos efectos de diseño.
Estrategia de análisis de la descomposición de arriba hacia abajo capa por capa
Los medios básicos del método SA son la "descomposición" y la "abstracción". Estas son dos formas de controlar la complejidad en las técnicas de desarrollo de sistemas. "Abstrae" el sistema en un modelo, que es un cuadro con entrada, salida y nombre del sistema, y luego abre el cuadro y lo descompone capa por capa hasta que pueda entenderse e implementarse. Por tanto, la estrategia de análisis es un proceso de arriba hacia abajo, de lo abstracto a lo concreto. Como se muestra en la Figura 2.
Enfoque estructurado mediante herramientas.
El método SA utiliza métodos de descripción semiformales, como gráficos, para expresar los requisitos, que son concisos y fáciles de entender, y los utiliza para formar la parte principal de la especificación de requisitos. Las herramientas de descripción son
1) Diagrama de flujo de datos: describe de qué partes consta el sistema, cuáles son las conexiones entre las partes, etc. 2) Diccionario de datos: define cada elemento gráfico del diagrama de flujo de datos.
3) Lenguaje estructurado, tabla de decisiones y árbol de decisiones que describen la lógica de procesamiento: Describe en detalle cada procesamiento que no se puede descomponer en el diagrama de flujo de datos.
Debido a que el análisis se basa principalmente en el flujo de datos formado por la transmisión y transformación de datos, el método general de análisis estructurado es utilizar el método de análisis del diagrama de flujo de datos. El resultado final es generar una especificación de requisitos, que. Incluye un conjunto de datos. Un diagrama de flujo, un diccionario de datos que define los componentes del diagrama de flujo de datos y una descripción de la lógica de procesamiento.
Pasos del análisis estructural
Los pasos específicos del uso del método estructurado para analizar los requisitos del sistema son: 1) Comprender el flujo de trabajo del sistema actual y obtener el modelo físico del sistema actual. A través de una investigación detallada del sistema actual, puede comprender el proceso de trabajo del sistema actual y recopilar materiales, archivos, datos, informes, etc. y utilizar gráficos para describir lo que vemos, oímos y recopilamos información y situaciones. Es decir, utilice un modelo para reflejar su comprensión del sistema actual, como dibujar un diagrama de flujo del sistema.
2) Abstraer el modelo lógico del sistema actual. El modelo físico refleja la implementación específica de "cómo hacer" el sistema, elimina factores no esenciales en el modelo físico, extrae factores esenciales, construye un modelo lógico del sistema actual y refleja la función de "qué hacer" de el sistema actual.
3) Establecer un modelo lógico del sistema objetivo. Analice y compare las diferencias lógicas entre el sistema objetivo y el sistema actual, aclare qué debe hacer el sistema objetivo y luego deduzca el modelo lógico del sistema objetivo a partir del modelo lógico del sistema actual.
4) Mayor complementación y optimización. Para describir completamente el sistema objetivo, es necesario realizar algunas adiciones al modelo lógico obtenido.
Explicar la interfaz persona-computadora del sistema objetivo.
Describa los detalles que no se han considerado en detalle hasta ahora (incluido el manejo de errores, el inicio y el final del sistema, los requisitos de entrada/salida del sistema y de rendimiento del sistema, etc.).
Otros ( específicas del sistema y otras propiedades y limitaciones que deben cumplirse) también deben documentarse de forma adecuada. Al final de la fase de análisis, el analista del sistema debe revisar cuidadosamente los archivos del sistema nuevamente con el usuario, esforzándose por encontrar tantos errores en el sistema como sea posible y corregirlos a tiempo antes de que comience a diseñarse el sistema. Sólo después de que los usuarios confirman que el modelo expresa sus requisitos, los documentos del sistema (especificaciones de requisitos de software, etc.) se finalizan en última instancia como un "contrato" entre los usuarios y los desarrolladores de software.
Ventajas y Desventajas del Método Estructurado
1) Ventajas: El método estructurado es un método reconocido, efectivo, maduro y ampliamente utilizado en el análisis de requisitos de software, y es más adecuado para desarrollar datos Manejar el análisis de requisitos de software. Este método utiliza herramientas semiformales, como gráficos para expresar requisitos, que son concisos, fáciles de leer y fáciles de usar, lo que proporciona condiciones favorables para el diseño, las pruebas y la evaluación posteriores. 2) Desventajas: ① El método SA tradicional se utiliza principalmente para el procesamiento de datos. La herramienta principal DFD refleja la función de "qué hacer" del sistema, pero es solo un modelo estático y no refleja la secuencia de procesamiento. , el proceso de control. Por tanto, no es adecuado para describir sistemas de control en tiempo real. ②La tecnología de bases de datos que surgió a finales de la década de 1960 permitió que los datos de muchos sistemas de procesamiento de datos a gran escala se organizaran en forma de bases de datos. La aplicación de DFD en el método SA está limitada al analizar y describir los "requisitos de datos". DFD debe combinarse con el diagrama de entidad-relación (diagrama ER) en la tecnología de bases de datos (al igual que el modelo funcional de IDEF0 se combina con el modelo de información de IDE1 Mismo). El diagrama ER puede aumentar la comprensión de los detalles del almacenamiento de datos, la relación entre datos y datos y la relación entre datos y procesamiento. También resuelve el problema de la representación del contenido de los datos contenidos en DD, describiendo así de manera más completa las necesidades del usuario. el sistema. ③Para algunos sistemas de software con interacción frecuente entre humanos y computadoras, como la reserva de boletos, los sistemas de gestión bancaria, etc., los usuarios están más preocupados por cómo usarlos. Los comandos de entrada, los modos operativos, los modos de respuesta del sistema y los formatos de salida son aspectos importantes de las necesidades del usuario. DFD no es adecuado para describir las necesidades de los sistemas de interfaz hombre-máquina y los métodos SA suelen utilizar lenguaje natural para complementar esta parte. ④Es necesario mejorar la precisión en la descripción de los requisitos del software. 5 Cambios en los requisitos
En el proceso de desarrollo de un proyecto, los usuarios propondrán algunos requisitos nuevos en cualquier momento y pedirán a los desarrolladores que los resuelvan. Estos requisitos a veces se plantean durante la fase de desarrollo y otras veces después. En dos subetapas adyacentes del análisis de la demanda, o en un ciclo iterativo de análisis de la demanda, los resultados del análisis de la demanda de la última etapa o ciclo son inconsistentes con el anterior. A esta inconsistencia la llamamos cambio de demanda. Las principales razones de los cambios en la demanda son las siguientes: 1) Comunicación insuficiente entre desarrolladores y usuarios durante la etapa de análisis de la demanda.
En la etapa de análisis de necesidades, los desarrolladores no se comunicaron bien con los usuarios, por lo que los desarrolladores derivaron las necesidades de los usuarios basándose en la información aproximada proporcionada por los usuarios. Los requisitos obtenidos a través de este análisis de demanda muchas veces están alejados de las necesidades reales de los usuarios, lo que hace que los usuarios propongan cambios. 2) El ciclo de implementación del proyecto es demasiado largo. Con el tiempo, los usuarios obtienen una comprensión más profunda de todo el sistema. Plantearán cada vez más requisitos sobre la interfaz, la función y el rendimiento del módulo. 3) La tecnología se actualiza demasiado rápido. Debido a la rápida actualización de la tecnología, las empresas pueden introducir algunos dispositivos nuevos, y estos dispositivos pueden estar directamente relacionados con nuestro sistema de destino. Dado que este cambio puede ocurrir antes o durante la resolución del problema original del usuario, los desarrolladores deben agregar este nuevo requisito. [3]
Para evitar cambios en los requisitos tanto como sea posible y garantizar una alta estabilidad del análisis de requisitos, se pueden utilizar los siguientes métodos: 1) División clara del trabajo, los analistas de sistemas y los programadores tienen diferentes responsabilidades. . Los analistas de sistemas se sientan entre usuarios y programadores, comunicando el conocimiento y las opiniones de usuarios y desarrolladores. Por un lado, los analistas de sistemas deben ayudar a los usuarios a proponer requisitos para el software desarrollado y, por otro lado, deben comunicarse plenamente con los programadores para explorar su racionalidad y posibilidad de implementación. Como se muestra en la Figura 3, los analistas de sistemas desempeñan un papel importante en la fase de análisis de requisitos.
2) Desarrolladores y usuarios cooperan y se comunican. Los analistas de sistemas deben escuchar atentamente las necesidades de los usuarios y organizar y analizar cuando los usuarios realizan cambios en sus necesidades. Analizar los motivos de los cambios en la demanda y proponer alternativas viables al mismo tiempo, explicar a los usuarios las consecuencias adversas que traerán estos cambios en la demanda para el desarrollo de todo el proyecto; 3) Restricciones contractuales. Debido a que los cambios en la demanda pueden tener un impacto en todo el proyecto, los desarrolladores y usuarios pueden agregar algunos términos contractuales relevantes a los cambios en la demanda al firmar el contrato del proyecto. 4) Establecer documentos de requisitos y versiones de control. El resultado final del análisis de requisitos es un documento del sistema en el que los clientes y desarrolladores tienen una comprensión clara del producto desarrollado. Con este documento, incluso si cambia el rol del desarrollador, no afectará el trabajo preliminar de análisis de requisitos. Cada cambio de requisito tiene una nueva versión. 5) Revisión de requisitos y establecimiento de línea base de requisitos. Para permitir que los desarrolladores comprendan las necesidades de los usuarios en detalle y permitir que diferentes personas verifiquen los requisitos desde diferentes perspectivas, como proponentes de los requisitos (usuarios), a menudo pueden presentar muchas opiniones valiosas durante el proceso de revisión de requisitos y en el Al mismo tiempo, también son la última oportunidad para confirmar los requisitos, lo que puede reducir eficazmente la aparición de cambios en la demanda. Después de que los requisitos hayan sido revisados y aprobados formalmente, se debe determinar la línea base de requisitos y se deben realizar cambios adicionales en los requisitos con base en esta línea base de acuerdo con el proceso de cambio definido por el proyecto. Establecer una base de requisitos minimiza la molestia de los cambios.
La arquitectura de software (software
Arquitectura) es una serie de patrones abstractos relacionados que se utilizan para guiar el diseño de todos los aspectos de grandes sistemas de software. Una arquitectura de software es un bosquejo de un sistema. Los objetos descritos por la arquitectura del software son sistemas compuestos directamente.
Componentes abstractos del sistema. Las conexiones entre componentes describen la comunicación entre componentes de forma clara y relativamente detallada. Durante la fase de implementación, estos componentes abstractos se refinan hasta convertirlos en componentes reales, como una clase u objeto específico. Cara
En el campo del objeto, la conexión entre componentes generalmente se logra a través de interfaces_(Informática).
La arquitectura del software es la base para la construcción de prácticas de software informático. Así como un arquitecto establece los principios y objetivos de diseño de un proyecto de construcción como base para los dibujos de un dibujante, un arquitecto de software o arquitecto de sistemas establece la arquitectura del software como base para soluciones de diseño de sistemas reales para satisfacer las necesidades de varios clientes.
La arquitectura de software es un concepto fácil de entender. La mayoría de los ingenieros (especialmente aquellos con poca experiencia) lo conocerán de forma intuitiva, pero es difícil dar una definición precisa. En particular, el diseño y la arquitectura son difíciles de distinguir claramente: la arquitectura es un aspecto del diseño que se centra en algunas características específicas.
En "Introducción a la Arquitectura de Software", David Garland y Mary Shaw
Considera la arquitectura de software como el aspecto del diseño relacionado con: "Además de los algoritmos computacionales y las estructuras de datos. Además , diseñar y determinar la estructura general del sistema se convierte en un tema nuevo. Las cuestiones estructurales incluyen la estructura organizativa general y el centro de control global; comunicación, sincronización y protocolos de acceso a datos; composición de elementos de diseño; rendimiento; elección de diseños alternativos
Pero un edificio es más que una simple estructura
Sobre Arquitectura lo define como “un sistema en el que se tiene el concepto más elevado de su entorno; ". El marco también incluye la "conformidad" con la integridad del sistema, las limitaciones económicas, las necesidades estéticas y el estilo. No solo enfatiza las consideraciones internas, sino también en el entorno del usuario y el entorno de desarrollo, es decir, centrándose también en consideraciones externas. p>
En el proceso de Unificación Racional, la arquitectura de un sistema de software (en un punto dado) se refiere a la organización o estructura de los componentes importantes del sistema. La arquitectura del software se puede comparar con la arquitectura de un edificio en términos. de su conexión con el propósito, el tema, el material y la estructura. Los ingenieros necesitan una comprensión amplia de la teoría del software y la experiencia correspondiente con hechos y controles.
Diseño de alto nivel de productos software. Los arquitectos de software definen y diseñan la modularidad del software, las interacciones entre módulos, el estilo de la interfaz de usuario, los métodos de interfaz externa, las características de diseño innovadoras y las operaciones y lógica de objetos para cosas de alto nivel.
Y proceso.
En términos generales, la arquitectura de un sistema de software tiene dos elementos:
Es la división de más alto nivel del sistema de software desde el todo hasta las partes.
Un sistema suele estar formado por componentes, y la forma en que estos componentes se forman e interactúan es información importante sobre la estructura del sistema en sí.
Específicamente, incluye componentes arquitectónicos, conectores y flujos de tareas.
Los llamados elementos arquitectónicos son los "ladrillos" centrales que componen el sistema. Los conectores describen las rutas de comunicación, los mecanismos de comunicación y los resultados esperados entre estos elementos. El flujo de tareas describe cómo el sistema los utiliza. elementos y.
El conector cumple con los requisitos.
Las decisiones comerciales y técnicas de más alto nivel, difíciles de cambiar, tomadas para construir el sistema.
Hay muchas decisiones importantes que deben tomarse por adelantado antes de construir un sistema, y una vez que el sistema está diseñado o incluso construido en detalle, estas decisiones son difíciles o incluso imposibles de cambiar. Obviamente, dicha decisión debe ser la decisión más importante relacionada con el éxito o el fracaso del diseño del sistema, y debe estudiarse e investigarse con mucho cuidado.
Se debe utilizar Framework para aplicaciones comunes más grandes, lo que puede ahorrar mucho tiempo. Le permite desarrollar fácilmente un software.