====== Essays on software design topics ====== These are essays prepared by students of [[:asd|Advanced software design course]]. When ready, please a link to your essay to the appropriate category below. ===== Product requirements ===== - [[template|An example of link to the template for an essay]] - [[https://objectoriented.ru/arch:2024:how-end-user-perceived-product-quality-depends-on-product-requirements-analysis-methods|How end-user perceived product quality depends on product requirements analysis methods]] - [[https://objectoriented.ru/arch:2024:the_role_of_stakeholder_engagement_in_product_requirements_engineering|The role of stakeholder engagement in product requirements engineering]] - [[https://objectoriented.ru/arch:2024:customer-development-strategies-for-startups-lessons-from-successful-companies|Customer development strategies for startups: lessons from successful companies]] - [[https://objectoriented.ru/arch:2024:structured-and-data-modeling-methods-in-domain-modeling|Structured and data modeling methods in domain modeling]] - [[https://objectoriented.ru/arch:2024:mkuzmin|Requirements engineering in the age of AI]] - [[https://objectoriented.ru/arch:2024:ethical-considerations-in-requirements-engineering|Ethical Considerations in Requirements Engineering]] - [[https://objectoriented.ru/arch:2024:aaanisin-essay|(#9) The impact of emotional design on customer journey mapping]] - [[https://objectoriented.ru/arch:2024:the-role-of-software-quality-engineering-in-agile-development| The Role of Software Quality Engineering in Agile Development]] - [[https://objectoriented.ru/arch:2024:the-impact-of-automated-testing-on-software-quality-assurance| The impact of automated testing on software quality assurance]] - [[arch:2024:pan-zhengwu-essay-2024| (#14) Cultural factors influencing software quality engineering practices]] - [[https://objectoriented.ru/arch:2024:the-challenges-of-managing-requirements-in-distributed-teams|The challenges of managing requirements in distributed teams]] - [[https://objectoriented.ru/arch:2024:integrating_jtbd_with_customer_development|Integrating jobs-to-be-done (JTBD) with customer development]] - [[https://objectoriented.ru/arch:2024:the-importance-of-traceability-in-requirements-engineering|The importance of traceability in requirements engineering]] ===== Domain analysis ===== - [[https://objectoriented.ru/arch:2024:the-impact-of-domain-modeling-on-software-quality-and-maintainability|The impact of domain modeling on software quality and maintainability]] - [[arch:2024:case_studies_of_successful_domain_modeling_in_real-world_applications|19. Case studies of successful domain modeling in real-world applications]] - [[https://objectoriented.ru/arch:2024:challenges-of-integrating-static-and-dynamic-models-in-ddd| Challenges of integrating static and dynamic models in DDD]] - [[https://objectoriented.ru/arch:2024:the-role-of-context-mapping-in-domain-modeling| The role of context mapping in domain modeling]] - [[https://objectoriented.ru/arch:2024:The_role_of_formal_methods_in_domain_modeling|The role of formal methods in domain modeling]] - [[https://objectoriented.ru/arch:2024:using-state-machines-for-dynamic-domain-modeling|Using State Machines for Dynamic Domain Modeling]] - [[https://objectoriented.ru/arch:2024:formal-verification-techniques-in-domain-modeling|Formal verification techniques in domain modeling]] ===== UML2 and modeling ===== - [[https://objectoriented.ru/arch:2024:lean-modeling-for-enterprise-software|Lean modeling for enterprise software]] - [[https://objectoriented.ru/arch:2024:understanding_the_uml2_metamodel_structure_purpose|Understanding the UML2 metamodel: structure and purpose]] - [[https://objectoriented.ru/arch:2024:introduction-to-capella|Introduction to Capella : features and capabilities]] - [[https://objectoriented.ru/arch:2024:case_studies_successful_implementation_of_capella_arcadia_atimonin|Case studies: successful implementation of capella and arcadia]] - [[https://objectoriented.ru/arch:2024:using-ocl-for-constraints-in-uml-models|Using OCL for constraints in UML models]] - [[https://objectoriented.ru/arch:2024:model-based-software-engineering-benefits-and-challenges|Model-based software engineering: benefits and challenges]] - [[https://objectoriented.ru/arch:2024:ocl-ocllike-languages-for-embedded-systems|OCL and OCL-like languages for embedded systems]] - [[https://objectoriented.ru/arch:2024:fuml-executable-uml-for-model-execution|fUml: executable UML for model execution]] ===== Data modeling ===== - [[https://objectoriented.ru/arch:2024:Understanding-hub-and-spoke-data-models-structure-and-applications|Understanding hub-and-spoke data models: structure and applications]] - [[https://objectoriented.ru/arch:2024:the_role_of_semantic_networks_in_knowledge_representation|The role of semantic networks in knowledge representation]] - [[https://objectoriented.ru/arch:2024:evolution-of-data-modeling|The evolution of data modeling techniques: from relational to nosql]] - [[https://objectoriented.ru/arch:2024:the-role-of-formal-knowledge-modeling-methods-in-data-representation|The role of formal knowledge modeling methods in data representation]] - [[https://objectoriented.ru/arch:2024:the-role-of-aggregates-in-domain-driven-design| The role of aggregates in domain-driven design]] - [[arch:2024:comparative_analysis_of_er_modeling_and_relational_models|Comparative analysis of entity-relationship (ER) modeling and relational models]] - [[https://objectoriented.ru/arch:2024:graph-data-modeling-approaches-and-unsolved-challenges|Graph data modeling approaches and unsolved challenges]] - [[https://objectoriented.ru/arch:2024:best_practices_for_designing_effective_data_models_for_DWH|Best practices for designing effective data models for DWH]] - [[https://objectoriented.ru/arch:2024:The_role_of_formal_methods_in_domain_modeling|The role of formal methods in domain modeling]] - [[https://objectoriented.ru/arch:2024:dwh_acrhitectures|Data warehousing (DWH) architectures: best practices and challenges]] ===== Software design ===== - [[https://objectoriented.ru/arch:2024:how-would-you-choose-a-detailed-design-method-for-your-next-project|How would you choose a detailed design method for your next project?]] - [[https://objectoriented.ru/arch:2024:benefits-and-drawbacks-of-frameworks-for-application-development|Benefits and drawbacks of frameworks for application development]] - [[https://objectoriented.ru/arch:2024:does-service-orientation-improve-mainainability-facts-and-case-studies|Does service orientation improve mainainability, facts and case studies?]] - [[https://objectoriented.ru/arch:2024:experimental-and-industrial-validation-of-design-patterns|Experimental and industrial validation of design patterns]] - [[https://objectoriented.ru/arch:2024:software-design-patterns-and-other-heuristics-why-do-we-need-them|Software design patterns and other heuristics - why do we need them?]] - [[https://objectoriented.ru/arch:2024:composition-vs-inheritance-for-ocp-in-programming-languages|Composition vs. inheritance for OCP in programming languages]] - [[https://objectoriented.ru/arch:2024:how-do-you-apply-mathematical-and-formal-modeling-to-software-design|How do you apply mathematical and formal modeling to software design?]] ===== High load ===== - [[https://objectoriented.ru/arch:2024:reference-architectures-for-high-load-internet-scale-systems| Reference architectures for high-load Internet-scale systems]] - [[https://objectoriented.ru/arch:2024:does_async_io_help_in_increasing_throughput_in_practical_applications| Does Async IO Help in Increasing Throughput in Practical Applications?]] - [[https://objectoriented.ru/arch:2024:where-does-the-latency-come-from-in-the-api-gateways| Where does the latency come from in the API gateways?]] - [[https://objectoriented.ru/arch:2024:a-comparison-of-load-balancing-approaches-in-k8s-clusters-on-cloud| A comparison of load balancing approaches in k8s clusters on-cloud]] - [[https://objectoriented.ru/arch:2024:rdbms-k8s|Reliable RDBMS deployment on K8s: what are the alternatives?]] ===== Microservices architecture ===== - [[https://objectoriented.ru/arch:2024:event_sourcing_and_cqrs| Event Sourcing and CQRS as a Basis for MSApp Design]] - [[https://objectoriented.ru/arch:2024:crdt_in_api_design|Uses of CRDT in API design of microservices applications]] - [[https://objectoriented.ru/arch:2024:secure_msapp_and_manage_access|How can we secure an MSAapp and manage access efficiently?]] - [[https://objectoriented.ru/arch:2024:async_api_for_microservices|Asynchronous APIs for microservices: current state and trends]] - [[https://objectoriented.ru/arch:2024:delivering_domain_events_in_msa_applicable_design_patterns|Delivering Domain Events in MSA: Applicable Design Patterns]] - [[https://objectoriented.ru/arch:2024:secure_msapp_and_manage_access|How can we secure an MSAapp and manage access efficiently?]] - [[https://objectoriented.ru/arch:2024:when-to-use-2pc-sagas-or-just-auto-commit-for-microservices-applications|When to use 2PC, sagas or just auto-commit for microservices applications]] - [[https://objectoriented.ru/arch:2024:sso_in_microservices_applications|Single Sign-On in microservices applications]] - [[https://objectoriented.ru/arch:2024:network_security_and_zero_trust_in_cloud_native_applications|Network security and zero-trust in cloud native applications]] ===== Future trends ===== - [[https://objectoriented.ru/arch:2024:serving_machine_learning_models_ONNX_and_other_standards|Serving machine learning models, ONNX and other standards]] - [[https://objectoriented.ru/arch:2024:testingai|Concolic, symbolic, formal - what do we need to test AI services?]] - [[https://objectoriented.ru/arch:2024:crdt_patterns_are_we_call_it|Domain-driven CRDT patterns, are we CALM yet?]] - [[https://objectoriented.ru/arch:2024:4gl-5gl-essay|Future of programming languages: 4GL vs 5GL vs Natural Languages]] - [[https://objectoriented.ru/arch:2024:syed-taqi-ali|Smart Fog in Smart Cities - reference architectures and open problems]] - [[https://objectoriented.ru/arch:2024:viable-applications-of-machine-learning-to-software-engineering| Viable applications of machine learning to software engineering]] - [[https://objectoriented.ru/arch:2024:syed-ali|How to design Societal-scale (aka Ultra-Large scale) systems]]