Experiencias sobre cómo utilizar métodos de desarrollo de software orientado a objetos para desarrollar software
La tecnología orientada a objetos es una revolución en la tecnología del software y un hito en la historia del desarrollo de software.
Con el desarrollo de OOP (programación orientada a objetos) a OOD (diseño orientado a objetos) y OOA (análisis orientado a objetos), el método de desarrollo de software orientado a objetos OMT (Técnica de modelado de objetos) finalmente se desarrolló. formado. Este es un método que combina de abajo hacia arriba y de arriba hacia abajo, y se basa en el modelado de objetos, que no solo considera las estructuras de datos de entrada y salida, sino que también incluye las estructuras de datos de todos los objetos. Por lo tanto, OMT ha logrado por completo los objetivos que PAM no ha logrado por completo. No solo eso, la tecnología OO ha logrado avances sustanciales en los tres eslabones clave e indicadores de calidad del desarrollo de software: análisis de la demanda, mantenibilidad y confiabilidad, y resolvió por completo los problemas graves en estos aspectos, anunciando así el fin de la crisis del software.
Inducción ascendente
El primer paso de OMT es comenzar con el planteamiento del problema y construir un modelo de sistema. El sistema de clases se deriva del sistema real, es decir, el modelo de objetos incluye los atributos de la clase, la relación de herencia con subclases y clases principales, y las asociaciones entre clases. Una clase es una abstracción de un grupo de instancias concretas (objetos objetivos) con atributos y comportamientos similares, y una clase principal es el resumen de varias subclases. Se trata entonces de un proceso inductivo ascendente. En el proceso de inducción ascendente, para que la subclase herede de manera más razonable los atributos y comportamientos de la clase principal, es posible que se necesiten modificaciones de arriba hacia abajo para hacer que todo el sistema de clases sea más razonable. Dado que la estructura de este tipo de sistema va de lo concreto a lo abstracto y luego de lo abstracto a lo concreto, se ajusta a las leyes del pensamiento humano, por lo que puede completar las tareas de manera más rápida y conveniente. Esto contrasta marcadamente con el enfoque verticalista de Yourdon. Construir el modelo del sistema con el método Yourdon es el paso más difícil, porque la "arriba" de arriba hacia abajo es un castillo en el aire, que carece de una base sólida y la descomposición funcional es bastante arbitraria, por lo que los desarrolladores deben tener un software rico. experiencia en desarrollo. En OMT, los desarrolladores comunes pueden completar este trabajo rápidamente. Una vez establecido el modelo de objetos, es fácil derivar el modelo dinámico y el modelo funcional sobre esta base. Juntos, estos tres modelos forman el modelo del sistema a resolver.
Descomposición de arriba hacia abajo
El trabajo posterior a que se establece el modelo del sistema es la descomposición. A diferencia del método Yourdon, que se descompone por función, OMT normalmente se descompone por servicio. Un servicio es una colección de funciones relacionadas con el mismo objetivo, como procesamiento de E/S, procesamiento de gráficos, etc. La descomposición en este paso suele ser muy clara y una mayor descomposición de estos subsistemas es relativamente fácil porque se basa en un modelo de sistema más específico. Por lo tanto, OMT también tiene las ventajas del método de arriba hacia abajo, es decir, puede controlar eficazmente la complejidad del módulo y al mismo tiempo evitar la dificultad y la incertidumbre de la descomposición funcional en el método Yourdon.
La base de OMT es el modelo de objetos
Cada clase de objeto se compone de una estructura de datos (propiedad) y una operación (comportamiento), y todas las estructuras de datos relacionadas (incluidos los datos de entrada y salida). estructuras) Todos se han convertido en la base para el desarrollo de software. Por lo tanto, la brecha entre las estructuras de datos de entrada y salida y todo el sistema en el método Jackson y PAM ya no existe en OMT. OMT no sólo tiene las ventajas del método Jackson y PAM, sino que también puede aplicarse a sistemas grandes. Más importante aún, en el método Jackson y el método PAM, cuando su punto de partida: las estructuras de datos de entrada y salida (es decir, los límites del sistema) cambian, todo el software debe anularse y reiniciarse. Sin embargo, en OMT, los cambios en los límites del sistema son solo la adición o eliminación de algunos objetos, y todo el sistema tiene cambios mínimos.
Análisis exhaustivo de requisitos
El análisis de requisitos incompleto es una de las principales razones del fracaso del software. Incluso ahora, este peligro persiste. Los métodos tradicionales de desarrollo de software no permiten que las necesidades del usuario cambien durante el proceso de desarrollo, lo que genera varios problemas. Es por esta razón que
La gente ha propuesto métodos de creación de prototipos, ha lanzado prototipos de exploración, prototipos experimentales y prototipos evolutivos, y ha alentado activamente a los usuarios a mejorar sus necesidades. Después de cada requisito de mejora, se forma un nuevo prototipo evolutivo para que los usuarios lo prueben hasta que estén básicamente satisfechos, lo que mejora en gran medida la tasa de éxito del software.
Pero requiere que los desarrolladores de software generen rápidamente estos prototipos, lo que requiere el soporte de herramientas que generen código automáticamente.
OMT soluciona completamente este problema. Debido a que el proceso de análisis de requisitos ha sido consistente con el proceso de formación del modelo del sistema, las discusiones entre desarrolladores y usuarios comienzan con instancias (entidades) específicas que son familiares para los usuarios. Los desarrolladores deben comprender el sistema real antes de poder derivar el modelo del sistema. Esto permite a los usuarios y desarrolladores tener el mismo lenguaje y evita varios problemas que pueden surgir en el análisis de requisitos tradicional.
La mantenibilidad ha mejorado enormemente.
Los métodos de desarrollo de software antes de OMT se basaban en la descomposición funcional. Aunque la ingeniería de software ha hecho grandes esfuerzos en materia de mantenibilidad, la mantenibilidad del software ha mejorado enormemente. Pero, en esencia, el software basado en descomposición funcional no es fácil de mantener. Porque una vez que cambian las funciones, el sistema de software desarrollado sufrirá cambios importantes, o incluso será anulado y comenzado de nuevo. Lo que es más grave es que en este tipo de sistema de software la modificación es difícil. Por diversas razones, incluso las modificaciones menores pueden introducir
nuevos errores. Por lo tanto, es probable que los métodos de desarrollo tradicionales causen una serie de problemas graves, como un crecimiento descontrolado de los costos del software y la incapacidad de garantizar la calidad del software. Es OMT el que ha mejorado cualitativamente la mantenibilidad del software.
La base de OMT es el modelo de objetos del sistema objetivo, más que la descomposición de funciones. La funcionalidad es el uso de un objeto, que depende de los detalles de la aplicación y de los cambios durante el desarrollo. Dado que los objetos existen objetivamente, la naturaleza del objeto es más estable que el uso del objeto cuando los requisitos cambian, lo que hace que el sistema de software basado en la estructura del objeto sea más estable.
Más importante aún, OMT resuelve por completo la mantenibilidad del software. En los lenguajes OO, las subclases no solo pueden heredar los atributos y comportamientos de la clase principal, sino también sobrecargar ciertos comportamientos (funciones virtuales) de la clase principal. Aprovechando esta característica, podemos modificar funciones fácilmente: introducir una subclase de una determinada clase y sobrecargar algunos comportamientos para modificar (es decir, funciones virtuales o métodos virtuales), es decir, redefinirlos. Dado que ya no se introducen modificaciones en los módulos del programa original, la modificabilidad del software está completamente resuelta y la mantenibilidad del software también está completamente resuelta. La tecnología OO también mejora la confiabilidad y solidez del software.