I have already written a post about software design. Why writing another one? Well, mainly because software architecture isn’t the same as software design. Sure, archictecture is part of design. But actually the architecture is itself an area so deep that it needs to be talked about in another post. So, here is it.
Software architecture consists in the basics of software. It defines basic functioning and communication of the components, as well as the components themselves.
Some advantages of software architecture are:
- Separation of concerns: this allows to have different people working on different areas.
- Quality: defining a good architecture actually helps in improvising quality.
- Conceptual integrity: helps getting a general vision of what the software do.
Why is this important? As I have mentioned in other posts, in small projects or prototypes, architecture can be not that important. As soon as the project begins to grow, order is not an option. It is a necessity. Therefore, I consider it a good practice to define an architecture at the beginning. Now: this may sound too much like waterfall method, but that’s not what I’m trying to say. Software changes. If the architecture you developed does not fit your requirements anymore, change it. Don’t be afraid of changes.