Eric de Carufel
By Eric Dec 5, 2024

Tech Review – Software Architecture: Turning Challenges into Concrete Solutions. Part 2/2

In our previous article, we introduced the foundations of software architecture, emphasizing the value of structured thinking in creating effective and sustainable solutions. While various architectural styles can be employed to organize a technology project, our lead software architect advocates for a customized approach. This ensures a deep understanding of your needs while optimizing the project’s lifecycle.

Today, we build on this foundation by delving into three key pillars of software architecture: addressing problems at their root, adapting solutions, and managing project-specific constraints. These elements go beyond technical considerations—they are strategic tools for aligning developed systems with business goals and user expectations.

Join us as we explore how a rigorous, layered architectural methodology not only anticipates challenges but also transforms constraints into opportunities for creating sustainable and optimized solutions.

The 5 Whys Technique

In software architecture, pinpointing the real problems to solve is both crucial and challenging. Too often, development teams implement solutions suggested by clients without fully investigating the root causes of the issues at hand. While these solutions may seem appropriate initially, they frequently fail to address the underlying problems, leading to costly revisions and suboptimal outcomes.

The “5 Whys” technique, popularized by Toyota, is a valuable tool in IT architecture for uncovering the root causes of problems. By repeatedly asking “why” at each level of inquiry, this method digs deeper than surface-level solutions, exposing the true needs and systemic issues that must be addressed.

Applying this approach enables the creation of solutions that genuinely address underlying needs, helping to avoid costly and inefficient revisions in the subsequent stages of software design. Software architecture thus evolves from being purely technical to becoming an analytical discipline, focused on aligning solutions with the project’s true requirements and optimizing resources over the long term.

The following example demonstrates how the “5 Whys” technique can be applied to a feature request for exporting data to Excel, following a structured chain of reasoning.

  1. Why does the customer want an Excel export?
    The customer wants to export data to Excel to manipulate it outside the application.
  2. Why does the customer need to manipulate data in Excel?
    They need to process the data in Excel to uncover information that supports analysis or decision-making.
  3. Why is data manipulation necessary for finding useful information??
    This step is required because the software’s existing filters are ineffective at isolating the needed information.
  4. Why are the application’s filters ineffective?
    The filters are inefficient because the underlying queries are too slow, making them impractical.
  5. Why are the queries too slow?
    The queries are slow due to the absence of an index on the data, which hinders the system’s ability to quickly retrieve the requested information.

Interpretation: Applying the 5 Whys technique reveals that the original request to export data to Excel stems from a deeper issue related to the application’s performance.

The root cause is the lack of indexes on the database, which renders queries and filters inefficient for fast and effective information retrieval. Rather than creating a new Excel export feature—which would merely address the symptom without resolving the core issue—the optimal solution is to enhance the application’s performance. By adding indexes to the database, filters can be made faster and more efficient, ultimately improving the user experience.

Customized Solutions

In software architecture, the concept of “adapted” solutions carries significant weight. Design patterns offer time-tested solutions to common challenges, providing a strong foundation for architects to develop flexible and efficient systems. However, it’s crucial to acknowledge that every scenario is unique, and applying a design pattern should never be a purely mechanical process.

Diagram illustrating the design pattern in software architecture.

Adaptability involves selecting the right tool for the right problem. Just as a craftsman carefully chooses tools for a specific task, an architect must assess which solution best meets the project’s requirements and contextual constraints. This evaluation can be thought of as an architectural diagram that considers not only the technical advantages of potential solutions but also how they align with the business objectives and operational realities of the environment.

Evaluating various options to make the best decision in software architecture.

Adapting a solution to a problem requires a deep understanding of the challenge at hand. This often involves striking a delicate balance between what is standard—such as readily available resources, proven solutions that can be transferred across projects, and options that enhance security—and what is specific, addressing the unique needs of the project while offering greater flexibility and relevance.

This is where Robert C. Martin’s approach to architecture comes into play. By advocating for a flexible, simple, and maintainable design, clean architecture ensures that the solution not only addresses the immediate problem but also evolves with the project’s future needs, all while upholding principles of clarity and separation of responsibilities.

The compromise at the heart of architectural design is essential for creating a solution that effectively solves the problem and fits seamlessly into the specific context, considering practical constraints.

At times, this may even mean adapting the problem itself to meet the solution halfway—reconsidering requirements or reprioritizing them to maximize the value delivered. This process often requires adjustments to ensure the solution remains aligned with strategic objectives while adhering to industry standards.

Specific Constraints

In software architecture, constraints play a critical role in shaping the design and implementation of a solution. These constraints can be varied, including factors such as budget, strategy, timeline, resource availability, and team expertise. The ability to identify, assess, and manage these constraints is essential for the success of any software project.

Various types of constraints that influence the creation of effective software architecture.

Budget Constraints

Cost-Benefit Analysis: This tool helps assess the economic viability of a given solution. By comparing potential costs with anticipated benefits, architects can determine which features should be prioritized or adjusted to stay within budget.

Strategic Constraints

Balanced Scorecard: This tool is used to translate strategy into operational objectives, ensuring that software development aligns with the company’s overall strategic goals.

Deadline Constraints

Gantt Chart: A visual tool used for planning and tracking the progress of tasks over time. Platforms like Microsoft Project or Asana simplify the creation and management of schedules for complex projects.

Agile Methodologies: Scrum and Kanban allow for quick adaptation to changes through iterative development cycles, while maintaining a clear and flexible schedule.

Resource Availability Constraints

Capacity Planning: This process estimates the workload in relation to available resources, ensuring the project is neither understaffed nor overstaffed.

Team Skills Constraints

Skills Assessment: Tools like a skills grid help evaluate the team’s current expertise, enabling more informed decisions about technology choices.

Conclusion

For our software architect, good architecture means

making informed decisions
grounded in solid facts,
addressing real problems
with suitable solutions
while adhering to the specific constraints of each project.

Whether you’re looking for custom software design or technology solution architecture, Uzinakod has the expertise to support you. Contact us today to learn more.

Recommended Articles
Published on November 8, 2024

Tech Report – Rethinking Software Architecture Beyond "It Depends". Part 1/2

Move beyond the phrase “it depends” and explore how strategic decisions can turn your software architecture projects into robust and sustainable solutions.

Read more
Published on July 17, 2023

The Differences Between the Roles of Software Architect and Solutions Architect

Our passionate experts will answer all your questions and talk openly about their responsibilities, the challenges they face on projects and the skills needed to perform!

Read more
Search the site
Share on