Is software architecture important?

Is software architecture important?

Software architecture then, is it important? The agile and software craftsmanship movements are helping to push up the quality of the software systems that we build, which is excellent. Together they are helping us to write better software that better meets the needs of the business while carefully managing time and budgetary constraints. But there’s still more we can do because even a small amount of software architecture can help prevent many of the problems that projects face. Successful software projects aren’t just about good code and sometimes you need to step away from the code for a few moments to see the bigger picture.

A lack of software architecture causes problems?

Since software architecture is about structure and vision, you could say that it exists anyway. And I may agree, it does. Having said that, it’s easy to see how not thinking about software architecture (and the “bigger picture”) can lead to a number of common problems that software teams face on a regular basis. Ask yourself the following questions:

  • Does your software system have a well defined structure?
  • Is everybody on the team implementing features in a consistent way?
  • Is there a consistent level of quality across the code base?
  • Is there a shared vision for how the software will be built across the team?
  • Does everybody on the team have the necessary amount of technical guidance?
  • Is there an appropriate amount of technical leadership?

It is possible to successfully deliver a software project by answering “no” to some of these questions, but it does require a very good team and a lot of luck. If nobody thinks about software architecture, the end result is something that typically looks like a big ball of mud. Sure, it has a structure but it’s not one that you’d want to work with! Other side effects could include the software system being too slow, insecure, fragile, unstable, hard to deploy, hard to maintain, hard to change, hard to extend, etc. I’m sure you’ve never seen or worked on software projects like this, right? No, me neither. ;-)

Since software architecture is inherent in every software system, why don’t we simply acknowledge this and place some focus on it?

In summary:

  • A clear vision and road map for the team to follow, regardless of whether that vision is owned by a single person or collectively by the whole team.
  • Technical leadership and better coordination.
  • A stimulus to talk to people in order to answer questions relating to significant
  • decisions, non-functional requirements, constraints and other cross-cutting concerns.
  • A framework for identifying and mitigating risk.
  • Consistency of approach and standards, leading to a well structured code base.
  • A set of firm foundations for the product being built.
  • A structure with which to communicate the solution at different levels of abstraction to different audiences.

View my profile




要查看或添加评论,请登录

社区洞察

其他会员也浏览了