Código fuente del sistema de revisión de recetas
Diseño orientado a objetos
Programación orientada a objetos
Análisis orientado a objetos
Diseño orientado a objetos
Como todos sabemos, la tecnología orientada a objetos como tecnología de programación se propuso por primera vez a finales de la década de 1960 y se utilizó en aplicaciones Simulink.
Desarrollo secuencial. En la década de 1970, la orientación a objetos se convirtió en una característica importante del lenguaje Smalltalk. En aquella época, la tecnología orientada a objetos se utilizaba principalmente para la programación. En la década de 1990, la atención de la gente pasó gradualmente de la programación al análisis y diseño de sistemas, utilizando vistas de objetos.
Haga clic para comprender el mundo real y las soluciones factibles a los problemas de diseño. Hay muchos métodos OOA y OOD más adelante. Sin embargo, estos métodos
aún no están muy maduros y existe controversia sobre el límite entre OOA y OOD. Algunas personas creen que el desarrollo de software orientado a objetos
Este proceso se puede dividir en tres etapas: análisis orientado a objetos, diseño orientado a objetos y programación orientada a objetos. Algunas personas creen que el análisis y el diseño pueden superponerse sin una distinción estricta; otros utilizan métodos tradicionales para el análisis y el diseño, utilizando programación orientada a objetos.
Idioma de implementación del sistema. O
Algunos trabajos representativos de OA/OOD incluyen el método OOAD de Gray. Butch, Coder & Your
Métodos OOA y OOD, método OOA de Sh Laer & Mailer, método OOAD de Lundborg, etc. Diferentes enfoques
Este sistema refleja las diferentes comprensiones de las personas sobre el análisis orientado a objetos, el diseño orientado a objetos y los procesos de desarrollo de software orientados a objetos. El objetivo principal de este artículo
El objetivo es descubrir los límites entre los métodos OOA y OOD existentes mediante el análisis de su singularidad.
Este artículo analiza las dificultades de la transición del análisis orientado a objetos al diseño orientado a objetos y analiza los principales esfuerzos involucrados en realizar esta transición.
Ooa: El trabajo principal de la fase de análisis es comprender el problema y el modelado de requisitos, y mapear los problemas del mundo real al dominio del problema. En este momento
En esta etapa, es necesario aclarar qué requisitos funcionales ha propuesto el usuario, qué componentes debe tener el sistema, qué estructura debe usarse para completar estos requisitos y escribir requisitos detallados. especificación. OOA introduce muchos conceptos y principios orientados a objetos, como objetos, propiedades y servicios.
, herencia, encapsulación, etc. , y utilizar estos conceptos y principios para analizar, reconocer y comprender el mundo objetivo, y extraer entidades del mundo objetivo.
Como objeto en el dominio del problema, es decir, el objeto del problema, se analiza la estructura del problema en el mundo objetivo y está claro que para completar la función del sistema, los objetos
debe estar conectado e interactivo.
2 AM (Agile Modeling) es una actitud, no un proceso descriptivo. AM es una colección de valores a los que se adhieren los modeladores ágiles, principios en los que creen y prácticas que aplican. AM describe un estilo de modelaje. Cuando se aplica en un entorno ágil, puede mejorar la calidad y la velocidad del desarrollo, evitando al mismo tiempo simplificaciones excesivas y expectativas poco realistas. La AM no es una receta para el desarrollo. Si está buscando orientación detallada, como crear diagramas de secuencia UML o dibujar diagramas de flujo de la interfaz de usuario, puede consultar los numerosos libros de modelado enumerados en "Modelado de artefactos". Recomiendo especialmente mi libro "Introducción a objetos 2/e" 》. (Aunque no es justo).
AM es un complemento a los métodos existentes, no una metodología completa. El objetivo principal de AM es el modelado, seguido de la documentación. En otras palabras, la tecnología AM puede mejorar los resultados del modelado basándose en la adopción por parte de su equipo de métodos ágiles como la programación extrema, el método de desarrollo de sistemas dinámicos (DSDM) y Crystal Clear. La AM también se puede utilizar en procesos tradicionales (como los procesos unificados), aunque la menor agilidad de dichos procesos hará que la AM sea menos exitosa.
AM es un método de trabajo colaborativo eficaz que satisface las necesidades de las partes interesadas del proyecto. Los desarrolladores ágiles trabajan con las partes interesadas del proyecto, quienes se turnan para desempeñar un papel directo y activo en el desarrollo del sistema. La palabra "yo" no existe en el diccionario de "ágil".
AM es válido y ha pasado a ser válido. A medida que aprende más sobre AM, hay una cosa que puede resultarle difícil de aceptar. AM está muy preocupado por la eficacia.
AM le dice: Maximice la inversión de las partes interesadas en su proyecto; Construya modelos o documentos cuando haya un propósito claro y necesite comprender las necesidades de la audiencia; Utilice artefactos apropiados para documentar la situación en cuestión. Siempre que sea posible, cree un modelo simple.
AM proviene de la práctica, no de la teoría de la torre de marfil. El objetivo de AM es describir técnicas de modelado de sistemas de una manera que sea lo suficientemente eficiente y competente para el trabajo en cuestión. Mis colegas y yo en Luoning International llevamos muchos años poniendo en práctica muchas tecnologías de fabricación aditiva. Las tecnologías que estamos considerando son aplicables a una gama muy amplia de clientes, en diferentes sectores industriales. Y desde febrero de 2001, cientos de expertos en modelado han examinado y discutido exhaustivamente estas tecnologías a través de la "Lista de correo de modelado ágil" (/feedback.htm).
AM no es una panacea. El modelado ágil es, en el mejor de los casos, una técnica eficaz para mejorar los resultados de desarrollo de software de muchos expertos. No es una panacea, puede resolver todos tus problemas de desarrollo. Si trabajas duro; si te concentras en ello; si realmente adoptas sus valores, principios y prácticas, puedes mejorar tu desempeño como desarrollador;
AM está dirigido a desarrolladores comunes, pero no excluye a personas capaces. Los valores, principios y prácticas de AM son fáciles de entender y muchos de ellos pueden haber sido adoptados o anticipados durante muchos años. La aplicación de la tecnología AM no requiere que usted practique flotar en el agua, pero requiere que tenga algunas habilidades básicas de desarrollo de software. Lo más difícil de la AM es que te obliga a aprender una gama más amplia de técnicas de modelado, lo cual es una actividad continua a largo plazo. Puede ser difícil comenzar a aprender a modelar, pero puedes intentar aprender una técnica a la vez.
AM no se opone a la documentación. La creación y el mantenimiento de documentación aumentarán la inversión de las partes interesadas en el proyecto. Los documentos ágiles deben ser lo más simples y pequeños posible. El objetivo es simplemente centrarse en lo que es directamente relevante para el sistema que se está desarrollando actualmente y comprender completamente las necesidades de la audiencia.
AM no se opone a las herramientas CASE. Los modeladores ágiles utilizan herramientas que ayudan a los desarrolladores a aumentar la eficiencia y el valor. Además, hacen todo lo posible para utilizar las herramientas más simples que puedan realizar el trabajo.
AM no es apto para todos.
En primer lugar, el valor del modelado ágil
Los valores de AM incluyen los cuatro valores de XP: comunicación, simplicidad, retroalimentación y coraje. Además, amplía un quinto valor: la humildad.
Comunicar. El modelado facilita la comunicación no sólo entre los desarrolladores del equipo, sino también entre el equipo y las partes interesadas del proyecto.
Sencillo. Dibuja uno o dos diagramas en lugar de docenas o incluso cientos de líneas de código. De esta manera, el modelado se convierte en la clave para simplificar el software y los procesos (de desarrollo) de software. Esto es muy importante para los desarrolladores: es simple, fácil de descubrir nuevas ideas y fácil de mejorar a medida que se profundiza su comprensión.
Comentarios. Kent Baker lo explica bien en Extreme Programming: "El optimismo es la enfermedad profesional de la programación y la retroalimentación es su prescripción". Al comunicar sus ideas a través de diagramas, puede obtener retroalimentación rápidamente y actuar según las sugerencias.
Coraje. El coraje es importante. Cuando su decisión resulta inapropiada, necesita tomar una decisión importante para abandonar o reestructurar su trabajo y corregir su dirección.
Humildad. Los mejores desarrolladores tienen la virtud de la humildad y siempre son conscientes de que no lo saben todo. De hecho, tanto los desarrolladores como los clientes, e incluso todas las partes interesadas del proyecto, tienen sus propias áreas de especialización y pueden contribuir al proyecto. Un enfoque eficaz es asumir que todos los involucrados en el proyecto tienen el mismo valor y deben ser tratados con respeto.
2. Principios del modelado ágil
El modelado ágil (AM) define una serie de principios básicos y principios auxiliares, sentando las bases para las prácticas de modelado en proyectos de desarrollo de software. Algunos de estos principios se han tomado prestados de XP y se describen en detalle en Explicación de la programación extrema. Algunos de los principios de XP se derivan de una conocida ingeniería de software. ¡La idea de reutilizar está en todas partes! Básicamente, la explicación de estos principios en este artículo se centra en cómo afectan el trabajo de modelado. De esta manera, podemos ver estos principios tomados de XP desde otra perspectiva;
Principios fundamentales:
Promover la simplicidad. Al realizar trabajos de desarrollo, hay que defender que la solución más sencilla es la mejor. No construyas demasiado tu software.
En términos de AM, si no necesita esta funcionalidad adicional ahora, no la agregue al modelo. Sea valiente: no es necesario sobremodelar el sistema ahora, simplemente modelelo basándose en los requisitos existentes y luego refactorice el sistema cuando los requisitos cambien en el futuro. Mantenga su modelo lo más simple posible.
Acepta el cambio. Las necesidades cambian todo el tiempo, al igual que la comprensión que la gente tiene de ellas. Durante el transcurso del proyecto, las partes interesadas del proyecto pueden cambiar, se unirán nuevas personas y las antiguas se irán. Las perspectivas de las partes interesadas del proyecto también pueden cambiar, al igual que los objetivos y los criterios de éxito de sus esfuerzos. Esto significa que el entorno del proyecto cambia constantemente a medida que avanza el proyecto, por lo que sus métodos de desarrollo deben reflejar esta realidad.
Tu segundo objetivo es la sostenibilidad. Incluso si su equipo ha entregado un sistema funcional a los usuarios, su proyecto aún puede fallar: satisfaga las necesidades de las partes interesadas de su proyecto, incluido el hecho de que su sistema debe ser lo suficientemente robusto como para adaptarse a una futura expansión. Como solía decir Alistair Cockburn, cuando participas en una competencia de desarrollo de software, tu segundo objetivo es prepararte para la siguiente competencia. La sostenibilidad puede referirse a la próxima versión principal del sistema o al funcionamiento y soporte del sistema que está construyendo. Para hacer esto, no solo debe crear software de alta calidad, sino también crear suficiente documentación y materiales de soporte para garantizar que la competencia posterior se pueda llevar a cabo de manera efectiva. Hay muchos factores que desea considerar, incluido si su equipo actual puede llegar al próximo juego, el entorno del próximo juego y la importancia del próximo juego para su organización. En pocas palabras, cuando te desarrollas, necesitas poder imaginar el futuro.
Cambios incrementales. Un concepto importante relacionado con el modelaje es que no es necesario tener todo listo al principio. De hecho, incluso si desea hacer esto, es poco probable. Además, no es necesario que incluyas todos los detalles en el modelo, solo necesitas los suficientes. No es necesario intentar construir un modelo que lo abarque todo desde el principio. Solo necesita desarrollar un modelo pequeño, o resumir el modelo, sentar una buena base y luego mejorarlo lentamente o descartarlo cuando ya no sea necesario. Ésta es la idea de aumento.
Maximizar la inversión de las partes interesadas. Las partes interesadas de su proyecto deberán invertir tiempo, dinero, equipos y otros recursos para desarrollar software que satisfaga sus necesidades. Las partes interesadas deberían poder elegir la mejor forma de invertir y pedirle a su equipo que no desperdicie recursos. Además, tienen la última palabra a la hora de decidir cuántos recursos invertir. Si estos recursos fueran suyos, ¿le gustaría que se hicieran mal uso de ellos?
Modelado con propósito. Para sus propios artefactos, como modelos, código fuente y documentación, muchos desarrolladores se preocupan por si son lo suficientemente detallados, demasiado detallados o lo suficientemente correctos. No debes modelar sin sentido, primero debes preguntarte por qué quieres construir este artefacto y para quién. En relación con el modelado, tal vez haya algún aspecto del software sobre el que deberías saber más. Tal vez necesite comunicar su enfoque a la alta dirección para que el proyecto funcione sin problemas. Quizás necesite crear un documento que describa el sistema para que otros puedan operarlo, mantenerlo y mejorarlo. Si ni siquiera sabes por qué modelas y para quién, ¿por qué sigues preocupándote? Primero, debe determinar el propósito del modelado y la audiencia del modelo, y luego asegurarse de que el modelo sea correcto y lo suficientemente detallado. Una vez que el modelo logre sus objetivos, puede finalizar su trabajo actual y dedicar su energía a otras tareas, como escribir código para probar el funcionamiento del modelo. Este principio también se puede aplicar para cambiar un modelo existente: si desea cambiar algo, tal vez un modelo conocido, debe tener las razones correctas para realizar el cambio (tal vez para respaldar un nuevo requisito o para garantizar la simplicidad de la reconstrucción basada en el modelo existente). sobre la naturaleza del problema). Una implicación importante de este principio es que debes conocer a tu audiencia, incluso si eres tú mismo. Por ejemplo, si está modelando personal de mantenimiento, ¿qué necesitan exactamente? ¿Es suficiente un documento detallado de 500 páginas o un resumen del trabajo de 10 páginas? ¿Usted no sabe? Ve a hablar con ellos y mira lo que quieres.
Varios modelos. El desarrollo de software requiere múltiples modelos porque cada modelo solo puede describir un aspecto del software. "¿Qué modelos necesitamos para desarrollar las aplicaciones empresariales actuales?" Teniendo en cuenta la complejidad del software actual, su caja de herramientas de modelado debería contener muchas técnicas útiles (consulte Modeling Artifacts de AM para obtener una lista de artefactos). Es importante destacar que no es necesario desarrollar todos los modelos para un sistema, sino seleccionar algunos según las características específicas del sistema. Diferentes sistemas utilizan diferentes modelos.
Por ejemplo, al igual que con los trabajos de reparación del hogar, no es necesario utilizar todas las herramientas de la caja de herramientas para cada trabajo, sino una herramienta a la vez. Por ejemplo, es posible que prefiera algunas herramientas. Asimismo, es posible que prefieras un determinado modelo sobre otro. ¿Cuántos artefactos de modelado hay disponibles? Si desea conocer más detalles sobre esto, enumeré las partes relevantes de UML cuando se enfrenta a UML. Si desea obtener más información, puede consultar el documento técnico "Introducción a los objetos: introducción a la tecnología de modelado ágil".
Trabajo de alta calidad. A nadie le gusta un mal trabajo. A las personas que hacen el trabajo no les gusta porque no hay sensación de logro; a las personas que son responsables de refactorizar este trabajo en el futuro (por alguna razón) no les gusta porque es difícil de entender y actualizar para los usuarios finales; No me gusta porque es demasiado frágil, propenso a errores y no cumple con sus expectativas.
Retroalimentación rápida. El tiempo entre empezar a actuar y recibir retroalimentación de la acción es fundamental. Desarrollar un modelo con otras personas le permite obtener retroalimentación inmediata sobre sus ideas, especialmente si utiliza * * técnicas de modelado en su trabajo, como materiales básicos de modelado como pizarras, tarjetas CRC o notas adhesivas. Trabaje estrechamente con sus clientes para comprender sus necesidades, analizarlas o desarrollar una interfaz de usuario que satisfaga sus necesidades para que tenga la oportunidad de obtener comentarios rápidamente.
El software es tu principal objetivo. El objetivo principal del desarrollo de software es producir software que satisfaga las necesidades de las partes interesadas del proyecto de manera eficiente, en lugar de producir documentos irrelevantes, artefactos de gestión irrelevantes o incluso modelos irrelevantes. Cualquier actividad que no cumpla con este principio y no contribuya al logro de los objetivos debe ser revisada o incluso cancelada.
Viaje ligero. Haces una obra de arte y luego decides conservarla. Con el tiempo, estos artefactos requieren mantenimiento. Si decide mantener siete modelos, cada vez que hay cambios (se plantean nuevos requisitos, se actualizan los requisitos originales, el equipo acepta nuevos métodos y adopta nuevas tecnologías...), debe considerar que los cambios en estos siete modelos impactan y toman medidas correspondientes. Y si quieres conservar sólo tres modelos, obviamente, te costará mucho menos esfuerzo lograr el mismo cambio, y tu flexibilidad aumentará porque viajas con poco equipaje. Del mismo modo, cuanto más complejos y detallados sean sus modelos, más difícil será implementar cambios (cuanto más pesado sea cada modelo, mayor será la carga de mantenimiento). Cada vez que decide conservar un modelo, debe sopesar cuánto beneficiará al equipo la información contenida en el modelo (por lo que es necesario que haya una mayor comunicación entre el equipo y entre el equipo y las partes interesadas del proyecto). Nunca subestimes la seriedad de las compensaciones. Si una persona quiere ir al desierto, definitivamente traerá un mapa, un sombrero, zapatos de buena calidad y una botella de agua. Si trajera cientos de galones de agua, todas las herramientas de supervivencia imaginables y muchos libros sobre el desierto, ¿aún podría cruzar el desierto? De la misma manera, si un equipo de desarrollo decide desarrollar y mantener un documento de requisitos detallado, un conjunto detallado de modelos de análisis, un conjunto de modelos de arquitectura detallados y un conjunto de modelos de diseño detallados, pronto descubrirán que la mayoría de las veces No están escribiendo código fuente, sino actualizando la documentación.
Principios complementarios:
El contenido es más importante que la apariencia. Un modelo puede adoptar muchas formas. Por ejemplo, se puede establecer una especificación de interfaz de usuario (prototipo básico/de baja precisión) colocando notas adhesivas en una hoja de papel. Su expresión puede ser un boceto en papel o una pizarra, un prototipo tradicional construido utilizando herramientas de creación de prototipos o herramientas de programación, o un documento formal que contiene una interfaz visual y una descripción textual. Curiosamente, los modelos no son necesariamente documentos. A menudo se utilizan como entrada para otros artefactos, como el código fuente, pero no es necesario tratarlos como documentación formal, incluso si son gráficos complejos creados con herramientas CASE. Reconozca que debe aprovechar el modelado en lugar de gastar energía creando y manteniendo documentación.
Cuando tres personas caminan juntas, yo debo ser mi maestro. No se puede dominar completamente una tecnología. Siempre tienes la oportunidad de aprender cosas nuevas y ampliar tus conocimientos. Aprovecha esta oportunidad para colaborar con otros, aprender de otros, probar nuevas formas de hacer las cosas y pensar qué hacer y qué no hacer. La tecnología cambia muy rápidamente: las tecnologías existentes (como Java) avanzan a un ritmo increíble y se producen nuevas tecnologías (como C# y .NET) de forma regular. Las mejoras en la tecnología de desarrollo existente serán relativamente lentas, pero también están mejorando constantemente: la industria informática es una industria y hemos dominado los principios básicos de la experimentación, pero todavía estamos aprendiendo y practicando para mejorar nuestra comprensión de la misma. Trabajamos en una industria donde el cambio es algo común.
Debemos aprovechar cada oportunidad para aprender nuevas formas de hacer las cosas mediante la capacitación, la educación, el pensamiento, la lectura y el trabajo con otros.
Conoce tu modelo. Debido a que utilizará varios modelos, necesita conocer sus fortalezas y debilidades para poder utilizarlos de manera efectiva.
Conoce tus herramientas. El software, como las herramientas de dibujo y las herramientas de modelado, tiene varias funciones. Si va a utilizar una herramienta de modelado, debe saber cuándo es apropiada y cuándo no.
Ajustes locales. Su enfoque de desarrollo de software debe reflejar su entorno, incluidas las características de su organización, las características de las partes interesadas de su proyecto y las características del proyecto mismo. Los problemas que pueden verse afectados incluyen: las técnicas de modelado que utiliza (tal vez sus usuarios insistan en ver una interfaz de usuario detallada en lugar de un boceto inicial o un prototipo básico); el presupuesto; o ya tiene una licencia para las herramientas CASE); el proceso de software que sigue (su organización adopta un proceso de desarrollo XP, o RUP, o su propio proceso). Entonces ajusta su enfoque, tal vez específico del proyecto, tal vez individual. Por ejemplo, algunos desarrolladores tienden a utilizar una determinada herramienta mientras que otros no. Algunas personas dedican mucho esfuerzo a codificar y casi nada a modelar, y otras prefieren dedicar más tiempo a modelar.
Comunicarse de forma abierta y honesta. Las personas deben poder hacer sugerencias libremente y deben sentirse libres. Una sugerencia podría ser una idea relacionada con el modelo: a alguien se le podría ocurrir algún nuevo enfoque de diseño o una nueva comprensión de un requisito; podría ser una mala noticia, como un retraso en el cronograma o podría ser simplemente un informe sobre las condiciones laborales; La comunicación abierta y honesta permite a las personas tomar mejores decisiones porque la información en la que se basan es más precisa.
Utiliza la intuición de las buenas personas. A veces algo se siente mal, o es inconsistente, o algo no se siente bien. De hecho, este sentimiento probablemente sea cierto. A medida que aumente su experiencia en el desarrollo de software, su intuición se volverá más aguda y lo que su intuición le diga inconscientemente puede ser la clave de su trabajo. Si su intuición le dice que un requisito no tiene sentido, entonces no es necesario gastar mucha energía discutiendo este tema con los usuarios. Si su instinto le dice que alguna arquitectura no satisface sus necesidades, necesita construir un prototipo técnico rápido para validar su teoría. Si su intuición le dice que el método de diseño A es mejor que el método de diseño B, y no hay ninguna razón sólida para que elija un determinado método, entonces elija el método A. El valor del coraje le ha dicho que si su intuición está probada en el El futuro es malo y usted tiene el poder de remediar la situación. Es importante que tengas esa confianza.
En tercer lugar, la práctica del modelado ágil
El modelado ágil (AM) define un conjunto de prácticas centrales y prácticas complementarias basadas en los principios de AM, algunas de las cuales ya se utilizan en la programación extrema ( XP) y se analiza en detalle en el libro "Explicación de la programación extrema". Al igual que los principios de AM, cuando describamos este conjunto de prácticas, nos centraremos en el proceso de modelado, lo que le permitirá observar estos materiales que han sido adoptados o adoptados por XP desde otra perspectiva.
La arquitectura lógica del software especifica de qué elementos lógicos está compuesto el sistema de software y la relación entre estos elementos lógicos.
Los elementos lógicos del software generalmente se refieren a módulos funcionales en un cierto nivel, desde las conocidas capas lógicas, subsistemas y módulos hasta clases pequeñas. No existe un estándar único para todos según el cual los módulos funcionales deban descomponerse para concluir un diseño de arquitectura de software, siempre que sea lo suficientemente claro y simple como para desarrollarlo individualmente. Por lo tanto, en la práctica, a menudo definimos el diseño arquitectónico relacionado con mecanismos clave como clases y definimos funciones generales como interfaces de módulos o incluso subsistemas.