官术网_书友最值得收藏!

Software Architecture

There are many different definitions of software architecture scattered across the web, in reference materials, and in books. In the wide world of programming, many of the definitions you may find are most likely going to be extremely technical in the language they use, and can be difficult for a beginner to fully grasp and understand. There are even places on the web that list thousands and thousands of different definitions by leading software architects, engineers, doctors, philosophers, and professors. (Reference: http://www.sei.cmu.edu/architecture/community_definitions.html).

To begin with, let's start with a technical definition:

Software architecture is an abstraction, or a high-level view of the system. It focuses on aspects of the system that are most helpful in accomplishing major goals, such as reliability, scalability, and changeability. The architecture explains how you go about accomplishing those goals.

Now we will translate this definition into something simple, generic, and easy to understand:

Software architecture is a blueprint of your application.

To elaborate more on the "blueprint" part, let us try to understand software architecture with a simple analogy—the process of casting.

Casting is a manufacturing process in which a liquid material is poured into a mold that contains a hollow cavity of a desired shape. The liquid is then allowed to cool and solidify, taking the shape of the mold it was poured into. The mold is the guide that shapes the liquid into the intended result. Keep in mind that the mold can be of any shape, size, or dimension, and is separate or unrelated to the liquid that is poured in.

Now, think of software architecture as the mold and think of your project as the liquid that is poured into this mold. Just like casting, software architecture is the guide that shapes your project into the intended result. The architecture of a software system has no strict relation to the actual code that is written for this system. The architecture simply makes sure that the development process stays within certain defined limits.

主站蜘蛛池模板: 云梦县| 将乐县| 营山县| 双流县| 南汇区| 淳安县| 衡阳县| 武定县| 彭山县| 上杭县| 马山县| 夏邑县| 大英县| 商丘市| 涞水县| 荣昌县| 湖口县| 芷江| 新龙县| 柘荣县| 东源县| 克拉玛依市| 安宁市| 望江县| 江口县| 克山县| 长春市| 龙里县| 东阳市| 吉安县| 尉犁县| 日喀则市| 宿迁市| 水城县| 新建县| 石城县| 砀山县| 胶南市| 南丰县| 福州市| 如东县|