Tagged articles

Software Design

439 articles · Page 4 of 5
Java Interview Crash Guide
Java Interview Crash Guide
Mar 10, 2021 · Fundamentals

Why Abstract Thinking Is the Secret Weapon for Better Code Design

This article explains how abstract thinking underpins software engineering, covering definitions, the relationship between language and abstraction, levels of abstraction, layered design, the pitfalls of duplicate code and forced casts, and practical ways to strengthen one’s abstract reasoning skills.

Coding PracticesModelingObject-Oriented
0 likes · 22 min read
Why Abstract Thinking Is the Secret Weapon for Better Code Design
Architecture Digest
Architecture Digest
Mar 3, 2021 · Backend Development

Integrating Domain‑Driven Design with Microservices: Benefits, Drawbacks, and Practical Guidance

This article explains how Domain‑Driven Design complements microservice architecture by addressing functional partitioning, clarifying bounded contexts, and improving scalability, while also discussing microservice drawbacks and practical guidelines for splitting complex systems in modern applications.

Backend ArchitectureDDDDomain modeling
0 likes · 9 min read
Integrating Domain‑Driven Design with Microservices: Benefits, Drawbacks, and Practical Guidance
Liangxu Linux
Liangxu Linux
Feb 19, 2021 · Fundamentals

Mastering Code Smells: Identify and Refactor Common Bad Practices

This guide explains the most frequent code smells—Long Method, Large Class, Duplicated Code, Long Parameter List, Shotgun Surgery, Speculative Generality, and excessive comments—detailing why they harm readability and maintainability, and provides concrete refactoring techniques with Java examples to produce cleaner, more modular software.

SOLIDSoftware Designbest practices
0 likes · 14 min read
Mastering Code Smells: Identify and Refactor Common Bad Practices
21CTO
21CTO
Feb 6, 2021 · Fundamentals

Why Are Reusable Components So Hard? A FP vs OO FizzBuzz Experiment

The article explores why building truly reusable components is challenging by comparing a concise functional F# implementation of FizzBuzz with a more verbose object‑oriented C# version, highlighting how language paradigms and design assumptions affect modularity, coupling, and extensibility.

C++F*Functional Programming
0 likes · 11 min read
Why Are Reusable Components So Hard? A FP vs OO FizzBuzz Experiment
ITFLY8 Architecture Home
ITFLY8 Architecture Home
Feb 6, 2021 · Fundamentals

Mastering Software Design Docs: A Practical Guide to Effective Specs

This article explains why software design documents are essential, outlines the key sections they should contain, offers concrete writing tips, and provides a step‑by‑step process for creating, reviewing, and iterating on design specs to improve project outcomes and reduce risk.

Engineering ProcessSoftware Designbest practices
0 likes · 15 min read
Mastering Software Design Docs: A Practical Guide to Effective Specs
Programmer DD
Programmer DD
Jan 27, 2021 · Backend Development

Why Service Layer Interfaces Matter: Boosting Maintainability and Testability

The article explains that while a Service layer may seem unnecessary for simple business logic, it becomes essential as applications grow, offering benefits such as handling complex operations, supporting reuse across controllers, facilitating unit testing, and enabling flexible business logic composition.

Backend ArchitectureService LayerSoftware Design
0 likes · 3 min read
Why Service Layer Interfaces Matter: Boosting Maintainability and Testability
Selected Java Interview Questions
Selected Java Interview Questions
Jan 19, 2021 · Backend Development

Designing a Monolithic Application for Future Microservice Migration: Best Practices and Code Structure

The article explains how to design a monolithic Java application with clear business boundaries, modular code organization, MVC layering, and disciplined controller logic so that it can be smoothly refactored into a micro‑service architecture, illustrating the approach with directory trees, package schemes, and sample CommonResult code.

DDDMVCSoftware Design
0 likes · 11 min read
Designing a Monolithic Application for Future Microservice Migration: Best Practices and Code Structure
Architect's Tech Stack
Architect's Tech Stack
Dec 21, 2020 · Fundamentals

Refactoring Principles, Code Smells, and Refactoring Techniques

This article explains the concept of refactoring, its motivations and timing, enumerates common code smells, and provides detailed refactoring techniques—including extracting methods, moving functions, encapsulating data, simplifying conditionals, and handling inheritance—to improve software design and maintainability.

Object-OrientedSoftware Designbest practices
0 likes · 21 min read
Refactoring Principles, Code Smells, and Refactoring Techniques
ITPUB
ITPUB
Dec 15, 2020 · Fundamentals

Essential Code Review Principles Every Engineer Should Master

This article compiles practical code‑review guidelines, well‑known architecture principles, and personal engineering habits—covering self‑explaining code, DRY, dependency inversion, error handling, testing strategies, and common pitfalls—to help developers write maintainable, high‑quality software.

Code ReviewSoftware Designarchitecture principles
0 likes · 46 min read
Essential Code Review Principles Every Engineer Should Master
Selected Java Interview Questions
Selected Java Interview Questions
Dec 6, 2020 · Fundamentals

Principles and Practices for Effective Code Review and Software Engineering

The article presents a comprehensive guide on why developers and leaders must perform code reviews, identifies common pitfalls such as duplicated code, premature optimization and over‑engineered OOP, and offers concrete principles, model‑design advice, and Golang examples to improve code quality and maintainability.

Code ReviewSoftware DesignSoftware Engineering
0 likes · 42 min read
Principles and Practices for Effective Code Review and Software Engineering
Code Ape Tech Column
Code Ape Tech Column
Dec 1, 2020 · Information Security

Why Calling Everyone a “User” Is a Hidden Security Risk

The article explains how the vague term “user” creates design flaws and security vulnerabilities across domains such as airline booking systems, Unix environments, and SaaS platforms, and argues for precise terminology to avoid costly rework and confused‑deputy attacks.

Software DesignTerminologyUser Modeling
0 likes · 7 min read
Why Calling Everyone a “User” Is a Hidden Security Risk
Top Architect
Top Architect
Nov 16, 2020 · Mobile Development

Building a C++ Cross‑Platform Framework for the WeChat Pay Client

This article describes how a C++‑based cross‑platform framework was created to unify iOS and Android implementations of WeChat Pay, detailing the architectural challenges, the introduction of UseCase‑driven business flow, a routing mechanism, improved network request handling, and standardized data passing that together reduced code size, improved stability, and boosted development productivity.

C++Software DesignWeChat Pay
0 likes · 14 min read
Building a C++ Cross‑Platform Framework for the WeChat Pay Client
Architect
Architect
Nov 7, 2020 · Fundamentals

Understanding System Architecture and Common Architectural Patterns

This article explains the concept of system architecture, why it matters, the challenges it faces such as complexity and changeability, and reviews major architectural patterns—including client‑server, peer‑to‑peer, MVC, layered, micro‑service, event‑source, and hexagonal—providing a solid foundation for designing robust software systems.

Software Designarchitectural patternssystem architecture
0 likes · 16 min read
Understanding System Architecture and Common Architectural Patterns
IT Architects Alliance
IT Architects Alliance
Nov 2, 2020 · Backend Development

How DDD Can Tame Complex Business Logic in Modern Backend Systems

This article explores how Domain‑Driven Design helps the Tongtian Tower platform manage rapidly growing business complexity by separating business and technical concerns, introducing strategic and tactical design, bounded contexts, layered and hexagonal architectures, and complementary patterns such as CQRS and domain primitives.

Backend ArchitectureDomain modelingDomain-Driven Design
0 likes · 40 min read
How DDD Can Tame Complex Business Logic in Modern Backend Systems
Alibaba Cloud Native
Alibaba Cloud Native
Oct 17, 2020 · Backend Development

Conquering Complex Business Logic: A Matrix Analysis Method to Eliminate if‑else

This article explains why excessive if‑else code harms maintainability, introduces polymorphic extension and code‑separation strategies, and presents a matrix‑analysis methodology that uses multi‑dimensional thinking to systematically design, model, and simplify complex business workflows.

Code OrganizationSoftware Designbusiness logic
0 likes · 14 min read
Conquering Complex Business Logic: A Matrix Analysis Method to Eliminate if‑else
JD Cloud Developers
JD Cloud Developers
Oct 9, 2020 · Fundamentals

4 Programming Habits to Unlearn for Cleaner, More Efficient Code

This article identifies four common programming patterns—loops, conditional statements, vague variable names, and global scope—that hinder code clarity and maintainability, and shows how to replace them with higher‑order functions, data‑driven structures, purposeful naming, and encapsulation techniques.

Code RefactoringFunctional ProgrammingJavaScript
0 likes · 9 min read
4 Programming Habits to Unlearn for Cleaner, More Efficient Code
ITFLY8 Architecture Home
ITFLY8 Architecture Home
Oct 5, 2020 · Cloud Native

Should Microservices Be Your Default Architecture? Key Questions to Ask

Before defaulting to a microservices architecture, developers should evaluate whether their application is large enough, truly needs component scaling, can handle cross-service transactions, and can tolerate increased latency and complexity, as these factors determine if microservices will add value or unnecessary overhead.

MicroservicesSoftware Designbackend
0 likes · 7 min read
Should Microservices Be Your Default Architecture? Key Questions to Ask
ITFLY8 Architecture Home
ITFLY8 Architecture Home
Oct 2, 2020 · Backend Development

How to Split Microservices: 3 Expert Strategies for Effective Service Decomposition

This article compares three seasoned experts' approaches to microservice splitting—vertical vs. horizontal, business‑driven, stability‑driven, and performance‑driven—highlighting trade‑offs, team size considerations, and practical guidelines for achieving scalable, maintainable architectures.

Backend ArchitectureMicroservicesSoftware Design
0 likes · 9 min read
How to Split Microservices: 3 Expert Strategies for Effective Service Decomposition
Programmer DD
Programmer DD
Sep 28, 2020 · Fundamentals

UML Relationship Cheat Sheet: From Dependency to Realization

This article explains the six core UML relationship types—Dependency, Association, Aggregation, Composition, Generalization, and Realization—detailing their semantics, visual notations, code representations in Java/C++, and practical distinctions such as lifecycle ownership and usage contexts.

AggregationObject-OrientedSoftware Design
0 likes · 13 min read
UML Relationship Cheat Sheet: From Dependency to Realization
Programmer DD
Programmer DD
Sep 25, 2020 · Fundamentals

Why Your Code Is Overrun by if‑else and How to Refactor It Effectively

The article explains why developers often end up with excessive if‑else statements, outlines the drawbacks of deep nesting, and presents practical refactoring techniques—including condition merging, early exits, and polymorphism—to produce cleaner, more maintainable code.

Code RefactoringSoftware Designif-else
0 likes · 12 min read
Why Your Code Is Overrun by if‑else and How to Refactor It Effectively
Alibaba Cloud Developer
Alibaba Cloud Developer
Sep 20, 2020 · Fundamentals

How Git’s First 1,000-Line Commit Shaped Its Core Design

An in‑depth exploration of Git’s initial 1,000‑line source code reveals the foundational design principles—workspace, index, objects, and three core object types—showing how early implementations of init‑db, update‑cache, write‑tree, and commit‑tree established the powerful, distributed version‑control system we use today.

Software DesignSource Code Analysisgit internals
0 likes · 19 min read
How Git’s First 1,000-Line Commit Shaped Its Core Design
OPPO Kernel Craftsman
OPPO Kernel Craftsman
Sep 18, 2020 · Fundamentals

Linux SCSI Subsystem Architecture and Design Framework

The article thoroughly examines the Linux SCSI subsystem architecture, illustrating how abstract hardware topology—hosts, channels, IDs, and LUNs—is modeled in software through structs such as scsi_host and scsi_device, and detailing initialization, scanning, path establishment, power management, and block‑layer integration to guide kernel storage driver design.

Block LayerData StructuresLinux kernel
0 likes · 20 min read
Linux SCSI Subsystem Architecture and Design Framework
Top Architect
Top Architect
Sep 15, 2020 · Fundamentals

Generating UML Class Diagrams in IntelliJ IDEA

This tutorial explains how to use IntelliJ IDEA's built‑in Diagram plugin to automatically generate UML class diagrams for Java classes, covering configuration steps, shortcut keys, example screenshots, and the tool's limitations for software design documentation.

IDE pluginIntelliJ IDEASoftware Design
0 likes · 4 min read
Generating UML Class Diagrams in IntelliJ IDEA
Programmer DD
Programmer DD
Sep 9, 2020 · Fundamentals

Debunking OOP Myths: Does Object‑Oriented Design Really Hurt Performance?

This article examines the widespread popularity of object‑oriented programming, dispels two common myths— that OOP inevitably slows down applications and that using an OOP language automatically means practicing OOP—by presenting performance data, real‑world examples, and a Java procedural code sample.

Software Designobject-oriented programmingprogramming myths
0 likes · 10 min read
Debunking OOP Myths: Does Object‑Oriented Design Really Hurt Performance?
Architect
Architect
Aug 17, 2020 · Backend Development

Various Approaches to Microservice Decomposition

The article examines microservice architecture as an abstract concept and presents three practical decomposition strategies—vertical/horizontal business split, business‑driven and team‑oriented considerations, and criteria based on logic, stability, reliability and performance—while also discussing cost, release frequency, and team size implications.

Backend ArchitectureSoftware Designservice decomposition
0 likes · 8 min read
Various Approaches to Microservice Decomposition
Java Captain
Java Captain
Aug 16, 2020 · Fundamentals

Why Classes Should Not Be Too Long and How to Refactor Overgrown Classes

The article explains why excessively long classes with many responsibilities hinder readability and extensibility, outlines the problems of redundant code and SRP violations, and provides practical refactoring techniques—such as extracting methods, moving members, and creating new classes—using IntelliJ IDEA.

IntelliJ IDEASingle Responsibility PrincipleSoftware Design
0 likes · 11 min read
Why Classes Should Not Be Too Long and How to Refactor Overgrown Classes
NetEase Smart Enterprise Tech+
NetEase Smart Enterprise Tech+
Aug 13, 2020 · Backend Development

How to Master Business Architecture with Layered and Domain‑Driven Design

This article explains how business architecture controls system complexity through layered structures and domain‑driven design, compares traditional three‑tier and microservice architectures, highlights common pitfalls, and offers a lightweight domain‑centric approach for scalable, maintainable backend systems.

Domain-Driven DesignMicroservicesSoftware Design
0 likes · 8 min read
How to Master Business Architecture with Layered and Domain‑Driven Design
Liangxu Linux
Liangxu Linux
Aug 2, 2020 · Information Security

Why the Word “User” Is a Hidden Security Risk in Software Design

The article explains how the vague term “user” leads to design flaws and security vulnerabilities across systems like ticket‑booking platforms, Unix, and SaaS, and argues that precise terminology and early conceptual planning can prevent costly rework.

Software DesignUser Modelingaccess control
0 likes · 8 min read
Why the Word “User” Is a Hidden Security Risk in Software Design
QQ Music Frontend Team
QQ Music Frontend Team
Jul 20, 2020 · Fundamentals

Why Refactoring Matters: Principles, Timing, and Practical Techniques

Refactoring improves code understandability and reduces maintenance costs by reorganizing internal structure without changing behavior, and this guide explains its purpose, timing, principles, common code smells, measurement metrics, and practical techniques across data, statement, subroutine, class, and system levels.

Software Designbest practicescode quality
0 likes · 20 min read
Why Refactoring Matters: Principles, Timing, and Practical Techniques
Top Architect
Top Architect
Jul 20, 2020 · Fundamentals

How to Create Effective Architecture Diagrams: Concepts, Types, and Best Practices

This article explains the value of technical diagramming, defines architecture and architecture diagrams, describes their purposes, outlines common diagram categories such as the 4+1 view, offers criteria for good diagrams, addresses typical pitfalls, and introduces the C4 model with concrete examples and a case study.

C4 modelDocumentationSoftware Design
0 likes · 10 min read
How to Create Effective Architecture Diagrams: Concepts, Types, and Best Practices
Full-Stack Internet Architecture
Full-Stack Internet Architecture
Jun 27, 2020 · Fundamentals

Understanding UML Class Diagram Relationships: Generalization, Realization, Aggregation, Composition, Association, and Dependency

This article explains how to correctly draw UML class diagrams by describing the six main relationship types—generalization, realization, aggregation, composition, association, and dependency—using clear examples and visual illustrations to help readers understand and apply each relationship in software modeling.

Class DiagramModelingRelationships
0 likes · 5 min read
Understanding UML Class Diagram Relationships: Generalization, Realization, Aggregation, Composition, Association, and Dependency
Top Architect
Top Architect
Jun 26, 2020 · Fundamentals

Principles and Practices for Effective Code Review and Software Design

The article shares a senior engineer's insights on why code review is essential, outlines common pitfalls such as duplicated code, premature optimization, and poor design, and presents concrete principles and practical guidelines—including KISS, composition over inheritance, and disciplined logging—to improve code quality and maintainability in large‑scale backend projects.

Code ReviewEngineeringSoftware Design
0 likes · 41 min read
Principles and Practices for Effective Code Review and Software Design
Architects Research Society
Architects Research Society
Jun 13, 2020 · Backend Development

Overview of Application Architecture and Emerging Trends

The article examines modern application architecture trends, emphasizing service‑oriented and microservice approaches, the need to move beyond three‑tier designs, and adopting patterns, models, and structures that accommodate cloud, mobile, social, and big‑data influences.

MicroservicesSOASoftware Design
0 likes · 11 min read
Overview of Application Architecture and Emerging Trends
21CTO
21CTO
Jun 7, 2020 · Fundamentals

How to Eliminate Redundant Code: A Practical DRY Refactoring Guide in PHP

This article explains the DRY (Do Not Repeat Yourself) principle, demonstrates how duplicated PHP code in a Report class can be refactored by extracting shared logic into reusable methods, and shows the final clean implementation that improves readability and maintainability.

Code RefactoringDRYPHP
0 likes · 7 min read
How to Eliminate Redundant Code: A Practical DRY Refactoring Guide in PHP
macrozheng
macrozheng
Jun 5, 2020 · Fundamentals

Why Interface‑Oriented Programming Makes Your Code Flexible and Extensible

This article explains the concept of interface‑oriented programming, using everyday analogies and Java code examples to show how defining contracts via interfaces decouples components, improves extensibility, and follows solid design principles such as the Open‑Closed Principle.

Dependency InversionOpen-Closed PrincipleSoftware Design
0 likes · 11 min read
Why Interface‑Oriented Programming Makes Your Code Flexible and Extensible
Programmer DD
Programmer DD
May 5, 2020 · Fundamentals

Why Long Classes Break Your Code and How to Refactor Them with IDEA

This article explains why excessively long classes are hard to read and extend, outlines the problems caused by redundant code and multiple responsibilities, and provides step‑by‑step refactoring techniques using IntelliJ IDEA to extract methods, move members, and create new classes.

IDEASingle Responsibility PrincipleSoftware Design
0 likes · 8 min read
Why Long Classes Break Your Code and How to Refactor Them with IDEA
Java Backend Technology
Java Backend Technology
May 5, 2020 · Fundamentals

Why Your 900-Line Class Is a Nightmare and How to Refactor It

The article explains why excessively long classes are hard to read, extend, and maintain, outlines the problems caused by redundant code and multiple responsibilities, and provides step‑by‑step refactoring techniques using IntelliJ IDEA to extract methods, move members, and create new classes.

IDEOOPSoftware Design
0 likes · 8 min read
Why Your 900-Line Class Is a Nightmare and How to Refactor It
Qunar Tech Salon
Qunar Tech Salon
Apr 28, 2020 · Fundamentals

Architecture Methodology: From Problem Identification to Application Logic Design

This article presents a comprehensive architecture methodology that guides engineers through problem identification, definition, classification, top‑down and bottom‑up derivation, model layering, and the systematic construction of product, business, logical, and physical architectures to achieve robust, maintainable software systems.

Business AnalysisR&DSoftware Design
0 likes · 29 min read
Architecture Methodology: From Problem Identification to Application Logic Design
Youzan Coder
Youzan Coder
Apr 24, 2020 · Backend Development

What Are Architecture Patterns? Pipe-Filter and Microkernel Architecture

Architecture patterns provide reusable solutions, and this article explains the Pipe‑Filter pattern—where data passes through independent filters like a production line, used in web frameworks, compilers, and serverless functions—and the Microkernel pattern, which separates a minimal core from plug‑in modules to enhance extensibility, maintainability, and configurability.

Software Designarchitecture patternsbackend development
0 likes · 13 min read
What Are Architecture Patterns? Pipe-Filter and Microkernel Architecture
Alibaba Cloud Developer
Alibaba Cloud Developer
Apr 7, 2020 · Fundamentals

Mastering System Architecture: A Proven Methodology for Building Robust Applications

This article shares a comprehensive architecture methodology from an experienced Alibaba senior engineer, detailing problem identification, various architecture classifications, top‑down and bottom‑up derivation techniques, and practical steps to design logical, physical, and business architectures for reliable software development.

Software Designarchitecturelogical architecture
0 likes · 31 min read
Mastering System Architecture: A Proven Methodology for Building Robust Applications
21CTO
21CTO
Apr 1, 2020 · Fundamentals

7 Core Skills That Separate Top Programmers from the Rest

The article examines why a small fraction of developers earn six‑figure salaries while many remain average, outlining seven decisive abilities—raw coding, debugging, simplicity, accurate schedule prediction, low‑level system knowledge, strict key‑design focus, and avoiding perfectionism—that together create a massive performance gap.

DebuggingProgramming FundamentalsSoftware Design
0 likes · 11 min read
7 Core Skills That Separate Top Programmers from the Rest
Alibaba Cloud Developer
Alibaba Cloud Developer
Apr 1, 2020 · Fundamentals

How to Rapidly Boost Your Software Design Skills: Practical Steps for Developers

This article shares practical advice on improving a programmer's design ability, covering coding practice, theory study, hands‑on implementation, revisiting concepts, summarizing lessons, sharing knowledge, and additional tips such as designing before coding and avoiding blind reliance on patterns.

Design PatternsProgramming FundamentalsSoftware Design
0 likes · 9 min read
How to Rapidly Boost Your Software Design Skills: Practical Steps for Developers
Programmer DD
Programmer DD
Mar 31, 2020 · Backend Development

Why Your Java Classes Shouldn’t Exceed a Thousand Lines—and How to Refactor Them

Long, monolithic Java classes with hundreds of methods become unreadable, hard to extend, and prone to redundant code, so this guide explains the drawbacks of oversized classes and provides step‑by‑step refactoring techniques using IntelliJ IDEA to extract methods, move members, and create new classes.

IDEASingle Responsibility PrincipleSoftware Design
0 likes · 8 min read
Why Your Java Classes Shouldn’t Exceed a Thousand Lines—and How to Refactor Them
Architecture Digest
Architecture Digest
Mar 21, 2020 · Mobile Development

Building a Cross‑Platform Payment Architecture with C++ for WeChat Pay

This article describes how a C++‑based cross‑platform framework was designed and implemented to unify iOS and Android payment flows in WeChat Pay, covering architectural motivation, business‑process abstraction, routing mechanisms, network request management, and standardized data transmission to improve quality and productivity.

C++Software DesignWeChat Pay
0 likes · 15 min read
Building a Cross‑Platform Payment Architecture with C++ for WeChat Pay
WeChat Client Technology Team
WeChat Client Technology Team
Mar 20, 2020 · Mobile Development

How We Built a Cross‑Platform C++ Architecture for WeChat Pay on iOS & Android

This article explains the challenges of maintaining separate iOS and Android implementations for WeChat Pay, and details how a C++‑based cross‑platform framework—featuring abstracted business flows, a unified routing mechanism, managed network requests, and strict data‑transfer standards—dramatically improves code reuse, stability, and development productivity.

C++Software DesignWeChat Pay
0 likes · 15 min read
How We Built a Cross‑Platform C++ Architecture for WeChat Pay on iOS & Android
AntTech
AntTech
Feb 17, 2020 · Fundamentals

Top Programming Books Recommended by Alipay Researcher Wang Yi

During the pandemic, Alipay researcher Wang Yi—creator of SQLFlow and ElasticDL—shares his curated list of three influential programming books, explaining how SICP teaches abstraction and composition, how The Art of Unix Programming illustrates Unix design principles, and how Paul Graham's essays offer timeless insights for developers.

Paul GrahamSICPSoftware Design
0 likes · 7 min read
Top Programming Books Recommended by Alipay Researcher Wang Yi
21CTO
21CTO
Jan 3, 2020 · Fundamentals

12 Warning Signs That Your Software Design Is Growing Too Complex

The article lists twelve danger signals—ranging from shallow modules and information leaks to vague naming and unreadable code—that reveal hidden complexity in software design and help developers identify and refactor problematic patterns.

ComplexitySoftware Designanti-patterns
0 likes · 6 min read
12 Warning Signs That Your Software Design Is Growing Too Complex
Architecture Digest
Architecture Digest
Dec 27, 2019 · Fundamentals

Software Design and Modeling: Applying UML for Effective Architecture

This article explains how software architects can use UML‑based modeling to translate functional and non‑functional requirements into clear design documents, covering the essential steps, key concepts, and the seven major UML diagram types across requirement, conceptual, and detailed design phases.

ModelingSoftware DesignSoftware Engineering
0 likes · 12 min read
Software Design and Modeling: Applying UML for Effective Architecture
Continuous Delivery 2.0
Continuous Delivery 2.0
Dec 27, 2019 · Backend Development

Server‑Side vs Client‑Side Feature Flag Decision: Performance, Latency, Security, and Complexity Considerations

Choosing whether to evaluate feature flags on the server or the client impacts performance, configuration latency, security, and implementation complexity, with server‑side decisions generally offering better speed, reduced cache‑invalidation risks, protected data handling, and simpler architecture, especially for web and mobile applications.

Client-Server ArchitectureFeature FlagsSoftware Design
0 likes · 5 min read
Server‑Side vs Client‑Side Feature Flag Decision: Performance, Latency, Security, and Complexity Considerations
Sohu Tech Products
Sohu Tech Products
Dec 18, 2019 · Backend Development

Beware of Middleware: Why Overusing Middleware Can Be Harmful

The article argues that while middleware can simplify handling cross‑cutting concerns in HTTP APIs, overusing it leads to tangled, untestable code, and proposes refactoring middleware logic into pure functions with explicit inputs and outputs to improve clarity and maintainability.

ExpressHTTPMiddleware
0 likes · 12 min read
Beware of Middleware: Why Overusing Middleware Can Be Harmful
58 Tech
58 Tech
Nov 22, 2019 · Fundamentals

Understanding Business Architecture: Evolution, Challenges, and Practices

The article explains what business architecture is, its evolution from monolithic to micro‑service and platform models, shares 58.com’s real‑world experience, discusses common difficulties, and offers practical guidance for architects on modeling, technology selection, and aligning with cloud and middle‑platform strategies.

Cloud ComputingMicroservicesPlatform engineering
0 likes · 11 min read
Understanding Business Architecture: Evolution, Challenges, and Practices
Programmer DD
Programmer DD
Nov 15, 2019 · Fundamentals

Why Concurrency Isn’t the Same as Parallelism: A Simple Analogy

This article explains the subtle difference between concurrency and parallelism using a ground‑hog and cart analogy, shows how task decomposition creates concurrent pipelines, and maps the model to scalable web‑service architecture, referencing Rob Pike’s talk “Concurrency is not Parallelism”.

GoProgramming FundamentalsSoftware Design
0 likes · 7 min read
Why Concurrency Isn’t the Same as Parallelism: A Simple Analogy
21CTO
21CTO
Nov 5, 2019 · Fundamentals

Mastering Software Design: Proven Strategies to Reduce Complexity

This article distills key principles from John Ousterhout’s “A Philosophy of Software Design”, offering practical guidelines on defining and reducing software complexity through modularization, layering, thoughtful commenting, and disciplined design practices for developers.

Modular ArchitectureSoftware Designcode commenting
0 likes · 21 min read
Mastering Software Design: Proven Strategies to Reduce Complexity
Java Captain
Java Captain
Oct 6, 2019 · Fundamentals

Prioritizing Fundamentals Over Frameworks: A Programmer’s Reflection

The article argues that programmers should devote the majority of their limited time to mastering transferable fundamentals such as clean code, design patterns, and domain‑driven design, while allocating only a small portion to learning ever‑changing frameworks and tools, illustrated through a mentor dialogue and book recommendations.

Continuous DeliveryProgramming FundamentalsSoftware Design
0 likes · 8 min read
Prioritizing Fundamentals Over Frameworks: A Programmer’s Reflection
21CTO
21CTO
Sep 25, 2019 · Fundamentals

How to Reduce Software Complexity: Principles from Ousterhout’s Design Philosophy

Drawing on John Ousterhout’s “A Philosophy of Software Design,” this article explores how to lower software complexity through clear definitions, modular design, layering, information hiding, thoughtful commenting, and strategic development practices, offering actionable principles for building maintainable systems.

Modular ArchitectureSoftware Designcoding principles
0 likes · 20 min read
How to Reduce Software Complexity: Principles from Ousterhout’s Design Philosophy
21CTO
21CTO
Sep 22, 2019 · Fundamentals

Why Reducing Complexity Is the Key to Better Software Design

This article distills the core principles from John Ousterhout's *A Philosophy of Software Design*—defining software complexity, presenting a quantitative model, and offering practical strategies such as layering, modularization, information hiding, and effective commenting—to help engineers build maintainable, low‑complexity systems.

Modular ArchitectureSoftware Designcode comments
0 likes · 20 min read
Why Reducing Complexity Is the Key to Better Software Design
Meituan Technology Team
Meituan Technology Team
Sep 19, 2019 · Fundamentals

Principles for Reducing Software Complexity

Drawing on Ousterhout’s philosophy, the article defines software complexity as cognitive load multiplied by development effort and offers principles such as iterative design, layered architecture, deep modules, information hiding, and purposeful documentation to systematically reduce ripple effects, dependencies, and unknowns in code.

Modular ArchitectureSoftware Designcode quality
0 likes · 18 min read
Principles for Reducing Software Complexity
ITFLY8 Architecture Home
ITFLY8 Architecture Home
Sep 18, 2019 · Fundamentals

Mastering System Architecture: From Purpose to Practical Methods

This article explores the core purpose of system architecture, identifies technical, business, and project-management challenges, and presents a systematic approach—systemic thinking, decomposition, abstraction, and patterns—to effectively design and implement robust architectures.

Project ManagementSoftware Designbusiness modeling
0 likes · 12 min read
Mastering System Architecture: From Purpose to Practical Methods
ITFLY8 Architecture Home
ITFLY8 Architecture Home
Sep 17, 2019 · Fundamentals

What Is System Architecture? A Simple Formula to Master Its Core

This article breaks down the concept of system architecture, derives a concise formula—elements plus connections plus solving specific problems—and explores its classifications, characteristics, and practical implications for designing coherent, goal‑oriented software systems.

Software DesignSoftware Engineeringarchitecture fundamentals
0 likes · 11 min read
What Is System Architecture? A Simple Formula to Master Its Core
Java Backend Technology
Java Backend Technology
Sep 14, 2019 · Fundamentals

Master Code Refactoring: Principles, Smells, and Practical Techniques

This article explains what refactoring is, why and when to apply it, lists common code smells with concrete examples, and provides step‑by‑step techniques for reorganizing functions, moving responsibilities, restructuring data, simplifying conditionals, and improving overall software design.

Object-OrientedSoftware Designclean code
0 likes · 27 min read
Master Code Refactoring: Principles, Smells, and Practical Techniques
Alibaba Cloud Developer
Alibaba Cloud Developer
Sep 11, 2019 · Fundamentals

What Makes Code Truly Good? Essential Principles and Practices

This article explores the essential characteristics of clean code, emphasizing high cohesion, low coupling, readability, proper naming, formatting, concise classes and functions, effective comments, error handling, and common code smells, while providing practical guidelines and examples for developers.

Software Designclean codecode quality
0 likes · 11 min read
What Makes Code Truly Good? Essential Principles and Practices
21CTO
21CTO
Aug 9, 2019 · Backend Development

Mastering Microservice Design: 5 Essential Architectural Constraints

This article explains how microservices differ from traditional monolithic delivery, outlines the five key architectural constraints—scalability, elasticity, composability, minimality, and completeness—and provides practical guidance for designing robust, loosely‑coupled services.

MicroservicesSoftware Designarchitecture
0 likes · 7 min read
Mastering Microservice Design: 5 Essential Architectural Constraints
21CTO
21CTO
Aug 9, 2019 · Fundamentals

How Clean Architecture Can Simplify Your Codebase: A Deep Dive into Layered Design

This article explores the principles of Clean Architecture, explains layered thinking and dependency rules, discusses how to apply them in real projects, and reflects on the broader meaning of software architecture, including domain‑driven design and practical advice for developers seeking to improve their design skills.

Clean ArchitectureDependency RuleDomain-Driven Design
0 likes · 15 min read
How Clean Architecture Can Simplify Your Codebase: A Deep Dive into Layered Design
Architecture Digest
Architecture Digest
Aug 7, 2019 · Fundamentals

Understanding Clean Architecture: Principles, Layers, and Practical Reflections

This article revisits the author’s earlier talk on software architecture, reorganizes and expands it with detailed explanations of Clean Architecture’s layered design, dependency rules, and related concepts such as DDD, while reflecting on how these ideas can reduce code modification difficulty and guide personal growth as an architect.

Clean ArchitectureDependency RuleGo
0 likes · 15 min read
Understanding Clean Architecture: Principles, Layers, and Practical Reflections
Continuous Delivery 2.0
Continuous Delivery 2.0
Jul 11, 2019 · Fundamentals

Seven Practical Techniques for Writing Testable Code

Writing unit-testable code often requires refactoring, and by focusing on minimizing function size, dependencies, and complexity, developers can adopt seven practical techniques—including limiting function lines, single responsibility, dependency injection, avoiding complex parameters, using abstractions, extracting testable units, and handling private functions—to improve testability and team efficiency.

Software Designbest practicesrefactoring
0 likes · 6 min read
Seven Practical Techniques for Writing Testable Code
21CTO
21CTO
May 31, 2019 · Information Security

Why Using the Word “User” Can Sabotage Your Software Design

The article explains how the vague term “User” leads to poor requirements, hidden security flaws like the Confused Deputy problem, and costly redesigns, urging developers to adopt precise terminology such as “team” and “member” early in a project.

Software DesignTerminologyUser Modeling
0 likes · 8 min read
Why Using the Word “User” Can Sabotage Your Software Design
Alibaba Cloud Developer
Alibaba Cloud Developer
May 14, 2019 · Fundamentals

Why Mastering Architecture Principles Keeps Your Code Future‑Proof

This article distills the core ideas of "Clean Architecture"—explaining software system value, architecture goals, programming paradigms, design principles, component splitting, dependency handling, and boundary management—to help engineers build maintainable, extensible systems that stand the test of time.

Design PrinciplesProgramming ParadigmsSoftware Design
0 likes · 22 min read
Why Mastering Architecture Principles Keeps Your Code Future‑Proof
Programmer DD
Programmer DD
May 3, 2019 · Information Security

Why Calling Everyone a “User” Can Cripple Your Software Security

Using the vague term “user” to describe diverse actors—passengers, agents, services, or system accounts—creates ambiguous models that lead to design flaws and serious security risks such as the Confused Deputy problem, urging developers to adopt precise terminology like “team” and “member” from the start.

Software DesignTerminologyconfused deputy
0 likes · 8 min read
Why Calling Everyone a “User” Can Cripple Your Software Security
Java Backend Technology
Java Backend Technology
Mar 10, 2019 · Fundamentals

Mastering Code Refactoring: Principles, Smells, and Practical Techniques

Refactoring transforms messy code into clean, maintainable structures without altering observable behavior, covering principles, common code smells, and step‑by‑step techniques such as extracting functions, moving methods, simplifying conditionals, and reorganizing data, empowering developers to improve design, reduce bugs, and accelerate development.

Software Designbest practicesclean code
0 likes · 26 min read
Mastering Code Refactoring: Principles, Smells, and Practical Techniques
Xianyu Technology
Xianyu Technology
Jan 31, 2019 · Backend Development

Business Isolation and Domain Modeling for Xianyu Detail Page Architecture

The article shows how to refactor a tangled Xianyu detail‑page built on legacy MVC by isolating each vertical business with the Strategy pattern, extracting shared services, packaging them as libraries or JARs, and then applying domain‑driven design to create a clean, layered, maintainable architecture.

Business IsolationDomain-Driven DesignSoftware Design
0 likes · 11 min read
Business Isolation and Domain Modeling for Xianyu Detail Page Architecture
ITFLY8 Architecture Home
ITFLY8 Architecture Home
Jan 3, 2019 · Fundamentals

What Is Software Architecture? Core Principles, Types, and How to Evaluate Them

Software architecture defines the structural skeleton of a system, encompassing components, connectors, constraints, and guiding principles; this article explains its essence, various classifications—from business to deployment—and offers practical criteria for assessing stability, efficiency, and security in modern server‑based applications.

Software Designbackendscalability
0 likes · 15 min read
What Is Software Architecture? Core Principles, Types, and How to Evaluate Them
Architects Research Society
Architects Research Society
Dec 2, 2018 · Backend Development

Governance, Trade‑offs, and Complexity in Microservices Architecture

The article examines the nuanced challenges of microservices—including governance trade‑offs, reuse considerations, complexity versus complication, and the risks of multi‑master data—while arguing for pragmatic, centrally‑guided design to harness their potential without over‑marketing.

MicroservicesSoftware Designgovernance
0 likes · 8 min read
Governance, Trade‑offs, and Complexity in Microservices Architecture
UC Tech Team
UC Tech Team
Oct 9, 2018 · Fundamentals

Goodbye Object‑Oriented Programming: The Collapse of Inheritance, Encapsulation, and Polymorphism

The article critiques the core pillars of object‑oriented programming—inheritance, encapsulation, and polymorphism—illustrating their practical pitfalls with real‑world analogies and code examples, and proposes containment and delegation as safer alternatives before urging a shift toward functional programming.

EncapsulationSoftware Designcontain-delegate
0 likes · 11 min read
Goodbye Object‑Oriented Programming: The Collapse of Inheritance, Encapsulation, and Polymorphism
21CTO
21CTO
Jul 18, 2018 · Fundamentals

How to Master Clean Code: Design, Estimation, and Testing Strategies

This article explains how treating software projects as disciplined design processes—using shared language, realistic estimation, systematic system modeling, and test‑first development—helps create clean, maintainable code while avoiding the pitfalls of over‑engineering and rushed delivery.

Software Designclean codeestimation
0 likes · 13 min read
How to Master Clean Code: Design, Estimation, and Testing Strategies
ITPUB
ITPUB
Jul 18, 2018 · Fundamentals

How to Achieve Truly Clean Code: Design, Estimation, and Testing Strategies

This article explores the philosophy of clean code, emphasizing disciplined design, clear domain language, realistic estimation, collaborative system modeling, and test‑first development to produce maintainable, efficient software that meets client needs while avoiding unnecessary complexity.

Software DesignSoftware EngineeringTDD
0 likes · 13 min read
How to Achieve Truly Clean Code: Design, Estimation, and Testing Strategies
ITFLY8 Architecture Home
ITFLY8 Architecture Home
Jul 15, 2018 · Fundamentals

Mastering UML: The Six Core Relationships Every Developer Should Know

UML class diagrams feature six primary relationships—Generalization, Realization, Dependency, Association, Aggregation, and Composition—each with distinct visual notations and semantics, and this guide explains their definitions, code representations in Java, and practical examples to help developers model system structures accurately.

AggregationAssociationSoftware Design
0 likes · 8 min read
Mastering UML: The Six Core Relationships Every Developer Should Know
Java Captain
Java Captain
Jul 14, 2018 · Backend Development

Best Practices for Application Layering and Domain Model Conversion in Backend Development

The article explains why clear separation of responsibilities among controller, service, manager, and DAO layers is essential for maintainable backend code, outlines Alibaba's layered architecture guidelines, proposes an optimized layering model, and discusses domain model conversions across layers to avoid excessive object transformations.

DAODomain ModelService Layer
0 likes · 9 min read
Best Practices for Application Layering and Domain Model Conversion in Backend Development
21CTO
21CTO
Jul 8, 2018 · Backend Development

How Uber Turned Its Monolith into a Scalable Microservice Architecture

This article explains the core concepts of microservice architecture, outlines its components and pros‑and‑cons, and uses Uber's evolution from a monolithic system to a distributed microservice platform as a detailed case study.

MicroservicesSoftware DesignUber
0 likes · 9 min read
How Uber Turned Its Monolith into a Scalable Microservice Architecture
ITFLY8 Architecture Home
ITFLY8 Architecture Home
May 30, 2018 · Fundamentals

Mastering UML: Key Diagrams, Relationships, and OO Concepts

This guide explains UML's core relationship notations, the nine essential diagram types and their purposes, detailed insights into class, object, use‑case, sequence, collaboration, state, activity, component, and deployment diagrams, and how they map to fundamental object‑oriented concepts such as boundary, entity, and control classes.

Object-OrientedSoftware DesignUML
0 likes · 14 min read
Mastering UML: Key Diagrams, Relationships, and OO Concepts
21CTO
21CTO
May 12, 2018 · Mobile Development

Why Mobile App Architecture Matters: Lessons from Real-World Projects

This article explores the concept of software architecture for mobile apps, sharing personal reflections, industry case studies, design principles, modularization strategies, development practices, testing, risk management, and agile processes to help developers build maintainable, scalable, and high‑quality applications.

Android DevelopmentSoftware Designagile
0 likes · 47 min read
Why Mobile App Architecture Matters: Lessons from Real-World Projects
360 Tech Engineering
360 Tech Engineering
Apr 28, 2018 · Mobile Development

Understanding the PageObject Pattern for UI Automation

This article explains the common maintenance challenges in UI automation, introduces the PageObject pattern as a solution, describes its layered architecture—including appium, pages, operation, and test layers—and highlights how it improves code reuse, readability, and reduces effort when UI changes occur.

AppiumPageObjectSoftware Design
0 likes · 3 min read
Understanding the PageObject Pattern for UI Automation