Blocks provide a general purpose capability to describe the architecture of a system and represent the system hierarchy in terms of systems and subsystems. Blocks describe not only the connectivity relationships within/between a system and its subsystems, but also quantitative values, as well as other information about that system (for example, documentation).
You can use SysML blocks throughout all phases of system specification and design, and apply them to many different kinds of systems. These include modeling either the logical or physical decomposition of a system, and the specification of software, hardware, or human elements.
A Block is a modular unit that describes the structure of a system or an element. It may include both structural and behavioral features (such as properties and operations) that represent the state of the system and behavior that the system may exhibit. Some of these properties may hold parts of a system that can also be described by blocks. A block may include a structure of connectors between its properties to indicate how its parts or other properties relate to one another.
Any reusable form of description that may be applied to a system or a set of system characteristics can be described by a block. These reusable descriptions, for example, may be applied to purely conceptual aspects of a system design, such as relationships that hold between parts or properties of a system. Parts (properties) in these systems can interact by many different means, such as software operations, discrete state transitions, flows of inputs and outputs, or continuous interactions. Connectors owned by SysML blocks can be used to define relationships between parts or other properties of the same containing block.
In SysML, properties and operations of the Block are public. Visibility representation literals, like +, #, ~, -, are not displayed in the Containment tree or in the element symbol on a diagram.